轉自:https://www.52vr.com/article-600-1.html
以下內容針對入門或者入門不久的美術們,由liuke718編寫,由obuil整理,主要介紹想入門unreal4的美術們一點學習心得。
一.Unreal4的物理材質
在unreal的shader體系(ue4)中:金屬漫顏色非純黑,而傳統PBR shader體系(Vray)中金屬的漫反射是純黑的,所以在UE4中的漫反射顏色應按照傳統渲染(Vray)中反射顏色(使用RGB衰減曲線控制反射顏色另當別論)來調。
二.基本材質屬性
三.單面和雙面
四.Unreal4節點
1.ABS節點(“絕對值”曲線):
二.基本材質屬性
玻璃材質漫反射為1(純白),metal 為1,opacity大概0.5(視情況),材質類型(blend mode)改為translucent,出現折射項后,用lerp(混合)節點從1混合1.517,遮罩alpha則連接菲涅爾節點(無任何參數),如要透過玻璃看到后面物體的反射,玻璃材質需要將translucent lighting mode調為surface。
三.單面和雙面
ue4中和vray一樣,默認單面渲染,所以對于半透明物體,需要開啟two side 才能把背面信息進行計算,比如單面的紗簾,如果沒有厚度,純單面模型,則需要開啟two side才能計算背面的受光情況,在vray中叫做Vray 2sidematerial,在ue4中則在mesh面板勾選,而且游戲引擎對于單面模型,還有個特殊性就是只渲染法線正面面對視角的面,就是說一個片,不勾選2side,又是法線背面對著視角,將會看不見,vray則不存在這個問題,只是會另一面不計算信息而已,但至少面對視角的面是肯定會計算的。
四.Unreal4節點
對于一名美術來講,最重要的G點莫過于材質面板各種節點的運用,對于習慣了像Vray之類的離線渲染流程的過渡到游戲引擎的美術人員,有一點很大的變化就是:之前的各種渲染是面板把種種功能圖形化了,使用者在圖形化的面板來進行操作,例如在Vray里面有“混合”貼圖界面,“合成”貼圖界面,“輸出”貼圖界面,而且各種功能的名字會考慮到美術使用者而不會強調其中的數學原理,例如“VrayDirt污垢貼圖”,實際上它是很多數學節點的圖形化集合。但是在游戲引擎中,圖形化的界面被各種節點取代,使用者會更多的接觸到相對數學層面的操作模式,所以下面就要講一講個人對UE4中的這些節點的認識。
五.強調下RGB數學
在這之前,先想說說圖形學和數學的關系。其一,任何一個顏色,由RGB三原色構成,包括Alpha透明,在數學層面,其就是4個通道的數字,無論其數字是整數還是小數。任何一個空間位置,也是由xyz三個坐標值(三通道)來表 示,其也是數字,包括移動,旋轉,縮放,無非就是在原點三通道基礎上附加上另外一個向量xyz值。所以無論我們處理一個顏色的變化(貼圖變化也是顏色變化),還是處理一個空間變量,本質上就是對其的數字的處理。所以,無論“混合”也好“衰減”也好,它們本質就是數字的處理,并且如果我們把輸入量當做X(這里的X可以是四通道的數據如顏色,也可以是三通道的數據如坐標和向量,也可以是單通道如時間),輸出量當做Y(示意同左),這些功能都可以畫出它們獨特的曲線。 我們運用這些節點的目的,無非就是讓顏色,時間,空間這些冷漠的數字,按我們的要求讓它們相互轉化,或者自己和自己轉化。
六 .15條功能曲線
接下來要講的就是具體的這些“功能”的曲線,只要輸入了一個X值,就會輸出對應的Y值。
以下配圖頂上部分的顏色條,是為了單純的顯示當輸入值X變化時,輸出值Y當作顏色是什么顏色(在UE4中規定了顏色范圍由0到1表示,可以是范圍內的任意數字),如果輸出值Y超出了0到1的范圍,則顯示的是顏色的變化關系,并不是準確的對應關系。
以下配圖頂上部分的顏色條,是為了單純的顯示當輸入值X變化時,輸出值Y當作顏色是什么顏色(在UE4中規定了顏色范圍由0到1表示,可以是范圍內的任意數字),如果輸出值Y超出了0到1的范圍,則顯示的是顏色的變化關系,并不是準確的對應關系。
1.ABS節點(“絕對值”曲線):

其特點就是不會輸出為負的值,一定程度上適用于顏色(UE4中RGB值在0到1之間,其他軟件也有0到255的,但還是會轉化成0到1的),因為顏色數據不可能是負值。
如運用到顏色中,一個三通道數據,0.5,0.5,0.5,輸入了以后輸出出來結果依然是0.5,0.5,0.5.如果它是顏色,這是一個中度灰色,介于純黑和純白的中點。哪怕輸入的是負值,輸出后就變成了正值。
如運用在空間坐標中,如果把時間當做X輸入sin曲線(后面會講到),則sin曲線輸出的值Y在-1到1之間,高中知識,如果再把這個值當做X輸入ABS曲線,就會得到的Y是個0到1的區間,接著再怎么用就看你的需要了。當然,這是和sin曲線結合的情況,如果不結合,你需要明白的就是它永遠不可能輸出負數就行了,即輸出值區間為大于等于0,可以是無窮大。
如運用到顏色中,一個三通道數據,0.5,0.5,0.5,輸入了以后輸出出來結果依然是0.5,0.5,0.5.如果它是顏色,這是一個中度灰色,介于純黑和純白的中點。哪怕輸入的是負值,輸出后就變成了正值。
如運用在空間坐標中,如果把時間當做X輸入sin曲線(后面會講到),則sin曲線輸出的值Y在-1到1之間,高中知識,如果再把這個值當做X輸入ABS曲線,就會得到的Y是個0到1的區間,接著再怎么用就看你的需要了。當然,這是和sin曲線結合的情況,如果不結合,你需要明白的就是它永遠不可能輸出負數就行了,即輸出值區間為大于等于0,可以是無窮大。
2. Frac節點(取小數曲線)

其特定就是無論輸入的值多大多小,都會把整數部分忽略,只保留小數部分,然后在0到1的區間找到其對應的Y值,實際上這個Y值也就是小數部分本身的值,即輸出區間為0到1之間(可以等于0或者1)。
所以這個曲線非常適用于顏色,比如一個三通道數據2.2,5.3,45.25(無論你是怎么計算的到的不重要),輸入該節點以后得到的Y值作為顏色來顯示的話,和541.2,125.3,-512.25輸入以后得到的Y值作為顏色來顯示是一樣的顏色,因為輸出值都是它們的小數部分:0.2,0.3,0.25。
所以這個曲線非常適用于顏色,比如一個三通道數據2.2,5.3,45.25(無論你是怎么計算的到的不重要),輸入該節點以后得到的Y值作為顏色來顯示的話,和541.2,125.3,-512.25輸入以后得到的Y值作為顏色來顯示是一樣的顏色,因為輸出值都是它們的小數部分:0.2,0.3,0.25。
3.Floor節點(退位取整數曲線)

這個曲線就不一定適用于顏色了,因為它的輸出值可以是負值,還可以是大于1的數,什么叫退位取整數呢,簡單暴力的講,就是輸入一個任意值X,這個節點會把小數部分扔了,只保留整數部分,作為輸出值Y。具體的適用情況就是:我只想得到一個整數,不要它的小數部分。
注意該配圖中上方的顏色條顯示的是變化關系,而不是對應關系。其良苦用心是因為在該圖表中輸出值要么是0(純黑),要么是1(純白),輸出2或者3的時候就不能直接表示成顏色了,所以這么縮放下對應關系,可以清楚的表明顏色的遞進關系,在之后配圖出現相同情況就不再做解釋了。
注意該配圖中上方的顏色條顯示的是變化關系,而不是對應關系。其良苦用心是因為在該圖表中輸出值要么是0(純黑),要么是1(純白),輸出2或者3的時候就不能直接表示成顏色了,所以這么縮放下對應關系,可以清楚的表明顏色的遞進關系,在之后配圖出現相同情況就不再做解釋了。
4.Ceil節點(進位取整數曲線)

和Floor節點類似,不同點在于輸入值X如果有小數部分,扔掉小數的同時,還會進一位到整數,例如輸入19.521,輸出以后就變成了20。其適用情況也不是很適合顏色的處理。
5.FMod節點(余數曲線)

該曲線有兩個輸入值Xa和Xb,其輸入結果為Xa除以Xb,得到的余數,例如配圖中的Xb已經設定好為2了,當Xa是3的時候,輸出值Y是1,因為,Xa除以Xb,3除以2,商1,余1,所以最后商多少不重要,重要的是最后余數是多少,也就是輸出值Y的值。
在實際運用中,這個也叫循環,循環的起點值是0(注意不是Xa),循環的終點值是輸入值Xb,而輸出值Y就是0到Xb這個區間。那Xa有啥用呢?因為比如Xa是個變量的時候,不受主觀值控制的時候,或者Xa很大或者很小的時候,可以通過設定Xb值來限定循環的次數,假定一個值10(它可以是空間單位,時間單位),但我們要限定每到5循環一次,那么就設定Xb為5就行了,無論這個輸入是100,是250,始終每到5就循環一次,最后輸出值都在0到5這個區間內。在比如這個單位是時間,游戲運行時間一直在增加,但是我們可以通過該節點做出一個循環計時器,每到一個規定時間就循環一次,觸發一個事件。
在實際運用中,這個也叫循環,循環的起點值是0(注意不是Xa),循環的終點值是輸入值Xb,而輸出值Y就是0到Xb這個區間。那Xa有啥用呢?因為比如Xa是個變量的時候,不受主觀值控制的時候,或者Xa很大或者很小的時候,可以通過設定Xb值來限定循環的次數,假定一個值10(它可以是空間單位,時間單位),但我們要限定每到5循環一次,那么就設定Xb為5就行了,無論這個輸入是100,是250,始終每到5就循環一次,最后輸出值都在0到5這個區間內。在比如這個單位是時間,游戲運行時間一直在增加,但是我們可以通過該節點做出一個循環計時器,每到一個規定時間就循環一次,觸發一個事件。
6.Power節點(曲線絕對值)

同ABS曲線類似,不同點在于該節點有第二個輸入值Xb,當Xb等于1的時候,曲線同ABS一模一樣,大于1的時候,配圖中紅色曲線呈類似指數曲線,如圖(輸出值Y先緩慢上升并越來越快),當Xb小于1的時候,輸出值Y先快速上升并越來越慢。
用在顏色來講就是“緩進”“緩出”。
用在顏色來講就是“緩進”“緩出”。
7.Lerp節點(混合)

這是美術上運用的最多的混合功能,嚴格的來講,由于有三個輸入變量,Xa,Xb,Xc(Aplha),加上一個輸出變量,所以不存在曲線圖,在配圖中規定了Xb為定量1,此時的曲線中Xc的值為0.5,就是說Xa和Xb各取一半,放作顏色來講,如果Xb為純白色,Xc(apha)為0.5,那么當Xa為0的時候,輸出值Y為0.5,抽象來講,就是Xc(Alpha)的值越大,最終值Y就越趨向于Xb,越小,最終值Y就越趨向于Xa,用于貼圖的混合。
8.HeghtLerp曲線

同Lerp相似,Lerp的Alpha是線性的,這個里面的Alpha會受到高度圖曲線的影響(配圖中使用的是sin曲線模擬了一張高度圖,由于沒用過,所以不做過多評論。猜測是用于高度圖來控制地形中的材質分布,例如山地海拔越高雪越多,遇到高度下降一些又會長一些草。但總體程度還是雪越來越多。
9.Clamp節點(輸出曲線)

常用節點,有兩個輸入值Xa和Xb,用來限定輸出值Y不小于Xa,不大于Xb,在中間范圍都是允許的輸出值。
10.Sin節點(sin曲線)

高中知識,循環區間為1,輸出范圍為-1到1。
11.Cosine節點(cosine曲線)

高中知識,循環區間為1,輸出范圍為-1到1,與sin不同點在于是從輸出值為1
開始循環的。
開始循環的。
12.OneMinus節點(反轉曲線)

屬于固定的圖形函數功能,常用節點,常用于0到1區間(顏色)的反向處理。也是建立在顏色使用基礎上的,即顏色一定是0到1的區間。
13.Exponential Density節點(指數密度曲線)

屬于固定的圖形函數功能,輸出值一定在0到1范圍內,通過兩個輸入變量Xa(任意),Xb(只能在0到1范圍內),來輸出一條從1到0的,并針對于起點和終點平滑的曲線,當Xb值越大時,這個變化就越快。
14.Sphere Mask節點(球形遮罩曲線)

屬于固定的圖形函數功能,通過Xa(Radius)和Xb(Hardness)兩個值來對貼圖輸入值Xc進行純黑和純白遮罩處理。
15.SphereGrandient-2D節點(球形漸變曲線)

屬于固定的圖形函數功能,通過Xa(Radius)來控制貼圖輸入值Xb的漸變處理。
理論大概就是這樣了,實際運用我也沒有太深入的了解。寫出來也是為了加深我自己的印象,以便以后能熟練運用。
對于其他的燈光功能,材質選項這些看文字和解釋就能明白,還不懂就看官方的ContentExamples場景,很多功能一看就明白了,復雜的點恰恰就是這些數學和圖形功能的轉化,也是作為游戲引擎從業者最需要具備的。
理論大概就是這樣了,實際運用我也沒有太深入的了解。寫出來也是為了加深我自己的印象,以便以后能熟練運用。
對于其他的燈光功能,材質選項這些看文字和解釋就能明白,還不懂就看官方的ContentExamples場景,很多功能一看就明白了,復雜的點恰恰就是這些數學和圖形功能的轉化,也是作為游戲引擎從業者最需要具備的。
浙公網安備 33010602011771號