前回に引き続き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で行います。