天天看點

《Unity開發實戰》——3.4節建立高光紋理貼圖

本節書摘來自華章社群《unity開發實戰》一書中的第3章,第3.4節建立高光紋理貼圖,作者 (愛爾蘭)matt smith (巴西)chico queiroz,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

3.4 建立高光紋理貼圖

有些表面可能既有光滑的區域,又有粗糙的區域,為了達到這個效果,可以使用高光貼圖(specular maps)。

3.4.1 準備工作

為了便于講解,本節将建立一個生鏽的金屬材質來示範specular屬性如何增強現實。如果讀者還沒有用于生成高光材質的基礎紋理,示例代碼中名為“0423_03_03”的檔案夾中有本節需要用到的素材。

3.4.2 操作步驟

請按照下面的步驟建立高光材質:

1)建立一個新的材質,命名為:rustymetalmaterial。

2)選擇此材質。在inspector視圖中,在材質的名稱下,使用下拉菜單把shader的值修改為specular,如下圖所示:

《Unity開發實戰》——3.4節建立高光紋理貼圖

6)我們想讓alpha通道來強調鏽鐵(rust)和金屬(metal)間的對比度(contrast)。因為blue(藍色)是對比度級别最高的通道,在channels視窗中選中它,并且讓其他通道不可見,結果會顯示成灰階圖,如下圖所示:

《Unity開發實戰》——3.4節建立高光紋理貼圖

10)還是在channels視窗中,通過讓rgb通道可見顯示所有顔色。

11)除了生鏽的金屬闆之外,在牆上模拟一個繪制層:建立一個黃色的文本輸入層,可以随便輸點什麼。

12)把文本輸入層的混合模式修改成overlay(疊加),把opacity(不透明度)修改成80%。

《Unity開發實戰》——3.4節建立高光紋理貼圖

3.4.3 實作原理

unity可以讀取紋理貼圖的4個通道值:r(紅)、g(綠)、b(藍)和a(透明度)。當根據每個像素的亮度級别,使用alpha設定材質的高光亮度時,specular着色器使用rgb通道作為基礎紋理(也叫做漫反射紋理)

3.4.4 更多内容

specular 着色器還有一些屬性值得一看: specular color 和 shininess。

修改材質的specular color

如果厭倦了白色發光點,可以通過修改specular color添加其他的顔色。

調整發光度以突出顯示

發光點在保齡球上看起來不一樣(發光點高度集中),因為發光點确實在打磨過的金屬表面上(蔓延稍微多點),集中級别由shininess參數控制。

繼續閱讀