前言
前一篇Substance Painter to Unreal Engine Workflow有跟著大家一起練習如何使用PBR的 Worflow在Unreal製作Material,但Unreal的Material並不適用只用PBR texture直接至製作材質,本篇就跟大家一起學習如何在Unreal開始製作漂亮的Material,因為材質種類眾多那這次我們就利用汽車烤漆的材質作為開始吧。
CarPaint Normal Map
汽車烤漆通常都會有顆粒感的質感,大家可以使用Photoshop製作自己所想要的Normal Map,下圖的NormalMap也是可以直接使用。

放入Unreal的Brower以後,打開看一下沒問題就可以使用了。

Make Material Attributes
要製作材質當然我們一樣先建立一個材質球,打開以後就會看到Unreal的材質編輯器了。

比較特別的是因為我們這次的材質需要一些Blend混合來製作材質,所以我們先將我們的Master Node點選並勾選Use Material Attributes 製作材質屬性 ,讓這個輸出Node變成只有一個 Material Attributes 的輸出通道。

然後我們來製作主要的屬性Node,點選右鍵即可搜尋找到Make Material Attributes的Node。

因為是汽車烤漆的材質,所以我們需要兩個 Make Material Attributes 的Node,一個node主要是用於製作汽車烤漆另一個則是製作光澤感。

Blend Simple
首先我們來試試看unreal的BlendSimple這個node看看,建立一個constant3Vector 設定 1.0.0 為紅色 串接到BaseColor,建立另外一個constant3Vector 設定 0.0.1 為藍色 串接到另一個Attributes的BaseColor,接著將紅色的材質屬性串接到 MatLayerBlend Simple 的BaseMetarial,而藍色的材質屬性串接到 MatLayerBlend Simple 的BaseMetarial,之後我們製作一個constant1Vector 串接到MatLayerBlend Simple 的Alpha,最後將Blend Simple輸出給我們的Mat看看。
這邊看到blend的Node將我們兩個不同顏色Base Color做了混合變成了紫色,但這並不是我們要的烤漆感覺。

這邊我們重新整理一下我們的Node,將原本的兩個Vector3 Node按住Alt+左間斷開連結,並複製一個Vector 3設定為全黑色,分別將我們三個Vector3 Node 設為參數並重新命名為Tint1、Tint Shade、Tint2,設為參數以後我們在調整材質球就可以直接在材質球上調整而不用在進入到UE的材質編輯器裡面。

我們先建立第一個Lerp函式 接收Tint1到A通道 接收Tint Shade到B通道 Aplha接收Frenel Function的Result。
接著建立一個Fresnel Function 接收新建的Vector1 數值為2的Node到 Fresnel Function 的Pwoer通道。
建立另一個Lerp函式 接收Lerp1到A通道 接收Tint 2到B通道 Aplha接收Frenel Function的Result 輸出給下方的 Make Material Attributes Node 的 BaseColor。
我們還需要給Metallic數值,所以建立一個Vector1數值為1串接到Metallic。

串接好以後我們就可以看看目前串接出來的效果,可以清楚看到Frenel Function以及Metallic串接出來的效果。

首先建立一個Scalar Paramter 將Default Vlue 設為12,建立一個Multiply Node 接收TexCoord到A通道 接收ScalarParam到B通道。
接著建立一個Texture Sample Node 將Multiply輸出串接到UVS,建立一個Multiply Node 接收Texture Sample到A通道 接收ScalarParam到B通道。

這邊記得在Texture Sample Node選擇我們汽車烤漆要用的 Flake Normal Map

Roughness
首先建立一個Fresnel Function 接收Vector1 數值為1的Node 到Pwoer,接著建立一個Multiply Node 接收Fresnel Function到A通道 接收ScalarParam到B通道。

點選右鍵選擇Start Previewing Node 即可看到目前的Node預覽效果,這邊我們就完成了Gloss的效果了。

首先新建一個Static Bool 並勾選Value讓屬性變成True,接著新建一個Fresnel Function 將Static Bool 的輸出 串到Invert Fresnel,接著新建一個Lerp 將Fresnel Function的輸出 串到LerpA通道 將帶有Normal Map的Multiply Node 串到B通道 最後將輸出串到MatLayBlend Simple 的Alpha通道。

Instance
在Unreal裡面的Material就算已經設定為參數還是無法直接在Material裡面調整數值,但是如果要調整參數的話可以Instance在Material點選右鍵並選擇Create Material Instance就會出現另一個Material Instance 可以調整數值了。

接著我們就可以打開 Material Instance 調整參數了。

最後我們就可以依照自己的需求調整材質的顏色以及其他效果了。

參考資料:https://www.youtube.com/watch?v=tRib47m0rcA
小結
Unreal的Material編輯器真的跟Unity的shader Graph方式蠻像的,但Node的名字有些不一樣需要習慣,但是大致上可以說是大同小異,雖然在Unreal上面製作Material實在是有點花時間,但是製作久了以後應該就會越來越上手越做越快,而且在Unreal的材質編輯器有許多快速鍵可以使用,這一點也是可以加速製作Material的方法之一。