三维动画创作maya课程讲稿.docx
《三维动画创作maya课程讲稿.docx》由会员分享,可在线阅读,更多相关《三维动画创作maya课程讲稿.docx(24页珍藏版)》请在冰豆网上搜索。
![三维动画创作maya课程讲稿.docx](https://file1.bdocx.com/fileroot1/2023-2/23/52941cc2-f11d-4846-a73a-50b3ba0cae51/52941cc2-f11d-4846-a73a-50b3ba0cae511.gif)
三维动画创作maya课程讲稿
三维动画创作(MAYA)课程讲稿
课程名称:
三维动画(MAYA2)课程号:
1100200编写日期:
2011年8月
总学时:
54学时
第一阶段(9学时)Maya骨骼系统介绍与基础
通过激活具有大量关节的复杂模型,根据决定运动的几个主关节的最终角度可以确定骨架的运动,从而创建精确灵活的人物动画。
这是一项高级的动画技术。
这项动画技术要求运动的三维模型必须建成“分级结构”。
骨骼就是一种特定类型的“分级结构”,由不同运动约束的关节连接成链状的分级骨架结构。
这种分级骨架结构由许多采用分级方式分组的关键链构成,骨架与其周围的皮肤表面也是相连的。
骨骼的所有部分同时运动,但必须遵循特定的等级关系。
当对骨骼进行变换时,骨骼的等级关系阻止了部件向各个方向散开。
骨骼由根关节、一定数目的关节和反向运动学等级关系(IKHandles)组成。
关节是骨骼中骨头与骨头之间的连接点。
每个关节可以有一个或多个骨头与之连接。
根关节(RootJoint)是关节链第1段的第1个关节,是关节链所有分段和关节的父母结构;父关节(ParentJoint)可以是任意的关节,只要其下带有子关节(ChildJoint)
骨骼机构中的反向动力学手手柄,也称为末端效应器。
当移动骨骼中的反向动力学手手柄并实施了高级运动学技术时,就可以自动算出关节的转动。
例如,就胳膊伸出去操作按钮而言,运动的反向运动学手手柄应该放置在手上或者伸出的指尖上,这与事实是基本相符的。
1、JointsChains(关节链):
关节链由一定数量的关节和连接于其上的骨头(Bone)组成。
关节链中的关节是线性连接的,关节链的第1个关节是整个关节链中层次最高的关节。
2、Limbs(肢体链):
肢体链由一个或多个连接的关节链组成,肢体是一种树状结构,其中的骨节并不是线性的,而且链一般是从链中层次最高的关节开始的,如图13-4所示。
3、JointTool(关节工具):
该工具主要用于创建复杂的骨骼结构。
创建骨骼的具体操作步骤如下:
(1)创建一条关节链。
(2)继续添加新的关节或者以原关节链的任意关节作为“父关节”创建新的关节链。
(3)创建出需要的骨骼结构。
骨骼结构形成以后,执行Window→Hypergraph命令或者Window→Outliner命令,打开相应的窗口观测一下骨骼结构的层次关系。
创建骨骼
骨骼是由骨头和关节组成的,选择Skeleton→JointTool命令,只需在建模窗口中单击就可以放置关节,并且该关节由骨头相连。
在建立骨骼时,最好先知道可以创建哪几种关节。
1、关节能够绕3个轴旋转,如颈骨。
这是默认的Joint工具设置。
2、Universal关节能绕两个轴旋转,如腕关节。
3、Hinge关节能绕一个轴旋转,如膝关节。
在制作过程中应根据创建的关节的功能使用尽量少的关节,如反向关节和连接关节。
因为,这意味着动画更有效,并且减少Maya的计算量。
例如,可以对腕关节和踝关节使用反向关节,而对膝关节使用连接关节。
创建骨骼的基本方法
创建骨骼的具体操作步骤如下:
(1)执行Skeleton→JointTool命令。
(2)在视图中的任意位置处单击创建第1个关节。
(3)移动鼠标指针至第2个关节位置处。
单击并按住鼠标左键进行拖动,可以调节关节的位置,然后释放鼠标左键创建第2个关节。
移动鼠标指针至下一个位置处,单击创建第3个关节。
(4)创建足够的关节后,按Enter键结束创建。
提示:
在创建过程中,单击并按住鼠标中键进行拖动,可以重新定位最近创建的关节。
如果要改变其他关节的位置,可以按一下Insert键,则在最后一个关节上出现“变换”操纵器。
单击并拖动关节链中除关节外的任意关节,可以改变关节的位置,再次按一下Insert键,恢复创建模式,继续创建其他的关节。
添加骨骼
骨骼一旦创建完成以后我们还可以用JointTool工具来继续添加新的骨骼。
具体操作步骤如下:
1、执行Skeletion→JointTool命令。
在关节链上的任意一个关节上单击鼠标左键,然后按照创建骨骼的方法继续创建即可。
2、如果要在原来的关节链上继续添加新的关节,只需在原关节链的最后一个关节,也就是关节链中层次最低的关节上单击即可。
3、达到要求后按Enter键结束创建过程。
第二阶段(18学时)Maya骨骼动力学
骨骼制作标志着用户已进入到高级特征动画制作的领域,在Maya中使用骨骼比较容易,但也有可能变得复杂。
在我们为骨骼制作动画之前,首先要了解动力学的一些属性,这对于制作好的骨骼动画至关重要。
正向动力学
ForwardKinematics对于处理诸如行走时手臂的摆动或人转身时脊柱的旋转之类的自由运动是非常有效的。
对于ForwardKinematics,主要关心的是给动画正确建立关节,下面就用Joint工具来建立一个人体骨骼。
首先要做的是创建有骨骼的腿部,这需要放置腿、膝和足关节。
具体操作步骤如下:
1、执行Skeleton→JointTool
命令,单击ResetTool将所有的选项都设置为默认状态,然后执行AutoJointLimits。
2、进入侧视图,按住X键并单击关节,将它捕捉到栅格上。
创建完所有的关节后,按Enter键完成制作。
提示:
在关节创建过程中的任何时候,用户可以用鼠标中键拖动以调整创建的最后一个关节的位置,或者用向上箭头键回到其他关节。
注意:
如果返回少许几个关节,并用鼠标左键单击的话,就会在关节外得到另一个关节分支。
3、分别给关节命名为Lleg,Lknee和Lfoot(L代表左的意思)。
现在没必要考虑关节链中的最后一个关节,因为现在还用不上。
4、进入透视图,执行膝或足关节并试着转动它,这时可以发现它仅能绕Z轴旋转,且对Z旋转还有一个限制。
用AutoJointLimit设置可以创建一个Hinge关节,这种关节旋转时不会通过父关节或者说该关节弯曲不会超过180度。
因此,和膝关节一起使用是最好不过了。
如果还要使足绕关节X或Y轴旋转,可以在AttributeEditor中进行设置。
在Joint栏,设置DegreesofFreedom为X和Y,继续对Z轴应用关节限制,除非在LimitInformation栏关闭RotLimitZ设置。
在创建腿时一定要注意,创建的骨头间是倾斜的,而不是一条直线。
因为,在骨头之间的角度决定了骨头弯曲的方式。
另外,在Maya中默认的关节方向是由该关节与其子关节的关系决定的。
是指创建一个关节时,局部坐标的X轴沿着骨头方向,Y轴指向弯曲方向,Z轴垂直于弯曲方向。
执行Display→ComponentsObject→LocalRotationAxes命令,可以显示出一个关节的局部旋转轴。
当用默认设置创建一个关节时,Z轴旋转方向始终是指向弯曲骨头的方向,Y轴旋转方向就是骨头从一边到另一边的旋转方向。
这样,执行要创建关节的窗口就非常重要了,因此应指出要使骨头如何弯曲,然后相应地在正确的窗口中创建这些骨头。
例如,模型面向前视图,则可以在侧视图中创建脊椎和腿。
这样,当创建其他的骨骼时,就可以在不同的窗口观察创建关节的示例。
移动和镜像关节
用户可以使用Move工具移动创建的关节。
如果执行一个关节并用Move工具移动它,该关节层级下的关节也会一起移动。
如果执行Move工具,然后按Insert键显示轴心点控制器并移动该轴心点,则只要移动该执行的关节即可以。
当然也可以使用Maya的Skeleton菜单中的其他工具来编辑创建的关节,通过插入、删除、连接和断开关节——甚至重新创建关节。
下面用镜像来创建另一条腿,因为关节的运动与一般物体节点有区别,所以需要使用MirrorJoint功能对称地复制右腿,其具体操作步骤如下。
1、将腿层级移动到(2,0,0),然后执行Skeleton→MirrorJoint
命令。
执行YZ作为设置,并单击Mirror。
2、试试同时旋转左、右膝盖,这两个膝盖会像彼此的镜像图像一样旋转。
3、将被镜像的关节命名为Rleg、Rknee和Rfoot。
在镜像关节时,旋转的限制信息应该也拷贝到被镜像的关节上,但用户也许会发现它们并未被激活。
如果出现这种情况,可以选择AttributeEditor并激活它们(在那里有这些数字信息)。
如果有一些Rotate域是灰色的但关节仍可以旋转,那么可以在DegreeofFreedom框中双击鼠标左键以解锁。
如果发现关节镜像得不对,可以在另一个关节下把它们编成组,先镜像它们然后再解散它们。
建立人体其余的骨骼
下面是增加脊椎和肩部关节层级的方法,具体操作步骤如下:
1、进入侧视图,用默认的JointTool选项设置创建脊椎链,脊椎关节需要的是Ball关节形式。
在顶视图中创建左肩骨骼链(记住现在创建的是一个非常简单的骨骼)。
2、将脊椎层级命名为waist、chest、neck和head,并将肩部层级命名为Lshoulder、Larm、Lforearm和Lhand。
3、在前视图中,将肩部骨骼链向上移至稍稍低于颈骨的位置。
4、在Hypergraph或者Outliner中,将腰以下的腿骨链编为一组,并把胸部下方的Lshoulder链编为一组,这时应看到像层级和图片的一些东西。
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值。
提示:
同样,对Translate和Scale也有限制,这个限制也许有时会用到。
Maya还有RotationLimitDamping设置,该设置允许关节在旋转限制之内或之外移动。
9、执行Lshoulder关节并镜像该关节,此时可以得到一个虽然非常简单,但是完整的人体骨骼。
重定位关节的局部坐标轴。
为了得到对关节如何旋转的精确控制,有必要知道如何重定位关节。
譬如说在已创建的骨骼中,用轴心点操纵器将肩关节向下平移了一个单位。
如果显示局部旋转坐标轴,则X轴不再是指向骨头中心,而是大约偏离了–24°。
要重定位X轴,可以执行Rotate工具并切换到组件模式。
用RM执行问号标记按钮(多重表列)并选中LocalRotationAxes复选框,然后执行肩关节。
可以在前视图旋转Y轴手柄直到X轴指向肩关节,也可以在命令行中通过输入一条MEL命令来输入一个精确的旋转值。
例如:
可以输入rotateros0240命令以使局部坐标围绕Y轴相对旋转–24°。
反向运动学
使用ForwardKinematics工具主要涉及到的是正确地建立关节。
在创建关节并将关节编为一组,且给关节加了合适的限制之后,就要转换关节并给它们作关键帧。
首先从顶部层级开始,然后向下处理底层关节直到获得所要的姿态。
对于定向运动来说(如一个人将脚放到地面或伸手开门),使用正向运动学来实现非常困难和麻烦,一般需用反向运动学(IK)来制作动画。
反向运动学包括IK手柄和IK解算器。
一个IK手柄贯穿受影响的关节,这些受影响的关节就叫IK链,并且手柄线贯穿关节。
手柄矢量指的是从起始关节开始指向末端关节的矢量,末端关节是IK手柄的末端受动器所在位置,如图13-17所示。
IK解算器可以查看IK链末端受动器的位置并作一些必要的计算,以使关节能正确旋转。
旋转方式是从起始关节开始到IK链的末端关节为止,这种方式意味着末端关节在末端受动器所在位置。
当末端受动器移动时,IK解算器就将末端受动器的平移值改为关节的旋转值,关节也会相应地改变。
通常,IK链只使用3个关节,但也可以处理更多的关节。
Maya的界面有3种IK解算器:
IKRP(RotatePlane)解算器,IKSC(SingleChains)解算器和IKSpline解算器,每种IK解算器都有各自的IK手柄类型。
使用IKRP手柄
IKRP解算器是IK手柄工具的默认设置,其具体操作步骤如下:
1、在侧视图中,画一条简单的关节链。
2、执行Skeleton→IKHandleTool命令,并将工具重置为默认设置。
3、单击第1个关节,然后单击最后一个关节,一个IK手柄已创建起来。
顶部的圆复杂,当得到其组件的内容时,设置起来就非常简单。
IKRP解算器仅计算末端受动器的位置值,而忽略了末端受动器的旋转值。
通过IKRP解算器旋转的关节,其旋转方式是关节的Y轴是平的、X轴指向骨头中心、Z轴垂直于弯曲方向。
这是建立关节的默认局部方向坐标,如果没有看到旋转圆面,则可以执行末端受动器并按F键显示ShowManipulator工具。
沿着关节弯曲方向的平面由平面指示器显示,平面作为关节链平面。
用旋转IK链的扭曲圆平面可以绕手柄矢量旋转该平面。
相对于由手柄矢量和极矢量创建的参考面可以测出Twist度,该参考面可以被移动且可以作关键帧。
有时,手臂弯曲的方式会引起IK链与默认参考平面设置相互转换,为了避免这种转换,可以调整极矢量或作极矢量动画。
使用IKRP手柄的好处在于能比较精确地控制IK链的旋转,缺点在于必须处理较多的组件。
使用IKSC手柄
IKSC手柄比IKRP手柄要简单些,下面介绍如何使用IKSC手柄。
具体操作步骤如下:
1、首先进入侧视图并另画一条简单的关节链。
2、执行Skeleton→IKHandleTool命令,进行没置,然后关闭该对话框。
3、单击第1个关节,然后单击最后一个关节,可以看到IKSC手柄了。
4、执行Rotate并旋转IK手柄发现这似乎只对局部X和Y旋转手柄有效,且释放手柄后它们又回到一定的角度。
而要按F键显示ShowManipulator工具,那么将什么也看不到,因为IKSC手柄没有额外的控制器——所有的东西都是由IK手柄所控制。
IKSC解算器计算末端受动器的旋转值并以一定的方式旋转IK链,其中一定的方式是指在链中的所有关节都有默认的局部方向。
尽管在手柄中看不到任何有关关节链平面的表示,但关节链平面确实存在于IKSC解算器中。
作为IKSC手柄,该平面通过关节链,这样X和Y轴正位于平面上。
对于IKSC手柄,在AttributeEditor中,如果有两个或两个以上链相重叠时,IKSC就会有一个Priority赋值。
Priority1设置的手柄将首先旋转链中的关节,然后Priority2设置的手柄将旋转手柄的关节,依次类推。
PoWeight设置决定了手柄的位置和方位权重,如果权重为1,那么末端受动器将仅获得手柄的位置;如果权重为0,那么末端受动器将仅获得手柄的方位。
一般应将这个设置设为默认值1。
使用IKSC手柄的优势是只需要使用末端受动器来控制IK链即可。
在位置上不需要大量的IK链旋转,这对动画来说是很有效的方法。
使用IKSC手柄旋转IK链时,可以用GraphEditor交互调整旋转值。
用这种方法可以产生预定结果。
在正向运动和反向运动学间的切换
Maya允许用户在用IKRP、IKSC手柄和旋转关节(正向动力)之间来回切换。
下面以13.3.6小节中创建的IKSC手柄为例介绍这项技术。
具体操作如下:
1、进入第1帧并打开AutoKey按钮。
若没有这个设置,制作过程将变得非常麻烦。
2、给IK手柄作关键帧,移动到第10帧并平移IK手柄,此时会自动设置另一个关键帧。
3、在AttributeEditor窗口中取消选中SolverEnable复选柜,以局部地关闭这个IK手柄的IKSC解算器。
4、选择IK链中的两个关节并给它们作关键帧,然后进入第20帧并旋转关节,再进入第30帧并重复操作。
5、再次IKSC手柄在AttributeEditor对话框中选中SolverEnable复选框以打开IKSC解算器。
这时IK手柄在定义关键帧的关节处为第20帧和第30帧获取了关键帧。
为了使切换能够得以实现,需要在AttributeEditor对话框中打开IK手柄的Snap设置并关闭Stickiness。
如果Snap被关闭或Stickiness被打开,那么在关节旋转时IK手柄将不会捕捉到末关节。
在反向和正向连接运动间来回切换还应注意由关节旋转产生的运动和末端受动器的相应关键帧不会始终都匹配。
它们大致会一致,但也许需要扭转末端受动器的动画制作。
提示:
如果创建的关节链在一条直线上,IKSC或IKPR解算器不能计算和弯曲该关节链。
在解决该问题时,首先要旋转子关节使该关节链成一定的角度——即使是一个很小的角度。
然后对关节应用Skeleton→SetPreferedAngle。
删除这个已存在的IK链并创建一个新链。
IKSC或IKPR解算器便可以弯曲该关节链了。
第三阶段(9学时)Maya骨骼蒙皮的基础
对于三维人物动画而言,首先是使用建模工具创建模型,然后创建人物模型的骨骼,接下来便是将模型与骨骼绑定在一起,绑定的过程称为“蒙皮”。
骨骼被蒙皮后,可以使人物的模型随骨骼一起运动,并在骨骼运动时产生相应的变形。
骨骼在蒙皮过程中,所处的姿势称为BindPose。
蒙皮后,骨骼的运动会引起皮肤的变形。
但是,有时会出现不恰当的变形,这就需要对骨骼或皮肤做相应的修改,此时可以运用相关命令使骨骼恢复绑定姿势,然后断开骨骼与皮肤之间的关联。
在Maya中,可以随时把骨骼和皮肤断开或重新连接。
BindSkin如果要把模型绑定在整个骨骼上,选择任意的骨骼,系统都会自动把模型绑定在整个骨骼上,如果要把皮肤绑定在部分骨骼上,则需要精确地选择每个绑定的关节。
执行Skin→BindSkin→SmoothBind命令或者Skin→BindSkin→RigidBind命令。
●Bindto:
此下拉列表中包括CompleteSkeleton和SelectedJoints两个选项,用户可以根据情况进行执行。
●Coloring:
迫使关节的颜色与它的“皮肤点组”的颜色相同。
●BindMethod:
选择ClosestPoint单选按钮,系统自动为每个关节创建一个Jointclusters,并把每个关节附近的点分配到相应的关节簇中,从而使关节簇可以控制皮肤点组。
选择ParitionSet单选按钮,以区域组蒙皮方式进行蒙皮,并且激活Partition视窗变为有效,从中可以选取蒙皮专用的区域组。
对于区域组蒙皮而言,区域中组的数目应与关节的数目相等,这一点是相当重要的。
单击BindSkin按钮,则模型被绑定在骨骼上,此时皮肤的变换属性被锁定,用户不能移动或缩放皮肤,但可以显示皮肤组点的颜色。
选中作为皮肤的模型,如果皮肤是NURBS几何体,则执行Display→NURBSComponents→CVs命令。
然后运用移动工具移动骨骼,观察皮肤是如何随骨骼运动而变形的。
DetachSkin有时需要重新修改骨骼,重新设置骨骼的绑定姿势或对皮肤做进一步的建模。
这时首先需要将骨骼与皮肤之间的关联断开,然后进行必要的修改,修改完后,再重新连接皮肤与骨骼。
执行Skin→DetachSkin
●History:
在History下拉列表中可以根据实际的需要执行DeleteHistory、KeepHistory或者BackHistory中的任意一项。
●DelectHistory:
用于将断开皮肤,将皮肤恢复至未变形时的位置,并且删除所有未使用的关节簇。
●KeepHistory:
用于将断开皮肤将皮肤恢复至未变形时的位置。
但不删除未使用的关节簇。
●BakeHistory:
用于将断开皮肤并且删除所有未曾使用过的关节簇。
但它不能将皮肤恢复至未变形时的位置。
●Coloring:
选中RemoveJointColors复选框将在断开皮肤与骨骼之间的关联时删除关节的颜色。
单击Detach按钮,执行断开命令。
此时,因为皮肤的变换属性被解锁,所以可以使用变换工具移动、旋转或缩放皮肤。
GoToBindPose当骨骼被蒙皮之后,骨骼的运动同时引起皮肤的变形。
但是,当骨骼恢复到绑定姿势时,皮肤也会恢复成未变形时的形状。
因此用户需要恢复骨骼的绑定的姿势(如添加网格曲肌时)就可以执行Sking→GoToBindPose命令来恢复绑定姿势。
选择骨骼中的任意关节后执行Skin→GoToBindPose命令,则骨骼恢复至绑定姿势。
有时,因为运用了Constraints、KeyframedIKHandles或Expresions,骨骼不能恢复至绑定姿势,此时会弹出一个错误提示信息:
Error:
CouldNotReachBindposeDueToConstraints,Expressions,O