转Maya 骨骼动画骨骼动力学解析骨骼制作标志着用户已进入到高级特征动画制作的领域在Maya中使用骨骼比较容易但也有可能变得复杂。在我们为骨骼制作动画之前首先要了解动力学的一些属性这对于制作好的骨骼动画至关重要。正向动力学Forward Kinematics对于处理诸如行走时手臂的摆动或人转身时脊柱的旋转之类的自由运动是非常有效的。对于Forward Kinematics主要关心的是给动画正确建立关节下面就用Joint工具来建立一个人体骨骼。首先要做的是创建有骨骼的腿部这需要放置腿、膝和足关节。具体操作步骤如下1执行Skeleton→Joint Tool命令单击Reset Tool将所有的选项都设置为默认状态然后执行Auto Joint Limits。2进入侧视图按住X键并单击关节将它捕捉到栅格上如图13-8所示。创建完所有的关节后按Enter键完成制作。提示在关节创建过程中的任何时候用户可以用鼠标中键拖动以调整创建的最后一个关节的位置或者用向上箭头键回到其他关节。注意如果返回少许几个关节并用鼠标左键单击的话就会在关节外得到另一个关节分支。图13-8创建骨骼3分别给关节命名为LlegLknee和LfootL代表左的意思。现在没必要考虑关节链中的最后一个关节因为现在还用不上。4进入透视图执行膝或足关节并试着转动它这时可以发现它仅能绕Z轴旋转且对Z旋转还有一个限制。用Auto Joint Limit设置可以创建一个Hinge关节这种关节旋转时不会通过父关节或者说该关节弯曲不会超过180度。因此和膝关节一起使用是最好不过了如图13-9所示。如果还要使足绕关节X或Y轴旋转可以在Attribute Editor中进行设置。在Joint栏设置Degrees of Freedom为X和Y继续对Z轴应用关节限制除非在Limit Information栏关闭Rot Limit Z设置。在创建腿时一定要注意创建的骨头间是倾斜的而不是一条直线。因为在骨头之间的角度决定了骨头弯曲的方式。另外在Maya中默认的关节方向是由该关节与其子关节的关系决定的。是指创建一个关节时
局部坐标的X轴沿着骨头方向Y轴指向弯曲方向Z轴垂直于弯曲方向。执行Display→Components Object→Local Rotation Axes命令可以显示出一个关节的局部旋转轴如图13-10所示。图13-9旋转骨骼图13-10局部旋转轴当用默认设置创建一个关节时Z轴旋转方向始终是指向弯曲骨头的方向Y轴旋转方向就是骨头从一边到另一边的旋转方向。这样执行要创建关节的窗口就非常重要了因此应指出要使骨头如何弯曲然后相应地在正确的窗口中创建这些骨头。例如模型面向前视图则可以在侧视图中创建脊椎和腿。这样当创建其他的骨骼时就可以在不同的窗口观察创建关节的示例。移动和镜像关节用户可以使用Move工具移动创建的关节。如果执行一个关节并用Move工具移动它该关节层级下的关节也会一起移动。如果执行Move工具然后按Insert键显示轴心点控制器并移动该轴心点则只要移动该执行的关节即可以。当然也可以使用Maya的Skeleton菜单中的其他工具来编辑创建的关节通过插入、删除、连接和断开关节--甚至重新创建关节。下面用镜像来创建另一条腿因为关节的运动与一般物体节点有区别所以需要使用Mirror Joint功能对称地复制右腿其具体操作步骤如下。1将腿层级移动到200然后执行Skeleton→Mirror Joint命令。执行YZ作为设置并单击Mirror。2试试同时旋转左、右膝盖这两个膝盖会像彼此的镜像图像一样旋转如图13-11所示。3将被镜像的关节命名为Rleg、Rknee和Rfoot。在镜像关节时旋转的限制信息应该也拷贝到被镜像的关节上但用户也许会发现它们并未被激活。如果出现这种情况可以选择Attribute Editor并激活它们在那里有这些数字信息。如果有一些Rotate域是灰的但关节仍可以旋转那么可以在Degree of Freedom框中双击鼠标左键以解锁。图13-11同时旋转两个骨骼如果发现关节镜像
得不对可以在另一个关节下把它们编成组先镜像它们然后再解散它们。建立人体其余的骨骼下面是增加脊椎和肩部关节层级的方法具体操作步骤如下1进入侧视图用默认的Joint Tool选项设置创建脊椎链如图13-12所示。脊椎关节需要的是Ball关节形式。在顶视图中创建左肩骨骼链如图13-13所示记住现在创建的是一个非常简单的骨骼。图13-12脊椎骨形状图13-13左肩骨骨链2将脊椎层级命名为waist、chest、neck 和head并将肩部层级命名为Lshoulder、Larm、Lforearm和Lhand。3在前视图中将肩部骨骼链向上移至稍稍低于颈骨的位置。4在Hypergraph或者Outliner中将腰以下的腿骨链编为一组并把胸部下方的Lshoulder链编为一组这时应看到像层级和图片的
一些东西如图13-14所示。图13-14改变层级5要在肩部关节加上旋转限制打开Attribute Editor并执行Lshoulder关节。因肩部不需要绕X轴旋转因此可以在Degrees of Freedom设置中关闭X。因为要使Larm像Ball关节一样旋转因此它的设置不改变。Lforearm是一个普通关节不能绕Y轴旋转因此关闭YLhand也是一个普通关节不能绕X轴旋转因此关闭X。6对这些关节和其他关节也可以设置具体的最小和最大旋转范围。下面以Lforearm关节为例加以说明。执行Lforearm在Attribute Editor中打开Limit Information和Rotate属性这时可以看到3个Rot Limit域且Y旋转为灰。选中4个Rot Limit X和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还有Rotation Limit Damping设置该设置允许关节在旋转限制之内或之外移动。图13-15旋转限制9执行Lshoulder关节并镜像该关节此时可以得到一个虽然非常简单但是完整的人体骨骼最后效果如图13-16所示。图13-16人体骨骼最后效果重定位关节的局部坐标轴。为了得到对关节如何旋转的精确控制有必要知道如何重定位关节。譬如说在已创建的骨骼中用轴心点操纵器将肩关节向下平移了一个单位。如果显示局部旋转坐标轴则X轴不再是指向骨头中心而是大约偏离了– 24°。要重定位X轴可以执行Rotate工具并切换到组件模式。用RM执行问号标记按钮多重表列并选中Local Rotation Axes复选框然后执行肩关节。可以在前视图旋转Y轴手柄直到X轴指向肩关节也可以在命令行中通过输入一条MEL命令来输入一个精确的旋转值。例如可以输入rotater os 024 0命令以使局部坐标围绕Y轴相对旋转– 24°。在MEL命令中与上述命令相关的还有jointe oj xyz zso命令该命令可以自动地重定位一个关节的局部坐标。但在用这个命令时要特别小心因为有可能会破坏对称层级的镜像特性。骨骼制作标志着用户已进入到高级特征动画制作的领域在Maya中使用骨骼比较容易但也有可能变得复杂。在我们为骨骼制作动画之前首先要了解动力学的一些属性这对于制作好的骨骼动画至关重要。反向运动学使用Forward Kinematics工具主要涉及到的是正确地建立关节。在创建关节并将关节编为一组且给关节加了合适的限制之后就要转换关节并给它们作关键帧。首先从顶部层级开始然后向下处理底层关节直到获得所要的姿态。对于定向运动来说如一个人将脚放到地面或伸手开门使用正向运动学来实现非常困难和麻烦一般需用反向运动学IK来制作动画。反向运动学包括IK手柄和IK解算器。一个IK手柄贯穿受影响的关节这些受影响的关节就叫IK链并且手柄线贯穿关节。手柄矢量指的是从起始关节开
始指向末端关节的矢量末端关节是IK手柄的末端受动器所在位置如图13-17所示。图13-17 IK手柄IK解算器可以查看IK链末端受动器的位置并作一些必要的计算以使关节能正确旋转。旋转方式是从起始关节开始到IK链的末端关节为止这种方式意味着末端关节在末端受动器所在位置。当末端受动器移动时IK解算器就将末端受动器的平移值改为关节的旋转值关节也会相应地改变。通常IK链只使用3个关节但也可以处理更多的关节。Maya的界面有3种IK解算器IKRPRotate Plane解算器IKSCSingle Chains解算器和IK Spline解算器每种IK解算器都有各自的IK手柄类型。使用IKRP手柄IKRP解算器是IK手柄工具的默认设置其具体操作步骤如下1在侧
视图中画一条简单的关节链如图13-18所示。2执行Skeleton→IK Handle Tool□命令并将工具重置为默认设置。3单击第1个关节然后单击最后一个关节一个IK手柄已创建起来。顶部的圆复杂如图13-19所示。当得到其组件的内容时设置起来就非常简单。IKRP解算器仅计算末端受动器的位置值而忽略了末端受动器的旋转值。通过IKRP解算器旋转的关节其旋转方式是关节的Y轴是平的、X轴指向骨头中心、Z轴垂直于弯曲方向。这是建立关节的默认局部方向坐标如果没有看到旋转圆面则可以执行末端受动器并按F键显示Show Manipulator工具。沿着关节弯曲方向的平面由平面指示器显示平面作为关节链平面。用旋转IK链的扭曲圆平面可以绕手柄矢量旋转该平面。相对于由手柄矢量和极矢量创建的参考面可以测出Twist度该参考面可以被移动且可以作关键帧。图13-18建立骨骼图13-19 IK手柄注意有时手臂弯曲的方式会引起IK链与默认参考平面设置相互转换为了避免这种转换可以调整极矢量或作
极矢量动画。使用IKRP手柄的好处在于能比较精确地控制IK链的旋转缺点在于必须处理较多的组件。使用IKSC手柄IK SC手柄比IK RP手柄要简单些下面介绍如何使用IK SC手柄。具体操作步骤如下1首先进入侧视图并另画一条简单的关节链。2执行Skeleton→IK Handle Tool命令如图13-20所示进行没置然后关闭该对话框。图13-20设置IK SC手柄3单击第1个关节然后单击最后一个关节可以看到IKSC手柄了。4执行Rotate并旋转IK手柄发现这似乎只对局部X和Y旋转手柄有效且释放手柄后它们又回到一定的角度。而要按F键显示Show Manipulator工具那么将什么也看不到因为IKSC手柄没有额外的控制器--所有的东西都是由IK手柄所控制。IKSC解算器计算末端受动器的旋转值并以一定的方式旋转IK链其中一定的方式是指在链中的所
有关节都有默认的局部方向。尽管在手柄中看不到任何有关关节链平面的表示但关节链平面确实存在于IKSC解算器中。作为IKSC手柄该平面通过关节链这样X和Y轴正位于平面上如图13-21所示。图13-20一个IKSC手柄对于IKSC手柄在Attribute Editor中如果有两个或两个以上链相重叠时IKSC就会有一个Priority赋值。Priority 1设置的手柄将首先旋转链中的关节然后Priority 2设置的手柄将旋转手柄的关节依次类推。Po Weight设置决定了手柄的位置和方位权重如果权重为1那么末端受动器将仅获得手柄的位置如果权重为0那么末端受动器将仅获得手柄的方位。一般应将这个设置设为默认值1。使用IKSC手柄的优势是只需要使用末端受动器来控制IK链即可。在位置上不需要大量的IK链旋转这对动画来说是很有效的方法。使用IKSC手柄旋转IK链时可以用Graph Editor交互调整旋转值。用这种方法可以产
生预定结果。在正向运动和反向运动学间的切换Maya允许用户在用IKRP、IKSC手柄和旋转关节正向动力之间来回切换。下面以13.3.6小节中创建的IKSC手柄为例介绍这项技术。具体操作如下1进入第1帧并打开Auto Key按钮。若没有这个设置制作过程将变得非
常麻烦。2给IK手柄作关键帧移动到第10帧并平移IK手柄此时会自动设置另一个关键帧。3在Attribute Editor窗口中取消选中Solver Enable复选柜以局部地关闭这个IK 手柄的IKSC解算器。4选择IK链中的两个关节并给它们作关键帧然后进入第20帧并旋转关节再进入第30帧并重复操作。5再次IKSC手柄在Attribute Editor对话框中选中Solver Enable复选框以打开IKSC解算器。这时IK手柄在定义关键帧的关节处为第20帧和第30帧获取了关键帧。为了使切换能够得以实现需要在Attribute Editor对话框中打开IK手柄的Snap设置并关闭Stickiness。如果Snap被关闭或Stickiness被打开那么在关节旋转时IK手柄将不会捕捉到末关节。在反向和正向连接运动间来回切换还应注意由关节旋转产生的运动和末端受动器的相应关键帧不会始终都匹配。它们大致会一致但也许需要扭转末端受动器的动画制作。提示如果创建的关节链在一条直线上IKSC或IKPR解算器不能计算和弯曲该关节链。在解决该问题时首先要旋转子关节使该关节链成一定的角度--即使是一个很小的角度。然后对关节应用Skeleton→Set Prefered Angle。删除这个已存在的IK链并创建一个新链。IKSC或IKPR 解算器便可以弯曲该关节链了。骨骼制作标志着用户已进入到高级特征动画制作的领域在Maya中使用骨骼比较容易但也有可能变得复杂。在我们为骨骼制作动画之前首先要了解动力学的一些属性这对于制作好的骨骼动画至关重要。使用IK Spl
ine手柄尽管与IKRP、IKSC手柄在属性上相似但IK Spline手柄在作用方式上却与它们不一样。IK Spline解算器以一条NURBS曲线作为其手柄的一部分并且随着曲线的形状旋转IK链。NURBS曲线的CV被作成了动画而不是手柄的末端受动器转成动画。对于制作诸如尾巴、脊柱、蛇或触须等类似的曲线型或扭曲型动画时IK曲线手柄非常理想。C IK Spline手柄来作动画的具体操作步骤如下1在侧视图中建立一个关节链如图13-22所示。对于IK Spline手柄关节不必作成一定的角度但骨头应该短一些以确保链会平滑地移动。2执行Skeleton→IK Spline Handle Tool命令并执行Number of Spans 4其他的选项保持为默认设置并关闭对话框。3单击顶部关节然后单击最后一个关节可以看到IK Spline手柄如图13-23所示。4在Outliner中窗口执行关节链或者IK手柄并试着移动关节。这时关节已连接到曲线上而且IK手柄并不显示操纵器。5显示CV并将它们在附近移动一下如图13-24所示。图13-22建立曲线骨骼图13-23建立IK手柄图13-24移动IK手柄也可以创建自己的NURBS曲线并使IK Spline手柄使用该曲线。在IK Spline Handle选项组中取消选中Auto Create Curve复选框然后单击根部关节和端部关节再单击曲线以创建IK Spline手柄。6对IK手柄打开Attribute Editor对话框。在Offset、Roll和Twist文本框输入数值。Offset偏置将关节链沿着曲线平移以0.0作为曲线的开始以1.0作为曲线的结束Roll滚转则旋转整个关节链Twist 扭转通常从第2个关节处开始扭转。如果选中Root Twist Mode复选框则扭转将从根关节开始扭转。在Curve设置上的Root将约束根部关节到曲线的开始。把它关掉就可以将根部关节移离曲线但要注意根部关节还是被约束到曲线。骨骼可以随着正向或反向运动学在一个对象的不同部分的动画进行移动和旋转。除了IK工具外Maya在Animation模式中还提供了Constrain菜单。菜单中的约束与IK工具一道用于动画制作。
rotate属性