随着PC的发展,如今在即时模型和电影模型之间的区别已经是微乎其微了。角色建模中,普遍使用3dmax、deeppaint和fiImbox等工具制作游戏。《寂静岭3》等日本游戏倾向用softimagel3d,这个软件专门对游戏开发提供了一整套工具,并可以进行结构图转换、动画压缩、材质传播、镶嵌、形状动画、转换(N 6 4、N I F F、H M DASCII)和动作捕捉等。也有的游戏是使用maya开发的,如《无人永生2》等。
随着计算机动画的发展,很多游戏实现了华丽的游戏场景设计和绚丽的角色动作制作,推动着游戏向更照片级真实电影级享受方向发展,营造更真实更自然的游戏体验。角色模型系统逐渐变得复杂起来,除了低多边形建模,还有精细建模, 我们将寻求如何让更多多边形模型在屏幕上更好地移动方式。这就需要一个骨骼模型系统,有骨架和网格细节层次。除此之外,动画混合,骨架反向运动学(IK)和单个骨架限制,以及相片真实感的纹理,也是打造影视级游戏的关键。
首先定义一个基于网格的系统和一个骨骼动画系统。在基于网格的系统,对于每一个动画幀,需要定义模型网格的每个点在世界中的位置。举例来说,一个包含200 个多边形的手的模型,有 300 个顶点(在顶点和多边形之间通常并不是3个对1个的关系,因为大量多边形时常共享顶点——使用条形和扇形,你能大幅减少顶点数量),如果动画有 10 幀,那么你就需要在内存中有300个顶点位置的数据,总共有300 x 10 = 3000 顶点,每个顶点由x,y,z和颜色/alpha信息组成。 可见它增长起来是多么的快。Quake I,II和 III 都使用了这种系统,这种系统确实有动态变形网格的能力,比如使裙子摆动,或者让头发飘动。
相比之下,在骨骼动画系统,网格是由骨架组成的骨骼( 骨架是你运动的对象)。 网格顶点和骨架本身相关,所以它们在模型中的位置都是相对于骨架,而不是网格代表每个顶点在世界中的位置。因此,如果移动骨架,组成多边形顶点的位置也相应改变,只需使骨骼运动即可。典型情况大约有 50 个左右的骨架,很明显它极大地节省了内存空间。
其次,骨骼动画的另一个优点是能够定义权重值,可反映骨架对每个顶点的影响程度。双臂的骨架运动,肩、脖子而且甚至躯干都能影响肩中网格。当移动躯干的时候,网格就活像一个角色一样移动。总的来说3D角色能够更加流畅和真实地实现动画,且只需要更少的内存,便可达到双赢的效果。
但是如果想要使有机的东西运动得很好,如头发或披肩,为了让它看起来自然,最后不得不在里面放置数量惊人的骨架,这会增加处理的时间。
基于骨骼的系统不仅可以处理动画中对本身骨架所做的事情,还可以使它和世界中的一个特定点产生联系。让模型着眼于世界中的事件,或使他们的脚在他们站着的地面保持水平,这有助于增强场景的真实感。
在骨骼系统里,我们可将动作保存为特定格式的文件,不管角色对象的形态、尺寸或重力值是否一致,这些动作文件都适用,我们可将需要的动作文件编辑形成更为复杂的动画。比如说一个角色行走的动画和一个站立开火的动画,可在它同时行走和开火状态下把这两个动画合并,而不是需要一个动画表示角色行走并开火。
另外每个骨架都不是孤立的,骨骼之间有严格的父子关系,根骨骼是唯一没有父母的骨骼树的顶点。这样当移动父亲骨架,那么它所有的子孙骨架也跟着移动。在代码上不需要任何额外的努力,就能在任何骨架层次改变动画,而且可以通过骨骼其余部分向下传递东西。
动画系统中新出现的动画混合,是指从一个正在播放的动画转变到另外一个动画需要经过一小段时间,而不是立即从一个动画突然转变到另外一个。举例来说,一个角色在行走,然后他停了下来,不是仅仅突然地转变动画,让他的腿和脚停在无效位置,而是一秒钟混合一半,这样脚似乎自然地移到了一个新的动作。
反向运动学 (IK) 是被许多人们丢弃的一个专业术语,对它的真实含义没有多少概念。IK 是如今游戏里面一个相对比较新的系统。使用 IK ,程序员能够移动一只手或一条腿, 模型的其余关节自动重新定位,因此模型被正确定向。比如,你说,“手,去拾起桌子上的那个杯子”,并指出杯子在世界中的位置,手就会移动到那里,且它后面的身体会调节其自身以便双臂移动,身体适当弯曲,等等。
也有和IK相反的事情,叫做前向运动学,本质上与IK工作的次序相反。想像一只手,手附着在手臂上,手臂附着在身体上。现在想像你重重地击中了身体。通常手臂像触电般抽动,且手臂末梢的手随之振动。IK 能够移动身体,并让其余的四肢自己以真实的方式移动。基本上它需要动画师设定每种工作的大量信息 ——像关节所能通过的运动范围,比如说,如果一块骨架前面的骨架移动,那么这块骨架将移动多少百分比,等等。
IK是一个很大的处理问题,不用它你可以有不同的动画组合而脱身。值得注意的是,真正的 IK 解决办法需要一个层次骨骼系统而不是一个模型空间系统 ——否则它们都耗时太多以致无法恰当地计算每个骨架 5
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>