ジョイントの親子関係

ジョイント オブジェクト同士の関係は、ジョイントの動作や、その作用をどの程度伝播させるかを左右する重要な要素です。この関係は、複数のオブジェクトをチェーン状につなげる場合は特に重要になります。オブジェクトが親なのか子なのかによって、衝突に対する反応が広がる(伝播)する方向が違ってきます。

たとえば、ドアをドア枠に対して前後に動かすためには、ドア枠を親に、ドアを子に設定しなければなりません。誤ってドアを親、ドア枠を子に設定すると、ドアは動かずに、ドア枠が前後に動いてしまいます。

また、親に接続されるオブジェクトの数も親子関係によって違ってきます。たとえば、親オブジェクトには複数の子をジョイントでリンクできますが、子は複数の親を持つことはできません(ソルバ処理の衝突が生じてしまいます)。

ここでは 3 つのティーポットのモデルをチェーン状に接続した例をもとに、各オブジェクトの衝突の伝播設定によって作用がどのように変わるかを説明します。

衝突前の 3 つのモデル(1 番目のモデルが Passive に設定されている場合)

Two way

親オブジェクトの衝突は子オブジェクトに、また子オブジェクトの衝突は親オブジェクトに影響します。この場合、衝突は接続全体に伝播されます。

次の図では、オブジェクト Two Way に設定されているため、チェーン内のすべてのオブジェクトが影響を受けます。

Two way の例 A. 2 番目のオブジェクトの衝突 B. 3 番目のオブジェクトの衝突

Parent-to-child

Parent-to-child の関係では一方向の衝突が作成されます。親オブジェクトは子オブジェクトに影響しますが、子オブジェクトの衝突は親オブジェクトには影響しません。

次の図は、すべてのオブジェクトを Parent-to-child に設定した状態で、チェーン内のオブジェクトをクリックした結果を示しています。A では 2 番目のオブジェクトで衝突がトリガされ、その子である 3 番目のオブジェクトが衝突の影響を受けています。B では 3 番目のオブジェクトで衝突がトリガされていますが、このオブジェクトは作用を伝播させる子を持たないため、3 番目のオブジェクトだけが動いています。

Parent-to-child の例 A. 2 番目のオブジェクトの衝突 B. 3 番目のオブジェクトの衝突

Child-to-Parent

Child-to-Parent の関係では一方向の衝突が作成されます。子オブジェクトは親オブジェクトに影響しますが、親オブジェクトの衝突は子オブジェクトには影響しません。

次の図は、すべてのオブジェクトを Child-to-Parent に設定した状態で、チェーン内のオブジェクトをクリックした結果を示しています。A では 2 番目のオブジェクトで衝突が発生していますが、その親である 1 番目のオブジェクトは Passive に設定されているため、作用は伝わりません。したがって、衝突の発生元である 2 番目のオブジェクトだけが動きます。B では、3 番目のオブジェクトで発生した衝突が、親である 2 番目のオブジェクトに伝播されています。

Child-to-Parent の例 A. 2 番目のオブジェクトの衝突 B. 3 番目のオブジェクトの衝突

No Propagation

この場合は、オブジェクト間での衝突の伝播はありません。

次の図は、すべてのオブジェクトを No Propagation に設定した状態で、チェーン内のオブジェクトをクリックした結果を示しています。衝突元のオブジェクトだけが動き、その作用は他のオブジェクトには伝わりません。

No Propagation の例 A. 2 番目のオブジェクトの衝突B. 3 番目のオブジェクトの衝突