[Omniverse] [Substance Designer] マテリアルの割り当て その10 (MDLでテクスチャのタイリングを目立たなくする)

  • by

[Omniverse] マテリアルの割り当て その6 (Material Graph)」のMaterial Graphで行ったテクスチャのタイリングを目立たなくする処理をMDLでも行います。

単純なBaseColor Texture、NormalMap Texture、Roughness、MetallicなどがあるMDLは、
Substance 3D Designer 2022上で以下のようにノード構成しました。
赤で記載している箇所はExposeして入力パラメータを与えています。

ここから、BaseColor Textureとして2枚目のテクスチャを追加してブレンドを行います。

2つ目のテクスチャを追加

「file_texture」を配置します。
Graph上でSpaceキーを押すと追加できるノード一覧が出るため、これから新しいノードを配置していきます。

「file_texture」はTilingパラメータを持つほうを追加しました。
以下のようにノードを構成しました。

「file_texture」を選択し、PROPERTIESウィンドウでTilingパラメータをinput pinとして指定。
入力側に「texture_2d」、Tilingように「float2」のノードをつなげました。
出力側は「selector」をつなげ、colorを出力しています。
また、「texture_2d」に指定するテクスチャ画像はResorcesとして追加してそれを指定しています。

この2つ目のテクスチャはいったん置いておきます。

blend_colorsノードを追加

2つの色を混ぜ合わせるノードとして「blend_colors」があります。
これをGraphに追加し、入力の1つめに1つ目のテクスチャから出力されたcolorをつなげます。
入力の2つめに単色のcolorノードを追加し、黒を指定しました。

出力はselectorを追加してcolorに変換して出力するようにしました。
以下のようにつなぎ直しました。

blend_colorsの入力と出力

blend_colorsの入力のうち3つのピンを使用しました。

「color_1」「color_2」にテクスチャからの色を渡し、「weight」にその合成値を指定します。
weightが0.0の場合は「color_1」を採用、1.0の場合は「color_2」を採用となります。

出力はtexture_returnとなります。

perlin_noise_textureノードを追加

ノイズ処理は「perlin_noise_texture」を使用しました。

このノードは入力がたくさんありますが、今回調整するのは3つです。

確認のため、「perlin_noise_texture」の出力を「blend_colors」の「weight」につなぎました。

自動的にSelectorが追加され、float値に変換された状態でつながります。

perlin_noise_textureのパラメータを調整

プレビューは以下のようになっています。
薄っすらと黒い色が乗ってます。
この黒は、「blend_colors」の「color_2」の色です。

「perlin_noise_texture」のPROPERTIESで以下を調整してみました。

  • size (float)
  • noise_levels (int)
  • noise_threshold_high (float)


    sizeはノイズのマッピングの大きさ、noise_levelsはノイズの重ね合わせの数(Octave)、
    noise_threshold_highはノイズを濃くして境界をくっきりさせます。

size 0.2、noise_levels 2、noise_threshold_high 0.55としました。

この3つのパラメータを入力としてノードを追加。
Exposeして入力パラメータとなるようにしました。

それぞれのパラメータで「In Group」を「PerlinNoise」としています。
「Identifier」は他と重複しない名前を指定。
「Display Name」も指定しました。

blend_colorsのcolor_2を2つ目のテクスチャに置き換え

ノイズの効果を単色の黒で確認後、前述した2つ目のテクスチャのcolorを「blend_colors」のcolor_2に置き換えます。

プレビューは以下のようになりました。

3D Viewでプリミティブを切り替えての確認を行いました。

入力パラメータを変更しての確認は、Omniverse上で行います。

Frameで囲って整理をし、以下のようになりました。

入力パラメータの確認

Graph部をダブルクリックしてGraphのPROPERTIESを表示、
GRAPH INPUTSを確認します。
新しく追加されたパラメータは以下の赤で囲った箇所になります。

このうち、ノイズ関連は「PerlinNoise」のグループに入ることになります。

MDLファイルをエクスポート

以上でsbsファイル保存します。
MDL_graph_ground_textureという名前のmdlファイルでエクスポート、
Graph名も同じ名前にしています。

以上でSubstance Designer上の作業は完了です。

Omniverse : Omniverse CreateにMDLを読み込み

Omniverse Create 2022.1.0が2022/03末にGTC22のタイミングで公開されたため、
こちらで確認していきました。
メニュー項目が2021.3.8と比べて少し増えてます。

PlaneのMeshを配置し、これにMDLを割り当てていきます。
Stageウィンドウでマテリアルを割り当てる対象のPrimを右クリックしてポップアップメニューを表示。
「Create」-「Materials」-「Add MDL File」を選択します。

ファイルダイアログが表示されるため、MDLファイルを選択します。

Omniverse : 入力パラメータの調整

読み込まれたMDLのマテリアルの入力パラメータは
Propertyより以下のようになっています。

MDLの割り当て直後は以下のような表示になります。

Color Spaceの調整

まず、テクスチャの割り当てでColor Spaceが「auto」になっているため、
sRGBかrawを明示します。
NormalMapの指定はrawである必要があります。

BaseColor File2をクリアしてノイズを確認

ノイズの挙動を分かりやすくするために、「BaseColor File2」で「×」を押してクリアしました。
(右端の水色の四角をクリックすると復帰できます)

BaseColor File2の箇所は黒色となりました。

PerlinNoiseのパラメータを調整

「NoiseLevels」を4、「noiseThreshHoldHigh」を0.54としました。

ノイズ模様が変化するのを確認できます。

Texture Tilingを調整

「TextureTiling」を(5, 5)に変更。

BaseColor File2を元に戻す

「BaseColor File2」の右端の水色の四角をクリックして元に戻します。

TextureTiling2を変更

「BaseColor File2」のテクスチャの繰り返し回数である「TextureTiling2」を(1.7, 1.7)に変更しました。
これは「BaseColor File」のタイリングが見えるのをごまかす目的のため、「TextureTiling」とは異なる値を指定しました。

テクスチャのタイリングを増やして確認

テクスチャのタイリング数を増やした場合は繰り返しが見えてしまうことになりますが、
この場合はノイズのパラメータを調整し、合成具合を変えることでごまかしやすくなるかなと思います。


今回はここまでです。
後はSubstance Designer側の使い方の学習となり、MDLは自在に操れそうですね。
MDLでのpositionの使用についてを次回行い、マテリアルについてはいったん終了することにします。