CGキャラクターリギング入門:03 胴体のリギング

05 IK ジョイントチェーンの作成

次は、IKジョイントチェーンを作成します。まず、spine_fk1_jnt を選択、[Ctrl]+[D]キーで複製してください。しばらく FKジョイントチェーンで作業しないので、[Ctrl]+[H]キーで非表示にしましょう。複製したジョイントチェーンのジョイントをすべて選択、cometRename ツールで、[Search]フィールドに「_fk」、[Replace]フィールドに「_ik」と入力、[Search AndReplace]を押します(図07)。

図07:FKジョイントチェーンを複製、IKジョイントチェーン の開始点にします

これから IK ジョイントチェーンにさらにジョイントを追加。スプラインIK との組み合わせでより良い結果が得られるようにしましょう。

ジョイントの追加には、Brian Escribano氏 の作成した素晴らしいスクリプト、Joint Splitter(jointSplitter.mel)を使用します。これは、単一/複数のジョイントを追加して、既存の2つのジョイント間を均等に分配します。ツールが動作するには、シーンのすべてのジョイントが任意の名前である必要があります。

[スクリプト エディタ]の[MEL]タブで、JointSplitter スクリプトを開きましょう。スクリプトを実行するには、すべてのテキストをハイライト([Ctrl]+[A]キー)、テンキーの[Enter]キーを押します。スクリプトを実行したら、小さなユーザインタフェースが表示されます。

まず、spine_ik1_jnt1を選択、[Select StartJoint]を押します。次に、[Jnt Qty]は 1 のまま、[Split Joints]を押します。これで、ジョイントが追加され、2つのジョイント間に完璧に配置されます。spine_ik2_jntとspine_ik3_jnt を選択、同じ操作を実行します。spine_ik4_jnt と spine_ik5_jnt では、[Jnt Qty]を 2に増やして、[Split Joints]を押します(図08)。これで、IKジョイントチェーンがセットできました。

図08:Joint Splitterで、IKジョイントチェーン にジョイントを追加します

作成したジョイントを正しくリネームしていきましょう。これを行うには、根元から先端まで順にジョイントを選択。cometRenameツールで、[Rename]フィールドに「spine_ik」と入力、[Rename And Number]を押します。続けて、接尾辞「_jnt」を追加してください([Suffix]ボックスに_jntがそのまま残っているので、[Add Suffix]を押します)。現在、13ジョイントを含むIKチェーンがあります(図09)。FKチェーンは 6ジョイントです。

図09:リネームして完成したIKジョイントチェーン

06 スプラインIK を追加する

[スケルトン]>[IK スプライン ハンドルの作成](Skeleton > Create IK Spline Handle)オプションでツール設定をリセット、[スパン数]:2 に増やします(図10)。3Dビューポートにカーソルをもっていくと、十字が表示されます(ツールが選ばれていることを示しています)。

図10:スプラインIK を IK背骨に追加します

ルートジョイント(spine_ik1_jnt)をクリック、次にチェーン先端のジョイント(spine_ik13_jnt)をクリックすると、[アウトライナ]に IKハンドル(ikHandle1)とカーブ(curve1)が作成されます。それぞれ、spine_ik と spine_crv にリネームしましょう。通常のIKと異なり、スプラインIK には、ジョイントを操作するハンドルがありません。その代わりにカーブがあります。

コンポーネントモードに切り替え([F8]キー)、カーブのCVを選択、周囲に移動してみましょう。動作を試したら、[元に戻す]で既定の状態に戻してください。カーブを変形させると、ジョイントはどのように変形しましたか? カーブの操作にはいくつか方法があります(クラスタの使用など)。しかし、今回のリグは、ジョイントにカーブをスキニングするシンプルな方法で進めます。

側面ビューに切り替え、[ジョイント ツール]を選択。現在のジョイントチェーンと離れた場所でジョイントを1つ作成、[Enter]キーを押します。こうすれば、自動でチェーンと親子階層にはなりません。[チャネル ボックス]で、ジョイントの[半径]を増やし、選択しやすくしましょう。

このジョイントを背骨の基部に配置するため、[V]キーを押したままドラッグ(ポイント スナップ)、所定の位置に移動し、spine_hip_ik_jnt にリネームします。続けて、このジョイントを複製、spine_ik7_jnt と同じ位置にスナップ、spine_mid_ik_jnt にリネーム。さらにジョイントを複製、IK ジョイントチェーンの先端に配置したら、spine_chest_ik_jnt にリネームします。これで、3つの独立したジョイントを所定の位置に設定できました(図11)。

図11:ジョイントを3つ追加して、スプラインIK を操作します

次は、これらの新しいジョイントと spine_crv を選択([アウトライナ]を使うと簡単です)、[スキン]>[スキンのバインド](Skin > Bind Skin)オプションに進みます。[バインド対象]:[選択したジョイント]に、それ以外はそのままにして、[スキンのバインド]を押します(図12)。これで、IK の背骨を操作する3つのジョイントを設定できました。繰り返しになりますが、これらを移動したときは、[元に戻す]で既定ポーズに戻してください。

図12:スプラインIKのカーブを3つの操作用ジョイントにバインド

07 低解像度メッシュの作成

リグの構築では、可能な限り徹底的にテストする必要があります。私はモデルを分解して、ジョイントにペアレント化するのが好みです。これは、リグのテストに使えるだけでなく、アニメーター用の低解像度メッシュにもなります。やり方は簡単で、ジオメトリをジョイントにペアレント化するだけです。再生時に、バインド情報の計算を必要とするリグに比べ、とてもきびきびした動作になるでしょう。モデルを分解する方法はいくつかありますが、自分に合った方法で進めてください。私は手元のタスクに応じて、次のテクニックを組み合わせて使用します。

まず、切り出したいフェースを選択、[メッシュの編集]>[抽出](Edit Mesh > Extract)を実行します。あるいは、フェースを選択、[メッシュの編集]>[複製](Edit Mesh > Duplicate)を適用するか、単純にモデルを複製して、不要なフェースを削除しても良いでしょう(図13)。モデルを切り出すときは、関節の位置を考慮し、そこで合わさるようにパーツを分離してください。

図13:リギングに適した低解像度メッシュを作成するには、モデルを複製し、不要なフェースを削除します

この胴体では、paul_body_temp_geo を複製、腕や腰周りの不要なフェースを削除しましょう。[メッシュ ツール]>[ マルチカット](Mesh Tools > Multi-Cut)を選択、[Shift]キーを押したまま(まっすぐカットできます)、各関節でジオメトリを水平にスライスします(図14)。スライスしたフェースを選択、[メッシュの編集]>[抽出]でパーツに分離。スライスしたすべてのパーツを選択、[編集]>[種類ごとに削除]>[ヒストリ](Edit > Delete By Type > History)を適用します。

図14:[マルチカット]でモデルを切り出します

抽出プロセスによって、[アウトライナ]にいくつかのトランスフォームノードができます。ヒストリを削除すると、それらも同時に削除できますが、たまに残っていることもあります。必ず削除するようにしてください。

関連する背骨ジョイントに、各ジオメトリパーツをペアレント化。完了したら、cometRenameツールで、すべてのパーツをリネームしてください。ジョイントとジオメトリを一致させるため、同じ命名規則を使用しましょう。今回はすべてのパーツに、接尾辞「_lr_geo」を追加します。

ジオメトリをジョイントにペアレント化したら、移動してみます。spine_hip_ik_jnt、spine_mid_ik_jnt、spine_chest_ik_jnt を周囲に移動して、キャラクターの変形を確認すると良いでしょう。[元に戻す]で既定の位置に戻すことを忘れずに。