Unity3D 5 官方教程:標準着色器之材質參數(二)

金屬模式:金屬參數

這裏寫圖片描述
當在金屬工作流(不同於鏡面工作流)下工作時,表面的反射成都和光照反應由金屬性級別和平滑度級別來修改。
這裏寫圖片描述
當使用這個工作流時,鏡面反射仍然被生成;但依賴於給予Metallic和Smoothness級別的設置而自然出現,不是被指定的。
金屬模式並非僅僅用於看起來應該是金屬的材質!此模式名爲金屬,是因爲用戶控制表面如何成爲金屬或非金屬的方式。

金屬性參數

材質的金屬參數決定了表面如何“像金屬那樣”。當一個表面更加金屬化,它更多地反射環境,albedo色變得更難看到。在完全金屬級別下,表面顏色完全由環境的反射而驅動。當表面更不金屬化,他的albedo色更清晰,並且在表面顏色上,任何表面反射是可見的,而不是隱藏掉。
金屬值從0到1範圍(平滑值保持爲常數0.8)。
金屬值從0到1範圍(平滑值保持爲常數0.8)。
默認情況下,沒有紋理被分配,金屬性和平滑度參數各用一個滑塊條控制。這對於某些材質已然夠用了。然而如果模型的表面在albedo紋理中有表面類型的混合,可以使用紋理貼圖來控制金屬性和平滑度級別如何在通過材質表面時改變。例如,如果紋理包含了一個角色的衣服,包括一些金屬鈕釦與編碼。用戶將希望鈕釦和編碼比衣服的布料有更高的金屬值。爲了達成此目的,不使用單一一個滑塊值,可以分配一個在鈕釦和編碼區域包含了更高像素顏色的紋理貼圖,以及在布料處爲更暗的值。
隨着一個紋理分配給金屬性參數,金屬性和平滑度滑塊會消失。取代的是:被通過紋理的紅色通道所控制的材質金屬級別。並且材質的平滑級別會被紋理的alpha通道控制。(這意味着綠色和藍色通道被忽略了)。這意味着你有單個可以定義區域是粗糙或平滑、金屬或非金屬的紋理,當工作於覆蓋了一個對於很多區域有不同要求的模型的紋理貼圖時很有用——例如一個角色的紋理貼圖經常巴夯多種表面要求:皮鞋,布料衣物,手與臉的皮膚,以及金屬鈕釦。

這幅圖展示了模型沒有金屬貼圖的情形。
這幅圖展示了模型沒有金屬貼圖的情形。
在上面的例子中,有一個albedo貼圖,但沒有對金屬的紋理。這意味着整個物體只有單個金屬性數值和平滑度數值,並不合理。Leather straps,金屬鈕釦,sticker和handle應當都出現不同的表面性質。
這幅圖展示了模型應用了金屬貼圖的情況。
這幅圖展示了模型應用了金屬貼圖的情況。
在這個例子中,一個金屬/平滑的紋理貼圖已被分配。鈕釦現在擁有高的金屬值,由此對光照有反應。盒子的Leather straps比leather body更閃亮,然而它們金屬值低,所以顯出閃亮的非金屬表面。在右端遠處的黑色、白色貼圖展示了對金屬更光亮的區域,以及對leather中等到低的灰度。

平滑度

The smoothness parameter, shown in both Metallic & Specular shader modes.
平滑參數,在金屬和鏡面着色器模式的平滑參數都展示了。
平滑度的概念在鏡面工作流和金屬工作流下均可應用,並且在兩種工作流下工作的方式大部分都一樣。默認下,沒有一個金屬或者鏡面紋理貼圖被分配時,材質的平滑度由一個滑塊控制。此滑塊允許你控制“微小表面細節”或者縱貫表面的平滑度。
兩個着色器模式在上面展示了;因爲如果選擇使用一個紋理貼圖用戶金屬或錦棉參數,平滑度的值也從相同的貼圖中採用。這在下一頁中進行更細節地解釋。

這裏寫圖片描述
平滑度範圍從0到1。
“微表面細節”在Unity裏是無法直接看到的東西——但近在眼前。它是在光照計算中使用的概念。用戶可以看到被光照數量所表現的微表面細節的效果被漫射,像是從物體上彈開。對於平滑的表面,所有光線趨向於在一個可預測及一致的角度彈開。極端情況下,一個完美平滑的表面像鏡子一樣反射光照。不那麼平滑的表面,在更寬的角度範圍內反射光照(由於光照碰到微小表面的隆起),因此反射的細節更少,被表面以更散漫的方式所傳播。
這裏寫圖片描述
一個材質的微表面細節理論在平滑度低、中、高時對比的示意圖。黃色的線表示:在平滑程度變化情況下,光線接觸到表面並反射的角度。
平滑的表面有非常低的微表面細節,或者根本沒有,所以光線以統一的方式反彈,形成清晰的反射。粗糙的表面在它微表面細節存在高峯和低谷,所以光線在寬的角度範圍反彈——均勻後的輸出形成了漫射的顏色,沒有清晰的反射。
一個在低、中、高平滑度值的對比。在低級別情況下,在每個點的反射光來自寬泛的區域,因爲微表面細節是崎嶇不平的,散射了光照。在平滑度高時,每個點的光照來自狹窄集中的區域,產生了對物體環境清晰得多的反射。

使用平滑度紋理貼圖

類似於其它很多參數,可以用分配紋理貼圖來代替使用單個滑塊數值。這允許了更好的控制:用戶可以改變在材質表面上鏡面光照反射的強度和顏色。
由於表面上每個點的平滑度是單獨的值,圖片紋理只有一個通道被當做數據使用。因此平滑度數據被設定爲儲存在用於金屬性或者鏡面紋理貼圖相同的圖片紋理的alpha通道中(依賴於用戶使用的模式)。
當在鏡面工作流中工作時,如果分配了一個鏡面紋理,平滑度滑塊不再可用,因爲鏡面紋理的alpha通道將會被用戶作爲材質表面的平滑度數值。
類似地,在金屬工作流工作時,如果分配了一個金屬性紋理,平滑度數據採用金屬性紋理的alpha通道。
使用貼圖取代滑塊,意味着可以創建在表面上有不同平滑度級別的材質(通常被設計來匹配在albedo紋理中顯示的)。
左邊:沒有爲鏡面分配貼圖,所以對平滑度有一個滑塊。右邊:分配給鏡面一個貼圖,所以圖片的灰度alpha通道值用於平滑貼圖。
左邊:沒有爲鏡面分配貼圖,所以對平滑度有一個滑塊。右邊:分配給鏡面一個貼圖,所以圖片的灰度alpha通道值用於平滑貼圖。
更平滑的表面更能反射,有更小更緊密集中的鏡面高光。不平滑的表面不會反射這麼多,並且鏡面高光不那麼顯眼,在表面上散開得更寬。通過將鏡面和平滑度貼圖匹配到在albedo貼圖中的內容,可以開始創建看起來非常真實的紋理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章