在材質系統的"基于物理( Based Materials)"方面,只有 4 個您需要熟悉的不同屬性。它們是:
底色(Base Color)
粗糙度(Roughness)
金屬色(Metallic)
高光(Specular)
底色
底色(Base Color) 定義材質的整體顏色。它接收 Vector3 (RGB) 值,并且每個通道都自動限制在 0 與 1 之間。
如果是從現實世界獲得的,那么這是使用偏振濾光器拍攝時獲得的顏色 (偏振在校準時會消除非金屬材質的鏡面反射)。
針對金屬測得的底色:
粗糙度(Roughness) 輸入控制材質表面的粗糙或平滑程度。與平滑的材質相比,粗糙的材質將向更多方向散射所反射的光線。 這決定了反射的模糊或清晰度(或者鏡面反射高光的廣度或密集度)。 粗糙度 0(平滑)是鏡面反射,而粗糙度 1(粗糙)是漫射(或無光)表面。
金屬色(Metallic) 輸入控制表面在多大程度上"像金屬"。非金屬的金屬色(Metallic)值為 0, 金屬的金屬色(Metallic)值為 1。對于純表面,例如純金屬、純石頭、 純塑料等等,此值將是 0 或 1,而不是任何介于它們之間的值。創建受腐蝕、落滿灰塵或生銹金屬之類的混合表面時, 您可能會發現需要 介于 0 與 1 之間的值。
在編輯 非金屬 表面材質時,您有時可能希望調整它反射光線的能力,尤其是它的 高光 屬性。 要更新材質的高光度,需輸入介于0(無反射)和1(全反射)之間的標量數值。注意,材質的 默認高光值為0.5 。
一般而言,通過修改"高光"(Specular),可添加輕微的吸著現象或小比例的遮蔽,例如在法線貼圖中表示的裂縫。有時,將這些現象稱為腔洞。 比例較小的幾何體,尤其是僅存在于高多邊形中且并入法線貼圖的細節,不會被渲染器的實時陰影拾取。為了捕獲這種遮蔽,我們生成腔洞貼圖, 這通常是追蹤距離非常短的 AO 貼圖。此貼圖先乘以最終的底色,然后輸出并乘以 0.5(鏡面反射默認值)以作為鏡面反射輸出。 即,BaseColor = Cavity×,Specular = Cavity×0.5。
對于高級使用,這可用來控制折射率 (IOR)。我們發現對于 99% 的材質,這并非必要。以下是基于實測 IOR 的鏡面反射值。
實測鏡面反射值:
頂部:木炭、新鮮混凝土、老化瀝青。底部:銅、鐵、金、鋁、銀、鎳、鈦
材質混合模式
"不透明"(Opaque)
"遮罩"(Masked) : 遮罩沒有鏡面反射
"半透明"()
"疊加型"(Additive)
"調制"(Modulate)
"調制"(Modulate)混合模式無非將材質的值與背景的像素相乘。這種行為與Photoshop中的 正片疊底模式 混合模式非常類似。
"疊加型"(Additive)混合模式無非獲取材質的像素,并將其與背景的像素相加。這與Photoshop中的 線性減淡(添加) 混合模式非常相似。這表示不會進行暗化;因為所有像素值都 添加 到一起,因此黑色將直接渲染為透明。這種混合方式適合于各種特殊效果,例如火焰、蒸汽或全息圖。
與"半透明"()混合方式相同,這種混合方式不支持鏡面反射(即,反射)。這種混合的疊加型性質可能意味著您不會以任何方式使用這種混合,但您可以使用上文中"半透明"()小節中所示的"立方體貼圖"方法來模擬類似于反射的效果。
使用 半透明材質 時,一個重要的注意事項是它們目前不支持鏡面反射。這意味著您在表面上不會看到任何反射。但是,可使用 立方體貼圖 通過類似于以下的網絡來模擬此類反射:
不透明遮罩(Opacity Mask) 類似于不透明度(Opacity),但僅在使用遮罩(Masked)混合模式時可用。與不透明度(Opacity)一樣,它的值在0.0到1.0之間,但與不透明度(Opacity) 不同 的是,結果中看不到不同深淺的灰色。 在遮罩模式下時,材質要么完全可見,要么完全不可見。當你需要可以定義復雜實心表面(如鐵絲網、鏈環圍欄等等)的材質時,它將成為一種理想的解決方案。不透明部分仍將遵循光照。
你可以使用基礎材質節點上的 不透明度遮罩剪切值(Opacity Mask Clip Value) 屬性來控制剪切發生點。欲知更多詳情,請參閱 材質混合模式文檔 。
不透明蒙板剪輯值(Opacity Mask Clip Value)
我們在之前已了解到 Masked BlendMode (蒙板混合模式)僅有完全不透明或完全透明的像素。您可以把灰度貼圖或貼圖中的單通道作為蒙板來使用。 Clip Value (剪輯值)可以讓您設置一個閥值,以控制像素何時為不透明或何時為透明。對于擁有細長部分的貼圖,這些區域會隨著mipmap將白色從圖像或通道中去除而在一定距離內消失,您可以通過調整 Clip Value (剪輯值)來調整該現象發生的時間點。
材質界面操作
在材質預覽界面,按住 L 鍵并拖動鼠標可以旋轉光照方向
轉自
材質表達式 是 UE4 中的構建塊,用來創建功能完整的材質。每一個材質表達式都是獨立的黑匣,它輸出一個或多個特定值的集合,或者對一個或多個輸入執行單一操作,然后輸出該操作的結果。一個材質表達式節點包含以下5部分:
1、說明 - 所有材質表達式都具有公共的 說明(Desc)屬性。在此屬性中輸入的文本將顯示在材質編輯器中,它位于工作空間中表達式的正上方。它可用于任何用途,但通常是一種保留關于表達式用途或功能的簡短備注的好方法。
2、標題欄 - 顯示材質表達式名稱或材質表達式屬性的相關信息。
3、輸入 - 這些鏈接用于接收材質表達式所要使用的值。
4、預覽 - 顯示材質表達式的輸出值的預覽。啟用實時更新后,預覽將自動更新。您可使用空格進行手動更新。
5、輸出 - 這些鏈接用于輸出材質表達式操作的結果。
某些材質表達式是參數,這意味著它們的值可在包含該參數的基本材質的材質實例中修改(在某些情況下,可在運行時進行動態修改)。您應通過 參數名稱(Parameter Name)屬性對這些表達式指定*的名稱,以便在材質實例中識別特定參數時使用。如果類型相同的兩個參數在同一材質中具有相同的名稱,那么系統會假定它們是同一個參數。在材質實例中更改此參數的值時,將在材質中同時更改這兩個參數表達式的值。在基本材質中,還將設置此參數的默認值。這將是此參數在材質實例中具有的值,除非它在該材質實例中被覆蓋并修改。
材質表達式有很多類型,本次介紹 數學表達式。
Add(加) 表達式接收兩個輸入,將其相加,然后輸出結果。這個加法運算按通道執行,這意味著輸入的 R 通道、G 通道和 B 通道等等將分別相加。兩個輸入必須具有相同數目的通道,除非其中之一是單個常量值。常量可以添加到具有任意數目輸入的矢量。
示例:對 0.2 和 0.4 執行 Add(加)的結果是 0.6;對 (0.2,-0.4,0.6) 和 (0.1,0.5,1.0) 執行 Add(加)的結果是 (0.3,0.1,1.6);對 (0.2,-0.4,0.6) 和 1.0 執行 Add(加)的結果是 (1.2,0.6,1.6)
用法示例:Add(加)通常用來使顏色變亮/變暗,或者使 UV 紋理坐標偏移。
(追加矢量) 表達式允許您將通道組合在一起,以創建通道數比原始矢量更多的矢量。例如,您可以使用兩個 常量 值并進行追加,以建立雙通道 (常量 2 矢量) 值。這有助于將單個紋理中的通道重新排序,或者將多個灰階紋理組合成一個 RGB 彩色紋理。
示例:對 0.2 和 0.4 執行追加的結果是 (0.2,0.4);對 (0.2,0.4) 和 (1.6) 執行追加的結果是 (0.2,0.4,1.6)。
Subtract(減) 節點接收兩個輸入,從*個輸入中減去第二個輸入,然后輸出它們的差。減法按通道進行,即,*個輸入的 R 通道將減去第二個輸入的 R 通道,*個輸入的 G 通道將減去第二個輸入的 G 通道,依此類推。除非第二個輸入是單個常量值,否則兩個輸入必須具有相同數目的通道。常量可以從具有任意數目輸入的矢量中減去。
示例:對 0.5 和 0.2 執行 Subtract(減)的結果是 0.3;對 (0.2,-0.4,0.6) 和 (0.1,0.1,1.0) 執行 Subtract(減)的結果是 (0.1,-0.5,-0.4);對 (0.2,0.4,1.0) 和 0.2 執行 Subtract(減)的結果是 (0.0,0.2,0.8)。
用法示例:Subtract(減)可用來使顏色變暗以及使 UV 偏移。
Multiply(乘) 表達式接收兩個輸入,將其相乘,然后輸出結果。類似于 Photoshop 的多層混合。乘法按通道進行,即,*個輸入的 R 通道將乘以第二個輸入的 R 通道,*個輸入的 G 通道將乘以第二個輸入的 G 通道,依此類推。除非其中一個值是單個浮點值,否則兩個輸入必須具有相同數目的值。
示例:對 0.4 和 0.5 執行 Multiply(乘)的結果是 0.2;對 (0.2,-0.4,0.6) 和 (0.0,2.0,1.0) 執行 Multiply(乘)的結果是 (0.0,-0.8,0.6);對 (0.2,-0.4,0.6) 和 0.5 執行 Multiply(乘)的結果是 (0.1,-0.2,0.3)。
用法示例:Multiply(乘)通常用來使顏色/紋理變亮或變暗。
Divide(除) 表達式接收兩個輸入,并輸出*個輸入除以第二個輸入的結果。除法按通道進行,即,*個輸入的 R 通道將除以第二個輸入的 R 通道,*個輸入的 G 通道將除以第二個輸入的 G 通道,依此類推。除非除數是單個浮點值,否則兩個輸入必須具有相同數目的值。切勿以零作除數。
示例:當 A=(1.0,0.5,-0.4) 且 B=(2.0,2.0,4.0) 時,Divide(除)的輸出為 (0.5,0.25,-0.1)。
OneMinus(一減) 表達式接收一個輸入值,并輸出“一減去該值”。此運算按通道執行。
示例:對 0.4 執行 OneMinus(一減)的結果是 0.6;對 (0.2,0.5,1.0) 執行 OneMinus(一減)的結果是 (0.8,0.5,0.0);對 (0.0,-0.4,1.6) 執行 OneMinus(一減)的結果是 (1.0,1.4,-0.6)。
用法示例:當輸入顏色在 [0,1] 范圍內時,OneMinus(一減)的作用就是通常所謂的“反色”-- 即,OneMinus(一減)將返回互補色,這種顏色與輸入相加將產生白色。
Min(最小值) 表達式接收兩個輸入,然后輸出其中的較小者。
Max(*值) 表達式接收兩個輸入,然后輸出其中的較大者。
Ceil(加一取整) 表達式接收值,使其 向上 舍入到下一個整數,并輸出結果。示例:對 0.2 執行 Ceil(加一取整)的結果是 1.0;對 (0.2,1.6) 執行 Ceil(加一取整)的結果是 (1.0,2.0)。
Floor(減一取整) 表達式接收值,使其 向下 舍入到上一個整數,并輸出結果。
示例:對 0.2 執行 Floor(減一取整)的結果是 0.0;對 (0.2,1.6) 執行 Floor(減一取整)的結果是 (0.0,1.0)。
Frac(小數) 表達式接收值,并輸出這些值的小數部分。
示例:對 0.2 執行 Frac(小數)的結果是 0.2;對 (0.0,1.6) 執行 Frac(小數)的結果是 (0.0,0.6)。
FMod(浮點余數) 表達式返回對兩個輸入執行除法運算的浮點余數。
示例:對 (10.9,3.9) 執行 FMod(浮點余數)的結果是 3.1。
Clamp(限制) 表達式接收值,并將它們約束到由最小值和*值定義的指定范圍。
示例:在最小值為 0.0 且*值為 1.0 的情況下對 0.3 進行限制將產生 0.3;在最小值為 0.0 且*值為 1.0 的情況下對 1.3 進行限制將產生 1.0。
(矢量積) 表達式計算兩個三通道矢量值輸入的矢量積,并輸出所產生的三通道矢量值。給定空間中的兩個矢量,矢量積是與兩個輸入都垂直的矢量。
示例:對 (0,1,0) 和 (0,0,1) 執行 (矢量積)結果是 (1,0,0)。
用法示例:(矢量積)通常用來計算與另外兩個方向都垂直的方向。
(標量積) 表達式計算標量積,即一個矢量投射到另一個矢量上的長度。許多技術使用此計算來計算衰減。(標量積)要求兩個矢量輸入具有相同數目的通道。
Abs(*) 是數學術語“*(absolute value)”的縮寫。Abs(*)表達式輸出其接收到的輸入的*(無符號值)。基本上,這意味著它通過刪除減號將負數轉換為正數,而正數和零將保持不變。
示例:-0.7 的 Abs(*)為 0.7;-1.0 的 Abs(*)為 1.0;1.0 的 Abs(*)也是 1.0。
用法示例:Abs(*)一般與 (標量積) 配合使用。(標量積)的結果是 -1..0..1,對 (標量積)的結果執行 Abs(*)的結果將是 1..0..1。
Sine(正弦) 表達式反復輸出 [0, 1] 范圍內的正弦波值。最常見的情況是,通過將 Time(時間) 表達式連接至它的輸入,輸出連續的振蕩波形。輸出值將在 -1 與 1 之間來回循環。此表達式與 Cosine(余弦) 表達式輸出之間的差別是,輸出波形偏移半個周期。下圖顯示波的視覺表示:
用法示例:在任何需要振蕩效果的場合,此表達式都非常有用。通過將時間輸入(速度)或輸出(振幅)倍增,可以輕松地動態控制振蕩的速度和振幅。
Cosine(余弦) 表達式反復輸出 [0, 1] 范圍內的余弦波值。最常見的情況是,通過將 Time(時間) 表達式連接至它的輸入,輸出連續的振蕩波形。輸出值將在 -1 與 1 之間來回循環。下圖顯示波的視覺表示:
If(如果) 表達式對兩個輸入進行比較,然后根據比較結果傳遞另外三個輸入值中的一個。所比較的兩個輸入必須都是單個浮點值。
在此示例中,If(如果)表達式接收高度貼圖,并根據高度是低于還是高于值 0.2 來輸出紅色或綠色。
Power(冪) 表達式接收兩個輸入,計算“底數”(Base)的“指數”(Exp)次冪,并輸出結果;換而言之,“底數”(Base)自乘“指數”(Exp)次。
示例:底數為 0.5,指數為 2.0 時,Power(冪)的結果為 0.25。
用法示例:如果傳遞到 Power(冪)的顏色在 [0,1] 范圍內,那么 Power(冪)可以用作對比度調整,即,僅保留較亮的值。
(平方根) 表達式輸出輸入值的平方根。只能對單個浮點輸入值執行運算。
Normalize(規范化) 也稱歸一化,表達式計算并輸出其輸入的規范化值。這表示該輸入的每個分量都會除以矢量的 L-2 范數(長度)。
(分量蒙版) 表達式允許從輸入中選擇通道(R、G、B、A)的特定子集以傳遞到輸出。嘗試傳遞輸入中不存在的通道將導致錯誤,除非輸入是單個常量值。在這種情況下,會將單個值傳遞到每個通道。選擇傳遞的當前通道將顯示在表達式的標題欄中。
示例:如果 (分量蒙版)的輸入為 (0.2,0.8,1.4) 并選中 R 和 B 通道,那么將輸出 (0.2,1.4)。
(線性插值) 表達式根據用作蒙版的第三個輸入值,在兩個輸入值之間進行混合。您可以將其想像成用于定義兩個紋理之間的過渡效果的蒙版,例如 Photoshop 中的層蒙版。蒙版“阿爾法”(Alpha)的強度確定從兩個輸入值獲取顏色的比例。如果“阿爾法”(Alpha)為 0.0/黑色,那么將使用*個輸入。如果“阿爾法”(Alpha)為 1.0/白色,那么將使用第二個輸入。如果“阿爾法”(Alpha)為灰色(介于 0.0 與 1.0 之間的值),那么輸出是兩個輸入之間的混合。請記住,混合按通道進行。因此,如果“阿爾法”(Alpha)為 RGB 顏色,那么“阿爾法”(Alpha)的紅色通道值定義 A 與 B 的紅色通道之間的混合,而與“阿爾法”(Alpha)的綠色通道 無關,該通道定義 A 與 B 的綠色通道之間的混合。
示例:如果 (線性插值)的輸入為 (1,0,0) 、(0,1,0) 、0.5,將輸出 (0.5,0.5,0)。(1 * 0.5 + 0 * 0.5,0 * 0.5 + 1 * 0.5,0 * 0.5 + 0 * 0.5)
問題:
在UE4中的紋理編輯器中,點擊視圖菜單,能看到 R,G,B,A的顏色通道,單獨打開其中的通道,能夠顯示圖像的灰度值,。
以紅色灰度圖為例,0 代表沒有任何紅色信息,0 等價于黑色
數字1.0或者白色表示深紅色。
零基礎學ue4要多久:學習UE4至少需要4個月以上,如果在培訓學校學習的話學習周期一般在6-8個月,自學的話可能要學一兩年。
知識拓展:學習UE4一般分為四個周期,前期掌握虛幻引擎的基本操作使用和工作流程,學習場景搭建與燈光,后期學習UE4地編以及實例制作。
如果你想學UE4未來從事游戲開發相關的工作的話建議你找一個培訓學校學一下,因為自學的話需要很長的時間,而且學習效果也不是很好,在培訓學校學習的話學習效率會高一些,也可以更加全面的學習UE4相關的知識。
現在學UE4的培訓學校是很多的,如果你想學的話可以找一個大一點的培訓機構學一下,一般在一二線游戲產業發展強的城市培訓機構會好一些,你可以在這些城市找一個培訓機構學習。