[自學Unreal學習筆記] 關於材質球材質之間混和

K
Oct 26, 2020

--

製作遊戲場景時,場景中的某些物件會在不同場景裡重複出現,
但卻因為場景之間的氣候條件不同而有不同的表面,

同一個石頭材質在雪地和草原會有不同的表面表現

透過材質球材質之間的混和可以縮短每次都得重新去製作材質球的麻煩,針對場景中要特別表現的材質做一點微調即可。

-

只有岩石的基本材質

我在 Quixel Bridge 隨意找了石頭和苔癬的材質,材質名字分別是Layered Rough Rock 2*2 M 和 Icelandic Moss 2*2 M
Quixel Bridge在和 Unreal Engine 的連動上做得相當好,下載好的材質可以直接輸出到 Unreal 正在編輯中的檔案,同時如果用同一個 Epic Games 帳號做綁定的話還有大量高清的免費正版授權使用,完全佛心

///如何將 Unreal Engine 連結 Quixel Bridge 的官方教學///
https://help.quixel.com/hc/en-us/articles/360002127457-Installing-the-Megascans-Plugin-for-UE4-on-Windows

第一個要使用的是 Lerp Node,全名是 Linear Interpolates

Lerp Node ( Linearly interpolates between A and B based on Alpha )

Lerp 簡單來說就是把 A 和 B 做混和,混合的比例由 Alpha 值做決定,
Alpha 值為 0的時候有 100% A,Alpha 值為 1 的時候有 100% B

直接將石頭和苔癬的底色連接上 lerp node 系統預設的 Alpha 值為0.5

這裡 Alpha 的數值並不是很重要,這樣的混和方式適用於要把這個結果套在整個平面 (譬如說遊戲的地/ 牆面) 上,後面還會加上其他參數節點讓混和的材質有更多調整空間

這邊可以回去看一下本文第一張最終效果的樣子,我們只需要被混搭的材質 (苔癬) 出現在石頭的最上端,而不是像剛套上 Lerp Node 一樣直接將兩個材質混起來
要讓材質出現在石頭頂部首先必須要讓系統知道"上面"這個概念,同時我們也希望苔癬在混和時能崁入石頭的紋理中,所以我們要用石頭材質的 Normal map 來製作苔癬材質的遮罩,以獲得更多的細節紋理。
先加了一個 TransformVector Node,在 Unreal Engine 中材質貼圖的預設坐標系都是 Tangent Space (切向量),透過 TransformVector Node 我們將遮罩的座標 Tangent Space 改成了 World Space (世界坐標系)

接下來加的是 Component Mask Node ,在本案例中是為了讓我們選擇苔癬要長出來的方向

RGB 分別代表 XYZ 三個方向,在本案例中我們需要的是 B Channel,也就是 Z軸

做到這把目前的遮罩放進 Lerp Node 的 Alpha 裡看看結果,

看起來有點樣子了,但下面出現了詭異的顏色,
這是因為遮罩給 Alpha 的數值是 1 到 -1 ,要解決只要加個限制用的 Clamp Node 就可以了

當你在 Clamp Node 裡設定好範圍只從 Max (1) 到 min (0) 下面那些怪怪的顏色就不見了

其實這樣就非常接近我們希望的效果了,最後再補上一個 Power Node (強化對比度用,也可以理解為把輸入的數值自乘上Exp次)

剛加上 Power Node

以及 Add (用於設定遮罩範圍用 )

調整 Add 的輸入數值可以改變覆蓋材質的範圍

最終把遮罩同時補在 Normal, Roughness 等貼圖 Lerp Node 的 Alpha 上就會得到我們的最終結果

一秒換成雪地的石頭!

這不算是一個很新穎的技術了,僅作為筆者最近研究了一些官方資料和網路上的教學後的一個個人筆記,參考資料:

Unreal 官方文件
https://docs.unrealengine.com/en-US/Engine/Rendering/Materials/ExpressionReference/VectorOps/index.html?utm_source=editor&utm_medium=docs&utm_campaign=rich_tooltips#transform

知乎 Tangent Space 甚麼是切線空間
https://www.zhihu.com/question/23706933

Ben Cloward 的材質球教學
https://www.youtube.com/watch?v=QwVDlS8uiYg&t=948s&ab_channel=BenCloward

--

--

K
K

Written by K

Accidentally pressed the RESTART button at the age of 30, working hard to become a game designer.

Responses (1)