Maya4.0骨骼动画-骨骼动力学(1)
2006-04-05 19:40:02 来源:WEB开发网骨骼制作标志着用户已进入到高级特征动画制作的领域,在Maya中使用骨骼比较容易,但也有可能变得复杂。在我们为骨骼制作动画之前,首先要了解动力学的一些属性,这对于制作好的骨骼动画至关重要。
正向动力学
ForwardKinematics对于处理诸如行走时手臂的摆动或人转身时脊柱的旋转之类的自由运动是非常有效的。对于ForwardKinematics,主要关心的是给动画正确建立关节,下面就用Joint工具来建立一个人体骨骼。
首先要做的是创建有骨骼的腿部,这需要放置腿、膝和足关节。具体操作步骤如下:
(1)执行Skeleton→JointTool命令,单击ResetTool将所有的选项都设置为默认状态,然后执行AutoJointLimits。
(2)进入侧视图,按住X键并单击关节,将它捕捉到栅格上,如图13-8所示。创建完所有的关节后,按Enter键完成制作。
提示:
在关节创建过程中的任何时候,用户可以用鼠标中键拖动以调整创建的最后一个关节的位置,或者用向上箭头键回到其他关节。注意:如果返回少许几个关节,并用鼠标左键单击的话,就会在关节外得到另一个关节分支。
(3)分别给关节命名为Lleg,Lknee和Lfoot(L代表左的意思)。现在没必要考虑关节链中的最后一个关节,因为现在还用不上。
(4)进入透视图,执行膝或足关节并试着转动它,这时可以发现它仅能绕Z轴旋转,且对Z旋转还有一个限制。用AutoJointLimit设置可以创建一个Hinge关节,这种关节旋转时不会通过父关节或者说该关节弯曲不会超过180度。因此,和膝关节一起使用是最好不过了,如图13-9所示。
如果还要使足绕关节X或Y轴旋转,可以在AttributeEditor中进行设置。在Joint栏,设置DegreesofFreedom为X和Y,继续对Z轴应用关节限制,除非在LimitInformation栏关闭RotLimitZ设置。
在创建腿时一定要注意,创建的骨头间是倾斜的,而不是一条直线。因为,在骨头之间的角度决定了骨头弯曲的方式。另外,在Maya中默认的关节方向是由该关节与其子关节的关系决定的。是指创建一个关节时,局部坐标的X轴沿着骨头方向,Y轴指向弯曲方向,Z轴垂直于弯曲方向。执行Display→ComponentsObject→LocalRotationAxes命令,可以显示出一个关节的局部旋转轴,如图13-10所示。
当用默认设置创建一个关节时,Z轴旋转方向始终是指向弯曲骨头的方向,Y轴旋转方向就是骨头从一边到另一边的旋转方向。这样,执行要创建关节的窗口就非常重要了,因此应指出要使骨头如何弯曲,然后相应地在正确的窗口中创建这些骨头。例如,模型面向前视图,则可以在侧视图中创建脊椎和腿。这样,当创建其他的骨骼时,就可以在不同的窗口观察创建关节的示例。
移动和镜像关节
用户可以使用Move工具移动创建的关节。如果执行一个关节并用Move工具移动它,该关节层级下的关节也会一起移动。如果执行Move工具,然后按Insert键显示轴心点控制器并移动该轴心点,则只要移动该执行的关节即可以。当然也可以使用Maya的Skeleton菜单中的其他工具来编辑创建的关节,通过插入、删除、连接和断开关节——甚至重新创建关节。
下面用镜像来创建另一条腿,因为关节的运动与一般物体节点有区别,所以需要使用MirrorJoint功能对称地复制右腿,其具体操作步骤如下。
(1)将腿层级移动到(2,0,0),然后执行Skeleton→MirrorJoint命令。执行YZ作为设置,并单击Mirror。
(2)试试同时旋转左、右膝盖,这两个膝盖会像彼此的镜像图像一样旋转,如图13-11所示。
(3)将被镜像的关节命名为Rleg、Rknee和Rfoot。
在镜像关节时,旋转的限制信息应该也拷贝到被镜像的关节上,但用户也许会发现它们并未被激活。如果出现这种情况,可以选择AttributeEditor并激活它们(在那里有这些数字信息)。如果有一些Rotate域是灰色的但关节仍可以旋转,那么可以在DegreeofFreedom框中双击鼠标左键以解锁。
如果发现关节镜像得不对,可以在另一个关节下把它们编成组,先镜像它们然后再解散它们。
建立人体其余的骨骼
下面是增加脊椎和肩部关节层级的方法,具体操作步骤如下:
(1)进入侧视图,用默认的JointTool选项设置创建脊椎链,如图13-12所示。脊椎关节需要的是Ball关节形式。在顶视图中创建左肩骨骼链,如图13-13所示(记住现在创建的是一个非常简单的骨骼)。
(2)将脊椎层级命名为waist、chest、neck和head,并将肩部层级命名为Lshoulder、Larm、Lforearm和Lhand。
(3)在前视图中,将肩部骨骼链向上移至稍稍低于颈骨的位置。
(4)在Hypergraph或者Outliner中,将腰以下的腿骨链编为一组,并把胸部下方的Lshoulder链编为一组,这时应看到像层级和图片的一些东西,如图13-14所示。
(5)要在肩部关节加上旋转限制,打开AttributeEditor并执行Lshoulder关节。因肩部不需要绕X轴旋转,因此可以在DegreesofFreedom设置中关闭X。因为要使Larm像Ball关节一样旋转,因此它的设置不改变。Lforearm是一个普通关节,不能绕Y轴旋转,因此关闭Y;Lhand也是一个普通关节,不能绕X轴旋转,因此关闭X。
(6)对这些关节和其他关节也可以设置具体的最小和最大旋转范围。下面以Lforearm关节为例加以说明。执行Lforearm,在AttributeEditor中打开LimitInformation和Rotate属性,这时可以看到3个RotLimit域,且Y旋转为灰色。选中4个RotLimitX和Z框,并使Min和Max域解锁。
(7)在顶视图中将Lforearm绕Z轴旋转。当前臂变直时,其度数大约为–28,因此输入–30作为Min值,当前臂弯曲与Larm(胳膊)重叠时,度数大约为137,因此输入130作为Max值。
(8)对于X旋转,假设掌心是朝下的。在这种情况下,Lforearm应能够旋转–90度使掌心朝前,在起始位置旋转45°可以使掌心朝后。输入–90和45作为Min和Max值,如图13-15所示。
提示:
同样,对Translate和Scale也有限制,这个限制也许有时会用到。Maya还有RotationLimitDamping设置,该设置允许关节在旋转限制之内或之外移动。
(9)执行Lshoulder关节并镜像该关节,此时可以得到一个虽然非常简单,但是完整的人体骨骼,最后效果如图13-16所示。
重定位关节的局部坐标轴。为了得到对关节如何旋转的精确控制,有必要知道如何重定位关节。譬如说在已创建的骨骼中,用轴心点操纵器将肩关节向下平移了一个单位。如果显示局部旋转坐标轴,则X轴不再是指向骨头中心,而是大约偏离了–24°。
要重定位X轴,可以执行Rotate工具并切换到组件模式。用RM执行问号标记按钮(多重表列)并选中LocalRotationAxes复选框,然后执行肩关节。可以在前视图旋转Y轴手柄直到X轴指向肩关节,也可以在命令行中通过输入一条MEL命令来输入一个精确的旋转值。例如:可以输入rotateros0240命令以使局部坐标围绕Y轴相对旋转–24°。
在MEL命令中与上述命令相关的还有jointeojxyzzso命令,该命令可以自动地重定位一个关节的局部坐标。但在用这个命令时要特别小心,因为有可能会破坏对称层级的镜像特性。
赞助商链接