法线贴图

法线贴图及其用法详解 法线贴图一般用于计算光照。可以表现更多的细节。 法线贴图:一般根据高多边形模型或者高度图生成。 一、法线详解 法线图的存储一般分为在切线空间和模型空间。 切线空间 模型空间 法线贴图存的是:模型顶点在切线空间下的法线方向。也就是说Z轴是顶点法线方向。x是顶点的切线方向,Y是副切线方向。这里可... 阅读详情

什么是法线贴图技术呢?这是一种用来实现3D效果的一种技术,要想理解这种技术还请您听我慢慢道来。

  我们知道,在游戏中经常会有这样的情况,就是一个平面——这个平面在现实中并不是一个“平”面,例如砖墙的表面带有石质浮雕等等。这样的情况如果要求游戏开发人员将复杂的3D细节都做出来是不现实的,因为即使不计较在建模时候的复杂度,过多的3D细节也同样会大量消耗显示芯片的性能,让游戏根本没有可玩性。

               如何利用贴图实现凹凸效果呢?

  可行的方法就是将这个平面用一个贴图覆盖,用贴图的纹理实现一定的凹凸效果。但是这种方法实现的效果并不是很好,因为如果视角一变化,看起来就会像一张简单的画有图案的平面了。

  后来,聪明的游戏开发者想出了一种方法,就是在贴图过程中对贴图进行一定的处理,从而保证了在视角变换以后仍然保证有较为明显的凹凸效果。

  光与影,法线贴图技术的物理学基础

  我们知道,人之所以能够对景物看出立体感的主要原因是因为人有两只眼睛。两只眼睛看的景象是不同的,所以人们才能分辨出立体感来。但是,由于电脑的屏幕是一个平面,分辨3D效果就只能靠光影效果来实现了。

  举个简单的例子,这就像我们画素描的时候,为了不让一个球体看起来像是一个圆圈,必须让球体的一些区域是亮的,一些区域是暗的。而且从亮部转向暗部的时候是一个均匀的按照物理模型特点的过渡,这样画出来的球体才像个球体,电脑为我们绘制的过程也是一样。


因为有明暗,我们才能将平面理解成立体

  基于这个道理,我们就不难理解可以通过贴图局部的亮暗变化来实现假的3D效果。换一种说法就是说我们可以通过在贴图上的局部做一些亮暗的变化来做到一种假的3D效果。


光照因角度不同而呈现不同的明暗

  那么如何实时的对贴图进行转换呢?如果要实现虚拟的光影变换,我们最起码需要知道在一个平面上真正的凹凸的情况,这样才能让显示芯片进行运算,生成一种假的凹凸的效果。

  显然,记录真实的凹凸模型是得不偿失的——如果那样的话就没有任何意义了,我们需要用一种非常简单的方法来记录一个贴图的凹凸情况,于是就诞生了一种全新的方法,法线贴图技术。

  接下来,我们再回到我们刚才谈到的法线贴图的话题上。

  法线贴图就是记录了一个需要进行光影变换的贴图上的各个点的凹凸情况的贴图,显示芯片根据这个贴图的内容,来实时的生成新的有过光影变化的贴图,从而实现立体效果。

  那么,究竟是怎样利用法线贴图记录一个平面或者说是一个贴图的凹凸情况呢?我们知道,物体表面产生明暗变化的直接原因,就是光线照射角度的不同,光线垂直于平面的地方就亮,光线斜射到平面的地方就暗,光线照不到的地方就更暗(应该是黑色,但是由于环境光照所以不会有阴影是真正的黑色)。

  借色彩之值存法线之向,巧妙的存储

  学过初中物理的朋友一定还都记得,表示光线射向平面的角度时通常使用光线和该点法线角度来表示。这也就意味着,如果我们将一个贴图上所有点的法线记录起来的话,就不难再利用这些信息实现后期的假的凹凸效果了。

  记录这些法线的载体就被我们称为法线贴图。为什么称之为贴图呢?我们知道,一条法线是一个三维向量,一个三维向量由X、Y、Z等3 个分量组成,于是人们想出了一个聪明的方法,就是以这3个分量当作红绿蓝3个颜色的值存储,这样的话就生成一张新的贴图了,这就是法线贴图的来历。


采用色彩通道存储法线向量

  法线贴图其实并不是真正的贴图,所以也不会直接贴到物体的表面,它所起的作用就是记录每个点上的法线的方向。所以这个贴图如果看起来也会比较诡异,经常呈现一种偏蓝紫色的样子。


法线贴图的生成过程


Doom3中的一张纹理贴图和这张贴图对应的法线贴图

  『小提示-05:事实上,真正的法线贴图并不是记录贴图上每个点的法线的绝对角度,而是记录的是相对于平面的一个差值。这样的话,随着平面的3D变换都能够实现即时的法线运算了。』

  传统纹理压缩,法线贴图不再适用

  采用法线贴图技术的优势就是利用很少的资源实现了效果非常好的凹凸效果,而且可以利用我们在开篇的时候提到的纹理压缩技术对法线贴图进行压缩,进一步节省资源。


前面的那张圆球图案的法线贴图

原文地址:http://www.cnblogs.com/oldman/articles/2393754.html

什么是法线贴图? 阅读详情

相关推荐

【瑞模网】游戏美术基础(一):游戏贴图

DirectX是一种应用程序接口(API),它是由微软公司开发的用途广泛的API,它可让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计 人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。表面反射光线的能力受环境中各种因素的影响,例如落在对象上的那些非常小颗粒的灰尘,以及接触对象时从手上沾染到对象上的油污, 所有这一切都会影响表面反射光线的能力。注意,在UE4中,材质的默认高光值为0.5。

rrmod的博客 1676

什么是法线贴图 今天教你如何制作法线贴图

简介 法线贴图就是在原物体的凹凸表面的每个点上均作法线,通过RGB颜色通道来标记法线的方向,你可以把它理解成与原凹凸表面平行的另一个不同的表面,但实际上它又只是一个光滑的平面。对于视觉效果而言,它的效率比原有的凹凸表面更高,若在特定位置上应用光源,可以让细节程度较低的表面生成高细节程度的精确光照方向和反射效果。 法线贴图是可以应用到3D表面的特殊纹理,不同于以往的纹理只可以用于2D表面。作为凹凸纹理的扩展,它使每个平面的各像素拥有了高度值,包含了许多细节的表面信息,能够在平平无奇的物体外形上..

langgesanshiyi的博客 3万+

Unity Shader法线贴图详解

法线贴图 (Normal Map) 是一种凹凸贴图 (Bump Map)。它们是一种特殊的纹理,可让您将表面细节(如凹凸、凹槽和划痕)添加到模型,从而捕捉光线,就像由真实几何体表示一样。

tiankongdeyige的博客 1473

凹凸/法线/移位贴图的区别

你是否在掌握 3D 资产纹理的道路上遇到过障碍?不要难过!许多刚接触纹理或 3D 的艺术家在第一次遇到凹凸贴图(Bump Map)、法线贴图(Normal Map)和移位贴图(Displacement Map)时通常会感到困惑。他们似乎都在做同样的事情,对吧?推荐:用快速搭建3D场景。这个问题的答案是一个响亮的“有点”。这三种类型的贴图中的每一种都会在几何表面上创建一些看起来像附加分辨率或细节的东西。这些细节有些是真实的,有些则不是。

新缸中之脑 3215

OpenGL基础47:法线贴图

前置:OpenGL基础46:切线空间 这章在《OpenGL基础46:切线空间》之后,如果不了解切线空间的话,是没法很好理解法线贴图的 五、逐像素光照 前文提到过:为了得到正确的光照,需要知道物体每个顶点的法向量,但为了保证效率,一般物体的顶点不会太多,就像一面很长很宽的墙壁,它的表面往往凹凸不平,但事实上它可能单纯的只是一个立方体,每一面给上了一个贴图。这样如果还想要体现出物体“凹凸不平”的效果,就需要用到法线贴图或者高度贴图 之前所有的光照都是逐顶点光照:也就是说对于当前片段,它的法向量取决...

加载中... 2523

【猫猫的Unity Shader之旅】之法线贴图的运用

前几篇文章都在讲原理性的东西,不知道大家有没有烦。其实,当对Shader了解越来越多之后,就会越来越发现原理的重要性。建议大家学了一些Unity Shader的用法之后,多了解一点图形学知识,勿筑台于浮沙。为什么需要法线贴图  在实际的开发过程中,我们经常会遇到这样的矛盾:一方面希望模型的显示效果好,另一方面又希望模型具有较少的面数,节省开发成本和运行效率。例如我们现在要做一面砖墙,思路可能是这样的

dbtxdxy的专栏 3577

Unity3D 法线贴图的原理详解

Unity3D它提供了丰富的功能和工具,帮助开发者轻松创建出高质量的游戏作品。其中,法线贴图(Normal Mapping)是一种常用的技术,用于在游戏中模拟出高精度的表面细节,提升游戏画面的真实感和细节感。本文将详细介绍Unity3D中法线贴图的原理,以及如何在游戏中实现法线贴图效果。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!法线贴图是一种在游戏中常用的技术,通过模拟表面的凹凸感,增加了游戏画面的真实感和细节感。

Thomas_YXQ的博客 1772

[GLSL]法线贴图(Normal mapping)原理及实现

前一段时间了解到一个技术叫法线贴图,感觉这是一个很有意思的东西,所以我尝试去实现了一下,虽然网上有很多资料了,但在这里还是记录一下我的实现过程。 演示程序已上传:https://download.youkuaiyun.com/download/qq_31804159/10372916 感兴趣的同学可以下载玩一下 首先附上我的实现结果:   左上为原图,左下为得到的法线图,中右图是法线贴图效果。 ...

wk_119的博客 9789

blender烘焙法线贴图

…我花了小半年才弄明白的东西ORZ 希望能帮你少走点弯路 本篇索引:blender烘焙法线贴图补充1:如何将图片纹理转为法线效果补充2:如何转移贴图 blender烘焙法线贴图 !!!建好低模就展UV,不要拖,忘了结构再展UV更费时 展UV: av77805590 物体 - apply the scale Mark Seam(选择视野看不见的边做缝) Unwrap 时可以看看AngelBased-Conformal哪种方法得到的UV更均匀 对UV做优化使其分布均匀,如想选中某块UV可以用Island模式

danad的博客 1万+

LearnOpenGL——法线贴图、视差贴图学习笔记

我们将观察方向变化到切线空间中,所以P向量的x和y分量会与表面切线和副切线对齐,由于切线和副切线向量与表面纹理坐标的方向相同,我们可以用P的x和y元素作为纹理坐标的偏移量。目前,如果我们让平面竖直面对我们,此时效果正常,因为法线贴图中的法线方向指向z正方向并且平面的法线也指向z轴正方向。将法线向量的x、y、z元素储存到纹理中,代替颜色的r、g、b元素,因为法线向量的范围在[-1,1],所以我们要先将其映射到[0,1],变换为RGB颜色元素。法线向量从z轴方向也有向其他方向的偏差,颜色也就发生了轻微的变化。

weixin_70073176的博客 1902

OpenGL法线贴图

参考: https://learnopenglcn.github.io/05%20Advanced%20Lighting/04%20Normal%20Mapping/ 现实中的物体表面并非是平坦的,而是表现出无数(凹凸不平的)细节. 例如,砖块的表面。砖块的表面非常粗糙,显然不是完全平坦的:它包含着接缝处水泥凹痕,以及非常多的细小的空洞。如果我们在一个有光的场景中看这样一个砖块的表面,问题就出来了...

qq_44800780的博客 1165

[OpenGL] 法线贴图

如下图所示: 左边第一个是传入了上百万的顶点坐标实现的效果,而最中间的是传入了500个顶点实现的效果,最后一个是在中间的基础上运用的法线贴图实现的效果,他们的效果几乎是一样的。我们知道不是所有的物体表面都是光滑平整的平面,比如我么要绘制一个人脸,但人脸会由,头发,五官,甚至是微表情等组成这些都是具有凹凸感的,那我们该如何体现出这种凹凸感呢?

qq_45280097的博客 1511

CarMaker快速入门

本合集是小明师兄推出的CarMaker汽车仿真,CarMaker无论是传统动力学、动力系统开发、底盘系统开发还是目前智能驾驶辅助系统及智能驾驶系统开发有着非常重要的作用,可以有效节省开发周期和开发成本,基于仿真快速实现算法开发和系统验证。...

小明师兄的博客 1万+

Unity法线贴图

一、凹凸贴图 凹凸贴图主要用于增强表现细节,核心在于法线,因为光照模型中法线是影响物体表面细节的重要因素,而法线贴图就是一种非常常见和重要的凹凸贴图。 二、法线贴图 法线贴图其实就是将物体的法线信息存入到贴图中,一个像素点的4个分量可以分别代表不同的信息,当它的xyz都用来存储物体的法线信息的时候这就是一张法线贴图,如果存储的是别的属性信息,那它就是别的图。 切线空间的法线:x轴代表该点的...

mozhi 2253

微信小游戏CE修改实战:从入门到精通(附防作弊思路)

本文深入探讨微信小游戏的安全攻防实战,重点分析CE修改、反编译和重打包等安全风险。通过详细的内存修改案例和代码保护方案对比,提供从客户端到服务端的全方位防护策略,帮助开发者构建有效的防作弊体系。

m2n3b4v5c6的博客 1139

WinCC动态选择报警记录案例

本例中需要确认查询的时间段以及查询的关键字,然后通过一个按钮来执行报警数据查询脚本,并把查询出的结果加载到当前报警控件中。<本例中数据查询脚本的思路是根据选项组所选定的参数加载相应的归档变量到在线趋势控件,根据设定的查询时间范围设定控件时间轴的开始时间及结束时间。本文以 WinCC V8.0为例,介绍如何动态的查询WinCC报警记录,包括关键字查询/时间&关键字查询,如图1所示。<在WinCC变量管理中创建不同的变量组,并在变量组下创建相应的变量,如图2 所示(下图并非实际变量值)。

weixin_45072604的博客 2708

如何在你的法线贴图上修接缝

How to Fix Seams on Your Normal Map 原帖:http://www.andrewklein.net/bh/fix_normalmap_seams.html大家好,我是笨笨,笨笨的笨,笨笨的笨,谢谢!水平有限,如有疏漏望海涵,如有译者注会用红色。郁闷后正式开始:郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷郁闷 ......

灵台方寸山斜月三星洞 2万+

51单片机AHT20-21源代码

传感器输出经过 标定的数字信号,标准 I 2 C 格式。AHT20 配有一个全新设计的 ASIC专用芯片、一 个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,其 性能已经大大提升甚至超出了前一代传感器的可靠性水平,新一代温湿度传感器, 经过改进使其在恶劣环境下的性能更稳定。但是现在网上的大多数原码都是针对stm32等的这种多位单片机,而我们都知道51单片机是8位单片机,无法对浮点数进行运算,对32位的整数计算有时候也不是很准确,所以我对网上stm32的例程进行了修改。...

wd0710的博客 4547

026-法线贴图

本文摘要:法线贴图是一种在不增加模型几何复杂度的情况下显著提升表面细节的技术。文章详细介绍了法线贴图的原理、实现方法和DirectX12应用流程,包括切线空间计算、TBN矩阵构建、着色器编程等核心内容。重点讲解了从高度图生成法线贴图的技术实现,以及如何在顶点和像素着色器中正确处理切线空间转换。文中还提供了完整的DirectX12实现代码,包括顶点格式扩展、纹理加载、管线状态设置等关键环节。最后提出了8个实践练习,帮助读者深入掌握这项现代3D渲染中的关键技术。

小宝哥Code的专栏 1649

大模型训练方法全面解析:SFT、RFT、TRPO、DPO、PPO、GRPO、RLH、RLHF技术深度剖析

大模型训练方法全面解析 本文系统介绍了当前主流的大模型训练和对齐技术,包括监督微调(SFT)、拒绝采样微调(RFT)、信任域策略优化(TRPO)、直接偏好优化(DPO)、近端策略优化(PPO)等。这些方法各有特点:SFT简单高效但数据依赖性强;RFT通过质量筛选提升输出质量;TRPO训练稳定但计算复杂;PPO是RLHF核心算法,平衡探索与利用。文章详细分析了各方法的实现原理、优势劣势及适用场景,为开发者选择合适的大模型训练策略提供参考。

2795

matinal:SAP 采购中形成的差异

如果库存足够会影响到物料。

matinal 當冬夜漸暖 。公众号:matinal 820
上一篇: Lua 调试(Debug)
下一篇: 骨骼动画的插值与融合
cbbbc
博客等级 码龄15年 609粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值