モーション製作
作業を始める前に
基本的に3dsMAXをオーサリングツールとして使う場合、アニメーションのTake分割出力が出来ない
これはMAXファイルの直接読み込み、FBX出力、共通であり現時点解決方法は無い
(2013/10/04現在個人調べ。尚、調べた範囲ではMotionBuilderがこれに対応している)
しかしunityのメカニムを利用する際、この事は作業の障害にはならない
メカニムは個別にモーションを出力しリグの違いを吸収しながら組み合わせることを前提としたシステムです
必要な各パーツは細かく分け汎用性を確保したまま最終的にメカニムで組み上げるのがスマートです
3dsMAX上でのメカニムを利用したアニメーションクリップの作成
以下のような要素を満たしたシーンを作成します
- Bipedのみ
スキンメッシュに対してリグの構成が出来る限り似ている事が望ましい。大きさに互換性が無くてもOK(100倍にする必要もない)メッシュはいりません
unity上でインポート後、Avatarでリグ構成の差異を吸収する事が可能です
- シーンのキーフレームは1動作。例えばwalk、idle、run等、その1動作で扱う方が汎用性がありリテイクもやりやすい
3dsMAX上でのモーションベイクの必要はありません。ユニティ内にはFBXインポータを経由してインポートされ、その際にキーは内部でベイクされています
(必要であればImportSettings側で1フレーム単位でキーをベイクする事も可能です)
FBX to Unity
FBXでインポートされたモーションデーターには必ずFBXファイル名のプレハブが生成され
その子としてアニメーションファイルやメッシュが含まれる。MAXやFBXファイル更新時はこのプレハブが更新される
メカニムが導入されて以降のunityではリグの形式としてLegacyの他にGenericとHumanoidが追加されている
GenericとHumanoidでは
- 「Avatar」、「リグ」、「メッシュ」、「アニメーション」
- 「Avatar」、「リグ」、「アニメーション」
このどちらかで内容を含める事ができる。Avatarはunity変換時に自動追加され3dsMAXで編集することは出来ない
Bipedを使ったモーションワーク
★ファイルのバージョン自動更新機能
「コピーに名前をつけて保存」時にMAXは自動的にバージョンナンバーを更新して別名保存してくれる
ショートカット
<> 前後のキーに移動(注:キーが設定されたオブジェクトを選択している状態で機能する。キーが無いと無反応なので注意。モーション編集では良く使う機能)
(連続して押してもアニメーションはうごくので便利)
左+- 変換ギズモの拡大縮小
Alt+r アニメーションフレーム拡張
ビュー内で右クリックでドープシートなど便利なツールが開ける
トラック ビュー ウィンドウの上部を右クリックし、[ドッキング]/[ボトム]を選択するとドッキングできる
- フィギュアモード 初期スケルトンTポーズとメッシュに対するスキニングを決定するモード
- 足跡モード 足跡の位置で歩く走るジャンプする等、下半身の動きを作るモード
ミキサーモード
フリーフォームモード
トラック
トランジショントラック このトラックは、元のトラックよりも縦長で、2 つのトラックと 1 つのトランジションを配置できるようになっています
通常のキーフレーム作成の「オートキーモード」はBipedにも適用される
- -------------------------------------------------------------
<足跡モード>
簡単な歩行の作成
1.モーション -> Biped -> 足跡モード
2.足跡を作成 -> 複数の足跡を作成 -> 同パネル内で歩数を変更 -> OK (複数回実行は足跡が追加されていく)
3.足跡操作 -> 非アクティブな足跡のキーを作成
これで簡単な歩行アニメーションは作成できる
足跡モードから抜けるとモーションキーが作成される
<考え方>
Bipedを利用した下半身の制御では足跡モードを利用した場合、「尻」オブジェの座標変換
(ボディ水平方向、ボディ垂直方向、ボディ回転)と足跡で動きを制御すると考えてよい
アニメーション作成を足跡から始める場合は、上半身のモーションについて細かく考える前に、足のモーションを完成させます。
「足跡を非アクティブ化」で足跡の拘束が外れる(キーは残る)
「非アクティブな足跡のキーの作成」でBipedに足跡の効果を反映させキーを作る。又拘束が常に作用する。
タイムライン上に並べFBX出力しユニティ上でアニメーションを各Take分割してアセットを作成する方法
メカニムを利用する際はあまり必要の無い方法ではありますが記録として残しておきます
例:
3dsMAX上で以下の様にモーションの作成
@idleサイクルモーション0~10フレーム
@walkサイクルモーション25~55フレーム
これをユニティにインポートしたのちアニメーションクリップ機能で各Takeに切り分ける(アニメーションクリップ / Animation Clip)
モーション作成のワークフロー上、リテイクによる複数回の変更を前提とした場合、作業を出来るだけ自動化した方が良い
これにはAsus4 onDさんで公開されているModelAnimationSplitter.csを利用する事とする
これにより一度csv形式で各テイクの分割タイムラインを記述すればリテイクで再出力時、分割作業を自動化できる
3dsMAX to Unity 調査結果
- 3dsMAX上のモーションレイヤーやモーションフローでアニメーションを分割した場合、FBX出力はTakeとして識別するか? -> しない
- モーションは必ずベイクしないと駄目か? -> FBXエクスポータでベイクしてしまえばMAXファイルは非破壊
- footStepオブジェクトが残るがこれは消した方が良いか? -> 基本的に問題無いが、ゲームオブジェクトに無用なオブジェが一つ加わるのはいかがなものか?
- 名前をname_@idle等すると自動識別するが各モーション毎にファイルを分けた方が良いか? -> 今のところワークフロー的に個別に出した方がよいと思える
Unityへエクスポート
<公式資料>
- Autodesk 3ds Max FBX Plug-in ガイド: Autodesk 3ds Max FBX plug-in のヘルプ
- FBXImporterSetParam [arg] [value]
<非公式資料>
メモ
- 最終更新:2013-10-31 10:13:07