トップページgamedev
81コメント32KB

物理演算エンジンってどうやって作るの?

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2007/05/24(木) 19:10:51ID:NTMqyc86
ハーフライフとか、オブリビオンのあれです。

詳しい人教えて
0031名前は開発中のものです。2009/02/07(土) 22:44:46ID:VcBem1JV
Havokって一般人も使えるの?
0032名前は開発中のものです。2009/02/08(日) 00:39:39ID:mu6Kt79P
>>31

つ ttp://www.4gamer.net/games/032/G003263/20080602011/

> ゲームデベロッパ向けに無料で「Havok Physics」と「Havok Animation」の
> 提供を開始した。HavokのSDKやサンプルなども含まれており,配布対象は
> すべてのゲーム開発者。
> これは,趣味でゲームを開発している人や学生なども含まれている。
0033名前は開発中のものです。2009/02/16(月) 22:39:51ID:/sdkE3j5
とりあえず高等範囲までの数学(もちろんIIIC含む)と物理くらい問題なくできるようになってこい

話はそれからだ。

本読んだだけで勉強した気になるなよ。
ちゃんとひとつずつ問題解けよ。
0034名前は開発中のものです。2009/02/19(木) 12:22:35ID:DgbcU2D7
物理エンジンって

自由落下(x,y,T)とか渡したら
戻り値としてT時間次の座標が返ってくるとか
そういうプログラムのことですか?
0035名前は開発中のものです。2009/02/20(金) 00:46:03ID:LWtSiFOl
中学や高校の教科書の公式をそのままプログラムにしてしまえばえーやんと思った。
0036名前は開発中のものです。2009/02/21(土) 09:26:15ID:wpempfPo
複雑な形状の衝突や跳ね返りが面倒。
0037名前は開発中のものです。2009/02/22(日) 15:47:27ID:e0EbiJuc
>>31
商用利用不可だけど無料版あるぜ
0038名前は開発中のものです。2009/02/22(日) 17:04:17ID:yw09N868
> 37
今は条件付き(PhysysとAnimationのみ、PCのみ)なら商用でも無料で使える。
小売価格10米ドル以上ならサイトに要登録、未満なら必要なし。
ライセンスに対する合意が必要なので、熟読して利用を判断すること。
0039名前は開発中のものです。2009/02/22(日) 22:24:46ID:HoUF8U1D
落としてみたが、マニュアルが分からん・・・。
日本語の書籍とか出してくれないかな・・。
はじめてのHAVOKとかw
0040名前は開発中のものです。2009/03/14(土) 02:45:52ID:LeBePb3w
金子さんの質点バネモデルは大好きだ
簡単だしさ
やーらかい物シミュレートするにゃもってこいだら
0041名前は開発中のものです。2009/04/16(木) 21:57:02ID:lw6cN453
static q[objs][3];//位置
static p[objs][3];//運動量
static f[objs][3];//力
main(){
 init();
 startThread();
 startEvent();
}
runThread(){
 popEvent(); //event→f
 calc(); //f→p, p→x
 display();//x→(display)
}
pushEvent(){ //(I/F)→event
 switch(){case A: addEvent();...}
}
何でもメインルーチンはだいたいこんな感じになるよね。
いかがお過ごし?
全然違う人とかいるかな。

毎回よく困るのは、衝突後の処理かな
判定までは簡単だけど、その後の対処が難しくて
同じ衝突イベントが連続で起こっちゃったり、
それを回避しようとするとすり抜けちゃったり
○○保存則が崩れて、ほっとくと毎回すんごい総エネルギー量になりますw
あと衝突後の位置修正処理がそのまま別の衝突を引き起こしたり…
みんな経験あるよねぇ?

自然ってほんと良く出来てるなぁと思います(ボソ
0042名前は開発中のものです。2009/04/16(木) 22:11:40ID:lw6cN453
そうだ、離散時間シミュの衝突で食い込んだときの処理をどうやってるか教えてほしい。
(1) 何もせず撃力与えてそのまま
(2) 移動前時間まで戻して撃力与えてそのまま
(3) 真の衝突時間(分数ステップ)を計算し、そこまで慣性移動
→正確な撃力を求めてから残り時間中だけまた慣性移動
(1) だと食い込んだままになることが多々。
(2) で妥協することが多々。
(3) までやるのが理想なのかな?普通そこまでする?
まぁモノに依ると言われるとそれまでだけど…習慣として
0043名前は開発中のものです。2009/04/23(木) 01:19:06ID:Q7e15GYD
中途半端だけど面の交点に戻して激力与えてるよ
ホントは(3)がやりたいけどめんどかった
0044名前は開発中のものです。2009/10/24(土) 16:32:46ID:eHfCCzB1
>>25
すごいっすねー
自前でつくるなんて無理だわ・・・

CryEngine3
http://game.watch.impress.co.jp/docs/series/3dcg/20090501_167933.html
http://www.famitsu.com/game/news/1223057_1124.html
0045名前は開発中のものです。2010/04/24(土) 17:54:58ID:ySaSfK6d
スレ機能してねーなw
0046名前は開発中のものです。2010/06/15(火) 09:30:58ID:XddCABWf
アマゾン探してもphysXの本ならあるけど
じまえで全部作ることについて書かれた本とか全然ないし・・
0047名前は開発中のものです。2010/09/04(土) 01:24:02ID:31Uq+LnP
シーグラフとかの論文読んで勉強して作ればいいと思うよ。
0048名前は開発中のものです。2010/09/04(土) 08:37:50ID:ORoXzrBI
>>46
リアルタイムの実装で、処理の順番とか精度とかCPU負荷とか色々とチューニングが必要ですね
最近のPCスペックでやっと実用的にはなって来たけど、用途で色々と実装方法も変わってくる。
汎用エンジンでゲーム作るにしても理解が及んでいないとパラメータ設定もできないしまともに動かせないよ。
今ネットにある情報で作れないなら物理演算に触るなって事でしょ。
0049名前は開発中のものです。2010/10/28(木) 00:00:03ID:UJvH8QSA
振動を抑えるためいろいろやってたら非物理エンジンになってた件について
やっぱ難しいわ
0050名前は開発中のものです。2011/02/15(火) 13:43:32ID:FJMNz0Ob
振動を抑えるのはタイムスライスを細かくして見えない幅にするくらいか
0051名前は開発中のものです。2011/06/28(火) 17:50:29.78ID:omvPf4gy
物理演算興味持って1から趣味で作り始めたんだけど
これってやっぱ物理学関係ない所で詰まりがちやねw
0052名前は開発中のものです。2011/06/29(水) 01:09:53.80ID:navapLQb
剛体の力学の本を買ってきて理解する。
あとは、これを読めばおk。今の剛体の処理で主流の奴
http://www.pixar.com/companyinfo/research/pbm2001/pdf/notesg.pdf

最終的に、線形相補性問題を解くことになる。これをいかに効率よく解くかが鍵。
昔やったときは、前フレームの情報を利用して効率化したけど、それでも全然遅い。
0053名前は開発中のものです。2011/06/29(水) 01:18:46.99ID:navapLQb
てゆうか >>25 に書いてるな。
コンストレイントソルバーっていうのが線形相補性問題を解くっていうこと。

ODEは基本>>52の論文の方法。
ODEには処理速度で互角か勝てるぐらいまでいける。でも、それ以上のフリーじゃないやつはムリポ。

剛体が300個とかになってくると、線形相補性問題の行列の情報がキャッシュに乗り切らないから、そこがボトルネックになる。
対称行列になるからとか工夫してもムリポ

実家にdelphiだけどソースコードあるはずだから、需要あるなら公開しよっかな。
0054名前は開発中のものです。2011/06/29(水) 07:03:03.83ID:tEh/8tcG
自然な動きを求めると非物理エンジンになる不思議!
0055名前は開発中のものです。2011/07/05(火) 00:56:10.85ID:Mr5lFhmq
>>53
じゅようあり ノシ
0056名前は開発中のものです。2011/07/05(火) 01:29:26.88ID:V4itKPNJ
>>55
http://www.dotup.org/uploda/www.dotup.org1759994.zip
物理計算の主要な部分だけ。3、4年前だから何やってるかわからんwww
具体的には何が知りたいんだ?
0057名前は開発中のものです。2011/07/05(火) 20:58:16.48ID:Mr5lFhmq
>>56
ありがとう
つい最近OpenGLに手をだしてやっとモデルデータを表示できるとこまで来たんだけど
それを動かすとっかかりになればなーと 参考にさせてもらいます!
0058名前は開発中のものです。2011/07/05(火) 21:30:52.64ID:V4itKPNJ
>>57
待てよ。そのレベルだと参考にならないぞ
数学はどの程度知ってるの
0059名前は開発中のものです。2011/07/05(火) 22:36:42.54ID:Mr5lFhmq
>>58
工業系の大学数学レベルまでならしったかぶり出来る程度には・・・
とにかく右も左も分からなくて情報をかき集めてる段階です
0060名前は開発中のものです。2011/07/14(木) 15:23:42.32ID:UBDMyCUV
>>59
数学が大丈夫なら、>>52に全部書いてると思う
0061名前は開発中のものです。2011/07/22(金) 12:09:26.27ID:7j2Z83oX
物理エンジンの作り方って需要あるの?
ガチの本とか書いたら売れるのかな?
0062名前は開発中のものです。2011/07/22(金) 20:03:08.75ID:KJLHBA7J
しかし英語がよめんかった
0063名前は開発中のものです。2011/07/22(金) 20:33:54.61ID:7j2Z83oX
>>62
本書いたら買ってくれる?
表紙に萌え萌えな絵付ければ売れるかな

でも、面倒だから。お金目的じゃなくて、純粋な自己顕示欲で書くかもwww
http://haihu.zouri.jp/
0064名前は開発中のものです。2011/07/22(金) 20:49:28.81ID:7j2Z83oX
いいの見つけた
http://kmkz.jp/mtm/mag/lab/
0065名前は開発中のものです。2011/07/23(土) 15:33:51.14ID:q6zHW1Rk
既存の物理エンジンだけで飽和状態なので需要はないに等しい。使い方の方が圧倒的に需要あると思う。
0066名前は開発中のものです。2011/07/23(土) 16:01:34.95ID:QTkODIag
そうなのかよ。
原理から知りたいっていう熱心な若者はいないのか?
0067名前は開発中のものです。2011/07/24(日) 02:58:39.80ID:8WLTW02y
○○というゲームの○○の動きをプログラムで再現してみよう
みたいなのはうけるんじゃない 本にはできなさそうだけど
0068名前は開発中のものです。2011/07/24(日) 06:58:28.18ID:1B5hZOTx
昔、本買って自作したけど、独立した物体同士の相互作用までは
出来たけど関節(拘束)のやり方が載ってなくて挫折した。
なのでそこんとこ頼むわ>本書く人
0069名前は開発中のものです。2011/07/24(日) 12:39:43.00ID:P4/beFJ3
関節のほうが計算量少ないから、簡単だぞ
なんで、できなかったんだ?
0070名前は開発中のものです。2011/07/25(月) 09:17:53.21ID:zl9SHWwo
>関節のほうが計算量少ない
え?え?(^ω^;)
ググってもよー判らんわ。関節。
0071名前は開発中のものです。2011/07/25(月) 09:21:53.53ID:MgUklQO7
それって、(本に記載されているロジック通りに組んだら)出来た
って事?
0072名前は開発中のものです。2011/07/25(月) 14:32:49.26ID:tsuW/g3z
関節は、連立一次方程式になるから、計算量最悪は n * n * nで解ける。
普通の接触は、線形相補性問題になるから、計算量は最悪、2^n。

実際は反復法でやるから、ここからだいぶ減らしていくんだけど。
減らしていっても、関節のほうが圧倒的に計算量が少ない
0073名前は開発中のものです。2011/07/26(火) 01:20:44.78ID:Nkp9uwXJ
俺が買った本、
「ゲーム開発のための物理シミュレーション入門」って奴なんだけど、
まず、
>普通の接触は、線形相補性問題になるから
ここがすっぽ抜けてる希ガス。
なので接触したらいい具合に押し戻すって感じ。ダメだこりゃ。
0074名前は開発中のものです。2011/07/26(火) 07:24:43.62ID:zKjxXwQ5
>>52のpdfを検索したけどLCPとかcomplementary等の単語がみつからなかったけど、
そのへんものってるでしょうか?>読んだ人
0075522011/07/26(火) 07:35:42.55ID:VOyddbGv
>>74
俺は実は読んでないwww今読んだら、quadratic programって書いてある。同じことだと思う
ページG53に、そのことが書いてあって。関節も一緒に扱えるみたいなことが書いてある

需要あるのか?
0076名前は開発中のものです。2011/07/26(火) 07:47:43.81ID:VOyddbGv
剛体シミュレーションの処理時間のほとんどは、線形相補性問題に裂かれるから
その速い解き方を考えれば有名になれるはず

剛体特有の性質を使わないと速くならないから、剛体の接触から得られる行列がどういう性質を持っているか考えるのが重要
0077名前は開発中のものです。2011/07/27(水) 17:02:29.87ID:jpUYGiJj
みんな言語何使ってるの?
勉強用のやつ作ってみようと思ってるけど、C#とかDelphiとか読めるの?
C++は使いたくないお
0078名前は開発中のものです。2011/07/27(水) 17:58:59.82ID:jpUYGiJj
http://www.ynl.t.u-tokyo.ac.jp/publications/pdf2007/oral07/20.pdf

これのピボット法じゃなくて、ガウスザイデルに近いやり方でやってた。
収束が保障されてないってかかれてるけど、剛体に関して言えば全体のエネルギーみたいなものに着目すれば
各ステップごとに確実に減少していくから収束はするんじゃないかなって思ってる。

lemke法は知らない。今調べてる
0079名前は開発中のものです。2011/07/27(水) 18:22:13.85ID:DcAliuH1
JavaかC#ならいいんでない?
ちっと重いかもだが
0080名前は開発中のものです。2011/07/27(水) 21:27:20.00ID:jpUYGiJj
わかったC#で作ってみる
0081名前は開発中のものです。2011/07/29(金) 22:36:28.71ID:YKUBReqf
lemke法、本当に収束するのかとか、どのくらいで収束するのかとか理解してないけど。少し理解した
剛体が増えると不利だな。元々の疎行列が活かしづらい

マルチグリッドLCPが出来れば超速くなるはず
■ このスレッドは過去ログ倉庫に格納されています