🍣

毎日・ざっくりOmniverse - MayaExport編(2)

2020/12/25に公開

今日も引き続き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のオーサリング周りを調べてみようと思います。

GitHubで編集を提案

Discussion