3D游戏中法线贴图技术的应用

时间:2022-06-17 12:43:46

3D游戏中法线贴图技术的应用

摘 要 法线贴图是目前先进的凹凸表现技术,法线贴图对游戏画面的表现力有着巨大提升。本文主要从法线贴图的原理、应用中存在的问题以及与视差贴图的关系等几个方面进行了探讨。最后通过实例的方式展现其在3D游戏中的使用方法。

关键词 法线贴图;视差贴图;3DSMAX ;低模;高模

中图分类号TP399 文献标识码A 文章编号 1674-6708(2014)119-0163-03

在3D游戏制作中,逼真、细腻的画面效果与运行效率存在着的矛盾。游戏制作人员运用各种技术手段减少模型面数来提高游戏运行效率,而通过由高模产生的法线贴图可用在与其对应的低模上,以保留高精度模型的细节,这样可在不增加模型数据量的情况下,以实现逼真的凹凸纹理。

1 法线贴图的原理

一个表面的凹凸信息可以通过每个点的法线向量在RGB通道中记录并保存下来。使用贴图的时候根据记录的法线向量来实现视觉上凹凸效果。法线贴图的颜色看起来有些奇怪,这是法线贴图的RGB值取得并不是颜色,而是每个点的法线向量的三个分量,一个三维向量由X、Y、Z等3个分量组成,以这3个分量当作红绿蓝3个颜色的值存储,如图1所示。

2 法线贴图的应用以及存在的问题

使用法线贴图可以将高精度模型的细节转换为一张图,然后将其应用在低多边形的模型上,通过渲染以实现所要表现的细节,这大幅减少了实际需要计算的模型面数,加快了显示和渲染的速度。我们除了通过计算高精度模型的凹凸细节和低精度模型之间的差值来获取法线贴图外,还可以使用PHOTOSHOP软件,按照法线贴图的颜色来制作,但这种通过绘制的方法得到的法线贴图,并不准确,在游戏模型的制作中用的不多,所以得到法线贴图的最常用方式还是通过高精度模型与低精度模型的计算而得到的。

在使用法线贴图时,我们都知道视角接近水平时法线贴图的缺点很明显,法线贴图只是改变了的表面上的光照结果,并没有像置换贴图那样实际改变模型的形状,这给游戏模型的制作过程中带来的具体问题就是:在模型边缘处有着明显的接缝,接缝的部分无法让模型产生所谓“真正”的细节。另一个方面,法线贴图也无法实现自身内部的遮挡,不能够有效解决解决更大的凹凸情况,在表现平面上凹凸起伏较大的场景时效果不佳,在游戏制作中,它只能用在对遮挡关系不敏感、凹凸起伏不大的场景中。

3 法线贴图与视差贴图的关系

为了解决法线贴图弊端,在法线贴图的基础上出现了新的视差映射贴图技术。视差映射贴图在控制纹理的技术上有了进一步提高,打开它的阿尔法通道,你会看到在阿尔法通道中除了储存有与法线贴图相同的信息外,还有通过饱和度来记录表面凹凸高度信息的功能,这一点是法线贴图所不具备的。由于在阿尔法通道中记录有表面凹凸高度的信息 ,这样就可以实现一个表面前部的凹凸纹理能够遮蔽到后面的纹理,这样就具有更为符合实际情况的凹凸效果。视差贴图和法线贴图在原理上、使用方法上基本是一样的,我们可以把它理解为一种功能增强的法线贴图,视差贴图为游戏玩家提供了比法线贴图更好的视觉效果,而对于游戏美术制作人员来说,这种功能增强的法线贴图也能保证游戏模型真实性的情况下,大幅度降低模型的面数。

视差映射贴图作为虚拟3D领先的技术,其在游戏画面上视觉效果也已经达到了非常逼真的程度,但是视差映射贴图与法线贴图一样该变不了模型本身,这是他们技术的本质所决定的,这也是法线贴图、视差贴图的共有缺陷――游戏玩家的视角和平面的夹角接近于平行的时候侧面看起来永远是平的。视差贴图比法线贴图的优点表现在,在相对视角会发生一定的变化时,尤其在入视角接近水平时,仍能获得不错的质量,图2中的对比可以看出,入视角接近水平时,左侧的视差贴图要比右侧法线贴图效果更好。

4 Zbrush高精度模型在3DSMAX中文版中的应用方法

下面我们以游戏角色头部模型为例讲解如何使用法线贴图技术将高精度模型的细节应用到低精度的游戏模型上的。

第一步:Zbrush中制作低模和高模,低模通过高模降级获得,并将将低模和高模分别命名为:low-model和h-moel, 如图3。

然后以OBJ格式导出,将导出的的low-model在3DSMAX中将UV 拆分分好,uv不能出现重叠,高模不用拆分UV。如图4所示。

第二步: 将高模和低模导入在3DSMAX进行适配,以减少模型的差异性。然后在3DSMAX中将模型转化为多边形物体,然后再修改面板中选择使用nurms细分选项,设置Iteration值为0,这样我们就为模型设置了光滑,但没有增加模型面数。

第三部:在渲染菜单中找到渲染到材质命令,展开全局设置栏栏并在输出选项里设置好输出的路径,在视图中选择先导入的低模,在渲染到材质窗口中在烘焙到物体栏里面会显示所选的物体信息,在投射贴图命令中将其激活,接着点击拾取按钮,在弹出的对话框中再拾取高模,同时在低模的修改面板中将会增加一个修改器“投射”,在投射一栏中展开Cage并点击Shaded和reset,修改其参数值,同时在透视图中观察模型尺寸的变化,以保证模型外部类似于的蒙皮的外框要包住高模和低模。

第四步:在映射坐标一览里勾选“物体“ 的Use Existing Channel,打开输出栏选项后点击增加按钮,在弹出的窗口中选择法线贴图选项,再点击增加元素按钮,适当调整法线贴图的尺寸,设置图片输出分辨率为1024*1024,勾选Output into Normal bump,点击渲染按钮,即可将其渲染出来,渲染的时候使用可以使用默认的扫描线渲染器。

下图为渲染出来的法线贴图效果,(红色部分是模型修改后,部分面被删除后的部分,可以在PHOTOSHOP中将红色部分删除),如图6所示。

第五步: 渲染好的法线贴图保存好以后,在3DSMAX中按“M“打开材质编辑器,选择一个默认的布林材质并命名,然后将材质指定到低模上,点击在视图中显示贴图按钮,在材质球的贴图栏里里的凹凸贴图通道中添加法线凹凸,然后在法线凹凸里面的法线一栏里 里选择上一步制作好的法线贴图,如图7,这时我们在透视图中就可以看到法线贴图带来的凹凸效果,但其效果与高模中的雕刻效果并不一样。有人会错误的认为3DSMAX不能很好的支持法线贴图,其实这是个操作问题,我们可以再选择一个预先准备好的参数配置文件,或是3D贴图插件进行修改,然后通过默认渲染器可以看到最终渲染完成的效果,如图8所示。

图8中左图展示了法线贴图在低模上在渲染效果,左图的低模只有771个面,在正确使用了法线贴图后,我们却得到了有几十万个面的高模效果。

5结论

首先,在ZBRUSH中可将高模、低模同时制作出来,使用法线贴图时对3D模型UV的拆分要求较高,应避免重叠UV。高模无需拆分UV。低模要进行光滑后,法线贴图才会生效。低模在体积上要略大于高模,高模仅提供法线的细节。应用法线贴图时会出现接缝,需要在PHOTOSHOP或是其它方式中对贴图进行处理,最后通过法线贴图的合理运用可为3D游戏带来运行高效而在画面上又不失细节的作用。

参考文献

[1]Rouse R.游戏设计原理与实践[M].尤晓东,译.北京:电子工业出版社,2003.

[2]珍妮.诺瓦克. 游戏设计完全教程[M].糜晓波译. 上海:上海人民美术出版社. 2008.

[3]CG杂志年鉴编写组 华人3D作品年鉴・2002.中国电力出版社,2003.

上一篇:广播电视技术中常用的视频模式探讨 下一篇:让数学回归生活,让生活走进课堂