[Omniverse] MDLをSubstance Designerから持ってくる場合につまづいた点

  • by

MDLをSubstance 3D Designer 2022からOmniverseに渡す際にいくつかつまづいた点があったため、
備忘録として列挙しておきます。
Substance 3D Designer 2022を使用しました。
Omniverse Create 2021.3.8を使用しました。

Identifierで"scaling"は使わないこと

入力パラメータとしてExposeしたノードにて。
Omniverse上でRTX Real-time、RTX Path-tracedで"Identifier"として"scaling"の名前を指定したノードがある場合、正しく動作しないことがありました。
もしかしたら予約語かもしれません。"texScaling"などに変更するとうまくいきました。
Substance Designer側では以下の部分がIdentifierです。

Omniverse側ではMDLのPropertyの入力パラメータのツールチップにIdentifierが表示されます。

これは、USDでのパラメータ名でもあります。

挙動としてIrayとRTX Real-time(RTX Path-traced)でマテリアルのビジュアル以外の動作が異なる、
入力パラメータを変更しても反映されない場合は、
それぞれのノードのIdentifierを確認し、一般的な単語の場合はこの名前を変えてみて挙動を確認するのがよさそうです。

NormalMapの入力パラメータが反映されないノードの組み合わせ

Substance Designer上のMDLではうまく動作していたのですが、Omniverseに持ってきたときにうまくいかなかった組み合わせがありました。

Substance DesignerのMDLのテンプレートをそのまま使用して、NormalMapテクスチャを指定する場合、
"material geometry"の入力のnormal(float3)に"Normal"ノードを接続し、その入力に"normalmap texture"を接続した場合、
NormalMapの入力パラメータが反映されなくなりました。

これは"Normal"ノードが不要のようです。
"material geometry"の入力のnormal(float3)に"normalmap texture"を接続する、が正しいようでした。

Omniverse Code(Kit 103)では、mdlファイル名とGraph名は同じにする

Omniverse Code 2022.1.0(Kit 103)では、mdlファイル名とGraph名は同一でないと正しくMDLが読み込まれないようでした。
たとえば「xxxx.mdl」の場合、Graph名も「xxxx」である必要があります。
Omniverse Create 2021.3.8ではこれらが異なっていても問題ありません。

Substance Designerでは、xxx.sbsとGraph名を同じにします。

MDLエクスポート時に名前変更せずにそのまま出力すればOK。

Omniverse上でこのMDLをインポートした場合は、
sourceAssetとsourceAsset:subIdentifierが同じになっています。
以下は、Omniverse Create 2021.3.8でのキャプチャ。

Omniverse Code 2022.1.0では以下のようになりました。

sourceAsset.subIdentifierは表示されていません(バグかもしれないですが)。
もし、MDLのファイル名とGraph名(OmniverseでのsourceAsset:subIdentifier)が異なる場合はOmniverse Code上では赤色の表示になり、読み込みに失敗したというメッセージが出ます。