🍣

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

4 min read

毎日少しづつ検証していこうということで、流石にタイトルに続をつけていくと
大変なことになるのでタイトルを変えました。

今回は、前回の続きでMaya関連をもう少しちゃんと調べていこうと思います。

Exportする

OmniverseのMayaPluginをインストールすると、MayaのExporterがついてきます。
なのでExporterを使用してどこまでどう出てくるかを確認していこうとおもいます。

まずはシンプルなCubeから。
マテリアルのアサインも何もしていない状態です。

結果。
MayaのWorld以下にノードがある場合、 root 以下にPrimが出力され
同階層にLooksというPrimが作られ、その以下にShaderがExportされます。

Materialは、このような構造になります。
Materialは、MayaのShadingGroupで、lambert1の情報はその下にあるShaderPrim
として出力されます。

MayaをWorld以下ではなく

このようにGroupを作った場合は、

同様。
Looksはかならず root 以下似作成されます。

まとめ。

Material

次にマテリアル関連。
マテリアル自体はOmniverse側でもアサインできますが、

Maya側にもOmniシェーダーが用意されているので、
これをアサインすることでUSDのシェーダーを指定することができます。

まずはシンプルなOmniPBRを使用して、

BaseColorを指定します。

結果。
NewMaterialNamePreviewSurfaceはUsdPreviewSurfaceですが
それが使われているわけではなく、

OmniPBR.mdl を利用したShaderが定義されていて
このBaseColorにMayaのOmniPBRの値が出力されるようです。

それ以外のTexture関連のShaderも作成はされるものの
今の段階では使用していなくても勝手に作られるようです。

Maya側にはUsdPreviewSurfaceがないのが若干残念。。。。

Omni以外のシェーダーを使ってみる

lambert

lambertは、OmniPBRに置き換えられてカラー・テクスチャなどは出力されるようです。

試しにアルファチャンネル付きのテクスチャを貼り付けてみると、

結果。
こちらもOmniPBR.mdlによってはりつけられるらしく、
TexShaderなどは使用されず、

Albedo Mapにテクスチャがはられた状態で出力されます。

StingrayPBS

PBRシェーダーなので使えるかなとおもったものの、どうやらだめの様子。

Maya公式のPluginについているUsdPreviewSurfaceとかどうだろうと試そうとしましたが
Pluginがロードできなくなったので断念...けどなんとなくダメそう。

まとめ

Omniverseプラグインでマテリアルを触る場合は、OmniPBR.mdl を使用する
前提のようです。
この場合、デフォルトのusdviewだとプレビューできないのがネックです。
(何かしらの手段はありそうだが...)

アニメーション

まずはこんな感じに縦方向に動くアニメーションをつけておきます。

Export Optionsに Usd Animation があるので、範囲を指定してExportします。

Playボタンを押せば、無事再生できました。

アニメーション周りのデータは、Omniverseでは現状Extensionになっていて

TIMESAMPLE EDITOR をONにすると、

選択されているPrimのアニメーションサンプルを確認することができます。
現状は、TrackEditor的なものはなさそうです。

Skelとアニメーション

シンプルなスケルトンでまずは確認。

こんなかんじに、Cube1つにSkel1つをアサインしただけのデータを作ります。

このとき、RootにGroupがないとエラーになってしまうので、RootGroupを作り
出力してみます。

ExportOptionsを Skeletal MeshにしてUsdAnimationで出力します。

結果。
今のところ、Skel周りの出力ができたのはこれが初めてです。
ただ、何が原因かはわかりませんが mixamo のFBXをMayaにロード後
ExportしてみたもののうまくSkinBindが出力されず...このあたりは要調査かなと思います。

アニメーションクリップ

USDの場合、アニメーションのみを別素材として出力してコンポジションしたいみたいなことは
容易に想像できるので、Mayaだとどうすればいいのかなとおもいましたが
デフォルトで機能が用意されていました。

Export Optionsに、Skel Animation Clip という選択肢があり、
これで出力すると

アニメーションのみのusdとして出力することができます。

このSkelAnimationは、 SkelPrimにある

SkelAnimationSourceアトリビュートに指定することで使用できるようなので、

特に指定されていない場合は animationSource に Add Targetが指定できるので

サブレイヤーなどでAnimationClipのレイヤーをロードし(もしかしたらリファレンスのほうがいいかも)

ロードしたレイヤーにあるAnimationを選択すれば、
SkelAnimationをロードすることができます。

キャラとモーションを切り分けることができるので
Shotを構築するときなどは、AnimationClipを活用すると良さそうです。

もうちょっとやろうと思いましたが今日はここまで...
こんな感じで毎日すこしづつ続けて行ければと思います。
がんばるぞー