norma贴图
- 格式:doc
- 大小:315.00 KB
- 文档页数:5
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、切线空间 法线贴图中存储的法线最初是定义在世界空间中,但在实际中,这种⽅式很少见,因为只要物体移动,法线贴图则不再有效。
另⼀种⽅式就是将法线存储在物体的局部空间中,物体可以进⾏刚体变换(平移,旋转,缩放),法线贴图依旧有效,但是这种⽅法并不能应对任何⽅式的变换,并且法线贴图不能在不同物体进⾏复⽤,增加了美⼯的负担。
凹凸贴图、法线贴图、置换贴图Warband 的模型相对于1.011又前进了一步,现在大多的服装都加上了法线贴图,看起来细腻了很多而原先我们只能在墙壁、树皮上看到一点法线贴图的效果....所以下一轮的模型设计,这个元素是热点..... 先转这篇文章过来谈谈概念,二楼讲如何制作。
其实我本人对模型制作、3D之类完全外行,转这个只是想抛砖引玉,欢迎大家讨论,灌水顶贴就不必了。
首先我想说,对于凹凸贴图在计算机图形领域中的研究,最早开始于70年代末,至今已经有接近30年历史了。
NormalMap只是一种目前很流行的凹凸贴图技术,而这里将会介绍一些目前游戏和在XBOX360和 PlayStation3这种新世代主机上将会运用的凹凸贴图技术。
BumpMapping 凹凸贴图做过CG的朋友一定比 FXCarl还要更早的认识BumpMap。
这种贴图是一种灰度图,用表面上灰度的变化来描述目标表面的凹凸,因此这种贴图是黑白的,如果节省空间的画,甚至可以把贴图的Alpha通道征用来用作Bump。
值得注意的是,这种贴图表面上存储的东西是高度域--即每个点和原始表面的高度差,记住,每个点的颜色不是色彩,是高度,一个数值!因此,对这个贴图做任何的操作都会影响到这个物体3D的外观质感。
不能凭感觉用事。
在游戏中,所使用的算法确切的说应该叫做fake bump mapping ,假凹凸贴图。
因为在游戏中BumpMap并没有改变物体的表面而只是影响光照的结果,欺骗眼睛而已。
最简单的做法是,直接把BumpMap叠加在已经渲染好的表面上,造成亮度上的扰动,从而让人以为是凹凸的--这个很容易理解,把一面白色的墙面有技巧的部分划成灰色就会变成蚀痕,这些诸位会比小的更擅长。
而计算复杂度是基本加减法。
这个所谓的 FakeBumpMapping 从Geforce2就开始硬件支持,但是从来没有大范围的应用过。
不过有趣的是,BumpMap这个东西却从未过时,在后来的渲染算法中,其储存表面高度域的特性仍然发挥着巨大的作用。
Maya环境中,通常使用三种贴图:2D贴图,3D贴图以及Env环境贴图。
3D贴图是由Maya 内置的3D纹理节点生成,在这就不做讨论了,一般用于生成特殊的程序纹理;环境贴图与3D 贴图类似,所不同的是环境贴图无明确的空间范围,常作为场景中的环境特效构成;2D贴图是我们最常用的贴图方式,也就是导入平面图形格式到模型的材质属性,如漫反射,高光,反射等。
以效果表现来看,2D贴图又可分为材质贴图,凹凸贴图和置换贴图三种:材质贴图SurfaceMaterial表现的是模型的纹理构成;凹凸贴图BumpMap以虚假的起伏效果来丰富模型表面;置换贴图DisplacementMap则改变模型的表面结构,形成真正意义上的凹凸效果。
NormalMap法线贴图,在Maya中属于BumpMap凹凸贴图计算起伏效果的方法之一(Bump,Normal),包括Tangent Space Normals(切线空间法线)和Object Space Normals(物体空间法线)两种表现方式。
构成图如下(仅个人观点,不作权威认证……):动画常用Bump方式进行起伏效果的模拟,而游戏因为特殊的硬件要求,采用的是Normal法线贴图(图形硬件渲染总是要比软件渲染快得多)。
Bump方式是参考贴图的AlphaGain(透明增益)计算的起伏效果,而Normal方式则计算物体法线方向来实现起伏。
但无论何种方式,都不能真正意义上实现物体凹凸,尤其是表面起伏较大的凹凸。
至于法线贴图的构成机理就不做分析了(除非你想在2d的绘图软件如Photoshop中完成3d法线贴图的绘制……),我只以实际效果进行说明。
1.首先,创建两个“经典”的球体(无论是动画还是建模,球体是众人青睐的对象……)2.赋予球体Lambert材质后,将fractal(碎片)节点连接到BumpMapping节点上;接着点击材质属性面板右上方的“GoToInputConnection”按钮,进入“输入连接”的节点-bump2d3.保持左边球体的UseAs默认方式,即Bump;将右边的球体的UseAs更改为“TangentSpaceNormals”4.此时,保持默认场景照明的情况下,进行高质量显示来观看模型的变化(视图上方菜单Renderer->HighQualityRendering):Bump贴图方式显示出物体表面的起伏效果;Normal方式起伏效果不明显,仅以物体颜色显示,这是因为法线贴图是以彩色进行识别的,当前图片信息不足5.先不管凹凸效果的问题,继续测试。
学IT技能上我学院网Unity3DNormalMap法线贴图简介什么是法线贴图?在游戏中,如果角色或物体模型做的越精细(面数越多),那么渲染后效果也就越好,但很多时候处于对时间成本而通过其它的一些技术手段来达到相似的效果.而应用的最广泛的可能就要数法线贴图了,在有光照的环境下,如果物体表面是凹凸不平的,那么它在接受光照的时候在不同的区域就会呈现出不同的明暗效果来展现这种凹凸感。
我们介绍过漫反射和镜面反射的计算中我们都用到了物体表面的法线,正因为物体表面法线的不同才导致了最终光照结果的不同,如果我们能够把整个模型表面各个位置的法线映射到一张二维贴图上,然后在这张贴图上存储上法线的信息,不就可以达到通过底模+二维贴图达到高模效果了么?而这里的二维贴图就是我们所说的法线贴图.为什么叫它法线贴图呢?它和我们之前一直使用的纹理贴图有何区别呢?纹理贴图中我们存储的是颜色值RGBA,而法线贴图里存储的是物体表面的法线,两类贴图的读取映射方式都是一致的,都是通过顶点自带信息里的texcoord里的uv坐标来读取,不过法线读取之后并不能直接使用,还要经过一些处理,我们会在后面说.下面在正式进入代码之前,我们先来了解几个知识点,很重要。
1.切线空间这个概念并不是十分好理解,但只要仔细想想也是可以弄清楚的。
我想大家对本地空间一定不陌生,一般美术做完的模型里面每个顶点的坐标都是本地坐标,也就是说对于模型上的各个部位共用一个一个统一的坐标原点,但有时候这样并不是很方便,比如建了一个人体模型,如果我们只是想以相对手为基准而进行一些动作,而不是坐标原点,这时候原本的本地坐标系便不再适应。
我们可以以手臂为基准再建立一个坐标系。
综上不难理解,之所以存在不同的坐标系,根本上是为了方便我们只考虑相关的因素,而排除不相关的因素。
就像如果我想以手为基准进行一个弯手指的操作是不需要考虑我这个手指在模型空间的位置坐标的,这样有效的降低了问题的复杂度。
Blender材质贴图的制作和应用技巧Blender是一款功能强大的开源3D建模和渲染软件,提供了丰富的材质贴图制作和应用技巧,让用户能够更好地表现出模型的真实感。
在本教程中,我们将介绍一些Blender材质贴图的制作和应用技巧,帮助您提升模型的质感和真实度。
首先,让我们来看一下Blender中材质贴图的基本概念。
材质贴图是用于给模型表面添加颜色、纹理和细节的图像。
在Blender中,材质贴图通常由漫反射贴图、法线贴图、粗糙度贴图和光泽度贴图等组成。
这些贴图可以通过UV贴图制作,也可以使用纹理绘制工具或者在外部图像编辑软件中制作。
制作材质贴图之前,我们需要先在Blender中创建一个材质。
在“属性”窗格的“材质”选项卡中,单击“新建材质”按钮来创建一个新的材质。
接下来,我们可以开始制作材质贴图。
首先,让我们来制作漫反射贴图。
漫反射贴图用于模拟表面的颜色和光照反射。
我们可以使用几种方法来制作漫反射贴图,比如使用外部图片编辑软件,将绘制的纹理导入Blender中。
或者在Blender中使用节点编辑器来制作。
在节点编辑器中,我们可以使用“Image Texture”节点来添加并设置漫反射贴图。
在节点编辑器中,我们连接一个“Diffuse BSDF”节点和一个“Image Texture”节点。
然后,在“Image Texture”节点中导入我们准备好的漫反射贴图图片。
接下来,将“Image Texture”节点的“Color”输出连接到“Diffuse BSDF”节点的“Color”输入。
通过调整“Diffuse BSDF”节点的颜色和强度,我们可以修改漫反射贴图的效果。
接下来,让我们来制作法线贴图。
法线贴图可以让模型表面看起来更加真实,并模拟出凹凸不平的效果。
制作法线贴图的方法有很多种,比如使用外部纹理工具或者在Blender中使用节点编辑器。
在节点编辑器中,我们可以使用“Normal Map”节点来制作法线贴图。
次世代游戏场景制作的注意事项目录次世代游戏场景制作的注意事项 (1)一、建模 (3)二、贴图 (4)三、光滑组 (5)四、Normal Map 的制作的注意事项: (7)五、场景中的nomalmap 制作 (7)六、AO贴图制作 (11)七、贴图制作 (13)一、建模模型布线应该合理利用,(次世代的风格建议从中间模型或者高模做起),并且尽量节省。
每个点每条边都要有存在的意义。
不需要所有的部件都在一个模型建立出来。
可以组合方式来制作,对于需要NORAML MAP 来制作的要根据模型结构来决定,结构比较明显的最好用模型来制作。
模型的组合模型上需要结构来表现的不要用NORMAL MAP 来做。
这个其实也很好判断,比如你可以在制作场景或者物件的时候,设定一个尺寸,比如说10CM 那么超过10CM的需要模型来制作,低于10CM的用normal map 来制作,这样你会比较好控制模型的制作,也能准确的来判断今后的贴图制作。
二、贴图贴图精度要符合项目要求所需要达到的分辨率。
应该使用CHECK图来进行检查。
避免物件之间分辨率有过大的差异。
UV的分法有很多,但目的是要UV在不拉伸的情况下以最大的像素来显示贴图。
三、光滑组光滑组:平滑组定义了是否使用边缘清晰或平滑的曲面渲染曲面。
从下面的例子可以看出光滑组在制作normal map的区别。
高模的倒角信息不管是否使用了光滑组都被BAKE 到了normal map上,但是使用了光滑组的normal map会有明显的信息来计算模型的方向性。
并且没有添加光滑组的模型看起来边角过于锐利。
同下的例子:这个例子也很明显的看到了,没有添加光滑组的模型即使使用了normal map 看起来也就是低模来制作的,而右边的模型使用了光滑组,在通过使用normal map看起来更像是高模。
●光滑组的使用还涉及到模型点数的问题,有些项目会要求模型以点数来计算。
光滑组的使用会影响到模型点数的增加,这个会根据项目不同有所要求。
Normal mapNormal map,法线贴图,用RGB色彩记录模型在法线上的高度信息,在可以支持normal map的渲染器中可以用来模拟凹凸贴图。
与一般的凹凸贴图不同的是normal map能够对灯光起反应,模拟出凹凸及凹凸产生的高光和阴影。
但这一切仅仅是在模型的面上,当你从一个面片的侧面观察时,它仍然只是一个平面,不能够像凹凸贴图那样产生真正的凹凸效果(与displacement贴图有所不同)。
normal map有很多制作方法,下面我向您介绍三种不同的制作方法。
1,使用MAYA制作,先在低模的基础上制作高模,然后生成normal map(注:6.0以上版本可以使用Normal map,只有7.0版本支持软件渲染normal map)2,ZBrush.(使用ZMapper插件)。
仍然需要在低模的基础上制作高模,然后导出到ZBrush 进行进一步雕刻制作。
效果比单纯使用MAYA制作更好,但较费时。
3,PhotoShop(使用插件NVIDIA Normal Map Filter)。
在PhotoShop里直接将模型的贴图的灰度信息转为RGB色彩,从而生成normal map。
效率极快,但效果比以上两种差很多。
Normal map效果示意:在这个四边形面片上的材质,已经赋予了一张normal map贴图。
它会产生凹凸,并根据灯光的位置来产生高光及阴影,模拟bump贴图的效果。
但它并不是真正的bump贴图,从侧面观察时,它仍然只是一个面片。
Normal map的制作方法一,使用MAYA制作Normal map(6.0以上版本。
)首先打开MAY A,在plug-in manager中加载MAY A自带的插件transfersurfaceinfo.mll首先,我们必须拥有两个分好UV的模型,一个低面数的模型和另一个有相同UV的模型。
在这里,我通过两个面片来阐述这个方法。
1.一个面数为1的平面,和一个面数为900的平面。
使用法线贴图增加表面细节在三维建模和渲染中,法线贴图是一种常用的技术,可以增加模型的表面细节,使其看起来更加真实。
通过使用Blender软件,我们可以轻松地创建和应用法线贴图。
接下来,我将介绍一些关于如何使用法线贴图来增加模型细节的技巧。
首先,我们需要一个高细节的模型和一个低细节的模型。
高细节的模型可以通过雕刻或扫描等方法获得,而低细节的模型则是我们要应用法线贴图的目标。
在Blender中,我们可以使用Sculpt Mode或者创建基础模型来制作高细节模型。
接下来,将低细节模型导入Blender,并选择它。
然后,按下Tab键进入编辑模式,选择模型的全部面,按下Ctrl + E,选择“Mark Seam”来标记拆缝。
这将有助于后续步骤中的展开UV。
现在,按下Tab键回到对象模式,并将高细节模型导入到Blender 中。
选中低细节模型,然后按下Tab键进入编辑模式。
选择高细节模型中的索引,并利用布尔运算工具将其与低细节模型融合在一起。
这样,低细节模型将获得高细节模型的细节信息。
接下来,我们需要为低细节模型创建UV映射。
选择低细节模型,按下U键并选择“Unwrap”来展开UV。
确保模型的UV映射与其表面拓扑一致,以确保法线贴图的应用效果。
现在,我们可以开始创建法线贴图了。
选择高细节模型,进入渲染选项卡。
在材质板块中,点击“New”来创建一个新的材质。
然后,选择“Use Nodes”以启用节点编辑器。
在材质的节点编辑器中,添加一个“Normal Map”节点。
将高细节模型的模型数据输出连接到法线贴图节点的颜色输入。
然后,将低细节模型的模型数据输出连接到材质输出。
这样,Blender将会应用法线贴图的效果。
现在,我们需要为法线贴图创建一些纹理。
打开节点编辑器中的纹理面板,并点击“New”以添加一个新的纹理。
然后,选择“Image or Movie”并导入您的法线贴图。
调整纹理的参数,如尺寸和平铺,以适应您的模型。
如图,为同一个模型准备一个低模,一个高模。
在高模的表面可以有很多细节。
将低模和高模放在相同的位置,然后在Rendering模块下执行Lighting/Shading | Transfer Maps,如图。
在弹出的窗口中,设置Target Meshes为低模,Source Meshes高模,分别在Outliner中选择相应的模型,使用Add Select按钮添加。
之后单击Output Maps标签下的Normal,即选择输出法线贴图。
然后在下面设置贴图存储路径和名称,设置法线贴图的格式,这里我们选择FF格式。
其他参数如图,最后单击最下面的Bake按钮,即可生成法线贴图了。
注意法线贴图的存储路径和名称不要含中文,否则会出错。
最后我们生成的法线贴图,如图。
打开Hy pershade,MAYA会自动将生成的法线贴图作为凹凸贴图连接到一个Lambert上,并赋予低模,如图,注意这里Bump Map的Use As选项是Tangent Space No rmals,而不是以前常用的Bump。
渲染,如图,体会法线贴图与普通的Bump贴图的不同。