您的位置:首页 > 移动开发 > Unity3D

Unity3D 5 官方教程:标准着色器之材质参数(一)

2016-03-13 22:33 609 查看

材质参数

标准着色器展示了材质参数的列表。取决于你是否已经选择在金属工作流模式或者镜面工作流模式,这些参数会有轻微地变化。大部分参数在两种模式下是一样的,材质参数系列将覆盖两种模式的所有参数。

这些参数可以被一起使用来创建几乎任何真实世界中的表面。



渲染模式



标准着色器中的第一个材质参数,是“渲染模式”。这允许选择物体是否使用透明度;如果是,那么继续选择哪种混合模式。

Opaque - 这是默认选项,适合没有透明区域的普通固态物体。

Cutout - 允许创建一个透明效果,在不透明区域和透明区域之间有鲜明界线。在这个模式下,没有半透明区域,纹理要么是100%不透明,要么不可见。当使用透明来创建像树叶,或者带洞、碎布的衣服这种材质的形状时,这很有用。

Transparent - 适合渲染真实的透明材质如透明塑料或者玻璃。在此模式中,材质自身会带有透明值(基于纹理和色彩的alpha通道),而反射和光照高光将仍然以完整清晰度可见,如真实的透明材质那样。

Fade - 允许透明度数值彻底地使一个物体淡出,包括任何它可能带有的镜面高光或者反射。如果希望让物体动态淡入淡出,可用此模式。不适合渲染如透明塑料袋或玻璃的真实透明材质,因为反射和高光液会被淡出。



这幅图中的头盔面罩使用了Transparent模式渲染,因为它应该表现一个有透明属性的真实物理对象。这里面罩反射了场景中的天空盒。



使用Transparent模式的窗户,但有些在纹理中定义的完全不透明区域(窗框)。来自光源镜面反射在透明区域和不透明区域反射。



图中的全息图像使用Fade模式渲染,因为它应该表现一个部分淡出的不透明物体。



图中的草用Cutout模式渲染。这赋予了物体清晰锋利的,被指定的切断阈值所定义的边缘。图片中所有alpha值大于阈值的,100%不透明;小于阈值的,都不可见。在图片右边可以看到材质设置和纹理的alpha通道。

反射率和透明度



Albedo参数控制了表面的基本色。

为Albedo值指定单个颜色有时候很有用,但相当通常的情形是为Albedo参数分配一个纹理贴图。这应当代表了物体表面的颜色。知道Albedo纹理不应包含任何光照很重要,因为光照将会基于物体被看到时的环境而添加。



透明度

Albedo color的alpha值控制了材质的透明级别。如果材质的渲染模式被设置为透明模式之一、非不透明模式时,这个选项才起作用。如前文所提到的,选择正确的透明度模式很重要,因为它决定了能否仍以完整值看到反射和镜面高光,或者它们是否根据透明度值而淡出。



当使用分配给Albedo参数的纹理时,可以通过保证albedo纹理图有一个alpha通道来控制材质的透明度。alpha通道的值映射到透明级别的对应方式是:白色是完全不透明,黑色为完全透明。这使得材质可以在不同区域有不同的透明度。



一个用RGB通道和一个Alpha通道导入的纹理。可以点击如图所示的RGB/A按钮来选择要预览的图片通道。



最终结果,从破损的窗户向建筑内看;玻璃上的裂缝是完全透明的,而玻璃碎片部分透明,窗框完全不透明。

镜面模式的镜面参数



镜面参数

仅当使用上图所示的镜面工作流时,才可以看到镜面参数。镜面效果本质上是场景中光源——通常为明亮的高光或物体表面的光泽——的直接反射(尽管镜面高光也可以是微妙的或分散的)。



镜面和金属工作流都会产生镜面高光,所以选择哪一个使用,是由工作流以及艺术上的偏好而决定。在镜面工作流,对光亮和镜面高光颜色有直接的控制;在金属国内工作流里,控制的是其它参数,镜面高光的强度和色调作为其它参数设置的自然结果而出现。

在镜面模式下工作时,在镜面参数中的RGB颜色控制镜面反射的强度和色调。这包括来自光源的光泽以及来自环境的反射。Smooth参数控制镜面效果的清晰度。低的Smoothness值低时,就算是强烈的镜面反射也会模糊、分散;Smoothness值高时,镜面反射更清晰更鲜明。

svg

用户经常会希望改变自己材质表面的镜面值——例如材质里角色带有一些闪亮纽扣的衣服。用户希望纽扣有比衣服的布料更高的镜面值。为了达成这一目标,不适用单一一个滑动的值,可以分配一个纹理贴图。这允许了更大的控制——用户可以通过镜面贴图上像素的颜色,来改变材质表面的镜面光反射的强度和颜色。

一个纹理分配给镜面参数时,Specular和Smoothness的滑块都会消失。取而代之的,是用纹理的红色、绿色、蓝色通道来控制材质的Specular级别,材质的平滑度用相同纹理的Alpha通道控制。这意味着拥有了可以定义多个粗糙或平滑区域、拥有不同等级及颜色的镜面的单个纹理。当使用覆盖了有不同要求的一个模型的许多区域的纹理贴图时,这非常有用:例如一个角色的纹理贴图经常包括多种表面要求——皮鞋,衣服布料,脸及手的皮肤还有金属纽扣。



一个例子:带有从直线光源形成强镜面反射的1000kg砝码。镜面反射和平滑值被一个颜色及滑块所定义,没有分配纹理图——所以镜面和平滑程度在整个表面上是一致的。这不总是令人满意的,特别是在albedo纹理映射到在模型上的大量不同区域的情形下(称为纹理地图集)。



这里,一个纹理贴图控制了镜面度和平滑度。这允许模型表面的镜面度可以变化。注意到边缘处有比中间更高的镜面效果,对应光有一些微妙的颜色,带字的部分不再有镜面高光。右边的图是控制了镜面颜色和强度的RGB通道,alpha通道控制平滑度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d