リジッドボディ基礎5 コリジョン2


どうも篠島です。前回に引き続きコリジョンについてです。今回はRBDのコリジョンボリュームについてもっと詳しく見ていきます。

 

今回のサンプルファイルです。
rbd_collision.zip

 

普通はコリジョンボリュームはジオメトリに基いて作られるものですが、自分で別にコリジョン用のジオメトリを作り、RBD Object DOP の Proxy Volume という所でジオメトリを指定することで、DOPジオメトリとは別のコリジョンボリュームを作ることが可能です。下の画面ではBoxが普通のジオメトリで、上にある平らな板みたいなのをコリジョン用ジオメトリとして使ってみます。

1

 

下のGIFアニメーションがシミュレーション結果です。BoxがDOPジオメトリで、青い板がコリジョン用のボリュームです。最初の部分で青いボリューム同士が貫通しています。このアニメーションから分かることはコリジョンボリューム同士では衝突判定がされないという事です。あくまでジオメトリのポイントやエッジがボリュームに対して衝突を検知しているという事ですね。普通はこんなジオメトリの形から極端にそれたコリジョンボリュームを指定することは無いですが、内部でどういう処理をしているのかを知っておくことは大切です。
あくまでこれはRBD ソルバーだけの話で、BulletyODEソルバーではちゃんとコリジョンジオメトリ同士が衝突します。

a

下のRBD Object の設定画面の様に、Surface Representation から、ジオメトリの衝突判定をポイントでするか、エッジでするかを選ぶことが出来ます。

2

ちなみにFlipシミュレーションなどはジオメトリは完全無視で、コリジョンボリュームに対してのみ衝突します。なのでFlipシミュレーションでは解像度の高いコリジョンボリュームを用意することが大事です。

b