Maya4.0刚体和柔体-刚体动力学
形状和尺寸保持固定,不随事件而变化的几何体,称为刚体。刚体动画,实质上就是在Maya中建立一个物理模拟环境,并用它来模拟现实环境中的物体在力(如说重力、风等)的作用下或是在同其他物体相碰撞时所发生的情景。NURBS物体和多边形物体都可以转换成刚体。图11-1所示为刚体作用的效果。
刚体运用起来相当简单,例如,首先创建一个或多个刚体,然后创建一个或多个作用于刚体的力场,再给定刚体的初始位置、初始速度及冲击,最后播放动画。由Maya的动力学引擎在给定的初始信息基础上对刚体的运动进行计算,从而使动画趋于真实。刚体可分为被动刚体和主动刚体两种。被动刚体不受场的影响,它是主动刚体的碰撞物体,而且在参与碰撞时不会因碰撞而发生运动。被动刚体可以用关键帧技术来制作(可以通过关键帧移动、旋转、缩放被动刚体)。主动刚体受场的影响,而且会因为碰撞改变运动。主动刚体不能用关键帧技术制作,即不能直接操作它们。
一般来说,与外界固定的物体(如地板和墙等),可以作为被动刚体;而各种下落的、移动的或相互碰撞的物体(如篮球和硬币),可以作为主动刚体。尽管主动刚体不能用关键帧技术制作,但是由于在动画制作过程中可以随时将刚体由被动状态变为主动状态,因此刚体动力学的优点更为突出。
创建刚体
创建刚体的方法非常简单,选中一个多边形或者NURBS物体,执行Soft/RigidBodies→CreatePassiveRigidBody命令,则所选物体变为被动刚体,如果执行Soft/RigidBodies→CreateActiveRigidBody命令,则所选物体变为主动刚体。创建刚体之后将会产生一个刚体节点,在Outliner窗口中可以看到这个节点,如图11-2所示。
下面是刚体的建立属性。执行Soft/RigidBodies→CreatePassiveRigidBody命令或者Soft/RigidBodies→CreateActiveRigidBody命令,打开RigidOptions对话框,如图11-3所示。
●RigidBodyName:设置刚体的名称。
●Active:选中此时,创建的是主动刚体:撤销选中此复选框时,创建被动刚体。
●ParticleCollision:如果选中此复选框,粒子与主动刚体之间产生碰撞,碰撞的力量会使刚体产生运动。
●Mass:设置主体刚体的质量,刚体的质量决定了碰撞时的程度。刚体的质量越大,则碰撞的效果越强烈;刚体的质量越小,则碰撞的效果越弱。
●SetCenterOfMass:设置刚体的质量中心,即物体的中心,它影响着刚体的碰撞效果,尤其是反弹效果。例如,当把主动刚体的中心降低一个单位时,将它抛到被动刚体上时,它会像不倒翁一样来回摇摆;当设置InitialSpin的值为0时,主动刚体的重心决定了主动刚体围绕哪个点旋转。例如,当重心在主动刚体内部时,主动刚体会围绕自身旋转,就像地球自转一样;当重心在球体之外时,圆球会围绕重心旋转,就像地球公转一样。
●CenterofMassX、Y和Z:设置刚体的重心位置,默认状态时主体刚体的实际重心位置。
●StaticFriction:设置主动刚体的摩擦力。当主动刚体运动时,必须有一个外力来克服这个摩擦力。当该值为0时,主动刚体可以在其他表面上自由运动;当该值为1时,主动刚体的静止摩擦力最大。
●DynamicFriction:设置主动刚体在运动时所受阻力的大小。
●Bounciness:设置主动刚体反弹力的大小。
●Damping:设置阻力的大小。
●ImpulseX、Y和Z:设置推动力的大小和方向,推动力可以模拟一个巨大的外力在短时间内作用于物体之上的效果。默认状态下,推动力的作用点位于刚体的重心。
●ImpulsePositionX、Y和Z:设置推动力在刚体上的作用位置。
●SpinImpulseX、Y和Z:设置刚体产生旋转时扭矩的大小,该值是一个矢量,可以控制方向。
●InitialSetting中的选项为刚体初始设置选项,如图11-4所示。
●InitialSpinX、Y和Z:设置刚体的初始角速度。
●InitialPositionX、Y和Z:设置刚体在场景中的初始位置。
●InitialOrientation:设置场景中刚体的X、Y、Z轴方向。
●InitialVelocityX、Y和Z:设置刚体初始速度的大小和方向。
●PerformanceAttributes区域中的参数是刚体的操作属性,如图11-5所示。
?StandIn:它包括三个选项参数:None、Sphere和Cube。用户可以在播放动画的过程中使用立方体或者球体来替换复杂的刚体,以提高系统的性能。这些物体只是虚拟物体,它不会影响刚体的实际效果。
?TessellationFactor:在为刚体动力学制作动画时,NURBS物体首先要转换为多边形物体。该文本框决定了在转换的过程中,多边形的面片数目,较低的值虽然创建出比较粗糙的几何体,但可以提高刚体动画的播放速度。
?CollsionLayer:碰撞层可以容纳两个或者多个碰撞刚体,同一层中的两个刚体才能发生碰撞,不互相碰撞的刚体被放置在不同的层中。在图11-6中,右边的圆球与圆柱体属于Layer1,彼此之间是相互碰撞的,左边的圆球与圆锥体属于Layer2,彼此之间是相互碰撞的,地面物体属于Layer1,它与球体、圆柱体、圆锥体之间是相互碰撞的。
?CacheDate:当选中此复选框时,刚体在动画中的每一帧位置和方向数据都被存储起来。当第1次播放动画时,刚体解算器计算刚体的位置和方向,当第2次播放动画时,缓存中的数据被启用,这样可以大大提高动画的播放速度。