borndigital主催 autodesk mayaltセミナー資料...
DESCRIPTION
2013/11/28に開催されました、『HumanIK×Mecanim徹底解説セミナー』で使用しました資料を一部手直ししたものです。 当日のセミナーの内容は、以下のURLを参照してください。 http://www.borndigital.co.jp/seminar/2537.html なおセミナーで使用しましたMayaLTは、Extension for Autodesk Maya LT 2014です。 「Unityに送る」機能を試したい場合には、Extensionが必要ですのでご注意ください。TRANSCRIPT
BornDigital主催 Autodesk MayaLTセミナー資料
HumanIK×Mecanim使いこなしTips(キャラアニメ編)
Unity Technologies Japan 合同会社コミュニティエバンジェリスト小林 信行
2013/11/28
×
キャラアニメに絞ってMayaLTの使いこなしについて語る
本セミナーのテーマ
…と題して、インディー開発者向けのTipsをご紹介しようと思います!
×
ちなみに、私は…•元コンシューマゲームのクリエイティブ・ディレクター•原作付きアニメのゲーム化を中心に、オリジナルシナリオで、複雑な分岐を扱うADVゲームを作るのが得意です•Mayaは、Maya 2012ぐらいから使ってます(ちなみに、Mayaに初めて出会ったのは、1999年頃)
UnityとMayaを使って、ゲームをつくったり…
水着姿の少女と共に島の中を歩き回りながらターゲットを探し、輪投げをするゲームです。成功するとチキ神が解放されます
デザイナーさんじゃなくても、Mayaを使うようになった理由:
•小さな会社/チームだと、専任の3Dグラフィックチームがない•外注のグラフィック会社は、Mayaを使ってるところがすごく多い•3Dデータには、PhotoshopのPSDファイルのように、デファクトスタンダード的なファイル形式がないので、仮にデータが読めたとしても、アプリによって見た目がかなり違ったりする
•つまり、3Dデータを作ったアプリが使えないと、極めて不便
インディー開発者の状況と同じ
とはいっても、Maya導入はハードルが高い…•ハイエンドのプロツールなので、会社ならともかく個人で所有するには、導入&維持費の負担が大きいです…
•機能が多すぎて、何から覚えればいいのか、わかりづらい…そもそも全ての機能を知っている人がなかなかいない…
•Mayaを使うためにはMELって言語をマスターする必要があると聞いたけど…
MayaLTの登場でハードルが下がりました!
MayaLTの体験版から、使ってみましょう!
そのサンプルワークフローとして、Asset StoreからDLした3Dモデルに新規にアニメーションを付けてみます!
×
3DキャラモデルをUnityにインポートするまでの作業モデリング UV設定 スケルトン設定
スキンのバインド
ウェイト調整
コントロールリグ作成
アニメーション作成
アニメーションベイク
FBX出力
モデリングツールキット
UVテクスチャエディタ
HumanIKスケルトン作成
スムーズバインド
スキンウェイトペイントツール
マテリアル設定
ハイパーシェード
スケルトン定義&リグ作成
FK/FBIKカーブエディタ ベイク処理 Send to Unity
Asset StoreからモデルをDLすることで、ここの作業のみとなります
MayaLT機能
それでは実際に使ってみましょう
×
Unity,MayaLTの準備Unity 1.新規プロジェクトの作成(BDMayaLT)
2.Asset StoreからKyleの3DモデルをDL3.ProjectウィンドウからAssets>Robot Kyle>Model と進み、「Robot Kyle」上で右クリック、「Reveal in Finder」を選ぶ
4.Robot Kyle.fbxをデスクトップ等にコピーしておく。(移動しないように注意)5.同じくRobot Kyle内のTexturesフォルダをファインダー等で開き、デスクトップ等に中身をコピーしておく
MayaLT 6.ファイル>プロジェクトウィンドウより、「新規」を選び、現在のプロジェクトにKyle等の名前を付けて、「適用」する
7.ファインダー等より6で作成したプロジェクト内のscenesフォルダを開き、そこに4でコピーしておいたFBXをD&Dする
8.Kyleのテクスチャを、6で作成したプロジェクト内のsourceimagesフォルダにD&Dする。9.ファイル>Unityに送る>Unityプロジェクトを設定で、1で作成したUnityプロジェクトを指定する10.MayaLT上で適当なオブジェクトを作成して、試してみよう
Unity,MayaLTの準備:トラブルシューティング
Mayaバージョン情報より、使用しているMayaLTがExtensionかチェックプラグインマネージャよりGamePipeline.bundle等がロード/自動ロードになっているかチェック
「Unityに送る」がMayaLTのメニューにない
Unity,MayaLTの準備:トラブルシューティング
1.MayaLTで、念のために以下をチェックプリファレンス>設定>作業単位より、リニアが「センチメートル」になってるか、念のためチェック「Unityに送る」で書き出しする時の、オプションで詳細オプション>単位>変換先のファイル単位が「センチメートル」になっているかチェック
「Unityに送る」でUnityにオブジェクトを送り、 シーンにドロップすると、ずいぶん小さく表示される
2.Unityで、以下をチェックProjectウィンドウで、MayaLTから送ったオブジェクトをクリックし、Inspector>Modelタブ Meshes /
Scale Factorを0.01から1に変更し、Applyする
➡このように設定すると、Maya上での1グリッドが、Unityでの1グリッド(約1m)と一致するようになります(Mayaでキューブを作って、確かめてみよう!)
Mayaでオプションを指定して実行したい時には、メニュー最右の四角部分にカーソルを合わせて選択する
プリミティブ作成時には、「インタラクティブ作成」のチェックは外しておいたほうがよい
Mayaのミニ知識:コマンドオプションの出し方
Robot KyleをMayaLTに読み込んでみよう1.ファイル>新規シーン2.ファイル>読み込み、よりscenesフォルダが開くので、Robot Kyle.fbxを選択し「読み込み」3.シェーディング>すべてをスムーズシェード、ハードウェアテクスチャリング に設定すると、テクスチャを貼られた状態のKyleが表示されます
Mayaのミニ知識:ハイパーシェード
MayaLTプロジェクト内のsourceimagesフォルダ内に、Kyleのテクスチャを前もってUnityからコピーしておけば、Robot Kyle.fbxをシーン内に読み込んだ時点で、左のようなマテリアルがMayaLT上で自動設定されます。MayaLT上でマテリアルを設定するには、ハイパーシェードを利用します。
Mayaの重要操作:ピボット移動モード
初期状態でのピボット位置 「Insertキー」もしくは「Dキー押しっぱなし」で、ピボット移動モードに入る
ピボット移動モードのままで、X軸上に沿ってピボットを移動してみる
回転ツールに切り替えると、移動したピボットを中心にキューブが回転することがわかる
Kyleなら腰にあります
移動したピボット
ピボットとは、オブジェクトの移動/回転/スケールを行う際に中心となる点のことです。Mayaを使ってこれらのピボットを、モデルをゲーム内で使うのに便利な位置に移動できます。ピボットは単一のオブジェクトだけでなく、オブジェクトをグループ化したもの全体に独自で設定することなどが可能です。
Robot Kyleにコントロールリグをつけてみよう
Shift+クリックで全部開く
ウィンドウ>アニメーションエディタ>HumanIK で開く
ここをクリックして、アウトライナーを開く
キャラクターコントロール>定義>スケルトン を選んで、定義ウィンドウを出す
すべて設定が終わると、キャラクターコントロールウィンドウの表示がこう変わります
コントロールリグのセンター定義をどこにする?
HipsTranslation
Kyleのように、スケルトン全体のセンターが腰(お尻)の位置にあるモデルの場合、HipTranslationの位置で右クリックして、「Assign Selected Bone」を選択します。
コントロールリグのセンター定義をどこにする?
Reference
多くの人型モデルは、スケルトン全体のセンターを足の間にあるReferenceの位置に持っています。Referenceの位置で右クリックして、「Assign Selected Bone」を選択します。
Kyleのスケルトン定義をする
RootHip
Left_Thing_Joint_01
Left_Knee_Joint_01
Left_Ankle_Joint_01
Ribs
Head
Left_Upper_Arm_Joint_01Left_Forearm_Joint_01
Left_Wrist_Joint_01
最低限、10箇所のジョイントを定義する
ミラー定義ボタンが押されていると、右側が自動設定される
コントロールリグを設定する
スケルトン定義をロックした後、コントロールタブを選択する
ソースより、ドロップダウンメニューから「コントロールリグ」を選択する
Kyleにコントロールリグが設定された。FBIKの機能をチェックしてみよう!
フルボディ/ボディパーツモード/スタンスポーズ
フルボディ ボディパーツモード スタンスポーズ
位置ピン/回転ピン/ピン一時解除
キャラクターコントロールメニューボタン(スケルトンへのベイク処理のみ使用する)
フルボディ時の挙動 ボディパーツ時の挙動
HumanIKコントロール/補助ピボット
エフェクタのIK100%の時 エフェクタのFK100%の時
エフェクタ上で右クリックするとピボットエフェクタ(補助ピボット)や補助エフェクタを作成するサブメニューが出ます
設定した補助ピボット等を削除する時には、もう一度右クリックでサブメニューを出します
補助ピボットは、アニメーションを作る際に非常に便利な機能です。歩行サイクルの接地を管理したり、視線を調整したりするのに使います
設定されたピボットエフェクタ
IKとFKの違いは?
歩行用の補助ピボットをつけてみようピボットエフェクタを設定すると、まず足首のエフェクタの部分に設定される
ピボットを選択し、Dキーを押したまま、ピボット移動モードに入ったら、X軸/Y軸ハンドルのみを動かして、かかとまで移動させる。この時、同時にXキーやVキーをさらに押して、グリッドや点にくっつけるとよい
ピボットのY座標がほぼゼロであることを確認する
Dキー押しっぱなしで移動
歩行用の補助ピボットをつけてみよう同様にして、足の底、つま先にも補助ピボットを追加する
右足にも同様に補助ピボットをつける。視線チェックのために頭のエフェクターにも補助ピボットを付けて完成。
実習:歩行アニメーションをつけてみる当日、短時間ですが歩行アニメーションをつける過程をハンズオンしていただきました。以下に、簡単にポイントをまとめておきます。
•補助ピボットは、最低限かかとにつけておく。•歩行アニメーションの練習用に、MayaLTの中に入っているサンプル素材を参考にするとよい。•サンプル素材は、ウィンドウ>一般エディタ>サンプルバイザー、より「モーションキャプチャサンプル」の中のWalkstraight.ma等のデータを選ぶ。データの上で右クリックでシーンに読み込まれる。
•歩行アニメーションをループで作成するためには、最低限1サイクルの動きを作成すること。例として右足が接地している状態から始まるアニメーションならば、右足⇒左足⇒再び右足のループが必要ということ。最後の右足接地のポーズは、位置は違うが最初の右足接地ポーズと同じでもよい。
•各足の接地のタイミングは、モーションキャプチャデータをタイムスライダで動かしながら再生することで、参考にするとよい
実習:歩行アニメーションをつけてみる•アニメーションのキーを打つときには、現在のモードが「フルボディ」なのか、「ボディパーツ」かに注意する。「フルボディ」ならばどのエフェクタを選んでいても全てのエフェクタにキーが打たれるが、「ボディパーツ」時には選択しているエフェクタにしかキーは打たれない。
•各々「フルボディ」/「ボディパーツ」時での、「スタンスポーズに戻す」ボタンの動作の違いを工夫して、身体の一部分だけリセットするなどに使うとよい。例:「腰に付けた回転を元に戻す」時に、一時「ボディパーツ」にした後でスタンスポーズに戻すことで、ポーズに極力影響を与えないで、腰の回転のみリセットするなど
•かかとの補助ピボットは、移動モードで接地を確認するのに使う他、回転モードで足首の角度を変えるのにも使える。
•ポーズを変えないで、身体の位置だけずらしたい時には、両足のピンを移動/回転共に外した後、腰のエフェクターを指定して位置を移動し、再度キーを打つ。
•キーの移動は、移動したいキーの上で、Shiftキーを押しながらキーをクリックして範囲指定した後で、カット&ペーストする。もしくはキーを範囲指定した後で、中ボタンドラッグで移動する。
•HumanIKのアトリビュートを出したい時には、キャラクターコントロール上で適当なエフェクタを選んだ後で、Ctrl+Aでアトリビュートを表示する。
実習:歩行アニメーションをつけてみる•作業中のピンの操作やモードのチェンジは、ビュー上のエフェクタの上で右クリックして現れるショートカットメニューを使うと便利
•作業中のビュー切り替えは、スペースキーで表示されるラジアルメニューから、中央の「Maya」を右クリックして現れるショートカットメニューを使うと便利
アニメーションをスケルトンにベイクする
コントロールリグの階層
Kyleのメッシュとスケルトンの階層
コントロールリグに打たれたアニメーションキー
コントロールリグの各エフェクタに打たれたアニメーションキーをUnityで使うためには、コントロールリグに打たれたアニメーションを再びKyleのスケルトンにベイク(焼き移す)します。この工程をスケルトンへのベイクといいます。一度ベイクすると、コントロールリグが解除されますので、この段階で必ずシーンをセーブしましょう。
アニメーションをスケルトンにベイクする
キャラクターコントロールメニューボタン(スケルトンへのベイク処理のみ使用する)
スケルトンへのベイク処理が終われば、コントロールリグの階層をデリートしても大丈夫です。
スケルトンにベイクされたアニメーションキー
Kyleのメッシュとスケルトンの階層
こちらはデリートしてもOK
Mecanim重要Tips:バインドポーズノードを持つオブジェクトをUnityに転送する
Kyleの場合には、バインドポーズノードを持つオブジェクトはスケルトン側にあります。
Mecanim用にアニメーションを含むFBXを出力する際には、必ずバインドポーズノードを含んでいるオブジェクトを一緒に転送するようにします。バインドポーズはメッシュ側にあることもあるので、要注意です。
Mecanim重要Tips:バインドポーズノードを持つオブジェクトをUnityに転送する
バインドポーズがアニメーションと一緒に転送されている場合、Mecanim側のPoseメニューに「Sample Bind-Pose」という項目が現れます
「Sample Bind-Pose」を選ぶと、Maya上でのスタンスポーズが表示されます。「Enforce T-Pose」で元に戻ります
参考:アニメーションデータ上での移動のあり/なしと キャラクターコントローラの設計について
•キャラクターコントロール内でプログラムで移動設定をする場合•原点でアニメーションがループしている場合(移動がオフセットされているアニメーションデータの場合)→キャラの移動量はプログラム側で制御する
•モーションキャプチャデータのように、移動が元のアニメーション自体にあるデータで、そのデータ上の移動量をキャラの移動量として使う場合(オフィシャルのMecanimサンプルの多くがこれ)
ゲーム用に作られたループアニメーション向けの
Mecanim設定
モーションキャプチャ等の元がループしていないアニメーション用向けの
Mecanim設定
おまけ:MayaLTで自前でIKハンドルを追加する方法
https://gist.github.com/hiko9lock/7660365http://hiko9lock.blogspot.jp/2013/11/mayaltikhandle.html
情報、ありがとうございます!