
「入門」UE5/UEFNマテリアルの基本(ガラスの表現)Part7
前回は、テクスチャー座標と歪みについて紹介しました。
今回は、ガラスの表現を紹介します。
最終結果

新規マテリアルを作ろう
Materialフォルダ内に、M_Glassというマテリアルを作成して開きます。

マテリアル(M_Glass)を開き、詳細パネルを見てみましょう。
Blendモードという項目があります。
Blendモードとは
マテリアルの最終出力(最終結果)と、その背景のブレンド方法を設定する項目です。
Opaque (不透明) ライトなどが貫通しない表面で金属、石、プラスチックなど様々な場面で使用されます。
Masked (マスク) 白黒画像などを使い、黒色の部分を透過させます。
Translucent (透過) 主にガラスや窓などの透過の処理に使用します。
Additive (加算) 火、蒸気、ホログラムなどのエフェクト系に使用され、使用方法はMaskedに似ています。
Modulate (調整) マテリアルの値と、背景を乗算します。
ガラスを表現するのでBlendモードをTranslucent (透過)に変更します。

Translucent (透過)に変更することで、マテリアルノードにOpacityとRefractionが使用できるようになります。


続いて、さらに下にスクロールしてtranslucencyという項目の中のLighting ModeをSurface TranslucencyVolumeに変更します。
これは、マテリアルの表面が反射を受けるかどうかの設定です。
ガラスは反射の影響を受けるので以下のように設定します。

マテリアル本体の基本設定が出来ました。
各ノードの配置
それでは、以下のように各ノードを繋ぎます。
Constantと、Constant3Vectorのシンプルなノードです。
Constantの値0.5はOpacityに繋いでいますが、ここで透明度の調整が可能です。
0は透明度100%、1は透明度0%になります。

Fresnel(フレネル)ノードを以下のように追加します。
検索バーに「fre」と入力することで見つけることができます。

Fresnelとは
ライティング手法の一つで、マテリアルのシルエット(輪郭)をくっきりさせるノードです。
アンリアルエンジンでは、ノードのプレビューが確認できます。
Fresnelがどのようになっているか確認してみましょう。
確認方法
プレビューを確認したいノード上で、
右クリック
Start Previewing Node
停止する場合は、
右クリック
Stop Previewing Node

プレビューで見てわかるように円の中心が黒色で0、外に向かって徐々に白色の1になっています。
ということは、外に向かって行く程、シルエットをはっきりさせることができます。

Fresnelの入力ピンExponentlnは、数値を上げると白色の範囲を調整することができます。(輪郭の強弱)

BaseReflectFractionInは、反射率の設定で値を1にするとフレネルの効果が失われます。

現在フレネルを繋いでいるRefrationですが、Refrationは光の屈折率IOR (Index of Refraction)という光学単位です。
UE5では、この屈折率をindexの数値によって調整します。
以下はアンリアルエンジンが推奨している数値です。
もし、水面などを作っているときは水のIOR値1.33にする事で、水中での光の屈折がよりリアルに表現できます。

Lerpとは
Lerpノードを以下のように追加します。

LerpはキーボードのLキーでショートカットが用意されています。

Lerpとは
Linear Interpolate(線形補間)の事で、マテリアルでは入力ピンのAとBの値をブレンドする事が可能です。
Alphaに関しては、AとBに入力された値に0でA側(現在は緑)が100%、1でB側(現在は赤)が100%になります。因みに、Alphaのデフォルト値は0.5になるのでAとBがちょうどブレンドされてお互い50%になります。

それでは、話を戻します。
以下のようにLerpにConstantノードを繋ぎます。

上記の繋ぎ方が、どうなるのかわからない人は、フレネルのプレビューを見たときを思い出しましょう。
以下のようになっています。

中心部分は黒っぽいのでLerpのAに入力した1が適応されて、外周は白色で1なのでLerpのBが適応されて1.33になります。
そして最終的に以下のようになります。

まとめ
マテリアルのBlendモードでマテリアルの用途を設定できる。
フレネルは中心が黒色(0)で外に向けて白色(1)になる。
Lerpの入力はAとBとAlphaの3つを持ち、Alphaに入力された数値によって、Aを出力したりBを出力したりもしくはブレンドさせる事もできる。
次回
メッシュの頂点を取得して、頂点のペイントを紹介します。