天天看點

《Unity開發實戰》——3.5節建立透明紋理貼圖

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

3.5 建立透明紋理貼圖

如果想讓玩家的視線穿透一個物體,則需要透明或半透明的材質。塑膠薄膜、剪貼畫、網格等人工産品是可以用透明紋理貼圖制作的。

3.5.1 準備工作

本節會建立一個材質來模拟塑膠薄膜,選它的主要原因是這種材質允許我們使用全透明制作邊框的rounded borders,也可以使用半透明顯示薄膜(film)本身。本節其餘部分假設讀者已經能夠使用圖檔編輯器建立圖檔,比如一張有斜面的圓角矩形圖檔。如果不會操作,随時使用示例代碼中名為“0423_03_04”的檔案夾中的準備材料。

3.5.2 操作步驟

請按照下面的步驟建立透明材質:

1)建立一個紋理,命名為:slidematerial。

2)選擇此材質。在inspector視圖中,在材質的名稱下,使用下拉菜單把shader的值修改為transparent/diffuse(透明/漫反射):

3)用圖檔編輯器打開基礎紋理(本節用adobe photoshop講解下面的步驟)。

4)選擇圓角矩形周圍的空像素(通過magic wand工具,打開anti-alias(反走樣),tolerance(容忍度)的值設為0)。

《Unity開發實戰》——3.5節建立透明紋理貼圖

10)回到alpha通道,填充選中的矩形亮灰區域(紅、綠和藍的值均在170左右。)

《Unity開發實戰》——3.5節建立透明紋理貼圖

3.5.3 實作原理

unity可以讀取紋理貼圖的4個通道值:r(紅)、g(綠)、b(藍)和a(透明度)。

當用alpha通道根據每個像素的亮度級别設定材質的透明度時,透明着色器使用rgb通道作為基礎紋理。cutout子分組(cutout subgroup)中的透明着色器不渲染半透明,而隻允許紋理像素是不可見或完全不透明的。

3.5.4 更多内容

unity 有一系列透明着色器用于實作不同的效果。

使用cutout

透明着色器有一個子分組叫做cutout,如果你不需要半透明的材質,可以用cutout着色器。它們的渲染速度更快,并且允許對象投射(cast)和接收(receive)陰影。

使用凹凸的漫反射(bumped diffuse)

要練習的話,把材質的shader值修改成transparent/bumped diffuse。然後把0423_03_04檔案夾中的slidenormaltexture.png 圖檔檔案作為一個法線凹凸貼圖(normal bump map)。

繼續閱讀