游戏贴图技术入门-法线贴图
3D游戏常用技巧NormalMapping(法线贴图)原理解析——基础篇

3D游戏常⽤技巧NormalMapping(法线贴图)原理解析——基础篇1、法线贴图基本概念 在制作3D游戏时,常常遇到这样⼀个问题:⼀个平⾯,这个平⾯在现实中并不是⼀个“平”⾯,例如砖墙的表⾯带有⽯质浮雕等等。
这种情况下如果只是简单的做⼀个平⾯,则让⼈感觉严重失真,如图1所⽰;⽽如果⽤很密集的三⾓形去表⽰这类略有凹凸的表⾯,则性能上⼤⼤下降。
研究⼈员发现,⼈眼对物体的凹凸感觉,很⼤程度上取决于表⾯的光照明暗变化,如果能通过⼀张贴图在⼀个平⾯上表现出由凹凸造成的明暗变化,则可以让⼈眼感觉这个平⾯是凹凸不平的(虽然这个平⾯还是平的)。
法线贴图正是为了这个⽬的⽽产⽣的。
图1 不同细节程度的蜡烛 准确的说,法线贴图是Bump Mapping(凹凸贴图)的其中⼀种。
第⼀个Bump Mapping由Blinn在1978年提出,⽬的是以低代价给予计算机⼏何体以更丰富的表⾯信息。
30年来,这项技术不断延展,尤其是计算机图形学成熟以后,相继出现了不少算法变体,法线贴图就是其中很重要的⼀种。
研究⼈员对法线贴图进⼀步改进,出现了Parallax Mapping(视差贴图), Relief Mapping等技术,实现了更逼真的效果。
本⽂仅针对法线贴图进⾏介绍。
⼀条法线是⼀个三维向量,⼀个三维向量由x, y, z等3个分量组成,在法线贴图中,把(x, y, z)当作RGB3个颜⾊的值存储(如图2),并将其每个分量映射到[-1, 1]。
例如,对于x, y, z各有8位的纹理,[0, 128, 255]表⽰法向量(-1, 0, 1)。
图2 利⽤彩⾊通道存储法线贴图2、切线空间 法线贴图中存储的法线最初是定义在世界空间中,但在实际中,这种⽅式很少见,因为只要物体移动,法线贴图则不再有效。
另⼀种⽅式就是将法线存储在物体的局部空间中,物体可以进⾏刚体变换(平移,旋转,缩放),法线贴图依旧有效,但是这种⽅法并不能应对任何⽅式的变换,并且法线贴图不能在不同物体进⾏复⽤,增加了美⼯的负担。
法线贴图

我们都知道,一个三维场景的画面的好坏,百分之四十取决于模型,百分之六十取决于贴图,可见贴图在画面中所占的重要性。
在这里我将列举一些贴图,并且初步阐述其概念,理解原理的基础上制作贴图,也就顺手多了。
我在这里主要列举几种UNITY3D中常用的贴图,与大家分享,希望对大家有帮助。
01首先不得不说的是漫反射贴图:漫反射贴图diffuse map漫反射贴图在游戏中表现出物体表面的反射和表面颜色。
换句话说,它可以表现出物体被光照射到而显出的颜色和强度。
我们通过颜色和明暗来绘制一幅漫反射贴图,在这张贴图中,墙的砖缝中因为吸收了比较多的光线,所以比较暗,而墙砖的表面因为反射比较强,所以吸收的光线比较少。
上面的这张图可以看出砖块本身是灰色的,而砖块之间的裂缝几乎是黑色的。
刨去那些杂糅的东西,我们只谈明显的,漫反射贴图表现了什么?列举一下,物体的固有色以及纹理,贴图上的光影。
前面的固有色和纹理我们很容易理解,至于后面的光影,我们再绘制漫反射贴图的时候需要区别对待,比如我们做一堵墙,每一块砖都是用模型做出来的,那么我们就没有必要绘制砖缝,因为这个可以通过打灯光来实现。
可是我们如果用模型只做了一面墙,上面的砖块是用贴图来实现,那么就得绘制出砖缝了。
从美术的角度,砖缝出了事一条单独的材质带外,还有就是砖缝也是承接投影的,所以在漫反射图上,绘制出投影也是很有必要的,如下图:没有什么物体能够反射出跟照到它身上相同强度的光。
因此,让你的漫反射贴图暗一些是一个不错的想法。
通常,光滑的面只有很少的光会散射,所以你的漫反射贴图可以亮一些。
漫反射贴图应用到材质中去是直接通过DiffuseMap的。
再命名规范上它通常是再文件的末尾加上“_d”来标记它是漫反射贴图。
凹凸贴图Bump maps凸凹贴图可以给贴图增加立体感。
它其实并不能改变模型的形状,而是通过影响模型表面的影子来达到凸凹效果的。
再游戏中有两种不同类型的凸凹贴图,法线贴图(normalmap)和高度贴图(highmap)。
如何通过Blender制作切线空间法线贴图

如何通过Blender制作切线空间法线贴图切线空间法线贴图(Tangent Space Normal Map)在游戏开发和计算机图形学中扮演着重要的角色。
它能够给模型带来更加真实的光照效果,提升游戏或渲染的视觉质量。
在本教程中,我们将介绍如何使用Blender软件来制作切线空间法线贴图。
首先,在打开Blender后,我们需要准备一个基础的模型。
可以通过导入一个OBJ文件或者手动创建一个简单的模型来进行实践。
在这个教程中,我们将以一个简单的立方体为例。
在你的3D视图中,选择你的模型并按Tab键进入编辑模式。
然后选择一个面,你可以使用鼠标右键点击来选择。
接下来,按U键并选择“Unwrap”选项,或者通过菜单栏选择“UV”,再选择“Unwrap”。
这将把选择的面展开到UV编辑器中的一个平面上。
接下来,我们需要在这张平面图上绘制纹理。
在UV编辑器中,你可以使用各种绘画工具来添加颜色、纹理和细节。
绘制完成后,我们需要生成切线空间法线贴图。
首先,在属性面板中选择“Render Properties”标签,然后将“Cycles Render”切换为“Blende r Render”。
接下来,在属性面板中选择“Textures”标签,然后点击“New”按钮创建一个新的纹理。
选择“Image or Movie”并点击“Open”按钮导入你之前绘制的纹理图片。
现在,在纹理选项卡中,选择“Mapping”子选项卡,并将“Coordinates”选项更改为“UV”。
这样Blender就会使用之前创建的UV 布局来映射纹理。
回到属性面板,在“Texture”选项卡中,找到“Influence”子选项卡。
在“Geometry”部分,勾选“Normal”,并在下方的“Normal Map”部分选择“Tangent”.现在,你可以在3D视图中观察到切线空间法线贴图的实际效果。
你可以尝试调整一些参数,如强度或颜色,来获得你想要的效果。
3D游戏中法线贴图技术的应用

3D游戏中法线贴图技术的应用/view-1 法线贴图的原理一个表面的凹凸信息可以通过每个点的法线向量在RGB通道中记录并保存下来。
使用贴图的时候根据记录的法线向量来实现视觉上凹凸效果。
法线贴图的颜色看起来有些奇怪,这是法线贴图的RGB值取得并不是颜色,而是每个点的法线向量的三个分量,一个三维向量由X、Y、Z等3个分量组成,以这3个分量当作红绿蓝3个颜色的值存储。
2 法线贴图的应用以及存在的问题使用法线贴图可以将高精度模型的细节转换为一张图,然后将其应用在低多边形的模型上,通过渲染以实现所要表现的细节,这大幅减少了实际需要计算的模型面数,加快了显示和渲染的速度。
我们除了通过计算高精度模型的凹凸细节和低精度模型之间的差值来获取法线贴图外,还可以使用PHOTOSHOP软件,按照法线贴图的颜色来制作,但这种通过绘制的方法得到的法线贴图,并不准确,在游戏模型的制作中用的不多,所以得到法线贴图的最常用方式还是通过高精度模型与低精度模型的计算而得到的。
在使用法线贴图时,我们都知道视角接近水平时法线贴图的缺点很明显,法线贴图只是改变了的表面上的光照结果,并没有像置换贴图那样实际改变模型的形状,这给游戏模型的制作过程中带来的具体问题就是:在模型边缘处有着明显的接缝,接缝的部分无法让模型产生所谓“真正”的细节。
另一个方面,法线贴图也无法实现自身内部的遮挡,不能够有效解决解决更大的凹凸情况,在表现平面上凹凸起伏较大的场景时效果不佳,在游戏制作中,它只能用在对遮挡关系不敏感、凹凸起伏不大的场景中。
3 法线贴图与视差贴图的关系为了解决法线贴图弊端,在法线贴图的基础上出现了新的视差映射贴图技术。
视差映射贴图在控制纹理的技术上有了进一步提高,打开它的阿尔法通道,你会看到在阿尔法通道中除了储存有与法线贴图相同的信息外,还有通过饱和度来记录表面凹凸高度信息的功能,这一点是法线贴图所不具备的。
由于在阿尔法通道中记录有表面凹凸高度的信息,这样就可以实现一个表面前部的凹凸纹理能够遮蔽到后面的纹理,这样就具有更为符合实际情况的凹凸效果。
游戏用贴图详解

看不少朋友对游戏用贴图存在一些认识上的不足或误区,这里我特别整理总结,有兴趣的可以参考。
(注:完全是个人的经验和理解)Diffuse漫反射:漫反射是物体基本色Color和环境光Ambient混合的结果,换句话说就是物体基本色在迎光面和背光面上的显示效果。
通常情况下,我们并不会将Diffuse的效果绘制到贴图中,因为太过明显的明暗变化会导致效果的不真实,如手臂下的阴影会在举起时露馅;因此尽管基本的贴图通道名为Diffuse,但事实上应为的效果,需要场景灯光的辅助。
说到AO(全称AmbientOcclusion环境闭塞,也有简称OCC和白模),它是一种通过灰度来表示物体之间相互影响的效果,你可以理解为明暗素描那样的表现形式。
AO贴图直接赋予模型上时,可以在不需要特定光源的情况下看出模型的基本架构,是最实用的辅助贴图。
我们可以在AO贴图的基础上绘制基本色彩和纹理,完成最初的Diffuse贴图。
Specular高光:事实上,highlight才是高光,specular本身含有镜面反射的意思。
不过为了和reflection反射进行区别,通常都称为高光。
所谓高光,也就是光滑物体弧面上的亮点(平面上则是一片亮),它与光源和摄像机的位置有关,通常为一个小白点。
事实上,我们是不能也不应该控制高光的出现位置,通过高光贴图控制的只是高光的衰减情况--因为高光点是系统计算的结果,我们只能在高光出现的地方控制高光的强弱和颜色变化。
例如,人物角色的额头和鼻尖部分,一般都会使用偏白的高光贴图,是为了在人物面部产生高光时和周围有明显的区别。
高光一般为白色,不过在制作金属物件的高光时,高光颜色会偏向金属固有色,这点可以作为一个规律执行。
一个小技巧,我们可以在AO贴图的基础上绘制高光(很多时候是修改AO贴图的暗部)。
在三维动画软件中,高光具有多个参数设置,如偏心率、衰减度、高光颜色;它和反射效果关系密切,因此高光间接表现一个物体的材质,例如塑料,金属,皮革的高光效果是各不一样的。
Unity3D教程:法线贴图

Unity3D教程:法线贴图Posted on 2013年01月11日 by U3d / Unity3D脚本/插件/被围观 351 次一:法线贴图的原理光照效果很大程度上是由垂直于物体表面的法线决定的,因为法线影响反射光的方向。
均匀垂直的法线是镜面贴图。
但是有时候我们会给一个平面使用砖墙贴图,砖墙应该是凹凸不平的,而如果让砖墙使用该平面的法线的话,画面就会很假,神马?一面墙像镜子一样反光=。
=而如果按真实砖墙去做模型的话,即做高精度模型,一方面制作麻烦,另一方面运行时对性能损耗大。
法线贴图就是来解决这个问题的。
法线贴图就是把法线信息储存在一张图里。
使用法线贴图时,通常顶点数和三角形面数只有高精度模型的十分之一不到。
二:法线贴图的实现将材质贴图对应的法线绘制在一张贴图上。
将贴图对应点的单位法线向量信息float3(x,y,z) 储存在图对应的颜色里color(r,g,b)里,其中x,y,z分别对应r,g,b。
单位法线向量float3(x,y,z),x,y,z的取值范围是[-1,1]。
在法线贴图中被压缩在颜色的范围[0,1]中,所以需要转换:颜色 = 0.5 * 法线 + 0.5;线 = 2 * (颜色 - 0.5);三:法线贴图的使用主要步骤(1)对法线贴图进行采样,取得压缩在颜色空间[0,1]里的法线float4 packedNormal = tex2D(_NormalMap, IN.uv_MainTex);(2)将压缩在[0,1]里的法线转换至3D空间[-1,1] (因为是单位向量)float3 expand(float3 v) { return (v - 0.5) * 2; }之后使用该法线即可,方法与16讲里一样。
具体实现详见本文末的脚本。
四:法线贴图的格式法线贴图主要分为2个类别:(1)RGB法线贴图,即上面使用的。
通常呈蓝色。
(后缀可以是常见的.png .jpg等)(2)压缩格式的法线贴图。
什么是法线贴图

什么是法线贴图?
法线贴图是可以应用到3D表面的特殊纹理,不同于以往的纹理只可以用于2D表面。
作为凹凸纹理的扩展,它包括了每个像素的高度值,内含许多细节的表面信息,能够在平平无奇的物体上,创建出许多种特殊的立体外形。
你可以把法线贴图想像成与原表面垂直的点,所有点组成另一个不同的表面。
对于视觉效果而言,它的效率比原有的表面更高,若在特定位置上应用光源,可以生成精确的光照方向和反射。
法线贴图是一种显示三维模型更多细节的重要方法,它解算了模型表面因为灯光而产生的细节。
这是一种2维的效果,所以它不会改变模型的形状,但是它计算了轮廓线以内的极大的额外细节。
在处理能力受限的情况下,这对实时游戏引擎是非常有用的,另外当你渲染动画受到时间限制时,它也是及其有效的解决办法。
更具体的来说,就比如动视暴雪的大作《使命召唤6:现代战争2》2009年11月10日的特效就使用了法线贴图。
打开这项特效后,你就可以明显的看到狙击枪的狙击镜上多出了一片透光的玻璃片,并且法线贴图质量越高就越清晰,越生动。
反之,关掉法线贴图就无法看到这层玻璃片。
这是相对于《使命召唤4:现代战争》来说的一个非常重要的画质提升,在以后使用Sharder Model 3.0的游戏上都将会加入法线贴图以提升游戏的画质。
高光贴图在定义上是针对某特定的角度范围反光,而不是全范围的漫射光。
基本上高光的亮度是取决于面的法线方向、摄像机和光源的平均方向,除此之外,高光贴图还可以反映不同的材质,例如金属的反光范围较小,比较接近全漫射光,而且高光还可以体现结构的光滑程度。
(图13)。
使用法线贴图增加模型细节

使用法线贴图增加模型细节在三维建模领域中,为了增加模型的细节和真实感,我们经常会使用法线贴图。
法线贴图是一种特殊的贴图,可以模拟模型表面的凹凸纹理,使模型看起来更加真实。
首先,我们需要准备一个基础模型。
可以使用Blender软件创建一个简单的模型来进行演示。
在模型完成后,我们需要添加更多的细节,这就是使用法线贴图的时候。
接下来,我们需要选择我们要添加细节的部分。
可以使用顶点、边和面等工具来选择模型的特定区域。
一旦选择好了,我们可以进行以下步骤。
第一步是创建法线贴图。
在Blender中,可以通过两种方式来创建法线贴图。
第一种是使用纹理贴图。
将选择的模型区域设定为该纹理贴图的投影区域,并在纹理贴图中使用灰度图来表示法线信息。
越亮的像素代表更凸出的区域,而越暗的像素则代表更凹陷的区域。
第二种方法是使用高度贴图。
与纹理贴图不同,高度贴图使用像素的亮度信息来表示模型的凹凸度。
越亮的像素代表更高的区域,而越暗的像素则代表更低的区域。
通过这两种方法,我们可以在模型的特定区域添加细节。
第二步是将法线贴图应用到模型上。
在Blender中,可以通过设置材质和纹理来应用法线贴图。
首先,我们需要为模型创建一个新的材质,并为该材质添加一个纹理。
然后,在纹理选项中,选择之前创建的法线贴图。
接下来,通过调整贴图的强度和深度等参数,可以获得所需的效果。
第三步是调整法线贴图的UV映射。
在Blender中,UV映射决定了纹理如何在模型上展示。
在应用法线贴图之前,确保模型已正确进行UV映射。
可以使用Blender的UV编辑器来对模型的UV进行调整。
通过调整UV映射,可以确保法线贴图正确地应用到模型上。
最后一步是渲染和查看结果。
在Blender中,可以使用视图模式或渲染视图来查看模型应用法线贴图后的效果。
可以调整光照和摄像机位置来进一步优化效果。
总结起来,使用法线贴图可以为模型增加更多的细节和真实感。
通过创建贴图和将其应用到模型上,并调整UV映射和渲染设置,可以获得更好的效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分:法线贴图的制作示例:岩石的法线贴图制作什么叫做法线贴图,简单的说就是将一个高边模型上的细节信息在另一个低边模型上面显示出来,这就叫做法线贴图。
高边模型和低边模型必须是同一个模型,只区别在于面数和细节的差异。
为什么要给低边模型渲染法线贴图,原因就是高边模型的面数过高,当然细节也很丰富。
在游戏里面显示的话,会占非常大的内存,相应的对电脑的要求也会相应的高;然而低边模型是用到游戏里面的,并且它所占的内存比起高边模型来说,非常小,但是细节和质感不比高边模型的好,所以为了有更高质量的游戏,但又占内存小的游戏,我们自然就需要法线贴图来为我们的游戏增加更多细节和质感。
法线贴图一般都是用在次时代游戏里面,网络游戏还是非常少,因为还关键的是用什么引擎。
只要支持法线贴图的,那么它的游戏里面也会用上法线这效果。
下面我以岩石的法线贴图来做个例子:首先创建一个低边模型的岩石(需要展开UV),然后再复制一个出来,通过ZB或在MAX里面制作出它的高边模型(不需要展开UV),如图:
有了高模和低模后,我们就可以给它创建法线贴图了,在渲法线之前,需要一些设置,下面开始法线制作。
选择低模,然后点击对齐工具,将低模和高模对齐到一块,如图:
下面开始设置,法线属性,按0快捷键,进入渲染纹理面板,如图
先选择低模。
点击进入卷展栏,然后点选,拾取高模,设置如图:
这时候你会发现在修改面板里增加了一个修改命令,并且模型也会表面也会出现一个蓝框,如图:
点击卷展栏,再点击,出来的对话框中,选择法线贴图,然后设置贴图大小,和将这两个打上勾。
设置如图:
设置完成,下面开始渲染法线。
法线效果,如图:
下面将法线贴图贴在低模上后,渲染查看效果,如图:
左边高模,右边低模法线效果的体现,取决于光源,下面通过打灯后,渲染效果,如图:
这个法线贴图,我是通过默认的渲染器渲染的,你也可以尝试下其他的渲染器,渲染的感觉。
我就不一一说明了,设置都一样。
如果还想丰富前面的法线效果的话,可以通过PS来处理。
譬如说加上些划痕之类的细节。
法线贴图的制作方式很多,有利用2D图片在PS里面制作出法线效果的,也有在3D软件里面渲染法线效果的,也有利用其他软件直接生成的,但每一种方式产成法线都一样,它们共同目的也都一样。
方式不一样,是因为它们的需求不一样,譬如说一个非常复杂的人物模型的话,要是直接导入到MAX里面渲染,会死机的,除非电脑非常的好,要不然会直接死掉,动都不能动。
但是利用其他软件产成的话,速度会比较快,同时不会像MAX那样,占用太多时间,当然速度的快慢还是得根据电脑配置来决定。
产成法线贴图的其他软件,在我的BLOG里的友情链接的网盘里面有这些软件,下面我将它们的名称给写上去,方便你们下载。
最后感谢你们能抽空出来阅读我的文章,同时有做的不好的地方,可以在我的BLOG 里面留言提出你们的好意见,如果你满意的话,帮忙顶下。
谢谢!。