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 を周囲に移動して、キャラクターの変形を確認すると良いでしょう。[元に戻す]で既定の位置に戻すことを忘れずに。