チュートリアル / 人体構造を意識したキャラクターセットアップ方法 ~ゼロから始めるMayaリギングの基本~
第3回:人体セットアップシンプル編/スキニング
- Maya
- アニメ
- インテグラル・ヴィジョン・グラフィックス
- キャラクター・リグ
- ゲーム
- コラム
- チュートリアル
- 学生・初心者
- 映画・TV
00.ごあいさつ
01.ウェイト調整の統一方針
02.部位ごとのデフォーム解説
02-1.胴体
02-2.首・頭
02-3.足首
02-4.膝
02-5.尻・腿(股関節)
02-6.指
02-7.肘
02-8.肩
03.チェック
03-1.ウェイトが飛んでいないか(意図しない頂点のウェイト)の確認
03-2.カスタムツールを使ってインフルエンスジョイントを管理する
04.Tips紹介
04-1.アニメーションを再生して確認
04-2.意図しないウェイトになる条件
04-3.brSmoothWeights
05.おわりに
00.ごあいさつ
皆様こんにちは。
インテグラル・ヴィジョン・グラフィックスのリードリガーの古屋です。
引き続きシンプルなキャラクターセットアップについて解説していきます。
前回はスキンバインドとHumanIKの設定について解説しました。
今回はバインドしたモデルにスキニングを行い、部位ごとにきれいなデフォームになるように解説していきます!
01.ウェイト調整の統一方針
今回のコラムでのウェイトの影響範囲は、基本的にボーンの区間+5~10%くらいの範囲で減衰しきる方針で作業を進めます。
統一方針を決めておくことで、ウェイト調整のゴールが明確になります。
ウェイト調整の作業者が複数人いる場合でも、デフォーム形状やクオリティの統率が取れやすくなります。
02.部位ごとのデフォーム解説
02-1.胴体
胴体を正面から見ると大胸筋、腹直筋、外腹斜筋など多くの筋肉があります。
これらの筋肉が、痩せてしまったり膨らみすぎてしまったりしないように、それぞれの筋肉のボリュームを保つようにウェイトを調整していきます。
筋肉のボリュームを保つために、ボーンの区間は1.0に近いウェイトでモデルの形状を保持し、ジョイントを境に、広がりすぎているウェイトの影響範囲を減衰させることで、メリハリの効いた筋肉の形状を表現することができます。
横から見た際には、腹筋や広背筋の形状をイメージしながら伸びすぎたり凹みすぎたりしないようにウェイトを調整していきます。
横から見た際にはお腹に腹直筋、背中に広背筋があります。
腹直筋のボリュームが減らないように、ウェイト値を1.0に近づけて調整するときれいなデフォームになります。
ウェイト値が小さく影響範囲が広がりすぎると、ジョイントを動かした際にボリュームが減ってしまいます。
反対にウェイトの値が大きく影響範囲が狭いと、ボリュームを維持しすぎてしまう場合があるため、筋肉や骨のシルエットを保つようにボリュームのバランスを調整していきます。
胴体に捻りを加えるとボリュームの変化を確認しやすくなります。
Spine以外にも胴体に悪影響を与えているジョイントがある場合があるので、UpLegやShoulderなども合わせて確認し、意図していない場合はウェイトの影響を無くしておきます。
最終的にはXYZどの方向に回転させても、ボリュームを維持してエッジの流れがきれいな状態になるようにウェイトを調整していきます。
02-2.首・頭
首の付け根にある僧帽筋は、上部僧帽筋と言い腕や首を動かすための筋肉です。
上部僧帽筋のシルエットが首に引っ張られて盛り上がってしまったり、反対に押されて凹んだりしてしまうのは良くないため、きれいなシルエットになるようにウェイトを調整します。
首のジョイントの僧帽筋付近のウェイト値が高いと引っ張られたり凹んだりしてしまいます。
首を前後に動かした際の背中の動きや、頭蓋骨の伸縮を抑えてきれいなシルエットに整えていきます。
Spine2とNeckはジョイントの距離が離れており、Heat Mapでバインドしたウェイトはそれぞれのボーンから広がっていきます。
Neckから広がったウェイトの影響範囲が広いため首を動かした際に背中まで動いてしまいます。
Neckのボーンの区間のウェイト値を1.0に近付けて、ジョイントを境に減衰させることで広がったウェイト値を調整していきます。
筋肉や脂肪は伸縮しますが、骨は伸縮しません。
頭蓋骨はウェイトの値を1.0にして固めてしまいましょう。
02-3.足首
骨部分の固さとふくらはぎの形状を考えてウェイトを整理します。
踵の骨部分はあまり変形させたくないので、Footのウェイトの影響を強めましょう。
足の甲の骨も平面関節と呼ばれる動きの少ない関節構造のため、変形しないように調整します。
FootがLegの範囲まで広く影響していると、Z回転した際にふくらはぎまで動いたり足首が細くなったりします。また、下腿三頭筋のボリュームを維持するために、ふくらはぎ部分はFootの影響は弱めましょう。(違いを明確にするためのNGのデータを使用しています)
02-4.膝
スキンバインドの初期配分でも大腿筋(太もも)や腓腹筋(ふくらはぎ)のボリュームを保っていて良いですが、膝の裏側などの細かいところを調整することで、よりきれいな形状を表現することができます。
太ももとふくらはぎがぶつかってめり込みが発生してしまう角度が浅いため、Legのジョイントの曲げが概ね-45度くらいまでは、めり込まないように調整していきましょう。
02-5.尻・腿(股関節)
股関節周りは胴体と脚のウェイトが絡み合う部分になります。
骨が大きい部位なので、大きな形状を意識します。
骨盤の形状をイメージしながらHipsのウェイトの影響範囲を決めていきましょう。
左側は腿(UpLeg)の影響が骨盤の範囲まで及んでいる為、形状が崩れています。
ジョイントを動かした時に、どの部分が動いて欲しいのか止まっていて欲しいのかを考えてウェイトを調整しましょう。
UpLegを動かす際には大腿四頭筋やハムストリング等の腿部分は動いてほしいですが、骨盤部分は止まっていて欲しい状態です。
大腿を構成する大腿骨は人体の中で一番大きく長い骨です。
筋肉(大腿四頭筋やハムストリング等)も大きいので、ボーンの区間も広い部分で影響を強くすることで筋肉の大きさを維持していきましょう。
02-6.指
指のウェイト調整は、関節部分が極端に痩せないように意識しましょう。
骨位置より上層位置の頂点のウェイトが強くなると、骨を回転させた時に一緒に動いてしまって痩せる傾向にあるので注意してください。
(人差し指を例にしておりますが、他の指も同じ考え方で調整します)
極端な例ですが、左側はウェイトが薄く広がり全体的に痩せてしまっている状態です。
(違いを明確にするためのNGのデータを使用しています)
右側は各インフルエンスの影響範囲を整理して、関節を境に短い区間で減衰していく事で指の太さを保っています。
また、指同士の距離が近い為、付近の指に余計なウェイトが入ってしまう事がありますので、一本ずつ動かして確認してください。意図しないウェイトは早めに修正しましょう。
指のように骨の階層が深い場合は、末端の方からウェイトを設定していくと手戻りが少なくなります。
02-7.肘
スキンバインドの初期配分でも上腕と前腕のボリュームを保っていて良い感じに見えます。
きれいな形状に近付けるために肘の内側をもう少しだけ調整していきます。
ArmとForeArmの境のウェイトにムラがあるとエッジの流れが乱れてしまうため、きれいなグラデーションに整えていきましょう。
上腕と前腕の筋肉のボリュームを保つために、ボーンの区間は1.0に近いウェイトでモデルの形状を保持し、関節を境に短い区間で減衰させると肘の内側の痩せや外側の尖りを表現できます。
(違いを明確にするためのNGのデータを使用しています)
02-8.肩
肩や脇の下のシルエットはSpineやNeckも影響して特に脇の下のウェイトが崩れがちです。
肩周りには僧帽筋や三角筋、広背筋、大胸筋など複数の筋肉が密集しています。
それぞれの筋肉のシルエットが凹んだり伸びすぎたりしないようにウェイトを調整していきます。
ShoulderとArmのジョイントの間が広く、Armのウェイトの影響範囲が広背筋や大胸筋、脇の下のあたりまで及んでいます。この状態だと腕を上げた際には脇の下が伸びて広がり、腕をおろした際には身体側に凹んでしまうので、Armのウェイトの影響範囲を狭くしてあげる必要があります。
腕のボリュームもウェイト値を1.0に近付けてシルエットを保つようにします。
三角筋や僧帽筋のボリュームはTop Viewが確認しやすいです。
腕を前倣えした際は三角筋や大胸筋のボリュームが潰れやすいので、三角筋はArmのウェイト値を1.0に近付け、大胸筋のあたりは0に近付けてシルエットを調整します。
03.チェック
ウェイト調整が完了したら、データに問題が無いか確認していきます。
問題が見つかった場合は、修正してキレイなデータにしましょう!
03-1.ウェイトが飛んでいないか(意図しない頂点のウェイト)の確認
ウェイトを調整していると、意図しない頂点にウェイトが振られてしまう事があります。
脚を動かした時に腕の頂点が動いてしまう等、不具合に繋がってしまうので早期発見が大事です。
以下の方法で確認してみましょう。
■ジョイントを移動させて確認
確認したいジョイントを選択して大きく移動させてみましょう。
ついてきてしまう頂点があれば、ウェイトが入っているので修正します。
また、ウェイトが0になっていても表示が青く残っている場合は、Skin > Prune Small Weights(スキン > 小さいウェイトを削減)を実行すると消えますので、試してみてください。
Prune Small Weightsはオプションで設定したPrune belowの値以下のウェイトを削除します。
■コンポーネントエディタで確認
確認したい部分を頂点選択して、Windows > General Editors > Component Editor(ウィンドウ > 一般エディタ > コンポーネント エディタ)で見てみましょう。
ウェイトを振りたくない骨の欄に数値が入っていたら、0にして修正します。
03-2.カスタムツールを使ってインフルエンスジョイントを管理する
■IVG_InfluenceManagement
インフルエンス管理用のカスタムツールです。
メッシュを選択して実行することで、バインドされているジョイントの確認や、スキンウェイトの設定のミスを見つけることが出来ます。
起動方法:
ツールをダウンロードしたら任意の場所に保存し、Mayaシーンにドラッグ&ドロップで起動できます。
使用方法や機能はこちらの動画で紹介しています。
動画内で紹介した機能の一覧です。
機能&ボタン名 | 影響範囲 | 内容 |
---|---|---|
ウェイト> 0 (選択): | 選択したメッシュ | 選択したメッシュにバインドされていて、かつウェイトが振られているジョイントをSetsとして作成します。 |
ウェイト= 0 (選択): | 選択したメッシュ | 選択したメッシュにバインドされていて、かつウェイトが振られていないジョイントをSetsとして作成します。 |
バインド骨(選択): | 選択したメッシュ | 選択したメッシュにバインドされているジョイントをSetsとして作成します。 |
非バインド骨(選択): | 選択したメッシュ | 選択したメッシュにバインドされていないシーンのジョイントをSetsとして作成します。 |
階層選択: | 選択したオブジェクト | 選択中のオブジェクトの階層下を全選択します。Maya標準機能のSelect Hierarchyと同じです。 |
ジョイントのみ: | 選択したオブジェクト | 選択中のオブジェクトの内、ジョイントのみを選択状態にします。 |
対称骨: | 選択したオブジェクト | Left骨を選択中の場合はRight骨を、Right骨を選択中の場合はLeft骨を選択します。 |
体幹骨: | シーン内のジョイント | 末端骨や補助骨を除いた体幹骨を選択します。 ※補助骨はReal編で触れる内容です。 |
補助骨: | シーン内のジョイント | 補助骨を選択します。 ※補助骨はReal編で触れる内容です。 |
末端骨(END): | シーン内のジョイント | 末端骨(END)を選択します。 |
※今回の命名規則と異なる場合はうまく動作しませんのでご了承ください。
04.Tips紹介
作業効率が上がる情報を紹介します。
04-1.アニメーションを再生して確認
HumanIKのリターゲット機能を使用して、キャラクターをアニメーションさせてみましょう。
一連の動きとして見てみることで、違和感を発見しやすくなります。
①メニューの Window > Content Browser(ウィンドウ > コンテンツ ブラウザ)を開きます。
②Examples > Animation > Motion Capture > FBX を開くとアニメーションのFBXがありますので、好きなものをダブルクリックするとインポートされます。
③FBXが読み込まれたら、HumanIKのソースを Control Rig → 読み込んだFBX(今回だとRunJump1)に変更します。これでキャラクターはソースのアニメーションをするようになります。
④アニメーションをリグにベイクしてみましょう。
HumanIKタブの青いアイコンから Bake > Bake to Control Rig(ベイク処理 > コントロール リグへのベイク処理)を実行します。
ベイクを行うことで、スケルトンに打たれているアニメーションのキーをリグに移すことができます。
⑤アニメーションを再生して、デフォームを確認してみましょう!
また、更にアニメーションの調整を重ねたい場合は下記が参考になると思いますので、ぜひ覗いてみてください。
24. アニメーション HumanIKリターゲット | Start@Maya〜Maya で 3DCG をはじめよう〜
04-2.意図しないウェイトになる条件
意図せずウェイトが変なところに振られる条件があります。
直接ペイントしていないはずのインフルエンスにウェイトが散らばったり、
調整済みの頂点のウェイトが変わってしまったり...といった、意図しないウェイト値の変動が起こる場合は、以下のような操作をしていないかチェックしてみてください。
■ウェイトが1つの骨に対して1.0になっている頂点にSmoothやScaleを使用した場合
1つの骨に対して1.0になっていたウェイトが削られることにより、余ったウェイトが他の骨に移動します。基本的には階層が近い骨にウェイトが振られますが、ロックしていた場合や、階層は離れているが距離が近い骨がある場合など、意図しない骨に分散してしまう事があります。
■ウェイトのMax Influencesを超えるInfluenceを入れた場合
例えばMax Influencesを4に設定している場合に、5つ目のインフルエンスにウェイトを加算しようとすると、既存の4つのインフルエンスのうちの一つのウェイトが0.0になります。
04-3.brSmoothWeights
高性能なウェイトスムージングプラグインです。
インフルエンスの選択をしなくてもスムーズできるところが使いやすいです。
http://www.braverabbit.com/braverabbit/tools/brsmoothweights/
05.おわりに
今回は、綺麗なデフォームを実現する為の、各部位をスキニングする上でのポイントについてご紹介いたしました。
ウェイト調整で美しいデフォームができるとアニメーションも自然に仕上がるので、丁寧に作業しましょう!
次回は複雑なモデルのスキニングに役立つ、ケージについてご紹介する予定です。
それでは、次回もよろしくお願いいたします!