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

リギングの準備が整いました。それでは、コンセプト、ツール、テクニックを習得していきましょう。これらは、あなたのお気に入りになる可能性を秘めています


Jahirul Amin

Jahirul Amin は、英国ロンドンの DNEG の 3Dトレーナーです。NCCA(National Centre for Computer Animation) での3Dコンピュータアニメーションの講師経験も活かして、 3D Artist magazine や 3dtotal.com に定期的に寄稿しています。
Jahirul Amin は、英国ロンドンの DNEG の 3Dトレーナーです。NCCA(National Centre for Computer Animation) での3Dコンピュータアニメーションの講師経験も活かして、 3D Artist magazine や 3dtotal.com に定期的に寄稿しています。

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

>>>「01 リグの基本」こちら

01 ペアレント化と階層

どのようなリグにも、家系図のような一連の関係や接続があります。これらの接続を構築する1つの方法に「ペアレント化」があります。ペアレント化とは、1つのオブジェクト(親:マスター)で別のオブジェクト(子:スレイブ)をリードするプロセスです。親子関係が便利な理由は、親オブジェクトを移動すると子オブジェクトも従いますが、引き続き、子オブジェクトを独立して操作できるところです。これはとても重宝する機能です。

親子関係を作成しながら、 階層の構築を開始しましょう。階層を理解するのは簡単です。しかし、リギングを始めると、すぐに『ロード・オブ・ザ・リング』の相関図のような混みいった階層になるでしょう。したがって、作成する接続を正しく認識し、必ずすべての要素に名前が付いていることを確認してください。Maya で最初に作成したオブジェクトは([インタラクティブ作成]はオフ)、ワールド空間の子として原点に配置されます(図01)。オブジェクトを周囲に移動してから、原点に戻す場合、[移動]チャネルに 0、0、0 と入力します。

図01:最初に作成するオブジェクトはすべて子になります

オブジェクトA(立方体)と B(球)をシーン内の任意の場所に配置します。既定では、両方とも子なので、オブジェクトA の下にオブジェクトBを配置、ペアレント化しましょう(図02)。

図02:オブジェクトの下に別のオブジェクトを配置すると、親子関係が作成されます

子オブジェクトB の[移動]チャネルに 0 を入力すると、親オブジェクトA と同じ位置に移動します。これがペアレントの動作です(図03)。ここで重要なポイントは、ワールド空間の好きな場所に配置したオブジェクト位置が、ワールドの中心になるということです。

図03:子オブジェクトの[移動]値にゼロを入力すると、親オブジェクトと同じ位置にスナップします

ここまでオブジェクトを使った方法を見てきたので、今度はグループノードで親子階層を構築してみましょう。ポリゴン立方体、NURBS 球、カメラなどは、すべてシェイプノードとそれに関連付いたトランスフォームノードを持っています。これらはビューポートで選択できます。オブジェクトの1つを選択して[アトリビュート エディタ]を開くと、< オブジェクト名 > Shape タブが表示されます。 時には、ビューポートで選択したくないオブジェクトとペアレント化する機会もあるでしょう。そんなときは、グループノードが便利です(図04)。

図04:グループノードは、親子階層の構築やオブジェクトをネスト化できる優れた方法です

グループノードは[Ctrl]+[G]キーで作成できます。オブジェクトを選択してキーコマンドを実行すると、group1 ノードが生成されます。また、オブジェクトを選択しないで実行すると、null1ノードが生成されます。これら2 つのノードは、関連するシェイプを持たないトランスフォームノードです。

[アトリビュート エディタ]でその違いを確認してください。この方法は、リグの構造を整理するときに役立つことでしょう。また、アニメーションコントロールを作成するときにも、重要な役割を果たします(後で詳しく解説します)。

02 コンストレイント

コンストレイントは、Maya のリレーションシップを構築するもう1つの方法です。ペアレント化との違いは階層構造への影響範囲です。これを実行すると、コンストレイントされた(スレイブ)オブジェクトノードの下にコンストレイントノードが作成されます(図05)。

図05:コンストレイントはオブジェクト階層に影響しませんが、関係を記述する追加ノードを作成します

ペアレント化はすべてのトランスフォームアトリビュートを操作し、コンストレイントは、操作したいアトリビュートを決定できます(図06)。

図06:ペアレント化とは異なり、コンストレイントは選択した好みのアトリビュートにのみ影響します

例えば、[方向]コンストレイントは、[回転]アトリビュートにのみ影響します。そして、コンストレイントノードにはウェイト値があります。これはマスターオブジェクトがスレイブオブジェクトに与える影響量を決定します。

子オブジェクトを操作できるペアレント化とは異なり、コンストレイントで子を操作するには、ウェイト値をオフにする必要があります。さらに、コンストレイントは、複数のオブジェクトで1つのオブジェクトに影響を与えられるという別の長所があります。ウェイト値を使えば、どのマスターオブジェクトでスレイブオブジェクトを操作するか決定できます(図07)。これは、「FK/IKブレンド」や「位置切り替え」の作成に繋がります。

図07:コンストレイントは複数のオブジェクトで1つのオブジェクトを操作できます

03 ジョイント

文字どおり(比喩的にも)、リギングのボルトとナットに相当する「ジョイント」について解説しましょう。ジョイントはモデルの変形に大きな影響を与えます。したがって、Maya のジョイントがどのように機能するかをしっかりと把握することが重要です。

ジョイントは十字型を含む球体のような外観です。ジョイントチェーンを作成すると、三角形がジョイント間に描画されます。これがジョイントセグメントです(図08)。

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

他のすべてのオブジェクトと別に設定するジョイントには、ユニークな特徴があります。Maya のオブジェクト(立方体、カメラ、ライト)は、移動/回転/スケールを行えるトランスフォームノードが関連付けられています。これに加え、ジョイントには「向き」があります。このアトリビュートは、[ジョイントの方向]と呼ばれ、ローカル回転軸の方向を設定します。現時点で、驚きはないかもしれませんが、リグの制作を始めて、ジョイントを配置するときに、その利点を理解できるでしょう。

チェーンに複数のジョイントがあれば、親子階層が形成されます。親ジョイントは常に子ジョイントの方を向きます([移動ツール]の[軸方向]を[オブジェクト]にセット)。もし、子を向いていない親ジョイントを見つけたら、ジョイント構造の再構築を強くお勧めします。そのままにしておくと、ジョイントを回転したときに、予測不能な動きや位置ズレを引き起こすことがあります。ジョイントがリグの「主動筋」の役割を果たすように、動作が正しく処理されていることを確認します。これを確実に行うため、いくつかのガイドラインを示しましょう。

まず、リグに含まれるすべてのジョイントとコントロールで、[回転]チャネルの既定値をゼロにします。こうしておけば、簡単に、確実に元のポーズに戻すことができます。次は、ジョイントの配置です。チェーンのルートジョイントは自由に任意の軸へ移動できます。しかし、子ジョイントは 1つのアトリビュートを介して移動し、それは長さに関連します(図09)。

図09:親と子のジョイント間の距離で、長さが明らかになります

既定では[移動 X]アトリビュートですが、後で[移動 Y]に切り替えることになるでしょう。ジョイントの配置を制限しているように感じられるかもしれませんが、そんなことはありません。これらの操作によって、リグのスケルトンがクリーンになります。

作成するリグ全体に、一貫性を維持する必要があります。厳密な命名規則に従ってください。すべてのジョイントに接尾語の _jnt を、すべてのIKに _ik を付けます。このようなパターンに従えば、デバッグ作業を楽にしてくれることでしょう。また、リグで作業するアーティストが複数いる、あるいはあなたの作業を誰かに完結してもらう場合でも、素早く理解してもらえます。

アニメーターのことを考慮し、リグの挙動を全体的に統一させる必要があります。リグの屈曲は、正の値で同じ回転軸によって扱われるようにしましょう。一方で、リグの伸張は、負の値で同じ回転軸にします。こうしておけば、アニメーターが両腕の肘ジョイントを伸ばしたいときに、一方向の単軸回転で実行できます(図10、11、12)。

この動きによって生成されたアニメーションデータは、[グラフ エディタ]で簡単に読み取ることができます。

図10:既定の位置の両腕

図11:両腕の肘の屈曲は、正のZ回転で作成します

図12:おや! リグに整合性が維持されないと、問題が起こります