2020年3月16日月曜日

リグを組む基本の事

mayaでリグを組む場合、モデルファイルはリファレンスエディタを使って参照することが多いです。
そして、そのリグファイルをアニメーション用のファイルへ更に参照していくことで、数百本のジョイントでバインドされたメガポリゴンの大きなデータをアニメーションの数だけ無駄に複製していく事なく、ディスク容量を節約できるという按配。





ファイルサイズの節約の他に、リグのメンテナンス性にも役に立ちます。
モデルが変更されたり、ジョイントが追加されたとしても、よっぽど構造が変化しない限りアニメーションに影響が及び難かったりします。が、そこはリガーの腕の見せ所です。

色々便利なリファレンス機能ですが、プロジェクト設定してなかったりすると、参照ファイルの保存先を聞いてくるダイアログが出まくったりするんですけどね。

あと、namespaceが厄介だったりします。
ゲームエンジンへ持っていくとき、モデルの場合はモデルファイルから出力するので、ジョイント名は素の状態。
リファレンスされているモデルファイルを使用しているアニメーションから出力されたジョイント名には参照しているときに付加されたネームスペースがくっ付いて出力されてしまいます。
そうすると、モデルファイルのジョイント名とアニメーションファイルのジョイント名に食い違いが出て、流し込みが出来なかったりします。

プラグインで出力ファイル形式を指定できる場合、fileコマンドのフラグに-relativeNamespace (-rns) というのがあり、除去することが可能です。
COLLADA(.dae)とか。

.fbxファイルは、FBXExportコマンドを使用するので、無理かも・・・。


他の対処方法としてリファレンスするときにネームスペースを無名にすることで回避できますが、これをすると、シーンに初期で作成されるノード defaultLayer だとか、sceneConfigurationScriptNode だとか、DAG以外のノード名に重複が起きて mayaが勝手に末尾に数字をくっつけてしまいます。
リファレンスしているノードは基本的に変更できないので、maya は通常とは違うノードをイジって環境を保存する事になります。
こうなるので、スクリプトなんかでノードタイプなんかを決め打ちで調べたりしていた場合、地味に不具合が出てしまいます。


ネームスペースを外すには、ちょっと強引ですが、エクスポート前に参照ファイルをインポートしてしまい、namespace内のノードをnamespaceエディタなりコマンドなりで「:(root)」へ移動させて出力、そののち保存に使ったファイルは破棄した方が良いかもしれません。
余り実用的ではないですが、エクスポートはバッチのみで行うようにすれば可能かもしれない。


つらつらとリファレンスについて語っていますが、mayaLT では、これが出来ません。

普通のmayaで作ったリファレンスを使っている.maファイルを開くと、参照ファイルはインポートされた状態で開かれます。
他の3Dツールには無いmayaの大きなアドバンテージなのに、mayaLTでの大規模開発は無理ですね。
アニメーションへのモデルやリグの入れ替えが面倒くさすぎます。

0 件のコメント:

コメントを投稿