3dtotal.comから海外のデジタルアート最新情報
(映画、ゲーム、映像関連)を日本語でお伝えします!

CGキャラクターリギング入門:02 リギングの基本原則

Pocket

04 FK と IK

これから、アニメーターと連携する 2種類の主要な動作、「フォワード・キネマティクス(FK)」「インバース・キネマティクス(FK)」について、見ていきましょう。その機能、違い、それぞれの使い道を知ることが重要です。

FK は「回転」を使用し、ルートジョイントの動きを基点にチェーンを従わせます(図13)。例えば、ボールを蹴るとき、脚は股関節から後向きに回転した後、膝から後向きにさらに回転します。この動作に続いて、脚は股関節から前へ回転、続けて膝が回転します。最終的に足首から足をボールに接触させます。こうして回転はルートからつま先まで伝わります。FK はとても滑らかで自然な弧(運動曲線/アーク)を作成します。

図13:2つのジョイント、ジョイントセグメント、ジョイントの方向

IK は「移動」でジョイントチェーンを操作します(図14)。「IK ハンドル」を操作し、チェーンの先端を基点に移動します。ルートから腰を回転する FK とは対照的に、IK では回転が自動計算されます。つまり、IKハンドルからジョイントチェーンのルートに向かって処理されます。

図14:2つのジョイント、ジョイントセグメント、ジョイントの方向

IK 運動は先端を基点に、ルートに向けて動作するため、アニメーターが周囲の環境を(突き破らずに)接触できるアセットを求めるとき、最良の選択になるでしょう。例えば、左右のステップが地面と接触する「歩行サイクル」の脚の運動に、IKは適しています。しかし、同じ歩行サイクルでも、滑らかな回転を利用する手のスイング運動では、FK が適しています。

アニメーターの観点からこれらの運動方式には、長所と短所があります。どちらの方式を採用するかは、アニメーターの必要とする運動の性質で判断されます。リガーとアニメーターはいつも綿密に連携する必要があると述べました。それが重要な理由を、理解いただけたことでしょう。

05 回転順序とジンバルロック

リガーとアニメーターの仕事に不可欠な[回転順序]は、CG制作でよく見過ごされる要素です。このアトリビュートは、向きが評価される順序のことです。既定では、すべてのオブジェクトの[回転順序]が XYZ になっています(図15)。

図15:[アトリビュート エディタ]の[トランスフォーム アトリビュート]に[回転順序]があります

[回転順序]設定を見てみると、右から左が最も分かりやすいでしょう。XYZ とは、ZがYとXを保持、YがXを保持、XはYとZに影響しません。既定の Maya でオブジェクトを回転し、ローカル空間で見てください。重なりあう軸はありません(図16)。

図16:オブジェクト(ローカル)モードの回転の表示では、実際に起こっていることが明らかになりません

しかし、[軸方向]を[ジンバル]モードに切り替えると、軸に起こっている真の表現を見ることができます。これが頭痛の種「ジンバルロック」と呼ばれる現象を引き起こします。

ジンバルロックは、「2つの回転軸がお互いに重なっている状況」を説明する際に使われる用語です。この結果、両軸が同じ回転となり、選択したオブジェクトの1つの軸で、回転機能が失われてしまいます(図17)。

図17:[ジンバル]モードは、回転に起こっていることを明らかにします。ここではジンバルロックが発生しています

[ジンバル]モードで作業するときにのみ、実態を目で確認できますが、[オブジェクト]モードで作業すれば、3つの軸がいつも正しく動作するように思えます。誰もジンバルロックを引き起こしたくありません。では、どうやってそれを避ければ良いでしょうか? 答えは簡単です。リガーやアニメーターとして、特定のタスクに必要な動きと、最適な[回転順序]を考えることです。

[回転順序]とジンバルロックの感覚をつかむには、立方体のようなプリミティブオブジェクトで試します。[回転]モードを[ジンバル]にセット、1度に1 つの軸を回転します。既定の[回転順序]:XYZ を確認したら、別の値に変更、もう1度結果を確認してみましょう。

06 アニメーション コントロール

ここまで、ペアレント化、階層、コンストレイント、回転順序を取り上げました。次はアニメーションコントロールを見ていきます。

シンプルなリグでは、ジョイントを直接アニメートして、十分な操作を行えます。しかし、純粋なジョイントベースセットアップの場合、かなり制限があります。大きな柔軟性と可能性を実現するには、コントロールを配置しなくてはなりません。また、リグがアニメーターの手に渡って、無事である保証もありません。アニメーションプロセスで、設定が削除されることもあるでしょう。一般的に、削除されたジョイントを再構築するよりも、削除されたコントロールを元に戻すほうが簡単です。つまり、以下の内容は一見の価値があります。

アニメーションコントロールには、「カーブ」が適しています。それらは非レンダリング要素なので、レンダリング前に、非表示にする必要はありません。カーブには[CV カーブ ツール]でカスタムデザインした要素、あるいは、シンプルなNURBSプリミティブで良いでしょう(図18)。

図18:選択するアニメーションコントロールは、[CV カーブ ツール]で作成します

カーブを使うもう1つの利点は、その形状を簡単に編集できることです。つまり、少ない手数でリグをカスタマイズできます。私の場合、FKコントロールに円、IKコントロールに四角形をよく使います。自身に合った方法を見つけ出してください。重要なポイントは、カーブでプロセスを簡略化することです。

すべてのコントロールのグループ(トランスフォーム)ノードで、小さな階層を作成しましょう(図19)。これで、操作するジョイントとまったく同じ場所に合わせてセットできます。コントロールに 2次レベルを作ることは重要です。また、アニメーターが[移動]と[回転]チャネルにゼロを入力すれば、コントロールの位置と回転が既定の場所に戻ります。

図19:作成するそれぞれのコントロール階層

階層は次のように並べましょう。最上位ノードは純粋に配置用ノードで、接尾辞は _offset です。2番めのノードはコントロールの 2次レベルで、接尾辞は _auto です。階層の最後のオブジェクトは、アニメーションカーブです。アニメーターはビューポートでこれを選択します。

コントロールは、以下の2つの方法のいずれかで配置できます。どちらでも、同じ結果になるので、好みの方法を選んでください。

方法1:まず、_offset ノードを選択、続けて[Shift]キーを押したまま、操作するジョイントを選択、[P]キーを押します。これで_offsetノードがジョイントの下にペアレント化されます。_offsetノードの[移動]と[回転]にゼロを入力すると、コントロール階層がすべてジョイントと同じ位置にスナップし、同時に、向きも整列します。

次に、_offsetノードを選択、[Shift]+[P]キーを押して、ジョイントをペアレント解除します。その結果、_offsetノードに移動値が残ります。これらは、このノードのワールド空間の座標なのでそのままにしましょう。 auto や _ctrl を選択すると、移動と回転の値がすべて 0 になっています。さらに、向きもジョイントに整列しています。完璧ですね。

方法2:コントロールが必要なジョイントを選択、続けて[Shift]キーを押したまま、_offsetノードを選択、[コンストレイント]>[ペアレント](Constraints > Parent)オプションに進みます。[オフセットの保持]をオフにして[適用]を押しましょう。コントロール階層全体が所定の位置にスナップします。最後に、[アウトライナ]で _offsetノードの下にある parentConstraintノードを削除してください。これでコントロールは所定の位置になりました。

一つひとつ手動で作成するのは骨の折れる作業になるため、後で小さなスクリプトを使い、コントロールの作成と配置を自動化します。

コントロールを配置できたら、次は関連するジョイントを操作できるようにします。ここではコンストレイントを試していきます。例えば、_ctrlオブジェクトを選択、続けて[Shift]キーを押したまま、関連するジョイントを選択、[コンストレイント]>[ 方向](Constraint > Orient )オプションに進みます。[オフセットの保持]をオフにして、[適用]を押します。

仕上げに、アニメーターが選択しやすい形にコントロールを調整してください。これを実行するには、 コンポーネントモードに切り替え、コントロールバーテックス(CV)を使って編集します(図20)。コンポーネントで編集すると、コントロール自体は正しい位置に留まります。

図20:コンポーネントモードでコントロールシェイプを編集

キャラクターで実行する動作を考慮する必要があります

 

※本チュートリアルは、書籍『Maya キャラクタークリエーション』からの抜粋です

■関連記事:【インタビュー】書籍『MAYA キャラクタークリエーション』の著者、Jahirul Amin氏


編集部からのおすすめ:キャラクターのリギングについて詳しく知りたい方には、書籍『Mayaリギング 改訂版』『3ds Max リギング』もおすすめします。

 


翻訳:STUDIO LIZZ
編集:3DTotal.jp

Pocket