天天看点

《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参数控制。

继续阅读