天天看点

《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)。

继续阅读