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

12 FK/IK セットアップ

FK背骨 と一緒に IK背骨を操作できるようにしましょう。まず、spine_mid_ik_ctrl_offset を spine_fk3_ctrl の下にペアレント化。続けて、spine_chest_ik_ctrl_offset を spine_fk4_ctrl の下にペアレント化します。すべてのコントロールを移動、回転してテストしたら、[移動]、[回転]チャネルの値をゼロにして、既定の位置に戻ることを確認してください。

図29:FK背骨コントロールでIK背骨を操作する

13 手軽なクリーンアップ

現時点で、シーンにはジョイント、コントロール、グループノード、カーブなどがあります。すべての要素に名前はありますが、[アウトライナ]はまだ散らかっているので、整頓しましょう。退屈な作業ですが、頻繁に行うことで、リグの作成・維持が長期的に楽になります。

まず、spine_ik1_jnt、spine_fk1_jnt、spine_hip_ik_jnt、spine_mid_ik_jnt、spine_chest_ik_jnt を選択、[Ctrl]+[G]キーでグループ化、torso_jnt_grp にリネームしましょう。

同じように、spine_hip_ik_ctrl_offset と spine _fk1_ctrl_offset を選択、グループ化、torso_ctrl_grp にリネーム。最後に spine_crvとspine_ik を選択、グループ化、torso_doNotTouch_grp にリネームします。

図30:グループノードでリグをクリーンアップします

14 胸郭を追加する

骨格構造らしさを加えるため、胸郭の影響をシミュレートするジョイントをいくつか追加しましょう。高解像度モデルを再表示して[ライブ サーフェス]をオンにすると、ジョイントを簡単に配置できます(この機能で、ジョイントがモデルにスナップします)。

キャラクターの左、胴体の背面から開始、前面に向かう4つのジョイントチェーンを作成します。続けて、すぐ下に4ジョイントチェーンを2つ追加、胸郭を表現してください(図31)。

図31:胸郭に3つのジョイントチェーンを追加

ここまで左側で作業していますが、後でこれらのジョイントをミラー(鏡面コピー)します。ジョイントを配置できたら、ライブサーフェスの高解像度メッシュをオフ。それぞれのジョイントチェーンを選択し、キャラクターの内側になるように、少し移動してください。次は、正のX回転で胸郭が広がるように、ジョイントの向きを調整します。

1つめのチェーンのルートジョイントを選択、[スケルトン]>[ ジョイントの方向付け](Skeleton > Orient Joint)オプションに進み、[主軸]:Y、[補助軸]:Z、[ 補助軸のワールド方向]:Z(-) にして、[適用]を押します。ジョイントを確認したら、次のジョイントに進みましょう。希望する動作になるまで、[アトリビュート エディタ]の[ジョイントの方向]で回転してください(図32)。

メモ:[アトリビュート エディタ]でインタラクティブに値を編集するには、ボックスの上にカーソルを置いて、[Ctrl]キーを押したまま、左・中・右ボタンドラッグします。

図32:[ジョイントの方向付け]と[ジョイントの方向]アトリビュートで、ジョイントの向きを修正

cometJointOrientツール(Comet > Joints/Hierarchy)を使えば、作業を高速化できます。または、単純にジョイントを回転して調整します。[回転]チャネルの既定値を0 にするため、[トランスフォームのフリーズ]を実行。すべてのジョイントで作業を繰り返し、テストしてください。

すべてのジョイントの方向を適切にセットしたら、cometRename ツールでリネームします。最初のチェーンのルートから先端まで選択、[Rename]領域に「l_ribA」と入力、[Rename And Number]を押します。続けて、同じジョイントを選択したまま、接尾辞「_jnt」を追加しましょう。残りのジョイントチェーンでも、A を B、C に変更した同じ命名規則に従ってください。

これから反対側にジョイントをミラーしていきます。l_ribA1_jnt を選択、[スケルトン]>[ジョイントのミラー](Skeleton > Mirror Joint)オプションで[ミラー平面]:YZ、[ミラー対象]:[動作]にセットします。次に、[検索する文字列]領域にl_、[置換後の文字列]領域にr_ を入力、[適用]を押します。残りのジョイントチェーンにも同じ手順を繰り返してください。

さあ、ペアレント化の時間です。l_ribA1_jnt と r_ribA1_jnt の両方を選択、spine_ik10_jnt下にペアレント化。次に、l_ribB1_jnt と r_ribB1_jnt を選択、spine_ik9_jnt下にペアレント化。最後は、l_ribC1_jnt と r_ribC1_jnt を選択、spine_ik8_jnt下にペアレント化します(図33)。

図33:胸郭のジョイントをIK背骨にペアレント化します

15 胸郭コントロールを追加する

胸郭の各ジョイントにコントロールを追加しましょう(先端のジョイントは除く)。これは余分なコントロールに思えるかもしれませんが、アニメーターに役立つ、追加の変形コントロールセットになります。後でリグをシンプルにするため、
これらのコントロールは非表示にしますが、アニメーターは追加コントロールを希望するときに、いつでも再表示できます。

createControls.pyスクリプトで、コントロールを作成しましょう。[ スクリプト エディタ]でスクリプトをロードして、以下の行を編集します。

16 ctrl = cmds.circle( nr=(0, 1, 0),r=1.5, n=ctrlName)[0]

21 cmds.orientConstraint(ctrl, s, mo=0)

これによって、円の半径が変更され、コントロールの各ジョイントに[ 方向]コンストレイントが適用されます。では、l_ribA1_jnt、l_ribA2_jnt、l_ribA3_jnt を選択、スクリプトを実行してください(図34)。

図34:createControls.pyスクリプトで、それぞれの胸郭ジョイントにコントロールを作成

正しく動作するように、[アウトライナ]で新しいコントロール間に親子関係を作成しましょう。まず、l_ribA3_ctrl_offset を l_ribA2_ctrl の下にペアレント化、l_ribA2_ctrl_offset を l_ribA1_ctrlの下にペアレント化します。この処理を6つすべての階層に実行してください。続けて、6つの胸郭コントロール階層の _offsetノードを選択、[Ctrl]+[G]キーでグループ化、rib_ctrl_grp にリネームします(図35)。

図35:胸郭コントロールの階層をクリーンアップ

胸郭コントロールを背骨ジョイントに従わせつつ、そのコントロールとジョイントを2つの独立した階層に維持するため、コンストレイントを適用しましょう。spine_ik10_jnt と l_ribA1_ctrl_offset を選択、[コンストレイント]>[ ペアレント](Constraint > Parent)オプションに進みます。コントロールが反転しないように、[オフセットの保持]をオン、[適用]を押しましょう。完了したら、このジョイントチェーンをチェックし、残り5つの胸郭ジョイントにも手順を繰り返してください。