チュートリアル / 人体構造を意識したキャラクターセットアップ方法 ~ゼロから始めるMayaリギングの基本~
第5回:人体セットアップリアル編/補助骨について
- Maya
- アニメ
- インテグラル・ヴィジョン・グラフィックス
- キャラクター・リグ
- ゲーム
- コラム
- チュートリアル
- 学生・初心者
- 映画・TV
00.ごあいさつ
皆様こんにちは。
前回まではシンプルな人体セットアップとケージモデルの重要性について解説しました。
今回からよりリアルな人体セットアップの解説に向けて、とても大切な”補助骨”について解説していきます!
01.補助骨とは
「補助骨」とは、体幹骨だけでは表現が難しい、細かい変形や動きを補うために追加されるボーンのことです。
本コラムで紹介する補助骨は、体幹骨の動きに連動して自動で制御される骨であり、アニメーターが直接補助骨を動かすことは想定していません。
補助骨はキャラクターのモデルや求められる表現のレベルによって配置や設定が異なります。
より複雑でリアルな表現を求められる場合に使用することが多いです。
特定の動きを制御したり、細かいアニメーションを実現したりすることが可能になります。
補助骨の有効な例として、肘を見てみましょう。
現実の肘とシンプル編で設定した肘を見比べてみると、肘の尖りが無かったり、関節の内側の痩せ等が気になります。
現実に近い形状の変化(筋肉の伸び縮み、骨の複雑な機構、皮膚の食い込みなど)を表現しようにも、シンプル編で紹介した体幹骨の骨位置を工夫したり、ウェイト調整を頑張っても限界があります。
こうした場合に補助骨が必要になります。
肘が曲がる際に、連動して頂点を外側に移動してくれるような動きをする骨を追加する事で、形状の補正を行うことができます。
補助骨が増えることでウェイト調整や制御が複雑化したり、データが重くなったりすることがありますが、表現を豊かにするためには非常に有用です。
デフォームの細かい制御や動きに躍動感を持たせたりすることができますので、ぜひ補助骨を取り入れてみてください。
02.補助骨の例
こちらの項目で使用しているシリンダーのサンプルデータです。
バインドオプションの設定は第2回を踏襲しております。
補助骨の簡単な制御方法の例を、実際の手順とともに紹介します。
前回のコラムでは体幹部分の骨のみでセットアップを行いましたが、これだけでスキニングをすると関節部分が細くなってしまう問題があります。
この問題はジョイントの位置やスキニングを調整しても完全に解決するのは難しいです。
こういった問題を防ぐために、関節の位置に補助骨を追加し、その補助骨の移動、回転、スケールを使用して、形状を補正していきます。
03.補助骨の設定方法
では実際に、関節部分が細くなってしまう問題を例に、関節を曲げた時の内側の凹みや、外側の不自然な丸みなどが改善されるように、補助骨を追加して補正する方法を紹介します。
03-1.補助骨の配置
まず初めに、形状を補正したい関節のジョイントと同じ位置に補助骨を作成します。
補助骨の名前は役割がわかるように「_Spo (Supportの略)」を入れましょう。
補助骨を前後上下に分ける場合は、それぞれの位置を示す英語の頭文字を「_Spo」の後につけるとよりわかりやすくなります。
具体的には、以下のようになります。
・「_Spo」:子の補助骨をまとめるための補助骨(root骨)。
・「_SpoF (Front)」:前側を補正する補助骨。
・「_SpoB (Back)」:後ろ側を補正する補助骨。
・「_SpoT (Top)」:上側を補正する補助骨。
・「_SpoU (Under)」:下側を補正する補助骨。
今回は関節の前側と後ろ側を補助するため、中間の回転を制御するための「Joint_Spo」と、その子階層に「Joint_SpoF」「Joint_SpoB」を追加しています。
それぞれのジョイントの向きは下記の図のようになります。
・「_Spo」:体幹骨と同じ向きになります。
・「_SpoF」:+X軸が補正したい方向を向くように配置します(前方向)。
・「_SpoB」:+X軸が補正したい方向を向くように配置します(後方向)。
補助骨の配置が完了したら Modify > Freeze Transformation(トランスフォームのフリーズ)を実行してRotateの値を 0,0,0 にしておきましょう。
03-2.スキニング
スキニングをするために、追加した補助骨をインフルエンスに追加していきます。
追加したいジョイントとモデルを選択し、Rigging(リギング)メニュー > Skin(スキン) > Edit Influences(影響を編集) > Add Influence(インフルエンスの追加)のオプションメニューを開きます。
この時、End骨はウェイトを割り振らない扱いですが、意図せず動かしてしまったりしても、Go to Bind Pose(バインドポーズに移動)でバインドポーズに戻せるように、End骨も一緒に選択しておきます。
Add Influence(インフルエンスの追加)のオプションメニューでは、Lock weights(ウェイトのロック)にチェックを入れてから Apply(適用)してください。
このチェックを入れていない状態で実行すると、追加したジョイントにウェイトが自動で割り振られてしまい、せっかく調整した体幹部分のウェイトが崩れてしまいます。
補助骨のスキニングについては、凹みや丸みなどを補正できるくらいのウェイトを割り振ってあげましょう。
ウェイト調整は、補助骨の動きとバランスを取りつつ作業していくことが重要になります。
03-3.補助骨の制御(コネクション)
補助骨をインフルエンスに追加したらコネクション(補助骨の制御)を行っていきます。
このコラムでは主に Utility Nodes(ユーティリティノード)や Driven Key(ドリブンキー)を使用し、補助骨の制御をしていきます。
■ Utility Nodes の説明
Utility Nodes(ユーティリティノード)とは Hypershade(ハイパーシェード)の Create(作成)タブにある Utilities セクション内のノードです。
主に数値の演算などを行うことができます。
■ Driven Key の説明
Driven Key(ドリブンキー)とはアニメーションさせる技術の一つで、Driver(ドライバー )が変化すると Driven(ドリブン)が連動して変化する仕組みを作るための機能です。
これによって複雑なアニメーションを効率よく設定し、管理することが可能です。
■ 制御方法の説明
実際にどのように制御するかを説明します。
まずは、補助骨の親階層である Joint_Spo の制御を行っていきます。
Joint_Spo は、制御する側(ソース)のジョイントの回転に対して、その半分の値で回転するように設定します。
メニューから Windows > Node Editor(ノード エディタ)を開きます。
Node Editor(ノード エディタ)上にカーソルを移動して tab キーを押します。
すると入力窓が表示されるので、pairBlend と入力し、作成します。
※ pairBlend ノードは Utilities 内にはなく、Node Editor(ノード エディタ)上で作成する必要があります。
pairBlend ノードは、Input1(入力1)と Input2(入力2)の値を Weight(ウェイト)の割合でブレンドできるノードです。
Weight(ウェイト)の値が 0.0 の場合は Input1(入力1)の値がそのまま使用され、Weight(ウェイト)の値が 1.0 の場合は Input2(入力2)の値が使用されます。
次に、各ジョイントを作成した pairBlend ノードに接続し、補助骨を実際に制御していきます。
まず、体幹骨のジョイントの Rotate を pairBlend ノードの In Rotate 2 に接続し、pairBlend ノード の Out Rotate を Joint_Spo の Rotate に接続します。
これにより、体幹骨に連動して補助骨が制御できるようになります。
次に、体幹骨の回転を半分だけ補助骨に渡したいので、pairBlend ノードの Weight(ウェイト)値を 0.5 に設定します。
この設定により、In Rotate 1 と In Rotate 2 の回転値が 50% ずつ Joint_Spo に反映されます。
ここまでで、pairBlend ノードを使用することにより、Joint_Spo の中間の回転を制御する仕組みを作成することができました。
しかし、Joint_Spo の制御の設定をしただけでは、あまり形状の改善は見られません。
そこで、最初に追加した Joint_SpoF と Joint_SpoB に対して Driven Key(ドリブンキー)を使用し、内側と外側の形状を補正していきます。
Animation(アニメーション)メニューから Key(キー)> Set Driven Key(ドリブン キーの設定)> Set…(設定)を選択します。
すると、Set Driven Key(ドリブン キーの設定)のウィンドウが表示されます。
Driver(ドライバー)には、Joint2_Src(ソースとなるジョイント)を Load Driver(ドライバーのロード)で読み込み、Driven(ドリブン)には、Joint_SpoF(ターゲットとなるジョイント)を Load Driven(ドリブンのロード)で読み込みます。
下記の図のように、左側には読み込まれたジョイント名が表示され、右側には読み込まれたジョイントのアニメーション可能なアトリビュートが表示されます。
このアトリビュートを選択し、Key(キー)を押すことでアニメーションキーが設定され、制御できるようになります。
Driven Key(ドリブンキー)は、それぞれ任意の値でキーを設定していきますが、最初に必ず初期位置でキーを打つことが重要です。
ソースジョイントの Joint2_Src が Z 軸で -90 度回転した場合、ターゲットジョイントの Joint_SpoF が Y 軸で -1.25 移動するように設定します。
Driver ( Rotate Z ) | Driven ( Translate Y ) |
---|---|
0° | 0 |
-90° | -1.25 |
Driven Key(ドリブンキー)を設定して動かしてみると、キーとキーの間の角度でも不自然に凹んだりせず、スムーズにデフォームしているのがわかります。
また、Driven Key(ドリブンキー)はアニメーションキーなので、Graph Editor(グラフ エディタ)を使ってキーを追加、削除したり、値を編集したりすることが可能です。
これにより、動きをさらに細かく調整し、形状変化の間の補間を細かく調整できるため、より自然なアニメーションを実現できます。
Joint_SpoB も同様に Driven Key(ドリブンキー)を設定していきます。
外側の補助骨の補正では、形状が丸まって伸びたようになりやすいため、Translate Y、Scale Y を使ってシャープになるように補正します。
Driver ( Rotate Z ) | Driven ( Translate Y ) | Driven ( Scale Y ) |
---|---|---|
0° | 0 | 1 |
-45° | 0 | 0.75 |
-90° | 0.5 | 0.5 |
最終的な補助骨を設定した結果になります。
体幹骨だけでは表現できなかったことが補助骨を追加することによって可能になりました。
リギングではこれらの物を組み合わせることによって、より高度なリグを組むことができます。
そのほかにも Constraints(コンストレイント)や Expression(エクスプレッション)など、補助骨を制御するのに便利なものがあり、その特性に合うものを使って組んでいく必要があります。
04.おわりに
今回は補助骨についてご紹介いたしました。
少し難しい内容だったかもしれませんが、補助骨を理解することで作品のクオリティが格段に良くなりますので、うまく活用していきましょう!
次回は人体の腕に絞って、実際に補助骨を使用してのセットアップを行っていきます。
それでは、次回もよろしくお願いいたします!