Houdiniではボーンベースシステム上で機能していますが、MAYAではジョイントベースシステムで機能しています。ボーンベースシステムでは、リグを組む人がボーンをその親を基準に回転し、その長さをスケールすることが許されています。一方、ジョイントベースシステムでは、リグを組む人がジョイントオリエンテーションを空間内で自由に動かすことが許されています。
MAYAのジョイントは、Houdiniでいえば、あるオブジェクトを向くように拘束したNullオブジェクトに相当します。(この方法でリグは組まないように)。Houdiniでボーンチェーンを作成したときのボーンの状態から、その根本的な違いがはっきりと理解できます。またFBX経由でMAYAのリグを取り込むことでも確認できます。インポートしたFBXリグは、Null-ボーンの配置になっています。Houdiniでは、この方法でリグを組むことはお勧めしません。
ジョイントベースシステムには柔軟性とジョイントを自由に動かせられるコントロールがあります。しかし、不適切なジョイントオリエンテーションは、しばしば予期しない問題を起こし、後処理が必要になってきます。一方で、ボーンには方向があります。ボーンが向かっている方向が-Z軸で、高さがある方向がY軸、平坦な横方向がX軸です。ボーン階層はボーンチェーン全体を解釈することができます。つまり、ボーンと一緒にリグを伸縮することが容易になります。
Houdiniはボーンベースのシステム上で機能しますが、NullとNull間を埋めるボーンを使ってジョイントベースのシステムを模倣することができます。とはいえ、ジョイント毎に次のNullに拘束するIKソルバが必要になります。
ジョイントベースシステムの模倣 ¶
ジョイントベースシステムを模倣してリグを構築するのは、かなり複雑です。ゼロからリグを組むときはボーンベースシステムを使ったほうが良いです。なぜなら、Houdiniのツールすべてがボーンベースシステムで作られているからです。
-
それらを null1 を親にして接続します。
-
Boneノードの Transform タブで、 Look At パラメータを null2 に設定します。
-
Boneノードの Bone タブで、 Bone Length パラメータに距離のエクスプレッションを使います。
Note
FBXスケルトンをインポートすると、何のエクスプレッションがそこに使われているのか確認することができます。