Unity标准着色器(Standard Shader)参数讲解(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenggong2dm/article/details/78011730

Unity标准着色器(Standard Shader)  第4个参数是:法线贴图(凹凸映射)

Normal map (Bump mapping)


没有什么参数,直接选择对应的法线贴图,贴上即可。

法线贴图,在Unity里,可以有2张。第二张叫【次级法线贴图】,用来展示更微小的细节。一般来说,用不上。

注意:一般来说,Unity会自动识别法线贴图。如果不识别,那可以手动选择贴图类型为Normal map,或者在弹出的提示框中,选择【Fix Now】修复法线贴图。



下面主要是讲一下法线贴图的原理、以及如何制作。


法线贴图,是一种凹凸贴图。 它们是一种特殊的纹理,在不增加模型面数的情况下,允许您将表面细节(如凸起,凹槽和划痕),加到能捕获光(接收光照)的模型中,看起来就像由实际的模型面去表示一样。


unity官网,为了说明法线贴图的作用,给我们举了一个例子:

比如钢板上的铆钉和螺丝。如果想表现这种真实的细节,那么最容易想到的办法,就是利用建模,用更多的面数(多边形)去表现。

如下图,就是靠更多的面数(多边形)来实现单个螺丝的细节:



但是,将这些细微的细节,建模为“真实的”几何体通常不是一个好主意。 这样明显会造成绘制、渲染的压力。

所以,一般采用另一种方式:使用法线贴图来表示细小的表面细节:

上图就是通过法线贴图,修改了光从平面表面的反射程度(告诉引擎,在表面上如何计算照明),进而展现出螺丝、凹槽、划痕等3D细节。


现代游戏的开发流程,一般是这样:

美术用建模软件,建立高模模型。然后制作出法线贴图。(很多软件可以根据模型,自动生成法线贴图,当然,你也可以手工制作)

然后这个法线贴图,用于减面之后的低模模型上,这样就能用普通贴图,在低模上渲染出原始的、高分辨率(高模)的细节。


凹凸映射(Bump mapping)是一种相对较老的图形技术,但仍然是创建详细的逼真实时图形所需的核心方法之一。 凹凸贴图通常也被称为 “法线贴图” 或 “高度图”,但这些术语的含义略有不同。

法线贴图(Normal Map)和高度贴图(Height Map)都是凹凸贴图(Bump Map)。 它们都是用贴图,去展现低模(低多边形)的表面细节,但它们以不同的方式存储数据。

上图的左边,是一个石墙的高度贴图。 高度图是一个简单的黑色和白色纹理,其中每个像素表示表面上的点应该显示为上升的量。 像素颜色越白,区域越高。Unity可以接受Height Maps进行凹凸贴图,但是在导入时必须将其转换为Normal Map才能使用它们,并且,勾选【】。

上图右边,是法线贴图。法线贴图是一种RGB纹理,其中每个像素表示表面相对于未修改的表面法线的方向差异。 由于矢量存储在RGB值中,这些纹理往往具有蓝紫色色调。


官网给了比较长的解释,有耐心和兴趣的可以去官网文档看:

https://docs.unity3d.com/Manual/StandardShaderMaterialParameterNormalMap.html


---------------------------------------------------------------------------------

5,高度贴图

Heightmap


高度映射(也称为视差映射)与法线映射类似,但是这种技术更复杂,性能也更高。 Heightmaps通常与normalmaps一起使用,通常它们用于给纹理贴图负责渲染大的凸起和突起的表面提供额外的定义。

虽然法线映射,可以修改纹理表面上的光照,但是视差高度映射进一步变化,实际上将可见表面纹理的区域移动到周围,以实现一种表面级遮挡效应。

高度图应为灰度图像,白色区域表示纹理的高区域,黑色表示低区域。

官网给了三个对比图,分别是:反照率贴图、反照率+法线贴图、反照率+法线贴图+高度贴图,贴上之后的效果




猜你喜欢

转载自blog.csdn.net/chenggong2dm/article/details/78011730