3D 建模中的法线贴图解释
在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎
什么是 3D 建模中的法线贴图
3D 对象由多边形组成:平面、正方形和三角形表面。多边形非常适合对书籍、房屋和 Minecraft 方块等简单对象进行建模。但是,如果你想制作一个苹果甚至一个球体的详细模型,粗糙的多边形边缘会让它看起来很糟糕。
多边形就像乐高积木:如果你有十几块积木,你只能制作一辆小型玩具车,但如果你有数千块积木,你可以制作一个 1:1 的汽车复制品。因此,要对详细的 3D 对象进行建模,您只需要添加数千个多边形。
由 3840 个多边形组成的球体看起来又好又圆。但是这些多边形仍然可见,因为闪电落在球体上。你到处都可以看到这些边缘。不,我们不能弯曲多边形,它们可能只是平面。
什么是法线贴图
为了显示光线如何从模型上落下和反射,我们使用了烘焙光照贴图。光照贴图显示当光线落在纹理上时纹理的外观。例如,游戏中的手电筒使用光照贴图:游戏引擎只是将手电筒的光照贴图覆盖在纹理上。
但是光照贴图不能显示表面的体积和纹理,只能根据角度改变光强度。光照贴图烘焙使用均匀发光的纹理,因此光线始终垂直于表面。因此,让我们教表面以不同角度反射光线。
让我们取一个多边形,并在多边形的中心添加一条垂直线——法线。现在,当光线落在多边形上时,游戏引擎可以测量光线和法线之间的角度差。我们知道光线的反射角度与它们落下的角度相同,它是对称的。
下面是两个多边形的示例,其中包含一个平面法线贴图。如您所见,法线垂直于它们所在的曲面。但是,嘿,我们使用的是计算机,而不是矩形乐高积木。让我们让计算机平滑每个多边形中心之间的过渡。因此,计算机将制作一个法线贴图:
- 多边形中心的法线垂直于多边形;
- 两个多边形边界上的法线是中心法线的平分线;
- 中心法线之间的其他法线的角度向平分线倾斜。
因此,如果光线落在具有法线贴图的低多边形球体上,它看起来像一个由数百万个多边形组成的球体。
但是,如果我们将法线贴图与立方体一起使用,它会得到一个有趣的结果:法线贴图将使边缘变得平滑。为了避免这种情况,3D 建模人员设置了平滑角度参数,这些参数告诉 3D 引擎需要在哪里平滑法线,以及在哪里保持法线不变。
法线贴图的高级使用
我们了解到,简单的法线贴图可用于平滑多边形之间的边界。但是,我们也可以在单个多边形上弯曲法线,以在多边形是平面时创建 3D 对象的错觉。
它之所以有效,是因为 3D 引擎不会 100% 复制现实生活中的物理特性,而是模拟它。如果我们取一个平面并向其添加自定义法线贴图,我们可以通过改变与该平面的光相互作用来模拟体积。例如,在不添加真实多边形的情况下,在平坦的衣服上制作一个 3D 按钮的错觉。
首先,我们需要制作按钮或类似多边形的东西——一个高多边形模型。需要了解光线将如何反射到它上面。然后我们烘焙一个法线贴图:从所有使用的多边形中写出法线角度。
现在我们可以将高多边形模型的法线贴图放在低多边形模型上。现在,游戏引擎将反射法线地图所讲述的光线。对我们来说,这意味着我们可以使用平面多边形代替高多边形模型,并为游戏玩家提供更好的性能优化。
法线贴图的外观
它看起来像带有红色和绿色点缀的蓝色纹理。这是因为法线贴图保存在 3 个颜色通道中:
- 红色通道显示模型从侧面照亮时的外观;
- 绿色通道显示从上方或下方照亮时的外观;
- 蓝色通道显示从正面点亮的模型。
如何在游戏中使用法线贴图
使用法线贴图的最佳方法是向纹理添加细节。例如,我们有一个石墙纹理。当它在没有法线地图的情况下被照亮时,它看起来很无聊和扁平,就像一堵彩绘墙。但是当我们添加匹配的法线贴图时,感觉每块石头都有它的体积。虽然墙仍然是一个带有纹理的大平面多边形。
使用法线贴图,我们还可以增加任何纹理的细节水平:布料、沙子、石头、砖块、碳等等。您可能已经在《战地风云》系列中看到过法线贴图的使用:这就是 DICE 使衣服和污垢看起来如此逼真而几乎不影响性能的原因。此外,法线贴图可以模拟电缆、铆钉、按钮和膛线等小细节。
结论
现在您知道为什么现代游戏中的低多边形模型看起来如此圆润光滑,尤其是与 PS2 时代的游戏相比。尽管如此,为模型设置法线贴图仍然是一个困难的过程,不过事情总有转机,我们可以借助GLTF 编辑器 -NSDT 尝试为模型设置贴图。
GLTF 编辑器 -NSDT 是一款专门用于3D模型纹理贴图的工具,它支持3D模型各种材质纹理贴图的编辑修改,包括:颜色、粗糙度、金属度、贴图、顶点颜色、
自发光贴图、透明贴图、凹凸贴图、法线贴图、位移贴图、粗糙贴图、金属贴图、
光照贴图、透明度等。
以下是用GLTF 编辑器 -NSDT 制作的模型贴图示例: