DynamX2について

Diary

DoGA用物理演算のツール、それなりにダウンロードしてもらえてるみたいです。
これからどう変更して行こうかなぁって言う自分用のメモです。

まず今ある問題の解決はしておきたい。
Staticな物体の移動化がどうもまずいらしい、PhysX内で動かさない事前提で最適化されてるっぽくて、
Static物体の上でDynamic物体とかが完全停止してsleepに入っちゃうと、Static物体動かしても反応しないみたい。
この辺はPhysXのkinematicフラグを立てると解決するっぽい。
ただ、ちょっと試してみたんだけどこのkinematic属性ってやつの判定が怪しくて、
Dynamic物体が蜘蛛の子を散らすように弾け飛ぶ。
倒れたドミノをリフトで持ち上げようとしたら大爆発!って感じ。要controller?

あと、演算結果のフェッチのタイミングも悪い。
表示と処理の同期がとれてない。

Planeの位置、傾きを辞書で定義しちゃってる。
l3mから読みだすべき。でも、通常の回転行列+移動ベクトルって言う位置データじゃなくて
法線ベクトル+距離って言うデータが必要。回転角と移動ベクトルから計算するのがめんどくさい。

既知の問題はこんな感じ。
staticオブジェクト周りの不具合が多い。

あと新機能の案

forcefieldを使いたい。局所的な重力場みたいなの。
反重力リフトみたいなやつから、竜巻、ブラックホール、色々できると思う。

あと、物体の属性にイベントトリガ的な要素を加えたい。
トリガ物体が出現したら何か起きるみたいな奴。
例えばTimeStepをいじってあるタイミングでスローモーションかけるとか。
forcefieldと組み合わせて爆発を作るとか。

それからカメラの手ぶれを自動で入れたい。
手ぶれってどうやって数式化すればいいんだろう。
l3mのカメラとターゲットの移動軌跡を使って、そこからの偏差を与えて、
時系列でその偏差をちょっとずつ変えてやればいいんだろうとは思うけど、
その偏差をどういうアルゴリズムで組めば一番それっぽくなるんだろう。
昔フレーム毎にランダムで偏差を与えたらガタガタで、砂利道を走ってるようにしか見えなかったなぁ。
滑らかにつなぐなら正弦波を当てれば良いんだろうけど、周期的すぎる気がする。
良いとこで正弦波を光軸にそって回転とか?
やってみないとわかんないけどもっとランダムな要素がないとこれも周期的になりそう。

PhysX参考URL
PhysX – FreeStyleWiki
GenkiProject – PhysXを用いた物理シミュレーションプログラミング講座
Programming/Physx/TrainingDemo/Chapter1_Rigid_Bodies
Shader.jp – 第1回「Direct3DでAGEIA PhysXを使う」
CodeZine – 物理エンジンを使ってDirect3Dアプリケーションをつくる

2008/07/25 - 22:23:15

コメントはまだありません。

コメントをどうぞ