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)

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

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

相关文章

Java的maven

一.概念: 是一款用于管理和构建java项目的工具 作用: 方便项目的依赖管理 统一项目的结构,方便程序员开发及维护 提供了一套标准的项目构建流程,方便编译和构建 二.仓库类型: 本地仓库>自己计算机上的一个目录 中央仓库>由Maven团队维护的全球唯一的。…

C语言之进制转换

C语言之进制转换 一、引言二、十进制与二进制、八进制、十六进制三、二进制与八进制、十六进制四、八进制与十六进制 一、引言 在C语言中,经常使用的整数的进制有十进制、二进制、十六进制(在C语言中以0x或0X为前缀)、八进制(在C…

圆中点算法

中心在原点,半径为 R 的圆的隐式函数方程为 F ( x , y ) x 2 y 2 − R 2 0 F(x, y) x^2 y^2 - R^2 0 F(x,y)x2y2−R20 把像素上的点的坐标代入上述隐式方程 八分法画圆算法 利用坐标轴和与坐标轴夹角 45 度的直线 原理 假设圆弧起点 x 0 x0 x0&#xff0…

labuladong日常刷题-双指针 | LeetCode 83删除排序链表中的重复元素 5最长回文子串

双指针操作链表与字符串 LeetCode 83 删除排序链表中的重复元素 2023.12.28 题目链接labuladong讲解[链接] ListNode* deleteDuplicates(ListNode* head) {/*暴力求解ListNode* cur new ListNode();ListNode* prenode cur;cur->next head;cur cur->next;while(cu…

实习知识整理12:点击购物车渲染出购物车中的商品并实现在购物车界面对商品价格和数量的相关操作

1. 点击购物车渲染出购物车商品界面 通过userId从购物车表中查找商品的相关信息 前端:需要向后端传递userId 后端: CartMapper.java CartMapper.xml CartService.java 接口 CartServiceImpl.java 实现类 CartController.java cartIndex.html页面 …

使用自带密钥 (BYOK) 的Azure信息保护云退出

上篇我们讲了使用Microsoft托管密钥的Azure信息保护云退出,本文我们将介绍使用自带密钥 (BYOK) 的Azure信息保护云退出。 自带密钥 (BYOK) 由客户在 nCipher HSM 中创建,并安全地传输到基于 HSM 的 Azure Key Vault,供 AIP 使用。 由于 Micro…

【产品评测】戴尔G15 5510笔记本电脑拆机实拍

笔者最近入手了一台戴尔G15 5510笔记本电脑,第一时间将其初步拆解,了解其内部设计、构造和扩展性。 一、机身总览 1、屏幕和键盘 2、A面 略粗糙的手感。 3、D面 D面共有8颗螺丝,其中4颗(上有保护膜)为戴尔家比较常见…

创建型设计模式 - 抽象工厂模式 - JAVA

创建型设计模式 - 抽象工厂设计模式 一. 简介二. 列子2.1 定义电脑的抽象类和子类2.2 定义抽象工厂类和其实现类2.3 测试 三. 抽象工厂设计模式的好处四. 抽象工厂模式的案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续…

实时交通标志检测和分类(代码)

交通标志检测和分类技术是一种基于计算机视觉和深度学习的先进技术,能够识别道路上的各种交通标志,并对其进行分类和识别。这项技术在智能交通系统、自动驾驶汽车和交通安全管理领域具有重要的应用前景。下面我将结合实时交通标志检测和分类的重要性、技…

Java技术栈 —— Redis的雪崩、穿透与击穿

Java技术栈 —— Redis的雪崩、穿透与击穿 〇、实验的先导条件(NginxJmeter)一、Redis缓存雪崩、缓存穿透、缓存击穿1.1 雪崩1.2 穿透1.3 击穿 二、Redis应用场景——高并发2.1 单机部署的高并发问题与解决(JVM级别锁)2.2 集群部署…

简述Redis备份策略以及对应的实现机制

引言 Redis作为高性能的内存数据库,数据的安全性至关重要。一旦数据丢失,可能会对业务造成重大影响。因此,备份Redis数据是每个Redis使用者都必须考虑的问题。本文将介绍Redis的备份策略以及对应的实现机制。 一、备份策略 1.1 定期备份 …

【零基础入门VUE】VueJS - 实例

✍面向读者:所有人 ✍所属专栏:零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 目录 句法 vue_instance.js 输出 例子 输出 实施例1 实施例2 例子 例子 要开始使用 VueJS,我们需要创建 Vue 实例&#xf…