VR、AR与MR项目开发实战
上QQ阅读APP看书,第一时间看更新

2.4 Unity材质介绍

2.4.1 材质球、着色器之间的关系

对于Unity材质,有两样东西是许多初学者弄不清楚或者非常容易混淆的,一个是“Material”材质球,另一个是“Shader”着色器。

“Material”用于定义显示什么样的模型,包括这个模型使用什么样的纹理信息、模型的颜色信息等内容,而这些纹理、颜色的应用方式和类型则是由“Shader”进行定义的。举一个简单的例子,我们需要展示一个木质的柜子,首先要考虑的是使用什么样的“Shader”,这个“Shader”是否支持我们需要的漫反射贴图、法线贴图、环境光贴图、高光贴图、法线贴图及高光贴图的强度调整以及颜色的调整等。当确认需要的“Shader”之后,就可以创建一个“Material”,指定使用这个“Shader”,再对其中的各种贴图信息、颜色信息进行赋值。可以这样理解,材质球就是着色器的载体,而着色器用于配置该如何设置图形硬件进行渲染。

2.4.2 Unity标准着色器

Unity已经给用户内置了许多不同的“Shader”,而Unity 5之后重点推出了一种新的渲染方式——基于物理的渲染(Physically Based Rendering,PBR)。与之对应的是一套基于物理着色(Physically Based Shading,PBS)的多功能、多用处的“Shader”。这就是“Standard Shader”(标准着色器),用于取代传统的着色器。在Unity中有两个标准着色器,一个是“Standard”标准着色器标准版,另一个是“Standard(Specular Setup)”标准着色器高光反射版。我们可以看看官方网站提供的一个案例场景,其中所有的材质球都使用了标准着色器,如图2-29所示。

图2-29 材质球使用了标准着色器

我们就其中的“Standard Shader”(标准着色器)进行讲解,首先在Project面板中右击,新建一个材质球,默认的着色器就是标准着色器,如图2-30所示。这里对其中的一些重要参数进行说明。

图2-30 标准着色器

  • Shader:着色器的选择,新建材质球的默认着色器就是标准版着色器。
  • Rendering Mode:渲染模式选择。
    • Opaque:不透明模式。
    • Cutout:透明模式,在这种模式下,没有半透明的过渡,纹理要么是完全透明的,要么是完全不透明的,适合使用在头发、碎布、衣服上。
    • Fade:透明模式,此模式下的纹理是淡入淡出的效果,其高光和反射也会是淡入淡出的效果。
    • Transparent:透明模式,此模式下的透明度是根据纹理贴图的透明通道自动生成的,高光和反射也会完整保留。
  • Albedo:物体表面的基本纹理和颜色信息。
  • Metallic:金属感,可以通过贴图和数值来区分金属或者非金属以及金属的程度。
  • Smoothness:平滑度,控制物体是否光滑。值越大,物体越光滑;值越小,物体越粗糙。
  • Source:平滑度的控制来源。
    • Albedo Alpha:Albedo的透明通道。
    • Metallic Alpha:金属度的透明通道。
  • Normal Map:法线贴图。
  • Height Map:高度图,用于表现高低信息,法线只能表现光照时的强弱,而高度图可以增加物理位置上的前后。
  • Occlusion:遮挡贴图,用以控制物体明暗关系以及强度。
  • Emission:自发光颜色,例如在制作一些自发光的灯带时,我们就可以调整这个颜色,默认黑色为关闭自发光。

在了解基本的参数意义之后,可以学习一下官方场景案例中非常逼真且细节丰富的木头材质球,如图2-31所示。可以看到,简单的木头也是用很多纹理贴图合成的,在查看这些纹理时,可以按住Ctrl键单击纹理对纹理进行预览。单击纹理会在Project视图中指向该纹理贴图,双击纹理时会在外部打开此纹理。此案例会在资料中提供下载。

图2-31 木头的材质球