上一章:【Unity3D技术文档翻译】第2.3.3.2篇 反照率颜色与透明度(Albedo Color and Transparency)
本章原文所在章节:【Unity Manual】→【Graphics】→【Graphics Overview】→【Materials, Shaders & Textures】→【Standard Shader】→【Material parameters】→【Specular mode: Specular parameter】
镜面模式:镜面参数(Specular mode: Specular parameter)
镜面参数
Specular 参数只有当使用了 Specular setup 着色器的时候才可见,如上图中 Shader 字段显示的。Specular(镜面)效果本质上就是反射来自场景中光源的光,典型的效果是物体表面的高光和光亮(尽管镜面高光也可以是微弱和弥散的)。
Specular setup 和 Metallic setup(金属设置,下一节介绍) 都可以产生镜面高光效果,选择哪一个取决于你的艺术偏好。在 Specular setup 中,你可以直接控制镜面高光的亮度和颜色;而在 Metallic setup 中,你通过其他参数来控制镜面高光的强度和颜色,以展现一个自然的效果。
当使用 Specular 模式时,Specular 参数中的 RGB 颜色控制了镜面反射的强度和颜色。包括来自光源和周围环境反射光的亮光。Smoothness(平滑度) 参数控制了镜面效果的纯净度。如果设置了低平滑度,即便是强镜面反射,也将显得模糊和弥散。而如果设置了高平滑度,镜面反射将更干净、更清晰。
镜面平滑度从0到1你可能想要改变材质表面的 Specular 值,比如:如果你的纹理包含了一件有一些光亮扣子的大衣,你想要这些扣子比布料具有更高的镜面值。为了实现这点,需要分配一张纹理贴图来取代单独的滑动条。这使你能够根据镜面贴图上的像素颜色,来更多地控制材质表面镜面反射光的强度和颜色。
将一张纹理分配给 Specular 参数时,Specular 参数和 Smoothness 滑动条都会消失。取而代之的,镜面等级将由材质自身的 Red、Green 以及 Blue通道值来决定,并且材质的平滑度等级将由材质的透明通道来决定。这样通过一张纹理,就能定义不同区域的粗糙度和平滑度,以及不同等级和颜色的镜面反射。当纹理贴图映射的模型的不同区域具有不同需求的时,这样做是非常有用的。比如,一张角色纹理贴图通常包含了多种需求的外观:皮鞋、衣服的面料、手和脸的皮肤,以及金属带扣。
在一个线性光下,带有强烈镜面发射的1000kg重的例子。上图中,镜面反射和平滑度由颜色和 Smoothness 滑动条定义。Specular 参数没有被分配纹理贴图,因此镜面和平滑度等级在整个物体表面都是相同的。这通常不是我们想要的,尤其当你的 Albedo(反照率)纹理映射了模型的不同区域时(也叫做纹理图集( Texture atlas))。
同样的模型,但是被分配了一张镜面贴图,而不是使用固定数值。上图中,一张纹理贴图控制了镜面反射和平滑度。这允许镜面反射分布在物体的不同表面。注意边缘比中心区域具有更强的镜面反射效果,中心区域的反光则颜色微弱,而字母和数字中的区域不再反光。右边一些的 RGB 通道图控制了镜面反射的颜色和强度 ,透明通道图则控制了平滑度。
注意:纯黑的镜面颜色(0,0,0)会导致没有任何镜面效果(比如透明通道图中的数字和字母)。
如果本文对你有帮助的话,点个赞或者评论一下吧!
网友评论