チュートリアル / 人体構造を意識したキャラクターセットアップ方法 ~ゼロから始めるMayaリギングの基本~
第7回:人体セットアップリアル編/上半身の解説

  • Maya
  • アニメ
  • インテグラル・ヴィジョン・グラフィックス
  • キャラクター・リグ
  • ゲーム
  • コラム
  • チュートリアル
  • 学生・初心者
  • 映画・TV

00.ごあいさつ

皆様こんにちは。
インテグラル・ヴィジョン・グラフィックスの古屋です。

前回は、補助骨を使った左腕のセットアップについて解説しました。
今回はその続きとして、腕以外の「上半身」のセットアップに焦点を当てていきます。
胴体部分や肩周りの複雑な筋肉の連動を、補助骨を使ってリアルに再現していきましょう!

人体セットアップリアル編/上半身の解説

01.上半身の主な可動域の紹介

前回の左腕の解説では補助骨の解説も踏まえ「捻りを補正するにはこの骨」「痩せを緩和するにはこの骨」というように”骨の役割ごと” に紹介してきました。
説明しやすくする狙いがありましたが、今回からはより実践的に”動きの役割ごと” に解説していきます。

以下のGIFは、シンプル編のセットアップと、今回紹介するリアル編のセットアップで、肩を上げた際のデフォームを比較したものです。

補助骨によって、肩や胸、背中の筋肉が自然に連動しシルエットが改善されているのがわかります。

上半身の可動域

特に、今回のような筋肉質なモデルでは、
胴体部分のしなやかな動きと、内臓大胸筋 のボリューム変化
とそれに連動する僧帽筋三角筋 の複雑な動き
といった要素を正確に表現することが、キャラクターの説得力を高める鍵となります。

これらの動きを、補助骨を使ってどのように制御していくのか、順を追って見ていきましょう。

02.上半身の動きと補助骨の配置

上半身のリアルな動きを実現するために、動きに応じて補助骨を追加します。
まずは胴体から見ていきましょう。(腰は下半身の解説で紹介したいため今回は割愛します)

02-1.胴体の動きと役割

胴体には体を支え、動かすために重要な脊柱(背骨)と呼ばれる骨があります。
この脊柱は一般的に24個の椎骨(頸椎7個、胸椎12個、腰椎5個)と、仙骨・尾骨を合わせて26個前後の骨で構成されています。

そのため肘や膝の関節とは異なり、前後(屈曲/伸展)左右(側屈)回転(回旋)としなやかな動きが可能となっています。

実際のセットアップではこれだけの骨数を用意するのは大変なので、補助骨を使って再現します。

脊柱のイメージ

私達の生命維持と活動に不可欠な内臓は胴体に集中してたくさん詰まっています。
これらの大切な臓器を支えているのは脊柱に加えて、胴体を覆うように存在している大きな筋肉たちです。
腹直筋(腹筋)や外腹斜筋、大胸筋、広背筋、僧帽筋など見た目にも影響するような筋肉は、お腹や背中を覆うことで、脊柱一本の不安定な構造を支え、外部の衝撃から守るクッションの役割を担っていると同時に、正しい姿勢を保ち体幹を安定させています。

主な筋肉

また、呼吸をするときには腹筋や外腹斜筋、大胸筋なども呼吸に必要な動きを補助する役割を持っています。
特に、息を強く吐き出す際には、腹筋が収縮して横隔膜を押し上げ、効率的に肺から空気を送り出すのを助けます。
他にも歩く、走る、物を持ち上げるなどの日常生活におけるあらゆる動作で胴体の筋肉は極めて重要な役割を担っています。

02-2.胴体の補助骨

先述した脊柱のしなやかな動きや、胴体の内臓や大胸筋といった大きな筋肉の動きを再現するために、胴体にいくつか補助骨を配置します。
*リアル編の体幹骨は、前回のシンプル編からの変更点を踏襲した変更を加えています。

今回は、体幹の動きの要となる「脊柱」と、肩や腕の動きに連動する「胸筋」の動きを制御する以下の補助骨を追加しました。
これらの骨は、体幹のSpineとShoulderの動きを基に、より細かなメッシュの変形を制御する役割を持ちます。

・Spine_Spo
脊柱の屈曲・回旋といった柔軟な動きを補助し、胴体の内臓のボリューム感を表現します。
・Chest_Spo
肩の動きに伴う大胸筋の伸縮を表現します。

胴体のの骨配置

Spine_Spo1~2はSpineと同位置同軸に、Spine1~2_Spo1~2もSpine1~2と同位置同軸に配置します。
Spine_Spo1はコネクションによる回転の制御、Spine_Spo2はドリブンキーによる位置の制御を行っています。End骨はコネクション設定の際に視認性を上げるため、SpineとSpine1の中間地点に配置しています。(Spine1~2_Spo1~2も同様です)
骨の階層を分けることにより役割を明確化し制御しやすくしていますが、分けずに1本で制御すること自体は可能です。
ウェイトを持っているのはSpo2のみとなります。

Spine_Spo

Chest_SpoはSpine2と同位置同軸に配置します。
左右の大胸筋の制御に使用する(Left/Right)Chest_SpoはChest_Spoと同位置に配置します。
ただし、X軸の向きは親と同じではなく、大胸筋のボリュームの中心に向けて配置し、ドリブンキーで制御しています。
こうすることで回転、スケールの制御が1軸のみで可能になります。

Chest_Spo
Chest_Spoの動き

今回の場合、移動については1軸のみでの制御ができませんが、あらかじめ軸の向きを調整した骨階層を追加配置することで1軸のみで制御することができます。

02-3.肩の動きと役割

肩は人体で最も可動域の広い関節であり、腕を様々な方向に動かすための重要な役割を担っています。
この複雑な動きは、鎖骨から肩甲骨、上腕骨といったように複数の骨が連動することで実現されています。
肩甲骨と上腕骨はそれぞれ丸いボール型の骨(上腕骨)と、受け皿のような形状の骨(肩甲骨)で組み合わさっており、このボールと皿の組み合わせのおかげで、腕の上げ下げ(屈曲/伸展/外転/内転)、回転(内旋/外旋)、水平伸展、水平屈曲といった自由度の高い動きが可能となっています。

肩の動きのイメージ

肩は柔軟な動きを実現していますが、その一方で関節が外れやすく脱臼しやすいという弱点を持っています。
そんな肩の動きを支え、制御しているのが、肩周辺に付着する多くの筋肉です。
代表的な筋肉である三角筋は腕の上げ下げを、大胸筋と広背筋は前後の動き、僧帽筋は肩を竦めるといった動きに主に使われます。

肩周辺の主な筋肉

腕を動かすという一つの動作をとっても、実際にはこれらの骨と筋肉が複雑に連動しており、その結果として滑らかで力強い動きが生まれます。
物を持ち上げたり、投げたり、何かを操作したり、日常生活のあらゆる場面で、この肩の複雑な機能が不可欠な役割を果たしています。

02-4.肩の補助骨

腕の複雑な動きを自然に見せるため、肩周りにも補助骨を追加します。
ここでは、腕の動きに連動する「肩甲骨」の動きと、腕の捻転による「筋肉の変形」を制御する以下の補助骨を追加しました。
これらの骨は、ShoulderとArmの動きを基に、メッシュの破綻を防ぎ、よりリアルな変形を生み出す役割を担います。

・Shoulder_Spo
肩を動かした際の、肩甲骨の動きを再現します。
・Arm_Spo
腕の動きに伴う筋肉のボリューム感の表現や、メッシュ同士のめり込み、痩せなどを緩和する役割を果たします。

肩の補助骨の配置

(Left/Right)Shoulder_Spoは、(Left/Right)Armジョイントと同位置に配置します。X軸は親のShoulderに向けて配置します。
次に肩甲骨の動きの表現用に(Left/Right)Shoulder_SpoBを(Left/Right)Shoulder_Spoの子どもに同位置で配置します。X軸は肩甲骨へ向けます。
Spine_Spoと同様に、コネクションによる回転制御と、ドリブンキーによる位置の制御を行います。
これにより、肩を大きく動かした際の肩甲骨の動きを表現します。

Left/Right Shoulder_SpoBの動き

腕は先述したようにあらゆる方向に動かすことが可能なので前回の手首のように、上下前後に対応する形で配置します。
まずはShoulder_Spoと同様にコネクションで回転制御するための(Left/Right)Arm_Spoを(Left/Right)Armと同位置同軸に配置します。
次に(Left/Right)Arm_Spo(T/U/F/B)はArm_Spoと同位置に配置します。
Arm_SpoTは三角筋のボリュームの頂点付近に向けて、Arm_SpoUは脇の下の最も痩せてしまうピーク地点に向けて配置します。
Arm_SpoFとBも腕を動かした際に最も痩せてしまう箇所に向けて配置します。ご自身の腕を実際に回して確認してみてください。

Left/Right Arm_Spoの配置

03.具体的なセットアップ解説

それでは実際に追加した補助骨に対して、コネクションとドリブンキーを設定していきましょう。
といっても、実は前回の左腕の解説で実践した内容を駆使すれば、問題なくセットアップが行えてしまいます。ぜひ見返しながら進めてみてください!

03-1.胴体のコネクションとドリブンキー

胴体にはSpine_SpoとChest_Spoを追加しました。
まずはSpine_Spoから見ていきます。

▼Spine_Spoのコネクション

Spine_Spoのコネクション

Spineの補助骨は先述した通り、Spine_Spo1とSpine_Spo2の2つの骨を使用して制御しています。
Spine_Spo1ではSpineの各回転に対して半分の値をとるようにpairBlendノードを使用してコネクションしていきます。
pairBlendノードについては第5回で解説していますので合わせてご確認ください。
こうすることで、体の曲げに対して急な変形を抑制することができ、しなやかな脊椎の動きを表現することができます。

Spine_Spoのコネクション例

pairBlendを使用してメッシュの急な変形をある程度抑えましたが、もう少し改善の余地があるのと、まだ内臓や脂肪などのボリューム感が表現できていません。
Spine_Spo2にドリブンキーを適用し移動させることで、改善することができます。

Spine_Spo2のドリブンキー

回転と移動、両方を組み合わせることで形状の破綻を抑制し、内臓や脂肪のボリューム感を表現することができます。ドリブンキーの値は以下のようになります。

Spine_Spo2のドリブンキー値

Spine1_Spo1~2とSpine2_Spo1~2も上記と同様の手順でコネクションすることで胴体の設定を行えます。ウェイトを塗りながら調整を繰り返してみてください。

Spine_Spoの動き

胴体だけではなく、首や動物の尻尾などもこの設定を活用できる場合があります。お手軽でよく使うセットアップなのでぜひ覚えておきましょう!

▼Chest_Spoのドリブンキー

Chest_Spoのドリブンキー

大胸筋は上腕を前に引き寄せるための筋肉で、鎖骨から上腕にかけて広がっています。
腕や肩を前に引き寄せる際には収縮し膨張しますが、後ろに動かす際や上げ下げの際には伸縮します。
Chest_Spoはそんな肩の動きに対しての大胸筋の動きを再現する骨です。
今回はドリブンキーを設定して制御します。
肩(Shoulder)の回転に連動して、Chest_Spoが適切に移動・回転・スケールすることで、大胸筋の膨らみや伸びを表現します。

ドリブンキーの値は以下のようになります。

Chest_Spoのドリブンキー値

あくまでも参考の値になりますので、ウェイトも一緒に塗りながら調整を繰り返していきましょう。

Chest_Spoのドリブンキー値の動き

03-2.肩のコネクションとドリブンキー

肩には肩甲骨を表現するためのShoulder_Spo、可動域の広い腕の筋肉を表現したり、メッシュの破綻を防ぐためのArm_Spoを配置しました。
骨数が多く複雑そうに見えますが、やっていることは今までとほとんど同じなので気負いせず順番に見ていきましょう。

Shoulder_Spoのコネクション

▼Shoulder_Spoのコネクション

肩にはコネクションで回転を制御するShoulder_Spoと、ドリブンキーで肩甲骨を表現するShoulder_SpoBを配置しました。
まずはShoulderの回転で動きすぎてメッシュの形状が崩れてしまわないよう、Shoulder_Spoにコネクションの設定をして回転値を抑制していきます。
前回の手首のときのように、縦横の回転に対して半分の値で回転するように設定していきます。

まず、Shoulderの回転値を扱いやすくするために「eulerToQuat」ノードでオイラー角からクォータニオンに変換します。これにより回転の値と捻りの成分を別々に扱えるようになります。
そして「quatInvert」ノードで必要な部分だけを取り出して逆方向の動きも計算します。
次に「quatProd」ノードを使って、これらの値を組み合わせます。その後「quatToEuler」ノードで再びオイラー角に戻します。
最後に「multiplyDivide」ノードを使って、回転値に0.5をかけることで、元の回転値の半分の動きを作ります。これにより、狙っていた肩の動きが実現できます。
前回のコネクション設定でもう少し詳しく解説しているため、あわせてご確認ください。

Shoulder_Spoのコネクション例

▼Shoulder_Spoのドリブンキー

Shoulder_SpoBにドリブンキーを設定して肩甲骨の動きを表現します。
先ほどコネクション設定を行ったShoulder_Spoの回転をソースに設定しShoulder_SpoBを制御します。
腕を前に向けたときは肩甲骨が伸び、後ろに向けたときには押し出されて盛り上がるように設定します。

Shoulder_SpoBのドリブンキー値

ドリブンキーの値とShoulder_SpoBのウェイトは以下のようになります。

Shoulder_SpoBのドリブンキー値
Shoulder_SpoBのドリブンキー値の動き

▼Arm_Spoのコネクション

腕の構造は、前回紹介した手首や先ほど作成した肩の構造と非常によく似ています。
Arm_Spoに対するコネクション設定もShoulder_Spoと全く同じです。
手首や肩を参考に作成してみてください。

Arm_Spoのコネクション例

半分の値を取りたいだけなら、Spine_SpoのようにpairBlendでも良いと思うかもしれません。
肩周りでは三角筋のように大きな筋肉があるため、腕を捻ったときに形状が崩れてしまう可能性があり、できるだけ捻りの影響を与えたくありません。
pairBlendだとすべて等しく抑制することができますが、捻りだけ影響を与えない、といったことはできません。
なので今回のコネクションのように、特定の回転だけを抽出できるような変換を行って制御しているのです。
以下の図は手前が今回のコネクション設定、奥側がpairBlendでweightが0.5のものになります。

Arm_Spoのコネクション設定とpairBlendの比較

pairBlendを使用した場合、三角筋が伸びたり、大胸筋が凹んでしまったりしてしまいます。
一見すると些細な違いに思えるかもしれませんが、キャラクターの動きの自然さや見栄えに大きく影響するため今回のようなコネクションの設定を行っています。

▼Arm_Spoのドリブンキー

Arm_Spo以下に配置したLeftArm_Spo(T/U/F/B)の4つの補助骨はドリブンキーで制御します。
Arm_Spoをソースに設定し、腕を上下前後あらゆる方向に動かしてもメッシュの形状の破綻を抑え、筋肉の塊感が維持されるように設定します。

Arm_Spoのドリブンキー

ドリブンキーの値とウェイトは以下のようになります。

Arm_Spoのドリブンキー値
Arm_Spoのドリブンキー値の動き

以上のようにArm_Spo(T/U/F/B)のドリブンキーを設定することで、腕の回転に応じて各方向の補助骨が適切に移動し、三角筋や広背筋などの筋肉の形状変化の表現と、メッシュの痩せや膨らみを緩和したりすることができます。
これらの設定は一見複雑に見えますが、実際の人体の動きを観察し、筋肉の動きを理解することで、より説得力のあるキャラクターの動きを実現することができます。
ドリブンキーやウェイトの値は、キャラクターのプロポーションや求められる表現によって調整が必要ですので、実際に動かしながら最適な値を見つけていくことをお勧めします。

04.おわりに

今回は、補助骨を使ったリアルな上半身のセットアップについて解説しました。
脊柱のしなやかな動きや、肩周りの複雑な筋肉の連動を再現することで、より一層クオリティが向上します。
今回ご紹介した内容は応用範囲が広く、様々なキャラクターに応用できますのでぜひ挑戦してみてください。
次回はいよいよ最終回として「下半身のセットアップと全体のまとめ」をお送りする予定です。
それでは、次回もよろしくお願いいたします!

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