ICE を使用すれば、コントロールオブジェクトの大きな階層を必要とせずに、マニピュレータから直接デフォーマ変換を計算する効率的なリグを作成できます。
リグを作成するのに、決まりきった方法はありません。すべてのリグは、特定の制作のニーズにより生まれます。この点において、ICE には優れた柔軟性があります。
このセクションの残りの部分では、ICE ベースのリグに関する一般的なガイドラインと推奨を記載します。これらの原則に基づいて作成されたリグの例は、XSI_SAMPLE プロジェクトの Scenes フォルダの ICE サブフォルダにある Kinematics_Rabbit_Rig.scn シーンを参照してください。
マニピュレータ(駆動)とデフォーマ(被駆動)を分離することが重要です。分離によって、評価のサイクルが回避され、再利用性と移植性が向上します。
被駆動の階層は、従来の親に依存して変換を継承するのではないため、任意に作成できます。一方、マニピュレータは従来の親子関係を使用して、キーをローカルの変換に保存することができます。
ツリー内のすべての評価を、ヌルなどの単一のオブジェクト上に置くとよいでしょう。デフォーマの変換は、リグ評価ヌル上のカスタム ICE 属性内でマトリックス配列として計算および格納できます。配列は、各デフォーマ上のカスタムパラメータとして格納されるデフォーマIDによって索引付けできます。チェーン内の前のデフォーマの長さ(デフォーマとしてボーンではなくヌルを使用している場合)やID(オフセットを計算する目的で)などのその他の役立つデータを保存するのにも、同じカスタムプロパティを使用できます。
たとえば、脚の最初のデフォーマに1つのグループ、脚の 2 番目のデフォーマに 1 つのグループというように、複数のグループを使えば、リグ内の同様のエレメントのデータを取得することができます。これにより、同様のエレメントに使用できるデータが配列としてツリー内で渡され、複数エレメントの変換が同時に、効率的に計算されます。また、対応するグループにエレメントを追加することによって、脚や腕を簡単に追加できます。これらのグループを作成する際は、最初に左のエレメント、次に右のエレメントというようにエレメントを一貫して選択し、配列内でデータの一貫性が保たれるようにする必要があります。必要な場合は、Explorer でシーン オブジェクトを順序変更する[インタフェースおよびツール]で説明する手順に従って、グループ内のエレメントの順番を変更できます。
グループにデータを設定することはできないため、各デフォーマには、リグ評価ヌル上の配列から変換を取得および設定できる小さなICEツリーが必要です。
このようなシステムがあれば、1つのICEツリーを変更することによって、簡単にリグの動作を変更できます。修正を行ったり、全く異なるツリーに置き換えたりもできます。たとえば、通常お尻によって駆動されるうさぎの変換のリグを、耳をつかんで持ち上げられるうさぎの変換のリグに変更できます。
たとえば、Static_KineStateプロパティに基づいた最初のオフセットを保存するなど、リグのためにデータを初期化する必要がある場合、異なるヌル上のICEツリーでこれを行う必要があります。これによって、ICEツリーが不必要に再評価されるのが回避され、実行がスピードアップされます。
または、リグが 2 次ダイナミクスのシミュレーションを使用する場合、[Pre-Simulation]領域のツリーを使用してデータを初期化します。この領域のオペレータは、シミュレーションの最初のフレームの後に更新されません。ICE キネマティクスを使用したシミュレーションの詳細については、「ICE キネマティクスとシミュレーション」を参照してください。