明けましておめでとうございます。2017年も頑張ってどんどん新しいことを学んでいきましょう!
ということで、今回はリジッドボディにおけるコリジョンについて見てみたいと思います。
今回のサンプルファイルです。
collision_1.zip
まず、ジオメトリをリジッドボディにするとコリジョン用のオブジェクトが自動的に作られます。ソルバーにより作られるジオメトリは異なりますが、今回はRBD Solverを使った例を紹介します。RBDではコリジョン用にボリュームが作られます。このコリジョン用のジオメトリを元にコリジョンが計算されるわけです。コリジョン用のジオメトリを確認するにはCollision GuideをONにします。そのままだと元のオブジェクトと重なって見にくいのでDisplay GeometryをOFFにするとコリジョンジオメトリだけ確認できます。
コリジョン用ボリュームを使った衝突判定は実際のジオメトリで衝突判定をするよりも早いです。Use Volume Based Collision Detection をOFFにするとに、元のジオメトリを使った衝突判定になります。
コリジョンジオメトリがラフ過ぎると、オブジェクトの細かいパーツが表現できなかったりするので、Uniform Divisionsを上げてボリュームの解像度を上げたりできます。
Mode のところでコリジョンジオメトリをどの様にするかを選べます。Ray Intersectだとジオメトリの形のボリュームを作り、Implicit Box などはその名前の通りに四角いジオメトリを作ります。
下のGIFアニメーションはRay IntersectモードとImplicit Sphereモードでの衝突の違いを表したものです。コリジョンをSphereにすると、衝突の仕方が異なっているのが分かります。
実は上のGIFアニメーションの地面用のオブジェクトにはTerrain Objectを使っています。コリジョンボリュームはGround Plane DOPなどの真っ平らの板とはうまく衝突判定が出来ずに、元のジオメトリが衝突判定に使われます。なぜなら真っ平らの板には厚みが無いためにボリュームが作れないためです。Terrain Object DOPは平らな板でも自動的に厚みを持たせたコリジョン用ボリュームを作ってくれます。
下のGIFアニメーションは地面用にGround Plane DOPを使ったものです。地面用のコリジョンボリュームが作られないために、Sphereのコリジョンボリュームは使われずに実際のジオメトリを元に衝突判定されているのが分かります。
続きます。