株式会社デジタル・フロンティア-Digital Frontier

Header

Main

  • TOP
  • DF TALK
  • ≪セットアップ室≫MotionBuilderの為のキャラクターセットアップ

≪セットアップ室≫MotionBuilderの為のキャラクターセットアップ

2015/1/22

Tag: ,,

はじめまして。セットアップ室の松山です。

今回のDF_TALKではDFセットアップ室の業務内容と、その中でも初めに行う”LDセットアップ”について紹介したいと思います。
セットアップに興味を持っている方のちょっとした助けになれば幸いです。

各種セットアップの紹介

まずは、弊社のセットアップ作業を簡単に説明します。大きく分けて下記の4つになります。

LDセットアップ

アニメーションの為の軽量セットアップ
弊社では主にMotionBuilderでのセットアップまでを指す

HDセットアップ

レンダリングの為の最終セットアップ
弊社では主にMayaでのセットアップを指す

シミュレーションセットアップ

衣服、毛髪のシミュレーションの為のセットアップ

シミュレーションショットワーク

アニメーションの入ったシーンに対してのCloth/Hairシミュレーション

motionBuilderのパフォーマンス

弊社でのアニメーション作業は、主にMotionBuilderで行います。メリットとしては、Mayaと比較して圧倒的に高速であることがまず上げられます。詳しくは↓の記事をご覧ください。
≪アニメーション室≫ DFは何故MotionBuilderを使い続けるのか!!
アニメーション作業に関してMotionBuilderがいかに有効であるかを力説しています。

LDセットアップについて

まず始めにジョイント作成を行うわけですが、ここでの基本方針について触れておきます。

バインドポーズはリラックスポーズ。ただしRotateを(0,0,0)にした場合Tポーズになるように

基本的には腕を45度程下ろした状態でバインドを行っています。ただし、最終的にMotionBuilder上でCharacterizeという処理はT-ポーズで行います。なのでT-ポーズから腕を下ろす際の角度はRotate値として残しておきます。

T-ポーズにした時の軸をWorld座標と同じにしておく

弊社ではジョイントの位置調整を、例えば左肩から肘ならX軸+、左股関節から膝ならY軸-方向へのTranslateで行っています。基本的にはTranslate1軸+Rotateです。

初期位置に即座に戻れるようにしておく

バインドポーズをSet Preffered Angleします。PrefferdAngleというアトリビュートとしての本来の用途とは違うのですが、適切に設定していればGo To BindPoseよりも安定して、しかも部分的に初期位置に戻ることが(特別なツールを必要とせずに)出来ます。

試行錯誤する上で、”最初に戻る”という動作は極力手順を省きたいです

ジョイント作成が完了したらバインドします。この時、スキニング補助の為にリグを作成することもあります。
シェイプを利用しないコンストレイン(Point,Orient,Aim,Parent,Scale,PoleVector)、 SingleChain/RotatePlaneIKハンドルはそのままMotionBuilderに移行できます。エクスプレッションやノード類は手間がかかりますが処理によっては再現可能です。※詳しくは割愛します。

Maya上でセットアップが完了したらFbxとしてExportします。
※Exportする際はバインドポーズで行います。どんなポーズでExportしても、モデルのNormal(法線)はバインドポーズ時点のものが出力されてしまうので、例えば90度傾いた状態でExportすると、Normalが90度傾いた状態になってしまいます。

左がバインドポーズ、右がY軸に90度回転させた状態でExportしたモデルです。正しくライティング出来ない・・・

同様にバインドポーズ、90度回転させたSphereです。Normalの向きが不正なのがわかります。

Characterize

MotionBuilderでCharacterizeという処理を行います。
Characterizeとは、簡単に言うとそのままではただのジョイント階層に過ぎないデータを、キャラクターとして定義することです。Characterizeを行う事で、キャラデータはモーションキャプチャーのデータを利用し、HumanIKでアニメーション編集し、またキャラクター同士のモーション流用が可能になります。

弊社でデータ上気をつけていることは、Characterizeは必ず腕、脚、指のジョイントを水平もしくは垂直にし、Twistさせない状態で行う事です。特にLDセットアップでは簡易的な(Rotate値をそのまま利用する)補助ジョイントを使用する事が多いので、ヒンジ(単軸)回転するジョイント(肘、膝、指)に極力3軸回転させないようにしています。

極端な例ですが肩が内旋した状態でCharacterizeすると・・・

肘が内旋しているにも拘らず作成されるControllRigの肘関節は水平な軸になります。

肘の向きが違う上に当然3軸Rotate値が入ります。データ納品で制限がある場合致命的ですね。

Characterの機能の紹介

Characterには色々設定項目があるのですが、今回はその中で”Roll”という項目を紹介します。

Characterを選択すると、NavigatorにCharacterの各種設定項目が表示されます。Modifiersの中にRoll項目が存在します。

Rollは、肩と手首を回転させた時に肘ジョイントの挙動を定義します。HumanIKで肩を回転させた時、Roll回転を肘に伝えるかどうかがここで決まります。極力ヒンジ関節に3軸RotateはさせたくないのでRoll値は0.0にしています。※肩と手首には補助ジョイントを作成し、肩の根元からRollすることを防いでいます。

Relationコンストレイン

MotionBuilderはMayaと比較して、再生パフォーマンスが非常に優れていますが、ノード数に対する速度低下(特にOpenScene時)はMayaと比べて顕著です。
なのでノード数は極力少なくすることが求められるのですが、その際コンストレインを1つにまとめる為にRelationコンストレインを利用しています。また、Mayaで組んだエクスプレッションをMotionBuilderで再現する為にもRelationコンストレインを利用しています。

Relationの一例。十数個のコンストレインが一つにまとめられます。

もう一例。もっとも単純なコネクションの一つです。手首ジョイントのrotateの値をXYZに分解し、X軸を割り算してTwist回転の補助ジョイントに適用します。

高速であることのメリット

繰り返しになりますが、MotionBuilderはMayaと比べて再生パフォーマンスに優れています。これはちょっと矛盾した言い方になりますが、MotionBuilderは”重くても軽い”です。たとえば、20万超のFaceを持つキャラクターで、Maya上では4~5fpsにしかならないキャラクターでも、MotionBuilderではリアルタイムで再生することが可能です。近景の群衆アニメーションで、十数体のキャラクターが必要なケースでも、極端なリダクションをしなくても耐えられるパフォーマンスを発揮できます。軽くを求めればより高速に、クオリティを求めれば最終ルックに近いモデルでアニメーションを行う事が出来るという事がMotionBuilderの強みといえるのではないでしょうか。


2015/01/28更新

ご質問が寄せられたので回答させていただきます。

>質問は、local Rotation axes についてになります。
>記事によると、spine、arm、legによってprimary axisが違うようなのですが、
>これらは、統一しなくても問題は起こらないのでしょうか。

これは、ControllRig(HumanIK)の設定に関係しています。

作成されたControllRigのFKEffectorのScale軸は適用するジョイントのAxisがどうであれWorld座標と同じものになります。
※Rotate軸は+X軸をPrimaryAxisとしたものになります。
ジョイントとControllRigのAxisが一致しない場合、特にScale値のControllRig->ジョイント間の転送に不具合が起こるのでこういう形をとっています。

また、特に足首jointに関しては、子jointをAimしたAxisよりも、接地面と平行な軸でのScaleの方が使用する機会が多いだろうという事もあります。(踏み込んだ時の足の沈み込みなど)

>また、worldを基準に設定されているように見えるのですが、
>それは、後に接続するコントローラーの為なのでしょうか

Rotateマニピュレータで編集する場合、ChannelBoxで数値調整する場合、あるいは複数のコントローラを一括で編集する場合、になるべく感覚のズレが無いようにと思いこの形をとっています。勿論円錐状にモデリングされたマントであったり、龍の首や蛇など、ジョイントの進行方向を軸にしたいが直線状にモデリングされていない場合、など例外は存在します。必ずしもworld座標基準で、という厳格なルールは敷いていません。



※免責事項※
本記事内で公開している全ての手法・コードの有用性、安全性について、当方は一切の保証を与えるものではありません。
これらのコードを使用したことによって引き起こる直接的、間接的な損害に対し、当方は一切責任を負うものではありません。
自己責任でご使用ください。



DFセットアップ室では、リギングアーティストを大募集中です。
一緒に魅力的な作品を作っていきましょう!
詳しくは、下記の募集要項をご覧ください。

https://www.dfx.co.jp/careers/designer/rigging-artist.html

Pocket

コメント

コメントはありません

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*