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

1、什么是凹凸贴图

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

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

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

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

2、什么是法线贴图

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

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

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

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

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

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

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

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

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

  看起来似乎问题不大。

  再来看一下法线贴图:

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

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

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

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

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

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

4、总结

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

工作原理:

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

精度和细节:

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

实现复杂度:

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

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

  

原文链接:凹凸贴图和法线贴图的区别 (mvrlink.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/84955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DockerKubernetes ❀ Service下Port端口区分

文章目录 概述案例 概述 在Kubernetes中,Service(svc)是一种抽象机制,用于将一组 Pod 暴露给其他应用程序或服务。Service 可以有三种类型的端口: nodePort:这是 Service 在节点上公开的端口。可以使用此…

基于微信小程序的校园生活管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境学生微信端的主要功能有:管理员的主要功能有:具体实现截图视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝1…

软考考试多少分算通过?

软考证书取得需要达到总分45分,每门科目满分为75分。因此,不要小看45分,在考试中获得这个分数并不容易。此外,软考要求一次性通过,如果没有通过,成绩将不被保留。因此,必须在一次考试中成功通过…

服务网格和性能优化:介绍如何通过服务网格提高微服务架构的性能和可扩展性

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

vue3项目学习一:创建vue3项目

创建vue3项目 一、使用vue-cli创建vue3项目1.安装vue-cli2.创建vue3项目 二、初始化项目结构三、导入element-ui 一、使用vue-cli创建vue3项目 1.安装vue-cli 先查看是否安装vue-cli 在cmd窗口输入vue -V查看版本,如果出现 则说明存在vue-cli,如果出现 则需要安…

Mac使用CMakeList编译ImGUi项目

文章目录 创建项目1.下载ImGui2.下载GLAD3.下载GLFW4.编译项目5.运行截图 创建项目 我这里创建一个demo,opengl这个是可以跨平台的,所以在mac上使用ImGui的opengl3示例 1.下载ImGui 我使用的是docking版本的,这个版本支持停靠功能&#xff…

Linux Qt5.15.2 编译QWebEngine源码支持音视频H264

背景 默认自带的QWebEngine 因版权问题不支持音视频功能,需要自己编译源码以支持。 平台:Linux(UOS V20 1050) Qt:5.15.2 准备工作 下载 Qt 5.15.2 对应版本源码,使用镜像网站或者Qt Maintenance Tool工…

计算机竞赛 深度学习YOLOv5车辆颜色识别检测 - python opencv

文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖,适合作为竞赛课题方向&#xff0…

一台PoE交换机可以为多少个设备提供供电?

如今在安防监控领域,许多网络设备都支持PoE供电。在网络监控工程中,为了节省布线成本并提高便捷性,大多数工程商选择使用PoE供电方案,也就是使用PoE交换机为监控摄像头提供电力。那么,一台功率输出以太网(P…

AI创作专家,免费的AI创作专家工具

AI创作专家是一种崭新的工具,它们利用先进的人工智能技术,帮助创作者和写手更轻松地应对创作挑战。这些工具不仅可以生成文字,还可以提供灵感、帮助构思和组织思路,使创作过程更加高效。 147GPT批量文章生成工具​www.147seo.com/…

深入探究序列化与反序列化:原理、应用和最佳实践

目录 什么是对象的序列化和反序列化序列化步骤反序列化步骤案例演示Java中哪些字段不能序列化序列化与反序列化的重要性序列化与反序列化的应用场景 什么是对象的序列化和反序列化 序列化(Serialization)是指将对象转化为字节流的过程,以便于…

想学嵌入式开发,薪资怎么样?

想学嵌入式开发,薪资怎么样? 对于嵌入式工程师来说呢,它重点学习内容就是首先一定要打好基础,如果从编程语言角度来讲,那么可以在语言上选C或者C,你可以选择其中任何一门语言作为你的入门。 最近很多小伙伴…

Matlab编程中函数的重命名方法

Matlab编程中函数的重命名方法 在进行matlab编程时候,有时需要根据自己的习惯,需要对函数重命名。本文简要介绍重命名的方法。 一、重命名的方法 通过和赋值号实现,如下所示: 新函数名原函数名二、具体举例 clc clear all %将…

Flutter超好用的路由库-fluro

文章目录 fluro的介绍fluro简介安装和导入路由配置导航到路由参数传递 fluro的典型使用创建路由管理类代码解释例子小结 初始化路由导航到路由 总结 fluro的介绍 fluro简介 fluro是一个流行的Flutter插件,用于实现高级路由管理。它提供了灵活的路由配置和导航功能…

笔试面试相关记录(5)

(1)给定一个字符串,含有大写、小写字母,空格,数字,需要将其变为满足如下条件: 所有的数字需要换成空格,并且字符串的头尾不包含空格,且整个字符串不包含连续的两个空格。…

Maven的介绍和使用

Maven的作用 项目构建 依赖管理:避免资源间版本冲突问题 统一开发结构:提供统一的项目结构 Maven的使用 下载完压缩包之后放在合适的目录下,其中apache-maven-3.8.8文件夹是安装的maven,下面的repository是本地仓库&#xff…

月木学途开发 6.网址模块

概述 效果图 数据库设计 网站类型表 DROP TABLE IF EXISTS website; CREATE TABLE website (websiteId int(11) NOT NULL AUTO_INCREMENT,websiteImg longtext,websiteName varchar(255) DEFAULT NULL,websiteUrl longtext,websiteDesc varchar(255) DEFAULT NULL,websiteTy…

Python经典练习题(一)

文章目录 🍀第一题🍀第二题🍀第三题🍀第四题🍀第五题 🍀第一题 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 这里我们使用…

HTTP 错误 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面。

用IIS 发布网站,不能访问且出现错误:HTTP 错误 401.3 - Unauthorized 由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置。您无权查看此目录或页面 问题截图: 问题描述:HTTP 错误 401.3 - 未经授权:访问由于 A…

[RF学习记录][参数读取]从yaml文件读取参数变量

robotframework支持从yaml文件读取变量,对于比较多的参数,可以在yaml文件中定义好,在robot脚本中引用 1、定义yaml文件 文件内容如下,注意,变量和变量值之间要以4个字符分开 yaml_demo_name: tester traing_gpt_…