[Omniverse] マテリアルの割り当て その9 (MDLでテクスチャの繰り返しを指定)

  • by

前回に引き続きSubstance DesignerでMDLを作成し、それをOmniverseで使用します。
Substance 3D Designer 2022を使用しました。
Omniverse Create 2021.3.8を使用しました。

前回は、MDLを使用したときにBaseColorとNormalマップのテクスチャを割り当てるところまで進みました。

MDLをOmniverseに渡す際につまづいた点がありましたので、「[Omniverse] MDLをSubstance Designerから持ってくる場合につまづいた点」にまとめています。
こちらもご参照くださいませ。

今回はテクスチャの繰り返しを指定します。

color_textureをfile_textureに置き換え

BaseColorテクスチャを割り当てている「color_texture」ノードは、テクスチャを繰り返すための「Tiling」の情報を持ちません。

これの代わりに「file_texture」を使用します。
「file_texture」は2つあります。このうち、検索したときの2つ目のものを使用します。

「file_texture」の出力側は「Output(texture_return)」となっており、「tint(color)」の入力に接続すると間に「Selector」というのが追加されます。
これにより、「file_texture」から色(color)情報を渡してくることになります。

入力は「texture_2d」を指定します。

テクスチャの繰り返し回数を指定

テクスチャの繰り返しを指定する入力パラメータをfloat2で与えます。
「file_texture」ノードは、PROPERTIESウィンドウの「Placement」に「Tiling」というものがあります。
これを変更することでテクスチャの繰り返し回数を調整できます。

ここの「Create an input pin」のアイコン(3つあるアイコンの中央)をクリックすることで、入力ピンがノードに追加されます。
この入力ピンをドラッグして「float2」を追加しました。
ここでTilingの繰り返し回数を指定することになります。
マウス右クリックでポップアップメニューを表示し、「Expose」をOnにします。
これで入力パラメータとなりました。

この「float2」のIdentifierはデフォルトで"scaling"となっています。
OmniverseにMDLを持って行くと、Identifierが"scaling"である場合はこれが予約語となっているからか、正しく処理されなくなりました。
そのため、Identifierを"texScaling"に変更しました。

また、「In Group」を未指定、「Display Name」を"TextureTiling"としました。

「normalmap_texture」ノードのPROPERTIESで「Strength」と「Tiling」の「Create an input pin」をOnにします。

「Strength」には新しくfloatのノードを追加して接続しています。
Exposeを指定して入力パラメータとするようにしました。
「Strength」のIdentifierは"NormalStrength"、Display Nameは"NormalMapStrength"としました。
「scaling」にはBaseColorテクスチャで追加したfloat2型の"TextureTiling"(Identifierは"texScaling")のノードを接続しました。

全体は以下のようになりました。

"TextureTiling"を変更すると、Substance DesignerのIrayでのプレビューもテクスチャの繰り返しが反映されるのを確認しました。

ノードが見やすくなるようにまとめる

現状だとノードが増えた場合に見にくくなるため、整理します。
複数のノードを選択し、右クリックメニューで「Add Frame」を選択します。

以下のようになりました。

PROPERTIESでこの「Frame」と表示されている部分の名前を変更できます。
以下のようにBaseColor/NormalMapのノードを整理しました。

コメントを追加

Graph上の右クリックメニューで「Add Comment」を選択すると、
ノードとは別にコメント用の枠が表示されます。
ここでは日本語指定も可能です。

GRAPH INPUTSを確認

GraphのPROPERTIESで「GRAPH INPUTS」を確認します。
以下のようにしました。

順番を変える場合は、左端の縦バーをドラッグして移動させるようにしてください。

MDLファイルをエクスポートします。

Omniverse CreateにMDLを読み込み

Omniverse Create 2021.3.8を使用しました。
保存したMDLファイルを現在開いているStageに読み込みます。

Base Color FileのColor Spaceは"sRGB"、NormalMap FileのColor Spaceは"raw"と指定。
"TextureTiling"や"NormalMapStrength"の変更が反映されるのを確認します。

RTX Path-Tracedで以下のようになりました。

今回はここまでです。
Substance DesignerでMDLを使用することで、「[Omniverse] マテリアルの割り当て その6 (Material Graph)」の最後に列挙した、

  • 複数ノードのグループ化
  • Inputパラメータをまとめる
  • Graphの描画がViewportのレンダリングにひっぱられる

の3つの項目が解決できていることを確認できました。
3つめはもっと多くのノードを使用しないと体感はできないですが、
ノードの編集はSubstance Designer側で行うためこの問題は発生しないことになります。

次回も少しMDLについて追記することにします。
[Omniverse] マテリアルの割り当て その6 (Material Graph)」のMaterial Graphで行った
「タイリングを目立たなくする」と「地面に近いほど汚す、浸食表現」をMDLで行います。