毎日・ざっくりOmniverse - MayaExport編(2)
今日も引き続きOmniverseを調べていきます。
昨日MixamoのサンプルをOmniverseに持ってこれないかと検証していたもののうまく行かない
コンバート時にワーニングもでているなぁ、、、とおもって悩んでいたのですが
ただの勘違いで、正しく出力ができていました。
必要なのは Skeletal Mesh にすることのみ。
こちらのTスタンスのモデルは、モーションとは分離しておきたいので
Usd AnimationはOFFにしておきます。
そして、Mixamoのモーション付きFBXをMayaに持ってきて
Namespaceなどを削除して Skel Animation Clip に変更してからExportします。
UsdSkelを使用する場合は、SkelとMeshをまとめるグループを作成する必要があります。
この作成したグループは、SkelRootPrim扱いになり
アニメーション付きのモデルを移動したい場合、このSkelRootを動かします。
(昨日はSkeletonPrimを動かしていたのがまずかった)
このSkelRootは、スケルトンのスキニング動作を持つプリミティブを
カプセル化するときに使用するもの...とのことですが、このあたりまだ
ドキュメントを読みとけていないのでSkelRoot・Skeletonスキーマ、BindingAPI周りは
もうちょっと調べてから別途まとめようと思います。
そして、別途出力したアニメーションデータは、SkelAnimationPrimとして
出力されます。
このAnimationはSkeletonPrimの animationSourceに対してPathを指定します。
結果。
リファレンスで読み込んだキャラのモーションを、モデルにセット。
無事アニメーションとモデルを分離しつつ、合成する構造ができました。
SkelじゃないアニメーションのClip
Skelの場合のAnimationClipは SkelAnimationという形で別途出力できることがわかりました。
では、Skelじゃないオブジェクトのアニメーションの場合はどうか確認します。
Export Options で Prop Animation Clip に変更して、StartFrame EndFrameを指定して
Exportします。
結果。
PropのAnimationClipの場合は、overでアニメーションのみがExportされるようです。
なので、
このようにアニメーションレイヤーとモデルのレイヤーをサブレイヤーで合成すれば
アニメーションを分離できました。
rootPrimについて
ここまで調べて気が付きましたが、
Maya側でこのようにRootPrimを作った場合に、
Rootが二重になっているのに気が付きました。
デフォルトで作られるっけ..?と思いましたが、
Export Optionsの Default Prim を指定すると、ここで指定したPrimが自動でRoot
以下につくられ、DefaultPrimとして指定されるようです。
この場合、LooksもこのRootPrim以下に作成されます。
今日のまとめ
モーション周りのレイヤー分けもなんとなくどこまでできるかわかってきました。
多少落ちたり挙動が不思議なところはあるものの、MayaからUSDアセットを出力する
環境としては、必要なところは揃っている印象です。
特に、UsdSkel周りなどは他で出力する手段がないので検証しないでいましたが
OmniverseのExporterを使えば出力できることがわかったので
もう少しスキーマ周りやUSDのオーサリング周りを調べてみようと思います。
Discussion