PR

【UE5】Substrate Material の使い方 入門編

UE5

UE5.1で実験的に追加されたSubstarate(サブストレート)マテリアルの概要や基礎部分をご紹介します。

ちなみにUE5.1では、「Strata」 という名前でしたが、UE5.2から「Substrate」 に変更されています。(Sub + Strata かと思ったら、Substrat“e”なんですね…)

この記事では、UE5.2をベースに紹介していきます。

公式の情報等を元に実際に検証し、こちらの記事を書いていますが、まだまだ情報が少なく、パラメータやインプットの意味などを勘違いしている可能性もございます。
その点ご注意ください。
間違いがあった際は、コメントでご指摘いただけますと幸いです。

この記事は、こんな方におすすめです!
  • Unreal Engine のマテリアルの基礎を理解している方
  • Substrate(Strata) マテリアルについて知りたい方
  • Sbstarate を使ってみたい方

そもそもUE5のマテリアルとは?というところやマテリアルエディタの使い方(Substrataより前からある部分)などは、別の記事で解説していますので、UE5のマテリアルを全く使ったことがない方は、まずは↓の記事をご覧ください。

Substrate Material に関する情報まとめ

Strata – Intro, Submitting Feedback より引用

まだまだ情報が少ないですが、Substrate Material(Strata)に関する役立つ情報をこちらにまとめておきます。
新たな情報を見つけ次第、追加していきます。

この記事もこちらの情報を参考に書かせて頂いています。

Dev Community Substrate Material

Strata Materials | Course
Documentation for Strata Materials, released as Experimental in UE 5.1.

現状の公式ドキュメントです。

機能別サンプル

機能別サンプル:UE 機能サンプル - UE マーケットプレイス
博物館風に並んでいるサンプルのコレクションは複数のマップから構成されていて、各機能をデモンストレーションしています。

様々なマテリアルサンプルがどのように作られているかを見れます。
このようにノードを組めば、こんな見た目が作れるというのがわかるので非常に勉強になります。

5.2の機能別サンプルのプロジェクトを作成し「SubstrateMaterials」というレベルにたくさんのサンプルがあります。

Electric Dream サンプル

Electric Dreams 環境 | PCG サンプル プロジェクト
Unreal Engine 5.2 の新しいプロシージャル コンテンツ生成フレームワークで作成されたこのジャングル環境を探索してみましょう。

PCG を題材にしたデモでSubstrateも使用されています。

実際に自然の背景でどのようにSubstrateマテリアルが使用されているかをみることができます。

UE5.2 の新機能を解説したスライド

Unreal Engine 5.2 新機能まとめ for ノンゲーム | ドクセル
ドクセルはスライドやPDFをかんたんに共有できるサイトです

こちらの「Unreal Engine 5.2 新機能まとめ for ノンゲーム」ではP10からUE5.1からUE5.2で変わった部分などを紹介されています。

Unreal Engine 5.2 アップデート ~Rendering/PCG~【GTMF 2023】 | ドクセル
ドクセルはスライドやPDFをかんたんに共有できるサイトです

「Unreal Engine 5.2 アップデート ~Rendering/PCG~【GTMF 2023】」でもP4からSubstrateの基本的なことや注意点が紹介されています。

Unreal Engine 5.1 新機能まとめ for ノンゲーム | UNREAL FEST WEST ’22 (※Strataでの情報)

22:58 あたりからStrataの概要やマテリアルの例が紹介されています。

UE5.1 アップデート ~ Rendering / Effect ~ (※Strataでの情報)

UE5.1 アップデート ~ Rendering / Effect ~ | ドクセル
ドクセルはスライドやPDFをかんたんに共有できるサイトです

P32からこちらも概要やマテリアルの例が紹介されています。

スポンサーリンク

Substrate Material とは?

Substrateは、簡単に言うと、マテリアルにより柔軟性を持たせて、プリレンダラーのマテリアルのようにアーティストがより自由にマテリアル作成をできるようにしたマテリアルの機能(オーサリングシステム)です。
もっと要約すると、今までより表現の幅が広がるということです。
また、BlenderやMayaのようなプリレンダラーのマテリアルに近づくイメージです。

細かいことは色々とありますが、具体例を1つ挙げると、今まではクリアコートやサブサーフェイスなどは「シェーデングモデル」で分かれており、一緒に使うことはできませんでした。

Substrateでは、そのシェーデングモデルの設定がなくなり、SSSやクリアコート、ヘア、クロスなどの表現を1つのマテリアルでできるようになりました(1つのシェーデングモデルのようなイメージでシェーデングモデルを切り替える必要がない)

また、それらのマテリアルをレイヤー的に重ねることができます

今まで別だったシェーデングモデルを一緒に使えるということは、サブサーフェイスの素材の上にクリアコートなどもできます。
その他にもクリアコートの上に埃など現実と同じようにマテリアルを層として重ねていくことができます。

strataは層、substateは表面や化学反応を起こす物質などの意味があるので、素材を重ねてマテリアルを作るような部分が名前の由来になっているのかもしれません(ただの私の予想です)

新しいマテリアルシステムではありますが、マテリアルエディタの基本的な使い方などは同じです
新たなノードや概念が追加されたようなイメージです。

大きな違いとしては紫色の「Substrate BSDFs」というノードとそれが繋がる簡素化されたリザルトノードです。

詳しくは後述しますが、この紫色ノードが今までのリザルトノードに近い役割(どちらかと言うとMaterial Attribute)をしており、ここに色やラフネス、ノーマルなどの計算結果を繋いでいきます。

このようにリザルトノードが変わるので、従来のマテリアルと一緒に使うことはできず、Substrateの機能を有効にすると、今までのマテリアルは、Substrateのノードを使ったものに変換されます。

UE5.2の時点では、まだ実験的な機能なので、実際の制作への使用は非推奨です。
ユーザーが使用するかしないかを切り替えることができます。

今後は、徐々にSubstrateに置き換わっていくのではないかと思います。

スポンサーリンク

Substrate の使い方

ここからは、基本となるノードや各インプット、その使い方などを紹介していきます。

Substrate を有効にする

デフォルトでは無効になっているので、自身で有効化する必要があります。

実験用のプロジェクトで有効にするようにしてください!
既存のマテリアルが変換されるので、Substrateを無効にしても完全に戻らなくなることもあります。

「Project Settings(プロジェクト設定)」→「Engine – Rendering」→「Substrate materials」にチェックを入れることで有効にできます。
チェックを入れたら再起動をします。

設定が3つありますが、機能別サンプルでは3つとも使用すると書いてあるので、テストをする分には、とりあえず3つも有効で良いと思います。

その他の設定の意味としては…

Substrate Opaque material rough refraction
より物理的に正しくコーティングの下の層(マテリアル)のラフネスを計算します。
ただ、より重たい計算となるので、パフォーマンスに影響します。
まだ、深く検証できていませんが、映像などでは有効にすると良いのかもしれません。

Strata advanced visualization shaders
「r.Strata.Debug.VisualizeMode 3」でデバッグ表示を使用できるようになります。
こちらが有効だとパフォーマンスに影響があることがあるため、デフォルトは無効ないようです。

Substrate BSDFs ノード の概要

こちらの「Substrate BSDFs」という種類のノードが従来のマテリアルドメインやシェーディングモデルの役割を果たすイメージです。

なので、Substrate Unlit BSDF、Substrate Hair BSDF、Substrate Single Layer Water BSDFなどがあります。

今までだとResultノードにBasecolorやラフネスなどの計算結果を繋いでいましたが、基本的にこのSubstrate BSDFs に繋いでいきます。
そして、その結果をリザルトノードの「Front Material」に繋ぎます(基本的に)

ちなみに…BSDF(双方向散乱分布関数)は、簡単に言うと、CGなどの空間上で光の散乱を計算する方法です。
現実では、物体に光が反射して、その物体の色や質感を知覚できるわけですが、それをCG上でも可能な限り再現したようなものです。
BlenderにもPrincipled BSDFというシェーダーがあり、同じようなことをしています。

色々なSubstrate BSDFsノードがありますが「Substrate Slab BSDF」がベーシックなもので、こちらのノードでプラスチック、金属、ガラス、木などほぼあらゆる質感を表現できます。
一番使用頻度の高いStrata BSDFsノードです。

その他のノードは以下のような用途で使用します。

  • Substrate Simple Clear Coat BSDF: Clearcoatを安価に表現するためのもの。中でSlabを使っており、これを使わなくてもClear coatを表現することはできる
  • Substrate Unlit BSDF: 従来のUnlitと同じようなもの。ライティングの影響を受けない。
  • Substrate Eye BSDF:目の表現に特化したもの
  • Substrate Hair BSDF:ヘアの表現に特化したもの
  • Substrate Single Layer Water BSDF: 安価に水の表現ができる。(見た目的な)深さなども表現できる
  • Substrate Volumetric-Fog-Cloud BSDF: ボリュメトリックフォグやボリュメトリック クラウドで使用するもの

ちなみに後ほど紹介するマテリアルを重ねたりするための「Substrate Operator」ノードは、「Slab」と「Simple Clear Coat」でしか使えません。

スポンサーリンク

Substrate Slab BSDF のインプットと使い方

ほとんどの質感は、この「Substrate Slab BSDF」で表現していきます。

従来のマテリアルと異なり戸惑うところとしては、メタリックのインプット(Specularなども)がなくなっていることかなと思います。

その代わりに「F0」、「F90」というインプットがあります。

この2つのインプットで物体を垂直に見たときと物体のエッジ部分(接線方向)の反射率を操作します。

F0

物体を垂直に見たときの反射率(色)を調整します。
下記の画像はあくまでイメージですが、球を見たときは白い部分で、このF0に入力した反射率が使用されるイメージです。

値が高くなるほど、光が反射します。

プラスチックなどの非金属(誘導体)の場合は0~0.08程度になるようです。
金属では最大で1を入力します(Dev Communityより引用)

ただ、0だと反射が全くなくなります。

F0の値が1に近づくほど金属の見た目になっていきます。
色の付いた金属を作りたい場合は、ここに1に近い値の色を入れます。

デフォルト値(何も入力しない状態)は、0.04でプラスチックの値となっています。

F90

物体に対して接線方向の反射率(色)です。なので、物体のエッジの色、反射率を調整するインプットです。

こちらの画像はF90に1に近いピンクの色を入れています。
なので、エッジの部分がメタリックなピンクになってるのがわかるかと思います。

値と入れ方としては、F0と同じように非金属なら0~0.08、金属なら1などです。

デフォルト値は、1です。

F0とF90が反映される割合を調整したい場合は「Substrate FlipFlop」ノードを使用することで調整できます。

FicingColorF0の部分の値、TangentColorF90の部分の値を入れて、Falloffで割合、ブレンド具合を調整できます。
従来のフレネルノードのような感じですね。

Diffuse Albedo

Diffuse Albedoは、素材の色になります。
今までのBasecolorとほぼ同じようなものですが、金属では黒を使用します。
また、色の付いた金属(=反射される色)は、こちらではなく、F0などで色を設定します。

デフォルト値は、0.18(おそらく18%グレー)です。

ここまでで、よくわからん、従来のBasecolor、Metallic、Specularを使いたい!!
という方は「Substrate Metalness-To-DiffuseAlbedo-F0」という今までのBasecolor、Metallic、Specularの値をDiffuse AlbeodとF90に変化してくれる便利なノードがあります。

Roughness とNormal と Emissive Color

これらのRoughness、Normal、Emissive Colorのインプットは、従来と変わらずです。

スポンサーリンク

Anisotropy と Tangent

こちらの2つは、異方性反射を表現するのに使用します。

Anisotropy-1~1の値を入れることができます。
で入力したTangent方向にスペキュラ(ラフネスによりう反射のボケ)が伸びて、-1ではTangentの垂直方向にスペキュラが伸びます。

Anisotropy と Tangentについては、UE4の時のものですが、こちらの記事が参考になりました。

[UE4]Anisotropy(異方性反射)の使い方とそのTangentについて - Qiita
Unreal Engine 4.26から正式にマテリアルにAnisotropyが追加され、簡単に異方性反射を表現できるようになりました。 本記事では、そのAnisotropyについて、特にTangentの入力について紹介します。 ...

SSS MFP

MFP(the mean-free-path)=平均自由行程という意味で、色々と難しいですが
UE5のこのインプットとしては、簡単に言うと
光の吸収や散乱を制御するインプットでSSS半透明どのような色で透過するかやその透過具合を調整することができます。

SSSの使用方法としては
SSS MFPにSSSの色を入れることで表現できます。

SSS MFP ScaleでSSSの具合を調整できます。
こちらはデフォルトで1になっているので、Maxで効かせたい場合は入力しないでも大丈夫です。

サブサーフェス プロファイルを使用している場合は、これらのインプットは使用されず、プロファイルの値を使用します。

Second Roughness

スペキュラを調整するのに使用します。
(詳しくは調査中…)

例えば「Substrate Heziness-To-Secondary-Roughness」ノードを使用することで、拡散したスペキュラにすることができます。

Haziness: 0 (Second Roughness に何も入力しないのと同じ状態)
Haziness: 1

布やタイヤなどに使用すると、より幅広く、説得力のある表現ができます。

Fuzz

布を表現するために使用するのインプットです。
布の毛羽立ち感やベルベットのような素材を表現にするのに役立ちます。

FuzzColor:布の表面、毛羽立ち部分の色を設定します。

FuzzAmount:Fuzzの強さを調整します。
FuzzColorが強くなり、ベルベットのような質感に近くなります。

Fuzz Roughness Weight: Fuzz部分のラフネスを調整できます。
こちらを入力しない場合は、通常のラフネスが使用されます。

スポンサーリンク

Substrate Operator ノードの使い方とインプット

Substrate Operatorは、2つのSubstrate BSDFsを重ねたり、ブレンドするためのノードです。

例えば、最初に少し紹介したように1つのSlab BSDFでSSSが効いたマテリアル(A)を作成し、もう1つのSlab BSDFでつるつるな質感(B)を作成し、Aの上にBを重ねることでSSSの効いた質感の上にクリアコートを重ねるといったことができます。

いくつか種類があり、それぞれブレンドの仕方が異なります。

Substrate Horizontal Blend

Substrate Horizontal Blendは、単純に2つのマテリアルをブレンドします。

Mixに0~1の値やテクスチャを入れます。

Backgroundの値、1Foregroundの値が使用されます。

従来のLerpノードに近い挙動です。

Substrate Vertical Layer

Substrate Vertical Layer は、マテリアルを別のマテリアルでコーティング(=上に乗せる)します。

TopBottom に Slab BSDFなどのアウトプットを入力します。
Top TicknessTopの厚みを調整します。

車の塗装やニスなどクリアコートなどを表現するのに便利です。

ちなみにクリコートを表現するときは「Substrate Transmittance-To-MeanFreePath」ノードを使用し、それをSSS MFPに入力することで透過色を直感的に制御することができます。

Substrate Coverage Weight

AにSlabなどで作成した素材を入力し、Weightでその重量を調整します。
これ単体で使用するというよりは、Vertical Layerの前に挟んで、ここで重量(どれくらいの量を乗せるかのようなイメージ)を設定して使用します。

埃などを乗せるのに使用します。

Substrate Add

単純に2つのSlabを足し合わせます。

物理的に正しくなるため、基本的には使わないようです(じゃあ何に使うんだ?)

スポンサーリンク

Substrate の半透明とマスク

Substrate Materialも従来のマテリアル同様にBlend Modeを変更することでいくつかのタイプの半透明やマスク(アルファ抜き)が扱えます。

Substrate のブレンドモード

  • Opaque: 不透明マテリアル
  • Masked:0か1で不透明と透明を表現する。葉っぱなどをアルファ抜きしたりするのに使う。
  • TranslucentGreyTransmittance:従来のTranslucentにあたるもの。ガラスなどの半透明を表現できる
  • Additive:従来と同じ
  • ColoredTransmittanceOnly:従来のModulateに近しいもの
  • AlphaHoldout:従来と同じ
  • TranslucentColoredTransmittance:従来のThinTranslucentに近しいもの。薄い半透明のプラスチックなどを表現するのに便利。

Substrate の半透明

従来と異なりOpacityのインプットがなくなっています。

透明度はクリアコートと同じようにSSS MFPで調整します。
0に近づくほど不透明に近くなっていきます。

単純にSSS MFPに値を入れて調整もできますが、「Substrate Transmittance-To-MeanFreePath」を挟んだ方が調整しやすいです。

ちなみに上記の画像の下記のマテリアル設定です。

  • Blend Mode:TranslucentGreyTransmittance
  • Lighting Mode: SurfaceFowardShading

Refraction Method」をNone以外に設定することでResultノードでRefractionを設定できます。
また、ラフネスの値に応じて、曇りガラスを表現することができるようになります。

Substrate のマスク

こちらは従来と同じようブレンドモードを「Masked」にします。

リザルトノードの「Opacity Mask」インプットが使用できるようになるので、そちらに白黒のマップなどを入力することで、マスクで抜くことができます。

スポンサーリンク

まとめ

Substrate Materialの入門ということで基本的なノードやインプットなどを紹介しました。

個人的にメタリックがなくなり、F0とF90の関係性、操作性が難しく感じ、慣れるのに時間がかかりそうな部分です。

その他にもMFPやSecopnd Roughnessなど新しいインプットが増えており、理解するのが少し大変です。
Blenderなどを使っている方であれば、割と親しみやすいのではないかと思います。

Substrateを使い始める際の参考になれば幸いです。

このサイトでは、この他にもUE5の使い方やおすすめチュートリアルなどを紹介しています。

最後までご覧いただき、ありがとうございました!

コメント

タイトルとURLをコピーしました