SPARKCREATIVE Tech Blog

https://www.spark-creative.jp/

【UE5】Strata(Substrate)機能について

こんにちは!そしてお久しぶりです!
エンジニアの桒村です。
今回はUnrealEngin5から新規で追加された「Strata(Substrate)」について話していきたいと思います。

まず初めに...

そもそも、「Strata(Substrate)」ってなんだ?と思った方へ...
ずばり!UE5から新しく追加されたマテリアルのオーサリングシステムのことになります。

少し嚙み砕いた説明だと、BlenderやMayaなどで使用されるプリレンダラーのマテリアルのような機能になります。
つまり、デザイナーの方などがより自由にマテリアルを作成しやすくした機能というわけですね。

ちなみに、現時点でのこちらの「Strata(Substrate)」ですが、まだ実験段階の機能というため、Epic公式さんのドキュメントは存在していないようです。その代わり、EpicさんのDevelopCommunity側で機能について説明してくださっています。
詳しく知りたい方は、こちらのサイトから確認をしていただけたらと思います。
dev.epicgames.com

※UE5.2以降では、「Strata」という表記名が「Substrate」という表記名に変更されているので注意してください。
なお、今回は分かりやすく両方の表記名を使用していますのでご了承くださいませ。

ちなみに、Strataって日本語訳すると「地層」という意味らしいです。
機能として、マテリアルの中で複数の層を持つような表現が可能っぽいということでそんな名前がついたのかなあと思っています。(あくまで想像になります(^▽^;))

Strata(Substrate)機能のメリット、デメリット

続いて「Strata(Substrate)」機能を使用することで起こるメリット・デメリットについてお話します。

【メリット】
・従来のものでは、再現しにくかったものが簡単に作れるようになった。 
例:油膜のような表現、遊色効果などの表現(Thin Film ノードで再現できる)


【デメリット】
・機能自体が実験段階中のものなため、実際の開発等への使用は非推奨とされている。
・同じく実験段階の機能のため、公式ドキュメントが存在しない(Dev communityは存在している)。
・表現できる幅が広がる反面、処理自体は重くなっている。


メリットに関しては、やはりこれ一点だ!と言わんばかりですが、やはり従来まででは再現しにくかったものが簡単に作れるようになったことだと思います。
正直なところ、こちらのメリットがなければ従来までのマテリアルシステムのままでもよかったぐらいです。( ´∀` )
反対にデメリットに関してですが、まだ実験段階中な機能だということは大きいのかと思います。
また、使用できるノードの数も増えることもあり、処理としては従来のものと比べたら重くなっていると思われます。

Strata(Substrate)ノードについて

実際に「Strata(Substrate)」機能を使用することで以下のサイトで書かれているようなノードが使用できるようになります。
unrealengine.hatenablog.com


前置きが少し長くなりましたが、実際に触りながら「Strata(Substrate)」についてお話していきますのでよろしくお願いします。(m(__)m

作業環境

windows 10
・UnrealEngine 5.1.1

プロジェクト設定

まずは、UnrealEngine5.1.1を起動して、プロジェクトを作成してください。

今回もプロジェクト名は適当で大丈夫ですが、分かりやすくProjects_Strataにしてみました!

次にプロジェクトが開けれたら、編集からプロジェクト設定に飛んでいただき、レンダリングの項目を選択してください。

こちらのレンダリング項目の検索欄で「Strata」と検索していだたき、「Strata Materials(ストラータマテリアル(実験用))」にチェックをいれてください。
(それ以外にも項目がありますが、基本的には、こちらにチェックを入れていただくことでStrataの機能を使用できるようになります)

チェックを入れていただくと、「Strata(Substrate)」機能を適用させるため、一度再起動が必要になります。
また、シェーダーコンパイルも通りますので、少し適用に時間がかかるかと思いますが気長に待っていただけたらと思います。
ちなみに、なんでそんなに適用させるのに時間がかかるんだ?と思いますが、その理由はこの後分かるようになります。。。

再起動が完了したら、これまでと同じように左下のコンテンツドロワーから作業用のフォルダを新規作成し、作成フォルダから、右クリックでマテリアルを選択します。
マテリアルファイルをM_Strataというファイル名にしてから、マテリアルファイルを作成します。
今回も、こちらのマテリアルファイル上で処理を行うようになります。

プロジェクト設定は以上になります。

実際に触ってみた!

先ほど作成したマテリアルファイルを開いてみると...何か以前のものと違ってリザルトノードの形が変わっていますね。

ちなみに従来までのリザルトノードはこんな感じです。

明らかに構造自体が変わっていますね。。。
新しく出てきた Strata Slab BSDF というノードが、以前まで使用されていたリザルトノードに近い役割をしているようです。
つまり、マテリアルのシステム自体が変わっているということなので、「Strata(Substrate)」の機能を適用するために再度シェーダーコンパイルも通ってしまうということですね。
逆に、「Strata(Substrate)」機能を無効にして従来までのマテリアルシステムに変更するときにでも、一度再起動が必要になり、同様にシェーダーコンパイルも通りますので注意してください。

※「Strata(Substrate)」機能を有効にする前に作成していたマテリアルノードに関しては、有効後に「Strata(Substrate)」のノードを使用したものに自動で変化されるので注意してください。

使い方としては、Strata Slab BSDF ノードに、色やラフネスといった計算結果結果を繋いでいく形になります。


今回は、Strata Slab BSDF ノードを使用した、曇りガラスに近い感じのマテリアルを作成していきます。

以下の画像がノード処理になります。

半透明部分になっている箇所は曇っている感じの見た目になり、それ以外の所はベースカラーだけがかかっているような見た目になっていると思われます。
ちなみに、Strata Transmittance-To-MeanFreePathというノードを使用していますが、こちらのノードは、ターゲットの距離で到達した透過色からMFPと厚さの値を導きだすために使用しています。


最後に

今回は、Strata(Substrate)の機能についてと実際に使用してみたところまでお話させていただきました。
従来のものと比較したときに、単純に機能慣れの問題だと思いますが、操作的に少し重く感じて個人的に扱うのが面倒い気持ちになりました。
ただ、今後のアップデート次第では、こちらが主流になる可能性もあるので、早めに慣れておくのもありかと思っています。
また、こちらの機能は実験段階の機能のため、使用しているときにたまにUEが落ちることがありました。(^▽^;)
それでは今回はここまでになります。また次回よろしくお願いします !