前回はAffector Matrixについて説明したので、今回はMerge DOPについて軽く触れてみたいと思います。Mergeノードを使う事によってRelationshipにデータがいろいろと追加されます。
今回のサンプルファイルです。
merge.zip
MergeでRBD Objectを4つ繋いでみると、Relationshipsの所にデータがいろいろと追加されているのが分かります。よく見ると、ネットワークビューではMergeノードは一つしか使ってないのに、Geometry SpreadsheetのRelationshipsにmerge2, merge3、merge4と3つ追加されています。なぜでしょうか。
今はRigid body solverにより、全てのオブジェクトがMutualになっています。すると、multisolver3~というデータの中にObjinAffectorsとObjinGroupがあり、4つのRBDオブジェクトがそれぞれ含まれています。Rigid body solverのMake Objects Mutual AffectorsをOFFににすると、この情報が全て無くなります。するとAffector MatrixもMergeノードで作られたものだけになります。
試しにそれぞれのmergeのデータを見て、ObjinAffectorsとObjInGroupに注目しています。よく見るとObjinAffectorsに属するオブジェクトがObjInGroupに属するオブジェクトに影響を与えているのがわかります。
obj1 → obj2、
obj1、obj2 → obj3
obj1、obj2、obj3 → obj4
もしMergeノードのAffector RelationshipをMutualにすると、Geometry Spreadsheetの中のデータもmergeが一つだけになります。
Mergeノードは他にも色々なRelationshipを作ることができます。例えばFluidシミュレーションなどで、煙を出すソースとして使うこともできます。すると、obj5というオブジェクトがエミッターとして働き、smokeobject1に影響を与えているというイメージになります。
昔はこのRelationsipを使ってコリジョンやSink等を作るのに使われてましたが、今は別の方法で制御します。
このネットワークの組み方はあくまでもデモの為だけです。Fluid系については別の機会でゆっくりと説明します。