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 制作的模型贴图示例:

转载:3D 建模中的法线贴图解释 (mvrlink.com)

相关推荐
前端Hardy14 小时前
HTML&CSS:数据卡片可以这样设计
前端·javascript·css·3d·html
小彭努力中18 小时前
138. CSS3DRenderer渲染HTML标签
前端·深度学习·3d·webgl·three.js
AI生成未来1 天前
斯坦福&UC伯克利开源突破性视觉场景生成与编辑技术,精准描绘3D/4D世界!
3d·3d场景·4d
汪洪墩1 天前
【Mars3d】实现这个地图能靠左,不居中的样式效果
前端·javascript·vue.js·3d·webgl·cesium
Bearnaise2 天前
GaussianDreamer: Fast Generation from Text to 3D Gaussians——点云论文阅读(11)
论文阅读·人工智能·python·深度学习·opencv·计算机视觉·3d
智驾机器人技术前线2 天前
近期两篇NeRF/3DGS-based SLAM方案赏析:TS-SLAM and MBA-SLAM
3d·slam·nerf·3dgs
Tianwen_Burning2 天前
halcon3d disparity_image_to_xyz非常重要的算子及使用条件
算法·3d
光学测量小菜鸡2 天前
OpenCV双目立体视觉重建
opencv·3d·双目相机·结构光·sgbm
豆包MarsCode3 天前
基于豆包MarsCode 和 Threejs 实现3D地图可视化
大数据·开发语言·人工智能·python·3d·程序员
工业3D_大熊3 天前
3D数据格式转换工具HOOPS Exchange如何在读取CAD文件时处理镶嵌数据?
java·linux·c++·windows·macos·3d·c#