maya法线教程.docx

上传人:b****8 文档编号:10102246 上传时间:2023-02-08 格式:DOCX 页数:58 大小:2.01MB
下载 相关 举报
maya法线教程.docx_第1页
第1页 / 共58页
maya法线教程.docx_第2页
第2页 / 共58页
maya法线教程.docx_第3页
第3页 / 共58页
maya法线教程.docx_第4页
第4页 / 共58页
maya法线教程.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

maya法线教程.docx

《maya法线教程.docx》由会员分享,可在线阅读,更多相关《maya法线教程.docx(58页珍藏版)》请在冰豆网上搜索。

maya法线教程.docx

maya法线教程

1、简介

这个角色是我参加DominaceWarII大赛——低多边形游戏角色设计——的参赛作品,大赛对模型的多边形数量和纹理大小作了相应限制——主要角色不得超过6000个三角形,附加1000个三角形左右的武器或装备,角色可带宠物,但三角形数量要和主要角色一起计算;主要角色和宠物的纹理合并在1张2048的正方形贴图里,武器和装备的纹理总计为1024大小,可以使用漫反射、高光、法线、凹凸、不透明度、辉光和反射贴图效果。

image002.jpg(38.1KB)

设定

模型

纹理

动作

2.游戏建模流程

现在几乎所有的游戏内角色都使用mormalmaps法线贴图,通常需要制作出角色的高精度版本,烘培出法线贴图后应用到低多边形模型上。

不过高精度模型也不是必须的,法线贴图的制作方法比较***,比如使用凹凸贴图即可,甚至可以直接手绘(后面我会为你介绍Photoshop绘制法线贴图的相关技巧),当然效果可能没有使用高精度模型烘培来的好。

创建一个角色需要的素材一般包括

.低多边形版本(或根据不同LODs-镜头距离-的多个版本)。

.高分辨率版本,用来生成法线贴图(可同时烘培occlusion闭塞贴图或其它贴图来辅助生成最后的纹理效果,具体参照4.3)。

.游戏引擎支持的所有纹理贴图效果(漫反射、法线、高光等常用贴图效果)。

下面,在做好设计图的前提下,我来介绍建模/贴图的各个步骤。

建模时有两种主要方法(即素材创建的先后顺序不同)。

.低多边形->漫反射贴图->高分辨率模型->法线贴图及其它纹理

.高分辨率模型->低分辨率模型->法线贴图->漫反射及其它纹理

操作正确的话,两种方法的最终效果是一样的,具体选择哪种需要看工作习惯和流程安排。

我个人倾向于后者。

尽管通过-低/漫反射/高-的方式有一些优点:

比如低多边形模型可以很快进入下一个流程制作动画;如果漫反射贴图保留了详尽的选区,可直接作为置换贴图应用到高分辨率模型上。

但是,它有一个非常大的缺陷——我会在下面用简单的图例指出。

这是一个带漫反射纹理的模型片段(带几粒扣子的Tshirt)

接下来将多边形导入mudbox,同时读取漫反射贴图,增加细分等级,并根据贴图添加相应位置的模型细节-比如衣服的皱折。

image009.jpg(7.85KB)

使用漫反射贴图制作出置换贴图,为模型增加进一步的细节(使用置换贴图可以加快处理速度,同时可以保证计算出的法线贴图与漫反射贴图的细节位置尽可能接近)。

image010.jpg(13.89KB)

上述工作完成后,将细分模型导入maya/3dsmax或其它软件中使用光线追踪计算法线贴图。

如果处理得稍有不慎,就会遇到下图的错误。

image011.gif(47.18KB)

可以看出法线贴图和漫反射贴图的细节没有完全对齐...这是因为我在雕刻时模型的位置可能稍稍有所变动;另外尽管我使用置换贴图来生成纽扣这样的细节,但不能保证光线追踪下法线贴图和漫反射贴图能够完美的叠加到一起。

如果想避免这种情况的发生,要尽可能降低原低多边形模型的置换贴图的强度。

使用Zbrush可以降低这个问题的影响。

它使用自己内部的运算法则代替光线追踪来计算法线贴图,计算时会把细分等级一并考虑进去,但这样计算出来不能在其它软件或引擎中正确显示出来,比如会有贴图接缝。

我使用的所有软件在法线贴图的切线区间算法上都有少许不同。

最好的解决方法是在同一软件中计算并渲染法线贴图。

比如本例中我使用Maya渲染,因此必须在maya中计算出法线贴图,以确保得到正确的渲染效果。

如果在Maya中计算法线,在MentalRay中渲染,就需要在RenderSettings->mentalray面板->Translation->Performance里钩选MayaDerivatives(这个选项默认为关闭)。

这将强迫MentalRay使用兼容Maya的算法进行凹凸贴图的渲染计算,注意该选项只有在钩选ExportPolygonDerivatives后才可用

第二种建模方法:

高/低/UV/纹理。

这种方法可以省却上述的诸多麻烦,为模型雕塑和细节添加带来更多***度。

在制作高分辨率模型时,时刻记住它的目的是用来烘培法线贴图的,哪些细节必须建模,烘培成贴图贴图能否适当的表现出来,都是需要考虑的环节。

用下面的图片举个简单的例子,假如我有这样的一组高分辨率模型。

image012.jpg(10.21KB)

我可以只用一个平面就表现出来,但效果没有高分辨率的好。

从正上方看几乎一样。

image013.jpg(6.71KB)

但从侧面看就露馅了。

image014.jpg(3.92KB)

更好的方法是增加一点多边形,让低多边形模型的形状与高分辨率模型相匹配。

image015.jpg(6.43KB)

再贴上法线贴图后,从侧面看效果就好多了。

(当然,根据多边形的分布状况,你可以相应的增加多边形数量来降低坑坑洼洼的粗糙效果)

image016.jpg(4.92KB)

另外,模型还要避免过于复杂的结构,比如下面的例子,诸多管线很难套进低多边形框架里,想要正确显示出来又会吃掉太多面数。

或许此图的细节在高分辨率模型看起来效果会很好,但做低多边形版本的时候,一定要把面数预算考虑进来——通常是5-10k三角形。

如果一开始没有规划好高分辨率模型的细节,你就会遇到上图的尴尬情况——需要比定额更多的面数才能正确匹配高分辨率模型的结构,甚至返回来高分辨率模型。

不用紧张,多做几次你就能对模型细节的取舍有一个大体的把握了。

另一个巨大的优势是可以利用高分辨率模型的细节烘培ambientocclusion环境闭塞贴图(模拟全局光效果,让纹理看起来更真实)及其它贴图,从而为后面的纹理制作环节打下良好的基础。

image017.jpg(17.81KB)

3.工具的选择

在开始展示Varga的制作流程之前,我先来介绍一下这个项目所用到的工具。

首先是我的电脑,工作时遇到的大部分限制都是来自于这些硬件配置:

.athlonxp2500+@2400(不过超频对机器不好)

.1GB内存

.GeForce6600GT显卡

你可以想象这么一台老机器对我建模上会有怎样的限制——在Mudbox中虽然可以增加到2M多边形数量,但显示会非常缓慢;Maya中导入1.5M多边形数量以上的obj文件就会经常出错退出(内存不够),只能将模型分成头、腿、手臂等片断逐个导入。

想要正常操作而不出错退出,这台机器的极限也就在1M三角形左右。

作为Maya用户,软件方面我主要使用Maya进行建模、UVs、纹理烘培和渲染。

高分辨率的雕刻工作使用Mudbox完成(在Maya中建立低多边形框架,导入Mudbox添加细节)。

雕刻完成后导出一个高细分等级的obj文件(通常为100-300k三角形数量即可,不用细分的太高)并导入Topogun(重建拓扑结构的游戏向软件)沿低多边形机构重建拓扑。

再之后将模型的高低分辨率版本导入回Maya,并用贴图转换工具计算法线贴图。

法线贴图可在Photoshop中作进一步调整,有些可在Photoshop中直接完成。

4.Varga工作流程

游戏角色有一些共性:

三角形面数限制,纹理尺寸和数量限制;纹理尺寸和数量限制必须严格遵守,但如果模型面数超出500-1000个三角形(比如预算为8k面)并且能够提高角色的外观效果,那么客户也能够接受。

这次比赛的限制是6k,我不打算超出面数,因此首先要建一个低多边形的框架来分配角色、宠物、武器之间的面数比例。

这不是最终成品,但可以让我只管的了解到那些细节可以加入到高精度模型中。

4.1.低多边形框架

下图是角色最初的低多边形框架的各阶段回放。

image018.gif(345.02KB)

下载次数:

0

模型完成后,我对角色、宠物和武器的面数分配有了较全面的把握。

接下来将模型断开,理顺网格——整理拓扑结构,尽量使用4边形,减少三角形,避免点的共享边超过4条。

从而在雕刻时对模型表面的细分和边形更易掌控。

下图为整理好的模型网格,准备导入Mudbox作进一步处理。

image019.jpg(15.98KB)

4.2.Mudbox中添加细节

接下来将低多边形网格导入Mudbox,在你机子的能力范围内狂加细节。

对我来说,这是整个流程中最有乐趣的环节。

下面是一些模型的处理回放。

靴子(最高细分等级略低于1M个三角形)

image020.gif(200.22KB)

臀部(最高细分等级大约1.6M个三角形)

image021.gif(147.24KB)

腿(最高细分等级大约500k个三角形)

image022.gif(256.03KB)

手臂(最高细分等级大约600k个三角形)

image023.gif(330.1KB)

躯干(最高细分等级大约800k个三角形)

image024.gif(324.9KB)

下图为完整的高分辨率模型:

8.5M个三角形(为了做这个教程,我在新机子上把所有模型片断都导入进maya,结果maya吃掉了3.5G内存)。

image025.gif(39.57KB)

现在有趣的环节已经over了,我又重新捡起最开始做的低多边形框架,参考高分辨率模型再次调整它的形状,使其互相匹配。

Topogun在这里可以大派用场,导入低多边形框架,并使用高分辨率模型作参考,根据需要改变拓扑结构,确保低多边形模型能够通过法线贴图体现出高分辨率模型的精彩之处。

image026.jpg(15.32KB)

当然,模型还是分段进行处理的。

完成后就可以进入下一个阶段:

烘培法线贴图。

4.3.烘培贴图

高低精度的模型都准备停当,还等什么,就差贴图了。

对于展开UVs,你有很多工具可以选择:

UVLayout、Unfold3D、PeltMapping等等。

我试用过其中的HeadusUVlayout和Unfold,虽然更智能、效果可能更好,但还是觉得Maya用起来更顺手。

UVs展开的步骤在此就省略,因为据我所知很多人根本就不用Maya做UV贴图,所以就不白费力气了。

有个小技巧可以在展开UVs时避免变形:

切割模型的时候,略微缩小切割范围(比如手臂和腿,取它们中间那段);另外,根据高分辨率模型来打断UVshell(比如靴子做一个shell,腿再做一个shell)

UV完成后准备烘培法线贴图和其它需要的贴图。

我使用Maya自带的TransferMaps来完成这个任务(类似于3dsmax的rendertotexture)

下面用靴子来举例:

——将靴子的高低精度版本同时导入Maya,确保两者重叠对齐。

——打开TransferMaps对话框(Lighting布局/菜单Rendering/Shading->Transfermaps)

image027.jpg(18.39KB)

下载次数:

0

TargetMeshes里点击addselected,选择低多边形版本;在SourceMeshes中点击并选择高分辨率版本。

如上图所示。

(如果你没有指定SourceMeshes的话,Maya会默认对场景所有物体进行采样)

——TargetMeshes的Display选项中选择Envelope

image028.jpg(14.54KB)

——这将创建一个可编辑的Envelope包络网格,类似于低多边形模型的复制品,用来查看与SourceMeshes的包裹情况,可以通过Searchenvelope滑杆来调节大小。

如果想要得到好的效果,你需要让包络网格完全包裹住高分辨率模型(如下图右1所示)

image029.jpg(30.66KB)

——如果缩放造成的差距太大的话烘培也会出错,因此需要在包与不包之间找一个平衡点,基本上达到下图的程度就ok了。

image030.jpg(12.09KB)

——进一步调整包络网格的点/边/面,把高分辨率模型露出来的那部分完全包进去

然后选择你想要烘培的贴图,我选了法线贴图。

(如果你机器好的话也可以烘培ambientocclusion环境闭塞贴图,我的那台太慢了,为了赶时间只好用MentalRay烘培带有法线贴图的低多边形模型,速度快了很多,效果也勉强能接受)

image032.jpg(30.44KB)

当然,还要选择保存路径,设置文件格式、贴图尺寸等细节参数。

注意SearchMethod要设为InsideEnvelopeOnly。

——现在点击Bake按钮开始烘培吧。

——需要注意一点,在点Bake按钮前先保存场景文件。

因为渲染完成后Maya会清空包络,而你可能还会用到它(尤其是费了很大劲才把高分辨率模型包好的情况),如果渲染效果不好,你还能返回重新调整。

所以还是存一下比较保险。

——如果效果不好的话,返回transfermaps对话框,重新调整参数设置(如果包络包好高分辨率模型,一般情况下不会有什么错误。

要是你懒得调包络的话,也可以选择"insidethenoutside"或"closesttoenvelope"模式,在某些情况下它们还是能发挥一些作用的,在结构比较复杂很难包好的地方也能派上用场)。

3dsMax的Rendertotexture处理方法与上面类似

——选择低多边形网格,rendering->rendertotexture

——打开projectionmapping贴图映射

——按Pick选择高分辨率模型

——接下来Max会生成一个比较夸张的包络网格

——选择projection修改器

——进入cage自物体,点击Reset,包络网格将会与低多边形模型对齐。

——和Maya一样可以调整包络的大小

——和Maya一样包好高分辨率模型

——调整完毕后,选择低多边形模型,在Rendertotexture对话框中点击render

——如果贴图效果不佳,返回重新调整包络网格

接下来我来介绍省时省力的利用法线贴图、低多边形模型和MentalRay来渲染occlusion闭塞贴图的方法。

(虽然效果不如直接用高分辨率模型来的好,但是会快很多)

比如下面是一个完成后的带有法线贴图的低多边形模型(我拿靴子举个例子,你可以用这种方法一次完成整个角色)

image033.jpg(20.38KB)

做一个大平面,把它放在靴子下面。

image034.jpg(4.48KB)

确保perspectivecamera的环境背景为白色(这样一来,finalgather的光线不用于任何物体碰撞,就能返回白色的信息)。

image035.jpg(21.7KB)

渲染器设为mentalray,确保钩选exportmayaderivatives

image036.jpg(28.47KB)

在RenderSettings->Commontab->RenderOptions中,EnableDefaultLight默认为选中,把它取消掉(确保Maya不会自建默认灯光,让MentalRay全权处理),删除或隐藏场景中的所有灯光。

image037.jpg(23.05KB)

激活FinalGathering(我通常将mentalray面板中的QualityPreset设为Production,并激活FG,将精度提高到1000-1500,其它保持默认)。

image038.jpg(29.38KB)

为低多边形物体添加一个新的Lambert材质,将颜色设为纯白,diffuse值为1。

(为地面添加一个相同设置的材质)

image039.jpg(25.12KB)

下载次数:

0

将材质赋予低多边形模型,并将法线贴图连接到bump通道。

确保bump通道使用tangentspacenormals模式。

image040.jpg(21.13KB)

下载次数:

0

在正式烘培前先用MentalRay渲染测试一下,如果一切ok,就会得到下图所示效果。

image041.jpg(7.01KB)

接下来打开Lighting/Shading->Batchbake(mentalray),在选项中选中bakeshadows以及orthogonalreflection,其它选项如下图所示,文件格式和大小根据你自己的需要而定。

image042.jpg(31.97KB)

点击convert按钮,不出意外的话会得到一个类似下图的纹理

image043.jpg(13.66KB)

怎么样,效果还是可以接受的吧,而且速度很快!

同理还能快速烘培出高光贴图。

重命名并保存场景,关掉FG,删除地面。

低多边形模型材质改为blinn,颜色纯黑,高光颜色为白色,反射值为0。

image044.jpg(34.11KB)

如下图所示建立一组不同方向的灯光,从物体上放照射。

image045.jpg(9.35KB)

烘培选项保持不变,但速度超级快(因为只计算高光)(如果想要更好的效果,可以将纹理分辨率加倍,导入Photoshop加工)

渲染后的纹理如下图所示,你可以将它以screen/colordodge的模式叠加到漫反射纹理上,对于塑料、金属、皮革等高反光材质有显著的提高

image046.jpg(16.86KB)

4.4.Photoshop进一步调整法线贴图

这一节主要讲述法线贴图的工作原理及应用技巧,需要一些基础的数学及向量等知识。

4.4.1.TS(tangentspace)NormalMaps切线域法线贴图综述:

首先来简单说一下关于法线贴图的计算和显示。

我的兴趣主要集中在tangentspacenormalmaps(切线域法线贴图),因为world或objectspacenormalmap不适合角色或可变形物体。

因此除非特别指明,下面我说的所有法线贴图都指的是tangentspacenormalmaps(切线域法线贴图)。

如果你和我当初一样是第一次接触法线贴图(尤其是切线域法线贴图),下面的内容应该有点帮助。

最开始,我真是被“Seam”接缝问题打败了:

一个软件计算出来的法线贴图不能在另一个里正常显示——UV边界上会出现接缝。

我绞尽脑汁想要解决这个问题——读每个软件的帮助文件、作测试、在互联网上搜索...终于了解了这个问题以及它产生的原因,不过还是不能修正它。

这个问题的产生主要在于各个软件计算/显示切线域法线贴图的方式不同。

Tangentspace切线域由3个向量组成:

一个是normal(法线-与表面正交垂直);另外两个与法线垂直,称为tangent(切线)和binormal(副法线)或bitangent(双切线)。

这两个名字我都见过,有人说bitangent(双切线)这个称呼是正确的,毕竟我们讨论的是一个表面——3d空间的曲线的切线域为一条切线两条法线(normal法线和binormal副法线);而表面的切线域为一条法线和两条切线(tangent切线和bitangent双切线)。

其实名字武官紧俏,主要明白说的是什么就行了。

总之这三个向量能定义表面上任意一点,把它们集合在一起就成为了一个坐标组。

一个三角形的切线域通常按下述方法计算:

——NormalVector法线向量与三角形面垂直,用蓝色表示,储存在法线贴图的蓝色通道里。

——tangent切线向量用红色表示,储存在红色通道里;binormal副法线向量用绿色表示,储存在绿色通道里。

它们的方向与UV的方向相同:

切线为左右向,即为贴图空间中的U坐标;副法线为上下向,是贴图空间中的V坐标。

许多法线贴图的设置窗口中都有反转方向的选项,这个方向指的就是tangent切线向量的(左右/右左)方向和binormal副法线向量的(上下/下上)方向,另外一些软件的方向比较特殊。

你也可以在Photoshop的通道中反转方向,比如要反转红色的切线向量方向:

按ctrl+1进入红色通道,按ctrl+I反转,按ctrl+~返回RGB模式(副法线向量同理操作即可)。

image047.jpg(13.91KB)

假如我沿对角线切割UV,并将1号面顺时针旋转90度,而UV空间的旋转,导致了1号面切线方向与与最初的位置发生了变化(1号三角形的rgb通道同样沿蓝色轴旋转了90度)

因此,UVshell的方向会影响到法线贴图的颜色;如果旋转模型的UVs(或其中一部分UVshell),比如顺时针旋转90度,那么重新计算出来的法线贴图颜色就会完全不一样(并不是整张图像旋转了90度这么简单。

你可以在Photoshop中顺时针旋转90度对比一下就会发现区别)。

每个点的切线域计算完成后,还可以通过内插值的方法得出表面上其它任意位置的切线向量,通常tessellation镶嵌细分越多,计算起来就越复杂。

比如Maya上一个版本的法线贴图计算就依靠tessellation镶嵌细分,因此如果你有一个三角面的模型,选择一个边反转,法线贴图就会因为TS切线域的重新计算而无法正确显示。

不过Maya的新版本解决了这个问题:

用专门的工具(比如NVMeshMender)备份所有点的切线数据模型,以用于per-pixellingting——基于象素点(而不是顶点)的照明。

如果采用光线追踪的方式来计算法线贴图,会先从低多边形网格的当前点发出一条光线,投射到该点法线与高分辨率模型相交位置,同时按worldspace计算相交处高分辨率模型的法线数据,最后将计算结果传递回低多边形模型的点上,并储存在法线贴图中。

因此法线的计算是根据低多边形模型的切线域来进行的,而切线域必须由相同的法线/切线/副法线组成,而不同软件间由于切线域计算方式的不同,最终导致了法线贴图显示的扭曲或间断。

不能正确显示还不是大问题,最主要的是不同软件间的数据无法共享,尽管有人出于爱好编写了相应的工具或插件来解决,但真正确立了一套通用规则的只有Mudbox,在他们的在线帮助上可以看到详细的切线域向量计算方式。

现在你知道问题的根源了,虽然无能为力,但至少知道这是软件的问题,不用自己独自烦恼了。

下面我来举个例子来解释一下法线贴图的计算以及转换方式,以便于你能够在photoshop中进行调整、叠加以及直接绘制。

我将一个平面和圆柱体的法线贴图烘培到下图绿色线框标注的平面方块上。

如前所述,切线域空间如下图所示分别为:

切线域法线为蓝色箭头,切线为3-4方向红色箭头,副切线为3-1方向绿色箭头。

圆柱体为硬边分段,以便于观察法线贴图的变化,分段标号为1-7。

image049.jpg(14.58KB)

如果我们从正前方观察物体,形状应如下图所示。

图片

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1