位移贴图的工作原理
位移映射是计算机图形学中用于向 3D 模型表面添加细节的一种技术。虽然其他映射方法(如凹凸贴图和法线贴图)仅影响光照,但位移贴图通过沿曲面顶点的法线位移来修改实际形状。 它允许创建复杂的形状和细节,例如皮肤上的皱纹或蜥蜴上的鳞片,通过投射从各个角度看起来逼真的阴影。
在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎
位移贴图可以使曲面的几何体产生位移。 它的效果与使用位移修改器相类似。 与凹凸贴图不同,位移贴图实际上更改了曲面的几何体或面片细分。我们可以借助GLTF 编辑器 -NSDT 来设置模型的位移贴图;在学习如何使用 GLTF 编辑器 -NSDT 之前我们先详细学习下位移贴图的一些相关知识。
概述
位移贴图是一种在渲染时向曲面添加几何细节的技术。与凹凸贴图相比,凹凸贴图的工作原理是仅通过改变曲面法线来创建曲面细节的错觉,而位移贴图则修改曲面本身。下面是使用凹凸贴图和位移贴图渲染的同一对象的示例。请注意凹凸贴图中球体的圆形轮廓及其阴影,以及位移产生的变形轮廓。在这种情况下,位移贴图是梯度斜坡(程序)贴图;采用3D映射方法。
在位移映射的情况下,表面实际上被修改了,这导致了正确的轮廓、阴影和 GI。在凹凸贴图的情况下,尽管表面看起来经过修改,但轮廓和阴影与原始对象的轮廓和阴影相同。
位移与其他类型的着色不同,因为它修改了实际的对象表面。虽然其他着色活动(如凹凸贴图)在渲染时进行,但位移发生在渲染之前。
位移贴图类型
位移贴图可以是以下两种类型之一:
- 单色贴图 - 灰度位图或程序贴图,其中白色区域表示与基础网格的位移较大,较暗区域表示位移较小。位移在网格法线的方向上。这是最常用的位移贴图类型。用于位移的非灰度贴图在应用于网格之前会转换为单色贴图,除非在非常特殊的情况下。
- 矢量贴图 - 一个位图,其中每个像素的红色、绿色和蓝色值除了面部法线方向外,还会在 U 和 V 方向上移动网格。这种类型的映射的设置和使用起来更为复杂。
位移贴图应用
下面给出了位移映射的一些应用。
- 逼真的纹理:位移贴图可用于创建逼真的纹理,例如毛皮、皮肤、布料或岩石和地形等粗糙表面。
- 高频细节:它可用于添加详细的 3D 特征,例如皱纹、鳞片、凹凸或缝隙,而使用传统建模技术很难实现这些特征。
- 电影行业:位移贴图在电影行业中被广泛使用,以增强角色和环境,添加逼真的细节,使其具有视觉吸引力。
- 电子游戏:位移贴图越来越多地用于视频游戏中,以提高角色、游戏对象和环境的细节水平,从而提供更身临其境的用户体验。
- 避免几何体过载:它允许艺术家避免过多的多边形建模,这可能会导致图像渲染中的性能问题并增加 3D 模型的复杂性。
- 高效资源利用:通过依赖纹理(或位移)数据来获取表面细节,位移映射可以优化资源利用率并简化图像渲染。它可以更快、更高效地渲染高细节表面。
位移质量
对于 3D 位移,几何图形在子三角形的基础上进行裁剪 - 子三角形要么被完全裁剪掉,要么完全可见(对于裁剪更精确的 2D 位移,情况并非如此)。因此,您可能会在剪裁的边缘处获得锯齿状效果。您可以通过生成更多子三角形来减少这种影响(请参阅下一节)。
以下是此渲染的放大图,以更好地显示各个子三角形(单击该图像获得较大视图):
此外,这里是显示球体原始三角形边界的渲染图。要创建类似的渲染,可使用GLTF 编辑器 -NSDT 打开模型,在右侧面板中可以找到材质属性栏,点击位移贴图选项,在弹出的文件选择框中选择本地文件(位移贴图,格式为常规图片格式:png、jpg等),左侧渲染窗口会实时渲染模型。
位移的质量由子三角形的大小和数量决定。要调整的主要参数是边长, 它决定了子三角形边的最大长度。这可以是世界单位或像素,具体取决于“视图相关” 选项。边长值越低意味着三角形越小,质量越好。这是使用各种边长值渲染的上一张图像。“视图相关”处于打开状态,因此边长以像素表示。请注意,“视图相关”选项是指原始图像中的像素,而不是通过放大渲染获得的放大图像。这就是为什么我们能够进行放大渲染以更好地看到各个子三角形的原因。
下面的图像是在材质的漫反射槽中使用位移贴图渲染的,以显示网格的原始三角形。GLTF 编辑器 -NSDT 不仅可以使法线平滑表面,还可以自动应用法线贴图来表示完美位移表面的法线,这使得表面看起来比实际更详细。