POPの基礎5 コリジョン


こんにちは。今回はPOPのコリジョンについて説明しようと思います。コリジョンに関係あるノードはPOP Solver、POP Collision Detect、POP Collision Behavior があり、これらの違いを見ていこうと思います。

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

まずはDOP内のオブジェクトとパーティクルを衝突させる場合は特に何もする必要はなく、RBDオブジェクトなどをMergeノードで繋げるだけです。Merge DOPにはAffector Relationshipというのがあり、デフォルトで左側のインプットが右側のインプットに影響を与えます。今回の例だとティーポットがパーティクルに影響を与えるので、パーティクルがティーポットに衝突してバウンスするわけです。仮にインプットを入れ替えるとパーティクルがティーポットに影響を与えるようになります。

coll_1coll_2

Selection_412

 

 POP Solver

もしパーティクルが衝突した時に反発以外の処理をしたい場合はPOP SolverのCollision BehaviorでAdd Hit AttributesをONにします。すると、衝突したパーティクルの色を変更したり、パーティクルを消したり、オブジェクトにくっつけたりできます。そしてデフォルトで衝突に関するアトリビュートをいろいろと付けてくれます。

coll_3

Selection_414

 

POP Collision Behavior

次にPOP Collision Behaviorについて見てみます。このノードは単体では無意味で、POP SolverのCollision Behaviorと一緒に使います。といっても機能はPOP Solverの衝突処理と同じで、はっきり言ってこのノードの存在価値が分かりません。

Selection_416

 

POP Collision Detect

次にPOP Collision Detectを見てみます。このノードはパーティクルがオブジェクトと衝突したかを検出し、衝突したパーティクルの動作を決めます。ここで注意したいのが、衝突を検出するだけであり、パーティクルはバウンスしません。パーティクルをバウンスさせたければ、RBD ObjectやStatic ObjectなどをMergeノードによって繋げてバウンスさせる必要があります。ResponseをStopなどに変えない限り、衝突を検出しただけでパーティクルはオブジェクトをすり抜けます。
あと、このノードはDOPオブジェクトとの衝突はもちろん、SOPレベルのオブジェクトを使って衝突検出をすることも可能です。

Selection_419

 

まとめると、パーティクルをバウンスさせたいならMergeで繋げるだけ。衝突したパーティクルに対して別の処理をさせたいならPOP Collision Detectを使いましょう。