チュートリアル / 人体構造を意識したキャラクターセットアップ方法 ~ゼロから始める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」を追加しています。

中間の回転を制御するための「Joint_Spo」と、その子階層に「Joint_SpoF」「Joint_SpoB」を追加

それぞれのジョイントの向きは下記の図のようになります。
・「_Spo」:体幹骨と同じ向きになります。
・「_SpoF」:+X軸が補正したい方向を向くように配置します(前方向)。
・「_SpoB」:+X軸が補正したい方向を向くように配置します(後方向)。

JointOrient

補助骨の配置が完了したら Modify > Freeze Transformation(トランスフォームのフリーズ)を実行してRotateの値を 0,0,0 にしておきましょう。

03-2.スキニング

スキニングをするために、追加した補助骨をインフルエンスに追加していきます。
追加したいジョイントとモデルを選択し、Rigging(リギング)メニュー > Skin(スキン) > Edit Influences(影響を編集) > Add Influence(インフルエンスの追加)のオプションメニューを開きます。
この時、End骨はウェイトを割り振らない扱いですが、意図せず動かしてしまったりしても、Go to Bind Pose(バインドポーズに移動)でバインドポーズに戻せるように、End骨も一緒に選択しておきます。

End骨

Add Influence(インフルエンスの追加)のオプションメニューでは、Lock weights(ウェイトのロック)にチェックを入れてから Apply(適用)してください。
このチェックを入れていない状態で実行すると、追加したジョイントにウェイトが自動で割り振られてしまい、せっかく調整した体幹部分のウェイトが崩れてしまいます。

Lock weights(ウェイトのロック)にチェックを入れてから Apply(適用)する

補助骨のスキニングについては、凹みや丸みなどを補正できるくらいのウェイトを割り振ってあげましょう。

補助骨のスキニングについては、凹みや丸みなどを補正できるくらいのウェイトを割り振る

ウェイト調整は、補助骨の動きとバランスを取りつつ作業していくことが重要になります。

03-3.補助骨の制御(コネクション)

補助骨をインフルエンスに追加したらコネクション(補助骨の制御)を行っていきます。
このコラムでは主に Utility Nodes(ユーティリティノード)や Driven Key(ドリブンキー)を使用し、補助骨の制御をしていきます。

■ Utility Nodes の説明

Utility Nodes(ユーティリティノード)とは Hypershade(ハイパーシェード)の Create(作成)タブにある Utilities セクション内のノードです。
主に数値の演算などを行うことができます。

Utility Nodes(ユーティリティノード)

■ Driven Key の説明

Driven Key(ドリブンキー)とはアニメーションさせる技術の一つで、Driver(ドライバー )が変化すると Driven(ドリブン)が連動して変化する仕組みを作るための機能です。
これによって複雑なアニメーションを効率よく設定し、管理することが可能です。

Driven Key(ドリブンキー)

■ 制御方法の説明

実際にどのように制御するかを説明します。
まずは、補助骨の親階層である Joint_Spo の制御を行っていきます。
Joint_Spo は、制御する側(ソース)のジョイントの回転に対して、その半分の値で回転するように設定します。

Joint_Spo は、制御する側(ソース)のジョイントの回転に対して、その半分の値で回転するように設定

メニューから Windows > Node Editor(ノード エディタ)を開きます。

メニューから Windows > Node Editor(ノード エディタ)を開く

Node Editor(ノード エディタ)上にカーソルを移動して tab キーを押します。
すると入力窓が表示されるので、pairBlend と入力し、作成します。

※ pairBlend ノードは Utilities 内にはなく、Node Editor(ノード エディタ)上で作成する必要があります。

tabキーを押してpairBlendと入力して作成

pairBlend ノードは、Input1(入力1)と Input2(入力2)の値を Weight(ウェイト)の割合でブレンドできるノードです。
Weight(ウェイト)の値が 0.0 の場合は Input1(入力1)の値がそのまま使用され、Weight(ウェイト)の値が 1.0 の場合は Input2(入力2)の値が使用されます。

airBlend ノード

次に、各ジョイントを作成した 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 ノードの Weight(ウェイト)値を 0.5 に設定

ここまでで、pairBlend ノードを使用することにより、Joint_Spo の中間の回転を制御する仕組みを作成することができました。

Joint_Spo の中間の回転を、pairBlend ノードを使用することによって制御する仕組み

しかし、Joint_Spo の制御の設定をしただけでは、あまり形状の改善は見られません。
そこで、最初に追加した Joint_SpoF と Joint_SpoB に対して Driven Key(ドリブンキー)を使用し、内側と外側の形状を補正していきます。

Animation(アニメーション)メニューから Key(キー)> Set Driven Key(ドリブン キーの設定)> Set…(設定)を選択します。
すると、Set Driven Key(ドリブン キーの設定)のウィンドウが表示されます。

Set Driven Key(ドリブン キーの設定)のウィンドウが表示

Driver(ドライバー)には、Joint2_Src(ソースとなるジョイント)を Load Driver(ドライバーのロード)で読み込み、Driven(ドリブン)には、Joint_SpoF(ターゲットとなるジョイント)を Load Driven(ドリブンのロード)で読み込みます。

Joint_SpoF(ターゲットとなるジョイント)を Load Driven(ドリブンのロード)で読みこむ

下記の図のように、左側には読み込まれたジョイント名が表示され、右側には読み込まれたジョイントのアニメーション可能なアトリビュートが表示されます。
このアトリビュートを選択し、Key(キー)を押すことでアニメーションキーが設定され、制御できるようになります。

左側には読み込まれたジョイント名が表示され、右側には読み込まれたジョイントのアニメーション可能なアトリビュートが表示

Driven Key(ドリブンキー)は、それぞれ任意の値でキーを設定していきますが、最初に必ず初期位置でキーを打つことが重要です。
ソースジョイントの Joint2_Src が Z 軸で -90 度回転した場合、ターゲットジョイントの Joint_SpoF が Y 軸で -1.25 移動するように設定します。

Driver ( Rotate Z ) Driven ( Translate Y )
0
-90° -1.25
ソースジョイントの Joint2_Src が Z 軸で 90 度回転した場合、ターゲットジョイントの Joint_SpoF が Y 軸で -1.25 移動するように設定

Driven Key(ドリブンキー)を設定して動かしてみると、キーとキーの間の角度でも不自然に凹んだりせず、スムーズにデフォームしているのがわかります。

Driven Key(ドリブンキー)を設定して動かしてみると、キーとキーの間の角度でも不自然に凹んだりせず、スムーズにデフォームしているのがわかります。

また、Driven Key(ドリブンキー)はアニメーションキーなので、Graph Editor(グラフ エディタ)を使ってキーを追加、削除したり、値を編集したりすることが可能です。
これにより、動きをさらに細かく調整し、形状変化の間の補間を細かく調整できるため、より自然なアニメーションを実現できます。

動きをさらに細かく調整し、形状変化の間の補間を細かく調整できるため、より自然なアニメーションを実現

Joint_SpoB も同様に Driven Key(ドリブンキー)を設定していきます。
外側の補助骨の補正では、形状が丸まって伸びたようになりやすいため、Translate Y、Scale Y を使ってシャープになるように補正します。

Driver ( Rotate Z ) Driven ( Translate Y ) Driven ( Scale Y )
0 1
-45° 0 0.75
-90° 0.5 0.5
Joint_SpoB も同様に Driven Key(ドリブンキー)を設定

最終的な補助骨を設定した結果になります。
体幹骨だけでは表現できなかったことが補助骨を追加することによって可能になりました。

体幹骨だけでは表現できなかったことが補助骨を追加することによって可能

リギングではこれらの物を組み合わせることによって、より高度なリグを組むことができます。
そのほかにも Constraints(コンストレイント)や Expression(エクスプレッション)など、補助骨を制御するのに便利なものがあり、その特性に合うものを使って組んでいく必要があります。

04.おわりに

今回は補助骨についてご紹介いたしました。
少し難しい内容だったかもしれませんが、補助骨を理解することで作品のクオリティが格段に良くなりますので、うまく活用していきましょう!

補助骨なしと補助骨ありの比較

次回は人体のに絞って、実際に補助骨を使用してのセットアップを行っていきます。
それでは、次回もよろしくお願いいたします!

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。