当前位置:首页 > 文章中心 > 建模专栏 > Maya > MAYA教程-从NURBS,Polygons到Subdiv

MAYA教程-从NURBS,Polygons到Subdiv

时间:2005-03-23 14:28:59   来源:网络收集   作者:佚名   点击数: 我要评论单机新闻

MAYA教程-从NURBS,Polygons到Subdiv

标签:

这篇教程的对象是那些已经对Maya有了一些了解,但还不太熟悉细分表面建模、以及如何通过多边形模型生成细分表面模型的Maya用户。其中1至5部分讨论一些理论问题,使你对Maya的技术知识有一些更深入地了解;而6至10部分则专门讨论一下各种建模方法的优劣。


这不是一篇初级教程,所以不准备教你一步一步地如何制作一个特定模型;但是我要介绍一些更深入的理论和技术,使你能够将它们应用到建模工作之中。所以,对于教程中所有出现的模型,我只对一些关键的概念进行重点地说明。


在教程中,我使用了一些术语,有必要先在这里说明一下。


1:基础模型(base cage):基础模型是多边形模型,随后它将被转化成细分表面模型。这个转化工作可以是在RenderMan中进行的(如果你使用RenderMan的话),也可以使用Maya的Convert Poly to Subdivision Surface命令来完成。


2:细分表面模型:细分表面模型的英文简写是Sub-d,我这里所指的细分表面模型是由基础模型转化而来的细分表面模型。


图中从左至右为:基础模型、带线框显示的细分表面模型、不带线框显示的细分表面模型

多边形建模技术的优点


 

不管你使用那种建模技术,NURBs、多边形还是细分表面,它们都各有优缺点。但是,如果要制作一个复杂的生物体模型,细分表面技术比NURBs技术要有优势。


 

首先,细分表面技术既可以让我们以多边形建模的方式进行工作,又可以得到象NURBs模型一样的平滑表面,而无需象NURBs模型那样,需要进行复杂的编辑工作,才能维持各个面片之间的连续性。


图1:左图的基础模型(多边形)上有5条边框线汇聚到一起, 右图是由基础模型转化而来的平滑的细分表面模型。


 

其次,使用细分表面技术可让整个模型保持为单一模型表面的同时,仍然拥有非常复杂的细节。这可以大大简化随后的角色装配和贴图绘制工作(当然,如果需要,也可以把模型分成若干个部分)。比如,可以使用一张UV贴图覆盖整个模型表面。而不象NURBs模型那样,要为每个模型面片分配UV贴图。


图2:为整个头部模型分配一张贴图

图3:头部模型上的UV坐标和为其分配的方格纹理贴图


 

在细分表面模型上,既可以任意地布置网格线的拓扑结构,也可以专门定制它们,使得整个模型得到最大的优化,而不象NURBs模型那样比较难于控制。这种优化的直接结果就是,模型比较简洁。在这里,简洁的含义就是这个模型的数据量比较小。经过特别设计的模型网格拓扑结构还可以使模型表面产生比较平滑的变形结果,而不象NURBs模型那样需要很密集的模型面片。


 

最后,由于细分表面模型是由多边形模型转化而来,这意味着既可以使用基础模型(多边形模型)构建大致形状,又可以通过较高的细分层级修改细节。而不象NURBs模型那样任何对细节的修改,都会影响到整体的形状和网格线拓扑结构。


建模过程中的四边形策略


 

尽管许多软件都能够对具有3边或者5边多边形面片构成的模型进行渲染,但是尽量使用4边多边形仍然不失为一种最好的选择,有时甚至是必需的。因为在进行计算时,大多数的软件都使用Catmul-Clark算法,但是对于具有3边或者5边多边形面片构成的模型,计算结果并不完美。对于Maya软件来说,尽管它可以对具有3条边以上的面片构成的细分表面模型进行计算,但截止到目前为止(2003年11月),Mental Ray渲染器还只能对基础网格(细分层级为1)为4边形面片的细分表面模型进行渲染(Mental Ray渲染器已经是Maya的内嵌渲染器)。


 

使用这种带有奇数边的多边形表面所带来的第一个问题就是表面的平滑问题,在生物模型或者一些需要圆滑表面的模型上,三角形面片(三边多边形)会引起褶皱,而5边面片会稍好一些,但也不是很完美,如图1。


图1:上面是只由4变形面片组成的基础模型和由它转化而来的细分表面模型;下面的基础模型上既有3角形面片又有5边面片,由此转化而来的细分表面模型看上去不是很平滑。


 

明白了上面存在的问题后,就可以对其加以利用,使最终结果尽量好一些。现在,我们将基础模型转换成细分表面模型,然后在此细分表面模型的细分层级1上,分析一下会有什么样的结果。如图2所示,假设图中的模型代表人体上臂中的一段,上面一段表示鼓起的二头肌;它下面的平坦区域表示二头肌下面向内凹陷的区域,在此区域分别放置了一个3角形面片和一个5边形面片。从图中可以看到,在基础模型上不论是使用3角形面片还是5边形面片,转化成的细分表面模型在细分级别1上都具有相同拓扑结构,只不过位置有所不同。通过这样的分析,我想会对你有所帮助,因为从上面的分析看,在制作基础模型时,我们只需考虑到细分级别1上的面片分布和拓扑结构就足够了`如果需要修正模型上的褶皱和异常,可在更高的细分级别上进行。需要提醒的是,如果在制作过程中需要修改基础模型的话,将细分表面模型转换回基础的多边形模型会丢掉所有在较高细分级别上所作的编辑。


图2:上面是存在有5边形面片的基础模型和转化成的细分级别为1的细分表面模型,下图是存在有3角形面片的基础模型和转化成的细分级别为1的细分表面模型。


所以在基础模型上,尽量不要让三角形面片出现。要想去除三角形面片,我这里提供一种方法,我们知道,在一个对称分布的几何体上,不论上面有什么形状的面片,它们的总数总是偶数。假设上面有2个三角形面片并列放置,可以通过编辑工作让它们共享同一条边,然后删除共享边而得到4边形面片。理论上说,只要三角形面片的数目是偶数,我们就可以通过这种将它们放置到一起的办法来处理。但是在实际工作中,情况并不那么简单,如果在一个模型上,2个三角形面片相隔的很远,要想将它们最终放置到一起,你可能需要大量的编辑工作,甚至还会改变整个模型的拓扑结构。遇到这种情况时,要想到最终转换成细分表面模型时,使用不同形状的的面片仍然可以产生同样的拓扑结构。如图2和图3所示。

图3:将3角形面片合并成4边形面片

另外一种避免产生3角形面片的方法是:尽量不要让它们在开始阶段出现。比如可以使用挤压命令来创建初始模型(我将在以后详细介绍这种方法)。用一个立方体作为开始,使用挤压(Extrude)命令逐步添加细节,就可避免三角形面片的出现。


 

只要使用上面的方法,就可保证由基础模型转化而来的细分表面模型可以用于Mental Ray渲染器。


 

最后,我还要提醒大家注意模型上的极点问题。所谓极点,就是模型上三条边汇聚在一起的那些控制点。图4中上面显示的是一个带有极点和5边形面片的基础模型和由它转化而来的细分表面模型,可以看到,最终的细分表面模型上仍然存在着极点。图4中下面显示的是没有极点的基础模型由它转化而来的细分表面模型,可以看到,最终的细分表面模型上没有极点,我推荐使用这种拓扑结构,因为变形模型表面时,它可以得到更满意的结果。


模型的边框线回路(Edge Loops)问题


 

模型的边框线回路实际上就是模型的拓扑结构,它用来组织生物体模型上的肌肉结构。一个具有良好拓扑结构的模型在转化成细分表面模型时会得到平滑的结果,同时良好的拓扑结构也可以加快工作的进度。所谓边框线回路(Edge Loops)就是模型上由多边形的边相互连接组成的一条条封闭的回路,它围绕在肌肉结构或其它元素的周围,描述出模型上肌肉等元素的拓扑结构。比如在一个人体模型的眼睛、嘴、或者肩部肌肉群周围出现的多边形边框线,它们可以被认为是一条连续的封闭回路线。


 

在建模时首先要考虑的问题就是模型的拓扑结构问题,要通过细致的思考来布置模型的拓扑结构,使得边框线回路的布置能够反映出肌肉的结构和褶皱的形状。关于这一点,我还要在“建模过程中要考虑到变形问题”这篇文章中深入探讨。比如,在模型的眼睛部位精心布置边框线回路,使他们呈现出一种同心环形回路的形式,就可以让我们很容易地为这个部位添加细节,这可以通过挤压(Extrude)命令来实现,另外,我们还可以使用一些脚本工具,象MJPolytools这样的工具来帮助我们进行边框线回路的编辑工作。比如MJPolytools允许我们对一圈多边形面片进行切割,这对更精致地构建眼部模型非常有利。此外,Maya本身也有很多工具非常有效,比如我们可以在Maya中对一整条边框线回路进行选择。


左图黄色的线表示边框线回路,右图是转化而来的最终模型


 

总之,由于生物体模型通常都含有很多大的圆滑肌肉块体,所以精心地布置边框线回路会使我们准确地描绘出它们的形状,特别有利于刻画出它们的细节。


建模过程中要考虑到变形问题


 

从静态的角度上说,不管一个模型制作得多么好,在进行动画时都有可能出现可怕的错误。制作模型时,首先要使它尽可能地简洁,但同时,必须要有足够的细节来描述它的几何形状,因为我们还要在制作动画时,为这个模型设置一些较极端的姿势。比如在膝盖关节,我通常最多为它布置5圈以内的边框线回路(沿着腿的轴向),如果没有特殊的细节需要,决不让它超过6圈。


 

制作出的模型既要简洁又要容易装配。这句话的意思就是说,模型上不应该出现一些相互交叠的面片,这为将来绘制关节的权重以及控制变形的范围会带来很大的困难。出现相互交叠的面片会导致这样几个问题:1:为分配UV坐标及贴图工作带来困难。2:为将来添加一些变形控制器时带来困难。3:会导致一些意想不到的变形效果。


 

设想你想让一个脸部的模型成比例地产生变形来模拟一个微笑的表情,如果在基础模型上的控制顶点(CVs)相互交叠在一起,在变形时,距离较近的点就会受到较大的影响,而不是像我们需要的那样进行变形。


 

如果为角色使用融合变形器,在出现相互交叠面片的区域,会导致变形很不平滑。这些相互交叠的几何体,如果在制作融合变形器时不将它们展开的话,它们会相互交*甚至收缩到一起,而且变形的过程也不是以线性的速度进行。所以要尽量避免这种情况的出现,除非它们出现在不需要变形的区域。


 

在布置一个模型的拓扑结构时,要特别小心那些出现褶皱的区域,要使模型上的拓扑结构尽量沿着肌肉的自然轮廓以及褶皱的自然走向,避免拓扑结构的走向横切那些变形时要出现褶皱的区域。例如,制作一个微笑的脸部变形动画时,要使拓扑结构符合脸上主要皱纹的走向,这样在转换成细分表面模型时,结果才会平滑。而横切这些皱纹的自然走向,会产生出一些很细的类似钻石形状的几何体,将它们转化成细分表面模型后,这些形状会依然存在,这就导致了模型的不精确及尖角的出现。


第1排:基础模型,第2排:转化而来的细分表面模型,第3排:变形效果。第1列:糟糕的拓扑结构,第2列:自然的拓扑结构。


 

图2和图3中展示了人体脸部的通用拓扑结构走向。注意图3中的模型是如何根据图2中女人和男人的脸部皱纹布置拓扑结构走向的,这些图片说明了一个思考的过程,尽管这不是一个非常完美的拓扑结构。实际上,没有任何两个艺术家制作出的模型具有完全相同的拓扑结构,但是整体上却都惊人地相似。

面部上通常被关注的区域。

面部的拓扑走向,这不是唯一的选择,不同的艺术家会有自己不同的考虑。

建模过程中的方法论


 

俗话说:“条条大路通罗马”,如果这个“罗马”就是模型上的拓扑结构的话,那么“条条大路”就是建模过程中的所使用的各种方法。最重要的是最终结果,但是结果的产生则要依*艺术家的才能和使用各种方法的熟练程度。不同的软件都有其各自的优势,这要根据它们的所提供的工具和用户界面而定。


 

Maya提供了非常强大的建模工具,甚至还可以使用它提供的变形工具来帮助建模工作。至于每个个人,你可以只使用最有限的工具来完成工作、也可以依*一些非常强大的工具、还可以平衡使用各种各样的建模工具。在学习Maya的建模工具时,我的建议是先熟悉老的工具,在学习新的工具,循序渐进,一点一点地增加你的知识。其实,只使用很少量的一套工具,就可以非常有效地完成建模工作。


 

我要介绍的第一种建模方法是逐一地创建多边形面片,从而构建出一个整体模型的方法。尽管这种方法不是最快速的但却是非常有效的。使用这种方法时,先用Create Polygon Tool创建一个多边形面片,然后可以使用extrude edges命令添加多边型面片,使用Append Polygons命令等填补空洞等。还可以使用extrude face命令、split polygon命令等等。再结合使用移动工具、旋转工具和缩放工具、duplicate命令、combine和merge vertices命令以及所有你需要的工具。我就是使用这样的方法进行建模工作的。但是,非常重要的一点就是你必须从一开始就仔细考虑好模型的拓扑结构。事先计划好一些事情会节省你大量的时间。


第一种建模方法

第二种方法是挤压法,或者叫方盒建模法。这种方法也不需要使用太多的工具。首先创建一个多边形立方体,使用extrude face命令挤压相应的面片,用移动或缩放工具沿X轴的正、负方向编辑、修改,直到满意为止。这种方法的特点是快速,并且能保证所有的面片都是4变形面片,所用到的工具也很少。此外还有一个非常有用的脚本工具"spinfaces.mel"可以给你很大帮助。这个工具可以让你选择一些具有共享边界的多边形面片,旋转共享边界的方向,帮你修改编辑模型的拓扑结构。当然你也可以只使用Maya提供的工具,删除共享边界,用split polygon tool重画边界来达到同样的目的,只不过稍微麻烦一些。


第二种建模方法

第三种方法叫做自适应式建模法。如果你对Maya的工具有比较全面深入的了解,这种方法的限制性最小。你可选择你最适合完成工作的工具来操作。建模的质量和速度则根据你对各种工具掌握的熟练程度和事先对模型拓扑结构的计划而定。唯一的限制是你对各种工具的熟练程度还有编写、开发Mel脚本工具的能力。


 

还有一种方法是使用Nurbs曲线作为开始,然后使用放样工具(Lofting)构建初始模型,这是一种非常有效的方法。如果你最终的目的是将它转换成细分表面模型,你就不必过多地考虑Nurbs模型的连续性问题,只把注意力集中在拓扑结构上。你甚至可以在这种模型上留下一些空洞区域,这在将来转换成多边形模型或者细分表面模型后很容易修补。还可以将原始的Nurbs曲线保存起来,为以后构建类似的其他模型作参考。但是这种方法的一个问题是,在模型的某些区域上会有过于密集的网格线,而实际上却并不需要如此,对于Nurbs模型来说,这是一个经常要碰到的问题,因为在Nurbs模型上,在某些区域经常需要较多的等参线才能维持表面的连续性。这样制作出来的模型并不是在拓扑结构上最优化的模型,但优点是可以使模型表面的面片总数较少。

多边形模型与细分表面模型的转换


 

在Maya中,直接用多边形建模要比用细分表面建模来得容易,你可以借助Maya中强大的多边形工具进行建模和分配UV坐标等工作,而且,也比较容易地观察到控制顶点的准确位置,操作界面的交互性也更好。此外,还可迅速地显示模型在高分辨率下的整体外观,最后,将它转换成细分表面模型也非常容易。


图中显示的是多边形模型上的控制顶点和细分表面模型上的控制顶点。


 

如果想将细分表面模型转换回原始的多边形模型,只需执行Undo操作,如果已经为细分表面模型作了一些修改、编辑工作,也可以在转换命令的控制选项窗口中将转换方法(method)设置成vertices,细分级别(level)设置成0,从而很容易地得到原始模型,如下图。


注:将细分表面模型转换成多边形模型时,在较高的细分级别上所作的的编辑工作将会丢失。


 

为了进行这样的相互转换工作,我们还可以在互联网上找到一个称为zzToggleSubdee.mel的脚本工具,它专门用来在细分表面模型和原始的多边形模型之间相互切换,我建议为他分配一个快捷健以方便使用,我所使用的快捷健是“\”。


 

注:使用这个脚本工具时,它会删除创建历史和无用的节点。不论是向细分表面模型进行转换还是向多变性模型转换,它都会打断已经建立好的与各种变形器之间的连接,所以如果你一定要保留创建历史,或者在构建模型时使用了一些变形器(比如晶格变形—Lattice),使用这个脚本工具时一定要多加小心。


 

Maya中多边形模型的UV坐标编辑工具也要比细分表面的要好很多,所以,应尽量在多边形模型上进行UV坐标的编辑工作,然后再转换成细分表面模型。


图中显示的是Maya4.5中多边形模型的UV编辑工具和细分表面模型的UV编辑工具

注:如果再细分表面模型上进行了一些更高细分级别的UV编辑工作,当它转换成多边形模型时会丢失,所以我建议在模型最终完成时,再进行这些UV的编辑工作。


从NURBs模型向细分表面模型的转换

Maya中的Nurbs工具是非常强大的,它甚至提供了多边形建模工具所不具备的功能,所以可以使用这些工具作为多边形或者细分表面建模的有力补充。比如在Nurbs模型上增添等参线提高网格线的密度并不会使模型的表面的形状发生改变。因为我们最终的目的并不是要得到一个Nurbs模型,所以在建模过程中,我们所关注的问题只是如何借助Nurbs技术来帮助我们构建出最终的多边形模型或者细分表面模型。因为这个原因,最终的细分表面模型上的拓扑结构不需要与Nurbs模型完全相同,见下图。


耳朵模型:1-基础模型,2-细分表面模型,3-细分级别为1的细分表面模型,4-Nurbs模型


 

还要知道的是,如果将Nurbs模型转化成细分表面模型,转化前后的模型在位置上并不完全重合,也就是说细分表面模型上的一些面片会沉到原始的Nurbs模型下面,这是因为以下这样几个原因造成的:


 

1:为了能够得到平滑的细分表面模型,在进行细分的内插计算时会使模型表面发生收缩现象,如下图。


Nurbs模型(1)转化成多边形模型(2)然后转换成细分表面模型(3)

 

2:如果将原始的Nurbs模型直接转换成细分表面模型,也同样会使模型表面产生收缩,如下图。


白色的网格线代表细分表面模型,与Nurbs模型并不完全重合,有一些收缩。

3:将原始的Nurbs模型直接转换成细分表面模型时,通常情况下细分表面模型上的网格线会过于密集,因此需要简化。由于简化工作会导致模型网格上控制顶点的减少,内插计算的结果也将导致最终模型产生收缩。


将Nurbs模型(1)转换成细分表面模型(2)和简化以后的细分表面模型(3)。


 

4:如果原始的Nurbs模型是有多个面片缝合在一起构成的,由于面片间连续性的需要,会在这些缝合的边缘附近有更多的控制点,将它转换成细分表面模型后,需要结合多边形面片,结合控制顶点和结合边等操作,这也会导致最终模型表面产生收缩。


 

所以,如果最终目的是要转换成细分表面模型,可以在原始的Nurbs模型上留一些“洞”或者不连续的区域,因为这些问题可以很容易地在转换后的细分表面模型上加以解决,比如用添加多边形工具填补它们。


 

正是因为在细分表面模型上不存在面片间的连续性问题, 所以我建议不必在原始Nurbs模型上保持面片间的连续,将它转换成细分表面以后,通过适当的编辑工作就可很容易地解决这个问题。此外,还有一个脚本命令—nurb2subdCage.mel用来解决这个问题,这个脚本命令是在制作电影《蜘蛛人》时由Dan Kramer开发的,这是我见过的最好的脚本之一,可以使最终的细分表面模型非常接近原始的Nurbs模型,而又省去繁重的手工操作麻烦。

挤压建模法—或者称为方盒建模法

挤压建模法(也称为方盒建模法)是一种非常快速的建模方法。大多数没有太多经验的初学者会认为这种方法比较容易上手。但是,一旦深入进去以后,还是会涉及到很多技术问题, 学习的进度也会相应的放慢。


图1:挤压建模法,或者叫方盒建模法示意图


 

要使用这种方法建模,首先要做以下一些设置工作:


 

1:确认Maya中的Polygons>Tool Options>Keep Faces Together菜单选项为勾选状态。


 

2:为方便使用,将Edit>Paint Selection Tool菜单命令放置到工具架上。(选择菜单命令Edit>Paint Selection Tool,然后再屏幕左侧的工具栏的最下面,选择这个命令的的图标,用鼠标中健将它拖拽到工具架上)


 

3:要养成使用快捷健的习惯。在建模过程中,会经常用到F8、F9、F10和F11这几个快捷健,它们分别代表切换到物体选择模式、控制点选择模式、边选择模式和面片选择模式。


 

4:为spinFaces脚本命令分配一个快捷健(我使用Ctrl+\)。如果需要下载这个脚本命令,可以在http://www.highend3d.com/网站上找到,也可点击这里下载:spinFaces.mel,然后将它放置在本机的scripts目录之中即可。


 

5:为zzToggleSubDee脚本命令分配一个快捷健(我使用\)。如果需要下载这个脚本命令,可以在http://www.highend3d.com/网站上找到,也可点击这里下载:zzToggleSubDee.mel,然后将它放置在本机的scripts目录之中即可。


 

6:将工作界面上透视视图摄像机的焦距—Focal Length设置到150以上。


 

除去以上设置以外,也可以创建自定义的工具架,将一些常用的多边形建模工具、选择工具和命令放置在上面。如图2所示。在我的设置中,我还安装了一个非常有用的多边形建模脚本MJPolytools,我将其中的loopSplit脚本命令(图中上排图标5)也放置到自动义的工具架上。



图2:自定义工具架


 

挤压建模法简介:从它的名称就可分析出这种建模法的大致要领,首先从一个最简单的多边形立方体、或者一个在Y方向的分段数为3的多边形立方体开始,在这个阶段,尽量不要使模型有中心分界线。接下来主要使用挤压面命令逐步为模型添加多边形面片,以达到增加细节的目的。在挤压多边形面片时,一定要确保勾选了主菜单上的Edit>Paint Selection Tool>Keep Faces Together选项。这个过程有点象制作传统雕刻作品时,逐步添加一个个的粘土块来构建大致的形状。在建模时也要逐步挤压多边形面片,然后调整模型的形状,得到一个粗略的模型;再挤压出新的面片,一步步地将模型精细化。如图1所示。与此同时,一定要时刻关注模型上边框线回路的走向,特别是在眼睛周围或者嘴的周围,要布置上一圈圈环状分布的边框线回路,而挤压面片工具特别适合创建这些环状分布的几何体。得到了眼睛及嘴的大致形状以后,还可以使用loopSplit脚本命令工具进一步细分那些环状分布的几何体面片,并由此构建出眼帘等其他细节部分,如图3。


图3:3.1:使用loopSplit脚本命令添加细节。3.2:调节点的位置。 3.3:选择中心的面片。3.4:使用挤压命令拉出眼睛的纵深。3.5:重复进行上述操作,得到的最终结果。

在除去眼睛和嘴以外的区域,边框线回路的拓扑结构也需要经常进行调整。除去使用调整编辑点的位置以外,有时还需要重新排列两个相邻面片的共享边界来完成这个工作,这通常有两种方法:


 

第一种方法是先将两个面片之间的共享边界删除,然后使用Maya中的分割多边形工具—Split Polygon Tool,在删除了共享边界后所形成的六边多边形面片上重新绘制多边形边界,这样可以得到边界走向完全不同的两个四边多边形面片。通过这样的方法,实现对边框线回路拓扑结构的调整。这种方法稍微有些麻烦,但好处是只使用Maya自己提供的工具,不需要添加任何额外的脚本工具,对初学者熟悉Maya很有好处,执行步骤如下:


 

1:首先选择模型体,按F10健切换到边选择状态


 

2:选择共享边界


 

3:按Delete健删除共享边界


 

4:选择Edit Polygons>Split Polygon Tool


 

5: 重新划分删除了共享边界后所形成的六边多边形面片,形成两个新的四边多边形面片。


 

操作步骤如图4。

图4:改变拓扑结构的走向


 

另外一种方法是使用Mel脚本命令—spinFaces来完成同样的工作,我已为它分配了一个快捷健Ctrl+\。这和命令使用起来非常方便,可以节省工作量。操作步骤如下:


 

1:按F11健切换到面片选择模式


 

2:打开绘画选择工具—Paint Selection tool(你可以将它放置在工具架上以方便使用)


 

3:用绘画选择工具选择两个需要调整的具有共享边界的面片


 

4:执行spinFaces.mel脚本命令(Ctrl+\)


 

此时,会自动重新绘制多边形边界,形成两个新的四边多边形面片。最后执行边界时,会出现三种情况,如果执行一次spinFaces.mel脚本命令达不到所需要求的话,可以重复执行此命令,直到满意为止。要想充分利用这个工具,最好为它分配快捷健或者将它放置在工具架上。另外,这个脚本还在进一步开发之中,在将来的spModeling Tool脚本命令上,这个命令甚至还可以直接应用到多边形的边上,省去了选择相邻面片的麻烦。

图5:spinFaces.mel脚本命令的使用情形

我们最最经常使用的策略就是,通过使用以上的方法,在建模的开始阶段完成绝大多数拓扑结构的构建工作,而其余的时间则用来精细调节模型的准确形状。一旦完成了基础的拓扑结构和形状比例,就可进入到添加和调整细节的步骤当中,此时应该首先保存基础模型,以便随时回到模型的初始状态。此外要随时保存好已经调整好的低分辩率模型(使用Smooth命令或者转化成细分表面模型之前),以后,我们可以使用这些低分辨率的模型作为设置动画、绑定等工作的代理,甚至还可以根据低分辨率的模型与高分辨率模型间差别制作出次级别的置换贴图,这样就可避免在将来使用高分辨率模型进行角色的设置工作。


图6:添加细节

自适应式建模法


 

自适应建模法是最具个性化、也是最灵活的一种建模方法。在Maya中我们可以使用很多种工具实施自适应式的建模,因而也就可也衍生出很多种不同的方法。一旦对你所要制作的模型的拓扑结构心中有数,你可以有很多不同的途径来完成最终的模型。因此,最有价值的方法就是你应该知道哪种途径对你是最适合的。对于自适应建模法来说,我很难准确地告诉你该如何建模,因为每个人的方法都是不同的。但是我可以告诉你一些思路,这也许会对你有所帮助。


 

首先,在使用自适应法创建模型时。,尽管每次总还是尝试一些不同的途径来解决问题,但是我也会较固定地经常使用几种比较顺手的工具加快工作的进度。比如挤压面片命令和挤压边命令可以使我快速地构建出模型的大致形状。假设我从一个头部的额骨轮廓线开始,只需使用若干次挤压边命令,就可以得到整个头盖、后脑直至胫部的模型面片,如图1所示。此外,象前面所介绍的,还可以使用挤压面片命令快速地构建出具有环状肌肉分布的区域,比如眼睛周围和嘴周围的区域。然后我使用添加多边形工具(Append to Polygon Tool),这个工具可以用任意边数的多边形面片填补模型上留下的‘洞’,最后我使用切割多边形工具(Split Polygon Tool)将这些任意边数的多边形面片切割成四边形面片,如图3所示。

图1:使用挤压边命令和添加多边形工具构建出大致形状

图2:使用切割多边形工具切分多边形面片


 

接下来,我经常借助另外一种强大的工具—变形器来进行建模工作。尽管变形器是一种动画工具,但是在建模过程中也可以使用它们。比如晶格变形器(Lattice)可以帮助我们快速地调整模型的整体比例,然后,通过删除构建历史的操作,我们就可以保留修改后的形状并且同时删除掉变形器,如图3所示。

图3:建模过程中使用晶格变形器

另外,还可以使用成比例调整工具(Proportional Modification tool)来调整模型上某些部分的总体形状和比例,这个工具上带有衰减范围属性(Falloff),可以定义调整时的影响范围,如图4所示。通常情况下,此工具隐含在Maya的Modefy>Transformation Tool菜单之中。

图4:使用成比例调整工具进行局部形状的调整


 

还可以使用融合变形器(Blend Shapes Deformer)和包裹变形器(Wrap Deformer)进行镜像的调整,如果所制作的模型具有对称的结构,使用这种镜像调整方法可以使我们简化一半的建模和调整工作,我们只需在模型的一侧进行调整,所作的调整工作会自动地镜像复制到模型的另一侧之上,如图5所示。这种镜像调整的一大优点是,如果两个包裹变形器同时尝试移动模型上的同一个点时,最终的结果是相减而不是相加。比如当我们移动一个头部模型上中心线上的点时,由于两个包裹变形器的最终作用是相减,所以不会引起这些被移动的点产生双倍移动的结果。这种方法还同时保证了两个形状能够很自然地融合成另外一个形状。


图5:从左至右为,融合变形模型,目标模型和修改后的模型

使用融合变形器(Blend Shapes Deformer)和包裹变形器(Wrap Deformer)进行镜像的调整的操作步骤如下:


 

1:将基础模型复制3份,分别命名为X_neg(X代表基础模型的名称,neg表示坐标轴的负方向),X_pos(pos坐标轴的正方向),和X_morph(morph表示融合变形),并将X_neg置于左侧、X_morph置于中间、X_pos置于右侧。


 

2:在需要镜像操作的方向上(比如X坐标方向),将X_neg模型的缩放属性(Scale)设为-1,


 

3:在X_morph模型上先做一些形状上的调整,这些调整将来会反映到它两侧的模型之上。


 

4:将X_morph模型作为融合变形器添加到X_neg和X_pos模型之上。


 

5:将X_neg和X_pos模型作为包裹变形器添加到基础模型之上。


 

6:最后,在作为融合变形器的X_morph模型上进行相关的调整工作,就会在基础模型上看到镜像的调整结果,达到满意的效果后,复制最终的基础模型,保留所作的镜像调整。

  

最后,将场景中的某一模型物体激活(Make Live)然后根据这个激活的物体进行模型形状的调整工作,也是一个非常有用的方法。比如,当我们需要以一个眼球物体为参考物体,调整一个头部模型的眼帘部位时,就可以将这个眼球球体先激活(Make Live)然后调整眼帘模型上的控制点,使这些控制点被捕捉到激活的眼球模型之上。这样就可以使眼帘的形状准确地符合眼球的形状,如图6所示。当一个物体被激活以后,它在场景中以绿色的线框显示。当然,你也可使用Maya中的一些雕刻变形工具进行这个调整工作,但是结果欠精确。


图6:使用激活的物体进行建模工作


 

总之,自适应建模法是一种非常个性化的建模方法,可以选择使用的建模途径要远比可以使用的工具多,如果你有使用Mel脚本的能力,还可以开发自己的解决方案,那将会给你提供更多的选择。所以唯一的限制是你的创造力和时间。

细分表面模型的细划分


 

有几种不同的方法来细分最终的模型。象前面章节讨论过的一样,可以使用挤压面的方法模型添加细节,然后通过删除和重新绘制边界,或者使用spinFaces Mel脚本命令来调节模型的拓扑结构。还可以使用成比例调整工具(Proportional Modification Tool),通过设置合适的衰减属性值(Fall Off)来调整模型的上的扭曲与变形。甚至还可以使用切割多变性工具(Split Face Tool)来分割多变性面片,达到细分多变性面片的目的。如果你的软件支持细分表面模型,还可以使用Subdivision Surfaces>Refine Selected Compoents命令来细划分细分表面模型,为模型添加细节。


 

在模型接近完成时,它上面的拓扑结构也应基本布置完毕。最终的步骤是对模型上的拓扑结构作一些改进,构建出模型上的皱纹和折痕。此时就需要对模型进行一些细划分。


 

首先要做的工作是清理一下模型上的拓扑结构;然后在需要的地方添加细节以满足各种各样的变形的需要。拿一个头部模型来说,如果将来需要进行表情动画,嘴的周围以及眉毛部分就发生很多的变形,因此要为这些部位将创建很多皱纹,使这些部位有足够多的细节,也就是有足够多的几何体来支持将要产生的变形,而且这些变形看上去要符合逻辑。因此,我们应该仔细观察参考图像,必要时还可以对着镜子观察自己的表情,搞清楚脸部肌肉的变形情况。要使你模型几何体上的拓扑结构即能够遵循皱纹的走向,又能够反映肌肉块的形状。所以在精细调整模型的拓扑结构时,要仔细思考它的边框线回路和底层肌肉的结构。只有在这个阶段注意到了这些问题,才可以使你避免将来在变形和扭曲模型表面时遇到许多麻烦。因此为了保证将来模型变形的自然流畅,你需要在此阶段做大量的工作。


 

至于模型上的皱纹等细节,你可以通过修改模型来实现,也可以通过置换贴图来实现。不论使用那种方法,最好都要使模型上包括一些具有代表性的拓扑结构,因为这将帮助你能够更好地控制这些区域的拉伸与压缩变形,否则的话,将会影响到将来模型的变形,特别是贴图变形时的效率。


 

如果需要将来在模型上使用一些变形工具,比如融合变形器、骨骼系统、线变形器等,就需要使模型上有相应的几何体来形成皱纹等细节。但是在模型上添加这些几何体来形成细节会影响到模型的结构,尽管具有较高密度几何体的区域当然会比低密度的区域更能准确地反映模型的真实形状。但在添加了细节的区域,你仍然需要修改一些周围的几何体来更好地反映模型在添加细节以前的形状,图1显示的是添加皱纹等细节后的模型。


图1:在模型的拓扑结构上切割出皱纹等细节


 

很多时候,模型上需要伤疤、裂痕等设计元素,如图2所示。在添加这些元素时,使用的方法与制作皱纹基本相似。当然这些伤疤、裂痕可能并不需要非常自然地符合生物体上的自然走向,有时甚至会有比较尖锐的边缘。但是要想在模型上添加这些伤疤、裂痕俄等细节,同样需要在模型上添加一些几何体来形成这些细节,这样才能保证他们平滑地融合到几何体密度较低的区域,这需要大量的调节工作,不幸的是,目前为止,并没有一种固定的方法来进行这些精细的调整工作。


图2:在生物体模型上添加一些机械性的边界

上一篇:MAYA教程-制作布料 下一篇:MAYA教程-角色骨骼设置

相关文章




热门评论

热门文章

最新文章