凹凸贴图和法线贴图的区别

简介: 凹凸贴图适用于一些简单的凹凸效果,而法线贴图则更适合提供更高精度和真实感的凹凸纹理效果

1、什么是凹凸贴图

  凹凸贴图(bump mapping)是一种计算机图形学中的渲染技术,用于在给定的表面上模拟微小的凹凸纹理。通过在表面法线方向上微调每个像素的光照值,可以给平滑的表面增加视觉上的凹凸感。

  在凹凸贴图中,每个像素点都包含了一个法线向量,表示该点表面的方向。这些法线向量通常以纹理的形式存储在一个称为凹凸贴图的二维图像中。渲染过程中,根据法线向量的信息,调整每个像素的光照计算结果,使得光线在表面上的反射看起来产生微小的凹凸效果。

  凹凸贴图可以用于增加物体的细节和真实感,例如在石头、皮肤、织物等表面上模拟出凹陷和凸起的纹理效果。这种技术可以通过在三维建模软件中创建凹凸贴图,或者通过在渲染过程中动态生成凹凸贴图来实现。

  需要注意的是,凹凸贴图只是一种视觉上的效果,不改变实际的物体几何形状。它是一种节约计算资源的技术,能够在不增加多边形数量的情况下,为平滑的表面增添细节。

2、什么是法线贴图

  法线贴图(normal mapping)是一种计算机图形学中的贴图技术,用于在平坦表面上模拟出凹凸纹理的效果。通过为每个像素点提供一个法线向量,法线贴图可以使得渲染的物体表面看起来具有细致的凹凸感。

  在法线贴图中,每个像素点都包含了一个法线向量,代表着该点表面的方向。这些法线向量通常以纹理的形式存储在一个称为法线贴图的二维图像中。渲染过程中,根据法线贴图中的法线信息,调整每个像素的光照计算结果,使得表面的法线向量发生变化,从而呈现出凹凸的纹理效果。

  与凹凸贴图相比,法线贴图能够提供更加精细和真实的凹凸效果。它可以用于模拟各种材质的凹凸纹理,例如石头、木材、金属等。法线贴图通常由专业的三维建模软件生成,并与模型的纹理贴图一起使用。

  需要注意的是,法线贴图只是一种视觉上的效果,不改变实际的物体几何形状。它是一种在渲染过程中模拟细节的技术,可以增强物体的真实感和细节感。

3、凹凸贴图和法线贴图效果展示

  下面我将使用GLTF编辑器来展示凹凸贴图和发现贴图有那些不同。

  打开GLTF 编辑器 ,在编辑器导入一个GLB格式的飞机模型,如图所示:

  我们用GLTF 编辑器 为飞机翅膀的设置凹凸贴图,操作步骤:1、在场景中选中飞机的机身,右侧会弹出材质设置面板;2、在面板中找到凹凸贴图设置组件,直接上传材质贴图即可(材质贴图提前制作好,保存到本地),效果如下图:

GLTF 编辑器 对机身的凹凸贴图效果

  看起来似乎问题不大。

  再来看一下法线贴图:

GLTF 编辑器 对机身法线贴图的效果

  可以看到机身已经有些变形了,这是为什么呢?

  法线贴图不会直接导致模型的几何形状发生变形。然而,当使用法线贴图时,渲染过程中对顶点法线的计算可能会造成一些视觉上的变形。

  在使用法线贴图时,顶点的法线通常是根据模型的初始几何信息计算得出的,然后通过插值来确定其在表面上的准确位置。然而,由于法线贴图的作用,光照计算过程中使用了法线贴图中的法线信息,从而使得表面的光照效果具有了凹凸感。

  这种计算过程中的插值和法线的变换会导致一些视觉上的变形效果。特别是在模型的曲面、棱角或细微细节处,由于顶点之间法线的插值,可能会出现一些平滑的过渡或细节损失的情况。这样的变形通常在离模型较近的观察距离下更为显著。

  为了尽量减少法线贴图引起的模型变形,可以采取一些优化策略,如增加模型的顶点密度、使用更高分辨率的法线贴图、调整插值算法或使用其他的几何细节增强技术。同时,对于特定的场景和情况,也可以考虑使用其他的贴图技术或更复杂的几何模型来实现更精确的效果。

4、总结

  凹凸贴图(Bump Mapping)和法线贴图(Normal Mapping)都是计算机图形学中常用的纹理映射技术,用于模拟表面的凹凸效果。它们在实现上有一些区别:

工作原理:

  • 凹凸贴图:凹凸贴图通过修改像素点的法线向量,改变光照计算结果来模拟凹凸效果。它通过一张灰度图(灰度值代表高度信息)和模型的法线向量进行计算。根据灰度图中像素的灰度值,调整法线向量的方向和强度。
  • 法线贴图:法线贴图通过提供每个像素点的法线向量,直接影响光照计算结果。每个像素点的法线是由一张RGB纹理图像表示的。在渲染过程中,法线贴图中的法线向量被用来调整每个像素的光照计算结果,以产生凹凸效果。

精度和细节:

  • 凹凸贴图:凹凸贴图能够模拟比较复杂的凹凸效果,可以通过灰度图的不同灰度值来控制不同细节级别的凹凸程度。但相对于法线贴图,它的细节精度稍低。
  • 法线贴图:法线贴图能够提供更高的细节精度,能够模拟更真实的表面纹理。每个像素点的法线信息都能够精确地指定其表面的方向,使得渲染结果更加细致和精确。

实现复杂度:

  • 凹凸贴图:凹凸贴图的实现相对较简单,只需要一张灰度图和法线向量的计算即可。它在性能方面也相对较高效。
  • 法线贴图:法线贴图的实现复杂度相对较高,需要生成并存储每个像素点的法线信息,同时渲染时需要对每个像素进行法线计算。这样会增加内存占用和渲染开销。

  总的来说,凹凸贴图适用于一些简单的凹凸效果,而法线贴图则更适合提供更高精度和真实感的凹凸纹理效果。根据具体使用场景和需求,可以选择合适的贴图技术来达到期望的视觉效果。


原文链接:https://www.mvrlink.com/the-difference-between-bump-and-normal-maps/

目录
相关文章
|
设计模式 资源调度 Kubernetes
微前端应用 乾坤 开发实践
乾坤作为一款微前端应用框架,可以有效的实现前端应用程序的模块化设计,代码复用和可维护性。下面我们来通过实际开发来看看乾坤的使用方式以及实践。
|
网络协议 Java API
基于UDP/TCP实现客户端服务器的网络通信程序
基于UDP/TCP实现客户端服务器的网络通信程序
|
机器学习/深度学习 人工智能 并行计算
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
|
机器学习/深度学习 API 开发工具
|
11月前
|
消息中间件 人工智能 安全
企业级AI应用需要系统工程支撑,如何通过MCP大模型架构实现全链路实战解构?
本文三桥君深入探讨了MCP大模型架构在企业级AI应用中的全链路实战解构。从事件驱动、统一中台、多端接入、API网关、AI Agent核心引擎等九个核心模块出发,系统阐述了该架构如何实现低耦合高弹性的智能系统构建。AI专家三桥君提出从技术、内容、业务三个维度构建评估体系,为企业级AI应用提供了从架构设计到落地优化的完整解决方案。
546 0
|
机器学习/深度学习 计算机视觉
Siamese网络和Triplet网络
【10月更文挑战第1天】
|
人工智能 Python
Light-A-Video:好莱坞级打光自由!上海AI Lab开源视频打光AI,无需训练秒改画面氛围,3步让阴天变夕阳
Light-A-Video 是由上海AI Lab联合交大等高校推出的无需训练的视频重照明方法,支持高质量、时间一致的光照控制,零样本生成和前景背景分离处理。
1045 9
Light-A-Video:好莱坞级打光自由!上海AI Lab开源视频打光AI,无需训练秒改画面氛围,3步让阴天变夕阳
|
人工智能 自然语言处理 图形学
多模态交互3D建模革命!Neural4D 2o:文本+图像一键生成高精度3D内容
Neural4D 2o是DreamTech推出的突破性3D大模型,通过文本、图像、3D和运动数据的联合训练,实现高精度3D生成与智能编辑,为创作者提供全新的多模态交互体验。
1034 0
多模态交互3D建模革命!Neural4D 2o:文本+图像一键生成高精度3D内容
|
供应链 监控 数据可视化
优化酒店供应链结构:实现成本控制与效率提升
本文探讨了酒店行业在激烈竞争中如何通过成本控制和供应链优化提升运营效率。具体措施包括精细化预算管理、优化人力资源配置、节能减排、供应商管理、采购流程优化及库存管理。引入可视化管理工具如板栗看板,可进一步提高项目管理、数据分析和信息共享的效率,助力酒店在不牺牲服务质量的前提下降低运营成本,增强市场竞争力。
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
1024 5

热门文章

最新文章