アルゴンUE4/UE5&アプリ開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE5】SubstrateMaterial(基礎編)

SubStrateMaterial基礎紹介(*'ω'*)

UE5.1から登場している実験段階のSubstrateMaterialの

基礎的部分の紹介になります。

今回は関数やノードの紹介で作例などは応用編で説明予定となります。

※使用するバージョンは「UE5.2.1」になります。

参考資料紹介

今回参考にさせていただいた情報ページリンクは下記になります。

個人的には機能別サンプルのSubstrateの紹介マップにとてもお世話になりました。

Substrate Materials | Course

How to Make Glass in Unreal Engine 5 | Substrate Materials Tutorial - YouTube

機能別サンプル:UE 機能サンプル - UE マーケットプレイス

※今回下記のような方向けに書こうと頑張ってみてます。

・SubstrateMaterialを触ってみたい方

・SubstrateMaterialがどういった原理か知りたい方

・目次に戻る

SubstrateMaterialとは?

SubstrateMaterialとはUE5.1から追加された実験機能、
SubstrateのUE5.2に変更されたものとなります。

一つのマテリアルの設定で内側は別のマテリアル表現、
外側に近い方を別のマテリアル表現にするといったことが可能になっています。

SubstrateMaterialでは以前のマテリアルも自動的にSubstrateMaterial用に、
変換されてしまうのでご注意ください。
Substrate機能を切ってもそのままの状態になるので注意です。

※試す場合は新規プロジェクトや機能別サンプルがおすすめです。

・目次に戻る

準備と主に使用する関数の紹介

SubstrateMaterialを使用する場合まずプロジェクト設定で、

SubstrateMaterialの設定を有効にする必要があります。

プロジェクト設定で「substra」と検索すると、
Substrate用の項目が出てきます。

三つのチェックボックスにチェックを入れます。

※一番上だけでも問題はなさそうですが今後デバッグなども使うのですべて選択。

Substrateの項目の3つのチェックボックス

実際に主に使用するノードや関数などを紹介していきます。

まず大本となるシェーディングモデルを指定する、

SubstrateBSDF関連のノードを説明していきます。

SubstrateBSDFというのは目や髪の毛・波などの、

シェーディングモデルを指定するノードになります。

ノードとしては7種類用意されています。

SubstrateBSDFをまとめたノード群の画像

今回はBlendノード等で組み合わせることが可能な、

SubstrateSlabBSDFSubstrateSimpleClearCoatを使用した例を紹介します。

◎SubStrateSlabBSDFの各種パラメータ
Diffuse Albedo→BaseColorの代わりの色

F0→表面で垂直に見た時の反射で見える色

F90→垂直ではなく視野角での反射で見える色
※そのまま着色だとフレネルのような見た目

Roughness→いつも通り全体の粗さの設定(0~1で設定)

Anisotropy→異方性反射の設定(0~1で設定)
※異方性反射とは入ってきた光の方向とは異なる方向に反射される現象で、
 髪の毛の天使の輪やブレーキやレコードなど円盤でよくある白い反射のことです。
 詳しい説明については下記の記事などが有効かなと思います。
[UE4]Anisotropy(異方性反射)の使い方とそのTangentについて - Qiita
【UE4】異方性反射マテリアルを使ってみた - トンコツ開発ブログ

Tangent→上記で説明した異方性反射が横方向に伸びる値になります。

Normal→いつも通りのノーマルマップになります。

SSS MFP→ こちらは密度を制御しておりF0の色が黒に近いほど、

                 SSM設定した値の色身が強くなります。

F0の色が白の場合は白が適応

F0の値が黒に近い場合SSSMFPの色味が強くなるSSS MFP Scale→上記MFPの適応度合い(0~1で設定)
SSS Phase Anisotropy → 段階的な異方性反射の設定(0~1で設定)

Emissive Color → いつも通りのエミッシブカラー

Second Roughness → 通常のラフネスに加えて内部がラフネスがかかり
           よりぼやけた表現を作るために使用?
Second Roughness Weight → 2番目のラフネスの強度

Second Roughness設定前

Second Roughness使用時Fuzz Roughness → 布の表面ざらざら感
Fuzz Amount → 布の色の強度
Fuzz Color → 布の色
実際に作成した場合に下のような見え方になります。

布用マテリアルの作例

◎SubStrateSlabBSDFの特有のパラメータ

Clear Coat Coverage → 外枠の透明な部分のカバー量(0~1の設定)
Clear Coat Roughness → 外枠の透明な部分のラフネス(主に模様付け)

使い分けとしては色々細かい設定をしたい場合はSlabで、
細かく指定しない場合はSimpleClearで良いかなと思います。

今回紹介するSubstrateのシェーダーモデルノード

続いてすでに用意されているSubstrateMaterial関数ブロックについてです。

実はSubstrateの初期段階の設定をすでにしてある関数が用意されています。

Substrate Building Blocksという中にそろえてくれています。

すでに用意されているSubstrateMaterial関数群

SubstrateBuildingBlocksのそれぞれの関数

上記関数は先ほど使用したBSDFなどがすでに使用された関数となっているため、
そのままFrontMaterialの接続に接続して使用します。

接続ピンが関数にいくつかありますがこれは関数内のパラメータを、
変更したい場合に使用します。
※別に設定しなくても動きますがパラメータを設定する場合が多いと思います。
 SMF_UE4Unlitの中身を確認しようとするとエディタが終了するので注意です。

SMF_Coatの関数に内部の色と拡散光の色とエミッシブを変更した例になります。

SMF_Coat使用時

SubstrateMaterialは通常のマテリアルの拡張版なので、
当然Lightマテリアルやデカールなどのマテリアル変換用のノードなどもあります。
今回は細かい説明を割愛しますが応用編で使用した際に紹介したいと思います。
※主にそれぞれの用途に変換する用のノードだと覚えておけばOKです。

SubstrateExtrasの各種項目

SubstrateHelpersのマテリアルノードについては、
各種変換やその他表現が主なノードとなっています。

SubstrateHelpersの項目

先ほど説明したSecondRoughnessへの変換用ノードである、
Substrate Haziness-ToSecondary-Roughnessなども、
こちらの項目のノードとして用意されています。
※こちらも細かい説明は応用編でやります。
 実用例を交えて説明した方が分かりやすいかなと思います。

各SubstrateHelpersマテリアル

最後にマテリアルの重ね合わせ等で使う、
ノードが集約されたSubstrateOperators項目になります。
こちらにはどのようにマテリアルを重ね合わせるのか設定する、
4種類のノードが用意されています。

SubstrateOperators項目の各種ノード

それぞれ使用した場合の画像を紹介します。

その前に今回作成したマテリアル関数それぞれの中身になります。

その1:金色でごつごつとした簡単なマテリアル。

金色でごつごつとしたマテリアル

その2:水色のぶつぶつとした簡単なマテリアル。

水色でぶつぶつとしたマテリアルそれでは実際にブレンドした場合の説明をしていこうと思います。
Addの説明になります。これはAとBを重ね合わせる形になります。

Addでブレンドしたときの動作

Substrate Coverage WeightはWeightで設定している以外の部分が適応されます。
※Weightの値に応じて色も一部変化します。CoverageWeight

HorizontalBlendではMixの設定に合わせてブレンドされるような形になります。

HorizontalBlendのマテリアル例

VerticalLayerに関してはSubstrateCoverageWeightと組み合わせます。

VerticalLayer

以上がSubstrate用に用意されているノードの説明になります。
基本はSubstrate用のノード以外のマテリアルと組み合わせて、
いろんな見た目のマテリアルを作成していきましょう!

・目次に戻る

最後に

以上がSabstrateMaterialの基礎的なマテリアルの紹介になります。

今回紹介しなかったシェーディングモデルや他機能については、

応用編を頑張って作った時にでも紹介しようと思います。

githubに作例も載せられていきます。

最後まで見ていただきありがとうございました。

・目次に戻る