凹凸贴图

来自泡泡学习笔记
跳到导航 跳到搜索

凹凸贴图主要为Bump、Normal和Displacement三种,三种贴图都是为模型提供更多的细节。其中Displacement有时用于改变模型的顶点位置,而Bump和Normal则不会改变模型的顶点位置。


就实现复杂度/质量与性能开销而言,Dispalcement>Normal>Bump(>Reflection)。


Bump

Bump Map(凹凸贴图 )是一个类似于法线贴图的概念,有时也称为Height(高度图)。但是凹凸贴图只包含高度信息而不包含角度信息。凹凸贴图的优点是可以很直观地看出模型表面的凹凸情况(颜色越浅表明该位置的表面越像外凸起,反之亦然),但是计算更复杂,因此更性能开销更大。高度图通常与法线贴图结合使用,用于给出表面凹凸的额外信息。

Substance Painter、Substance Designer导出的Height高度图等同于Bump凹凸贴图,而不是Displacement置换贴图的信息。

Normal

Normal Map(法线贴图)是凹凸映射技术的另一种应用。法线贴图包含角度信息而不包含任何高度信息,其R、G、B三个通道储存的信息表示了斜面的方向和陡峭程度。使用法线贴图和高度贴图可以确保光照和位移是一致的,能够带来更真实的效果。

这一特征使得我们可以使用法线贴图储存的角度信息来柔化尖锐的边缘(仅使用Bump高度信息无法做到这一点,因为只有高度信息无法知道边缘应该沿着哪个方向弯曲)。柔化边缘不仅可以让物体看起来更真实,还能进一步突出物体的形状(尤其是在游戏对象在屏幕上占比较小的时候)。

由于法线贴图存储的是表面的法线方向,而方向是相对于坐标空间而言的。因此存在三种不同的空间法线贴图:Tangent切线空间、Object对象空间、World世界空间,三种法线贴图都有各自的优缺点且能达到相同的效果,只是计算方式有所不同。


Tangent Space

Tangent Space(切线空间),顾名思义,切线空间法线是基于每个面的切线方向。切线空间下的法线贴图是最常见的法线贴图形式,大部分看起来都是浅蓝紫色的。其中,B通道表示法线方向的斜率;R通道表示左右切线方向的斜率;G通道表示切线方向向上或向下的斜率(OpenGl向上,DirectX向下)。


Object Space

Object Space(对象空间或模型空间)法线贴图基于整个对象而不是每个面,大部分看起来都是五颜六色的。对象空间法线贴图在渲染上较快,但由于其无法镜像任何UV,在对称模型上会浪费大量纹理空间,且无法进行UV动画。因此在很多情况下切线空间较优于对象空间。


World Space

World Space(世界空间)是基于全局坐标的法线贴图,也是三种法线贴图中最不灵活的一种。 这种类型的法线贴图一般仅用于环境这类大型,静态和非对称的物体,或者临时用于诸如Substance Painter、Substance Designer之类软件中作为计算特殊效果(如风化效果)的一种方法。


Displacement

Displacement Map(置换贴图,也叫移位贴图)可以改变模型对象的几何形状,但要达到较好的置换效果需要提高模型本身的顶点数,通常结合曲面细分使用。因此在提供最真实的效果的同时也会大幅增加渲染性能的开销。

置换贴图能实现很多仅仅通过Bump和Normal无法实现的效果(尤其是模型对象的轮廓表现)。

置换贴图也常作为高度图来生成地形,并结合凹凸贴图实现丰富的地形效果。


Parallax Map

置换贴图的另一个用途是作为Parallax Map(视差贴图,也称为Virtual Displacement Map虚拟置换贴图)使用。

视差贴图是一种更高级的技术,能够提供比凹凸贴图更多的深度。

视差贴图通过偏移每个像素的纹理坐标以达到更好的视觉表现,但在某些视角仍存在陡峭部分不正确与不支持自遮蔽的问题,效果仍不如性能开销更大的视差贴图技术。


Steep Parallax Map

Steep Parallax Map(陡峭视差贴图/映射)是视差贴图的改进版。通过增加采样数量来提高准确性(普通视差贴图仅使用一个样本),因此在陡峭高度变化较大的地方也能显示出正确效果。

但陡峭视差贴图同样有自己的问题,因为这个技术是基于有限的样本数量,因此我们可以在陡峭变化大的地方看到明显的锯齿效果及断层。对此,目前两种常用的解决方案为Relief Map(浮雕贴图)和Parallax Occlusion Map(视差遮蔽贴图)。


Parallax Occlusion Map

Parallax Occlusion Map(视差遮蔽贴图/映射)与陡峭视差贴图的原理基本相同,但在不同的样本之间进行了线性插值,因此能在一定程度上解决陡峭视差贴图存在的问题。


Relief Map

Relief Map(浮雕贴图)能够实现比陡峭视差贴图更深的凹凸深度,并能实现很好的自阴影和遮挡效果,但其性能开销也比陡峭视差贴图高。


Vector Displacement

Vector Displacement Map(矢量置换贴图)是高度贴图的扩展,与传统Displacement(置换贴图)不同的是矢量置换贴图记录了模型上各点的高度和方向信息,并储存为16/32位浮点颜色信息。

传统的置换贴图使用的是低模的UV坐标,贴图记录了高模和低模之间的差异。而矢量置换贴图在使用类似映射方法的同时,而另一个模型最近的顶点之间的距离,还能在空间中移动顶点。因此也能记录复杂的凹面下(如蘑菇、耳朵等)的顶点信息,将雕刻细节从一个模型转移到另一个模型。