今回はMaterial設定を紹介していきます。
Materialの詳細設定は表現・負荷ともに色々かかわっているので、
細かく紹介していけたらと思います。
※UE5・UE4で一部仕様が異なるかもしれません。
※UE5.3で検証しています。
※書き間違え等あればコメントください!
なぜ今更Material設定を学ぶのか?
という点になりますが個人的には下記2点を理由としています。
・設定の違いによって負荷のかかり方が変わるため。
・設定を知っていることによる表現力のアップ。
まず設定の違いによって負荷が変わるというのは、
AlphaのあるものやAlphaの計算を先にやるものなど、
半透明の計算が意図せず含まれるものがあります。
そういったものを選択していないか?などで、
シェーダーの複雑度は変化します。
こういった細かい部分を削減していくことで、
負荷軽減を目指していけたらなと考えています。
それからMaterialの設定には各種様々な設定があります。
Materialを2面で表現したり透過の詳細な指定、
影の表現の有無など表現の幅を広げられると考えています。
書いている本人が手探りだったり忘れていたりする場所を、
改めてまとめてみようというのが趣旨です。
※結構説明がない部分も多かったのでそちらも紹介していけたらと思います。
今回参考にさせていただいた資料は下記になります。
公式ドキュメント
Unreal Engine のマテリアルのブレンド モード | Unreal Engine 5.0 ドキュメント
Unreal Engine マテリアルのプロパティ | Unreal Engine 5.0 ドキュメント
海外の動画チュートリアル
All 7 Material Blend Modes in Unreal Engine Explained in Under 2 Minutes - YouTube
UE5 : Materials for beginners in Unreal Engine5- 4 Blend Mode - YouTube
・目次に戻る
まずはMaterialDomainについて紹介していきます。
MaterialDomainが何を決めているかというと、
decallやLightなど特定のマテリアルで使用する際に、
設定する項目がMaterialDomainになります。
MaterialDomainの設定項目に関しては下記の選択項目があります。
・Surface → 各メッシュやActorなどに設定する基本的なマテリアル
・Deferred Decal → デカールActorに使用するマテリアル
・LightFunction → ライトに適応する光源に対するマテリアル
・Volume → 指定した場所にフォグを置く用のフォグマテリアル
・Post Process → PostProcessVolume内に指定する資格効果のマテリアル
・User Interface → WidgetBlueprintなどに使用するマテリアル
デフォルトはSurfaceになっていて基本的なマテリアル表現になります。
他の表現をしない場合はSurfaceで問題ありません。
BlendModeやShadingModelでいろいろな表現ができます。
細かい説明はBlendModeの説明の際にしっかり解説します。
〇DeferredDecalの場合
※Decalの設定方法については下記記事を参考にしてみてください。
Deferred DecalはDecalActor用マテリアルの設定になります。
Deferred DecalはBlendModeで「Transelucent」、
「Modulate」または「AlphaComposite」以外を選択すると、
エラー状態になるので注意が必要です。
TranslucentとModulateとAlphaCompositeは何が違うのか?という点ですが、
まずTranslucentではNormal・アンビエントオクルージョンがあり、
Modulateではアンビエントオクルージョンの設定が無く、
AlphaCompositeではNormalの設定も無いという違いがあります。
※余談にはなりますがDecalで活用する場合のみ
Modulateはムーバブル設定のライトと互換性があります。
Opacityでマスクをかけた際に見た目も、
AlphaCompositeでは見え方が違うので注意してください。
これはAlphaCompositeではAlpha情報を事前に乗算しているためです。
基本はTranslucentを選択して作成する形で問題ないと思います。
DBufferでの連携なども問題なく行えます。
一応今回作成したデカール用のマテリアルも載せておきます。
〇LightFunctionの場合
続いてLightFunctionになりますがこちらは設定すると、
Opaqueが自動設定されてエミッシブカラーのみになります。
今回作成した簡易的なMaterialは下記になります。
エンジンコンテンツのwater_dというテクスチャをPannerで、
横に移動させているだけのマテリアルになります。
このMaterialはどこで活用するのかというとSkyLight以外の、
詳細設定にあるLightFunctionMaterialで設定することが可能です。
※SkylightのLightFunctionを設定できないので注意
実際に様々なライトに設定して動かしてみました。
こちらもいろいろな表現ができると思うので活用していきましょう。
〇Volumeの場合
Volumeについてですがこちらは煙やフォグを自作する際に、
使用するMaterialDomainになります。
VolumeではBlendModeをAdditiveを選択しないと、
エラーになってしまうので注意しましょう。
今回下記のような形で簡単なマテリアルを作成しました。
フォグの色と密度の数値を設定したのみのマテリアル例になります。
設定できるピンについて下記になります。
・アルベド → 基本色
・エミッシブカラー → 発光色
・エクスティンクション → Fog表現時の密度
・アンビエントオクルージョン → 陰影
それでは実際に設定していきます。
Volumeマテリアルを適応する前に「ExponentialHeightFog」で、
「Volumetric Fog」の項目にチェックをONにします。
※こちらを入れないと表示されませんので必ず入れましょう!
続いてVolumeマテリアルを適応するStaticMeshを配置します。
追加ボタンのアクタの配置から形状のキューブを選択して配置しましょう。
実際にキューブを配置して、Volumeマテリアルを配置します。
こちらを使うことでCubeの箇所にフォグを設定出来ます。
〇PostProcessの場合
PostProcessについてですがこちらは空間の表現や、
ダメージなどゲームの外見全体に効果を発揮します。
PostProcessはBlendModeが「Opaque」固定で、
ShadingModelも光源影響がある「Default Lit」固定になります。
またマテリアルノードもエミッシブカラーのみになります。
PostProcessの簡単なマテリアルの作成は下記のリンクの記事で、
細かく説明しているのでこちらでは割愛させていただきます<(_ _)>
設定方法などはUE4とUE5で大きな変更はありません。
〇UserInterface
UserInterfaceですがインターフェース用のUIを作成する、
マテリアルになります。
BlendModeはどれでも可能でUMGで活用できます。
最終カラー・オパシティ・オパシティマスク・スクリーン位置、
上記4つのノードはそれぞれBlendModeによって、
活用するノードが変化します。設定できるノードの設定は下記
・最終カラー → UIで設定した色
・オパシティ → 透明度合い
・オパシティマスク → 半透明箇所のマスク
・スクリーン位置 → 表示する位置を指定
実際にUserInterfaceのマテリアルを設定してみます。
まずは簡単な円状の半透明マテリアルを作成してみました。
作成したらUMGに適応していきます。
まずはコンテンツブラウザを右クリックして、
ユーザーインターフェースからウィジェットブループリントを選択します。
選択するとウィンドウが表示されるかと思います。
一番上の共有のUser Widgetを選択します。
User InterfaceマテリアルはUserWidget内のボタンのデザインなどに活用します。
UserWidgetのBPを開いて階層に「Canvas Panel」を追加します。
その後にButtonを追加してStyleのNormalのImageに設定します。
NormalのImageを設定することで何もしていない状態では、
先ほど作成したMaterialが適応されます。
実際にマテリアルを設定した結果は下記になります。
以上が各種Material Blendの設定になります。
各種細かいマテリアルの紹介などは後ほど紹介していきます。
・目次に戻る
今回はMaterial Blendの紹介は以上になります。
次回はBlendModeについて掘り下げていこうと思います。
もしかしたらこちらの記事はZennに移行するかもしれません。
・目次に戻る