CG游麟网官方站
查看: 2376|回复: 11

[3D软件技术教程] 【Maya】 FBIK系统的研究(3)-动画控制系统

[复制链接]

133

主题

174

帖子

2万

积分

苍生崇拜

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

麒麟币
25412
任务币
0
威望
15
贡献
453
主题
133
在线时间
28 小时

最佳新人忠实会员推广达人

发表于 2016-3-24 17:52:16 | 显示全部楼层 |阅读模式
FBIKFullBodyInverseKinematics的简称。全身反向动力学,顾名思义,整个角色关节都是由反向动力学系统控制。
在制作动画前,了解FBIK系统的原素作用很重要—这比动画调节优先。
【FK和IK】
先来认识FK和IK。
反向动力学IK(InverseKinematics)与正向动力学FK(ForwardKinematics)各有优缺点,通常需要结合使用。FK动画是按关节的父子级关系由高到低进行的,制作具有一定目标朝向的动画时难度很大,如伸手拿物品;
1112389107961542391.jpg
IK则以子级优先,先定目标,而后通过IK解算器来完成父级的关节动画。对于两足类(人物)角色而言,FK和IK在一些情况下需要相互切换。
1112389107961542465.jpg
IK是指向目标的动画,优点是动画精度和效率很高,但同样的,由于IK走的是直线,很多时候反而不能满足一些常规的动画效果。如人物随意的摆手时,手掌都是走弧线的,相对于IK,FK完成这类动画的速度更快。
通过物理学的杠杆原理,我们得到“力矩”这样的概念:当力矩相等,距离越长,力就越小。力矩也就相当于能量,那么结合实际可以看到这样有趣的现象:人们在闲散时,无意识的动作都是带有弧线的,因为这会降低力的消耗;当人们需要朝特定目标进行动作,为了最快的达到目的,因而都会使用更多的力来走最近路线。同样的支撑手臂,热烈的鼓掌和一记左勾拳,也是FK和IK动画的区别。当然,用杠杆原理来解释IK有些牵强,不过还是有那么些道理在里面的。
1112389107961542445.jpg

最后,我们可以根据实际情况归纳一下:FK适合制作角色闲时的细节动作,IK适合腿部以及具有目标倾向的手部动作。

附带提一下:采用Euler欧拉旋转轴直接控制的FK骨骼动画(或者通过控制器控制骨骼),会发生万向节锁和万向节翻转的异常现象,因此骨骼的绑定不仅仅要解决FK和IK的切换问题,还要同时解决万向节旋转的动画问题。

【FBIK的动画标记菜单】
选择FBIK效应器,右键可弹出一个FBIK系统专用的标记菜单,用于设置动画关键帧时的快捷操作(也可以使用系统提供的快捷键,如切换FK/IK:Alt+1或2或3,但个人觉得右键菜单更实用)。
3854236856099567631.jpg
以下会多次提到FK关节,它是FBIK系统隐藏的骨架,最终的动画效果通过它来完成,然后再传递给原骨架。注意不要将它和ReachMode:FK(FK吸附模式)混淆,FK关节是骨架,而FK模式是动画的计算方式。
3854236856099567664.jpg

【ReachMode:FK/IK模式的切换】
尽管名为FBIK,但并不是没有FK,FBIK系统的优点就是可随时进行FK和IK的切换(这也就是为什么FBIK系统中包含一套名为FK的骨架)。不过FBIK中的FK模式和传统的FK关节不太一样,FBIK的FK只是对最终的动画效果而言,动画制作过程中,它使用的仍是方便的IK系统。
首先,要在交互操作过程中得到正确的角色运动效果,你必须选择ReachMode为IK模式,并设置一个初始关键帧
3854236856099567687.jpg
在设置动画过程中,FK和IK模式的切换是通过对效应器的属性ReachTranslation(位移吸附)ReachRotation(旋转吸附)设置关键帧实现的(0至1表示FK到IK的融合程度),最终效果将直接包含在FK关节的动画过程中,对效应器的动画无影响。无论你选择哪个效应器,FK/IK模式对关节动画产生的影响必须是在设置动画关键帧之后才能看出来。 3854236856099567708.jpg
设置ReachMode为simple模式时,动画效果和IK模式是一样的,但关键帧信息不会被写入FK/IK效果,常用于制作初始的pose关键帧--实际上就是效应器的ReachTranslation和ReachRotation不会被设置关键帧,可在动作细节调节时再手动设置。
3854236856099567731.jpg

【KeyMode关键帧模式】
ReachMode控制的是FK关节的动画路线,而KeyMode控制的则是效应器(以及相关联的FK关节)的执行数量,关节的最终运动是二者计算的结果混合:通过hikHandle(角色IK手柄)将效应器的动画转移到FK各个关节上,形成两套不同的关键帧动画。All表示所有效应器和FK关节将被设置关键帧;BodyPart表示所选效应器的临近效应器和FK关节将被设置关键帧;Selected表示只有所选效应器和相关联的FK关节将被设置关键帧。
最终,FBIK系统包含两套动画曲线:效应器动画,隐藏的FK关节动画。原骨架不含动画信息,它是由隐藏的FK关节进行控制的。如果使用了角色组,效应器和FK关节的动画都会被归类到角色组原素中。
23925373021565127.jpg

【Effector效应器】
接着来研究Effector效应器的使用技术要点。通常的角色绑定,都包含有复杂的控制器,对角色的每个部位进行不同的控制,FBIK的效应器也就等同于这些控制器。由于经过一系列的解算,FBIK效应器并不是那么容易理解的;不过仅通过少数效应器就能完成复杂的动画这点上,FBIK也算是平易近人。
效应器初始数值不为0,但不能通过FreezeTransformations(冻结变形)命令来归零,否则会产生初始pose(姿势)的异常。
23925373021565154.jpg
每个效应器的属性中都有ReachTranslationReachRotation这两个属性,它们控制着FK关节对效应器的吸附程度,也就是上面我所说的FK/IK模式的融合程度。
23925373021565190.jpg
*FBIK的效应器允许远离关节运动,当启用ReachTranslation或ReachRotation,与效应器相关联的关节,会参考效应器的位移或旋转,进行小幅度吸附效应器的运动。当效应器运动范围较大时,ReachTranslation很有用,可在一开始就开启;而ReachRotation会出现一些异常翻转,此时要慎用该属性。
Pin(固定)是效应器的另一个重要的功能,PinTranslate和PinRotate分别是对效应器位移和旋转的固定,PinBoth则是两者皆使用,Unpin取消固定。它不是即时生效的约束,因为你通过其他效应器带动它产生的运动变化只出现在交互操作过程中,实际动画时该效应器不一定具备Pin效果。Pin一定要在下一个动画进行前设置(位置应在前一个关键帧),它的作用效果会立刻影响FK关节的最后位置;当通过Pin完成动画效果后,再修改Pin的状态是不影响动画效果的。所以,不需要对Pin参数进行动画关键帧的设置,这样做没意义。
由于Pin效果还和FK关节对效应器的吸附程度有关,因此Pin通常是配合IK模式使用,因为FK模式时会出现关节滑动的现象--当然,你也可能刚好需要这样的效果。注意:使用Pin时,最好对该效应器也设置关键帧,否则稍后的FK/IK切换会影响到前面FK关节的动画效果
IK模式手部的完全固定效果:
1112389107961542485.jpg
FK模式手部的完全固定效果(出现滑位):
1112389107961542422.jpg
*较早版本的Maya是通过圆球和方块来表示Pin的状态,而现在使用的是英文字母表示:T表示固定位移,R表示固定旋转。

【hikHandle和hikFloorContactMarker】
hikHandle(角色IK手柄)节点就像内核系统的nucleus节点,控制着整个FBIK的执行情况,如手指脚趾的解算,各关节的旋转和吸附等,但通常不会对这些属性进行修改,除非需要较为特殊的动画。
23925373021565257.jpg
选择角色根部的效应器(旁边附带一个圆圈的效应器),可在属性编辑器中看到一个特有的hikFloorContactMarker(角色IK地面接触生成器)节点,它的作用是限定FK关节的运动平面。 23925373021565227.jpg
当在通道栏或属性编辑器中,将该节点的HandsContactFeetContact开启,角色手部和脚部将会产生6个小方块,用于定义手部和脚部的长宽高(单位:厘米)。此时,手部或脚部将被限定在场景的中心网格平面上,无论如何移动效应器,角色的手或脚都不会低于该平面(其他部位则可以)。这项功能在制作角色走路,跑步,拍桌子等具有和大面积物体多次接触的动画时十分有用。
1504202275543729930.jpg
此外,还可以分别对接触平面进行一些修改。手部选择手腕的效应器(LeftHandEff或RightHandEff),而脚部选择脚踝的效应器(LeftFootEff或RightFootEff),执行Skeleton->FullBodyIK->AddFloorContactPlane,可创建一个预览用的碰撞平面。虽然视图中看到它只是一个有边框的平面,其实hikGroundplane是一个无限大的碰撞平面,你不用担心会踏出这个影响区域。对该平面进行位移的旋转,可以改变角色手部或脚部接触平面时的变化。例如,你可以制作一个角色走上斜面或者撞墙的动画。
1504202275543729954.jpg 1112389107961542497.jpg


【FBIK的动画关键帧编辑】
选择效应器,对其设置关键帧有两个快捷键:Ctrl+f或者s。如果在Animate->SetKey的选项中去掉SetFullBodyIKKeys的勾选,则s键无效。
*注意:如果没用创建相应的角色组,AutoKey自动记录关键帧功能对FBIK效应器不起作用;并且自动记录关键帧功能不会对效应器关联的骨骼进行动画设置,因此当KeyMode为selected时将不会产生关节运动的动画。所以为了得到正确的动画效果,不应该对FBIK使用AutoKey,应手动Ctrl+f或s进行。
1504202275543729979.jpg
FBIK的FK/IK切换的动画曲线类型是SteppedNext下级阶梯(事实上也只有FBIK系统才适用这类动画曲线):在动画进入下一个关键帧的时候,会提前计算上一个关键帧完成时所做的参数修改。效应器的动画曲线,在FK/IK模式时是Linear线性切线类型,simple模式时则是Clamped夹具式;FK关节的动画曲线则以Clamped夹具式进行。
1504202275543730012.jpg
编辑动画曲线时,由于FK关节动画是经过效应器动画计算后的结果,因此FK模式时是不能通过编辑效应器的动画曲线来改变关节运动的。只有开启效应器的ReachTranslation属性,关节被吸附到效应器,才可以使用曲线编辑了。不过此时,FK关节动画不会再被写入新的动画信息,最终动画效果由效应器进行控制,转为IK动画。
如果确实需要进行FK模式时的动画曲线调节,则在ReachTranslation和ReachRotation为0时,对FK关节进行直接调节。选择任意效应器,执行Skeleton->FullBodyIK->ShowFBIK FK Skeleton,显示FK骨架,然后选择原骨架Ctrl+h隐藏。不过由于此时是直接对关节进行动画曲线编辑,要小心可能会出现的万向节翻转问题,尽管经过FBIK系统解算后出现的几率不大。
1112389107961542343.jpg

最后,简单说明一个针对FK动画问题的解决方案。FBIK解决了万向节锁和万向节翻转的问题,但并不能解决欧拉旋转的另一个问题:路线绕远。虽然FK动画走的是弧线,但应该是最短的弧线;而Maya默认的欧拉旋转,会出现动画路线的绕远问题。在GraphEditor动画曲线编辑器中,选择动画物体的RotateXYZ,执行Curves->ChangeRotationInterp->QuaternionSlerp 1112389107961542378.jpg
这是Maya2011细分出来的一个功能,在之前的版本中称为SynchronizedQuaternion同步四元插值,作用是一样的。QuaternionSlerp四元球面线性插值),可从根本上解决欧拉旋转的异常问题:万向节锁,万向节翻转,旋转路线的绕远。但欧拉旋转变为四元插值,同样存在一些不足,如旋转范围小于360度,曲线编辑复杂。有关欧拉旋转和四元插值的问题,我会另作详细的说明,本篇不做讨论。
楼主热帖
回复

使用道具 举报

0

主题

1411

帖子

2429

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1018
任务币
50
威望
0
贡献
0
主题
0
在线时间
296 小时

最佳新人忠实会员

发表于 2016-3-24 22:07:55 | 显示全部楼层
多谢分享多谢分享多谢分享多谢分享多谢分享多谢分享多谢分享多谢分享多谢分享
回复 支持 反对

使用道具 举报

0

主题

1万

帖子

3万

积分

垂名青史

Rank: 16Rank: 16Rank: 16Rank: 16

麒麟币
21764
任务币
359
威望
2
贡献
131
主题
0
在线时间
754 小时

忠实会员

发表于 2016-3-24 23:21:30 | 显示全部楼层
感謝分享這麼好的資源!
回复 支持 反对

使用道具 举报

15

主题

5654

帖子

2万

积分

苍生崇拜

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

麒麟币
16627
任务币
450
威望
0
贡献
1
主题
15
在线时间
296 小时

忠实会员最佳新人

发表于 2016-3-25 08:54:02 | 显示全部楼层
CG游麟网真是个很好的学习天堂!
回复 支持 反对

使用道具 举报

1

主题

199

帖子

1883

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1665
任务币
135
威望
0
贡献
0
主题
1
在线时间
41 小时
发表于 2016-3-25 09:35:02 | 显示全部楼层
CG游麟网真是个很好的学习天堂!
回复 支持 反对

使用道具 举报

0

主题

4867

帖子

1万

积分

蜚声中外

Rank: 13Rank: 13Rank: 13Rank: 13

麒麟币
12539
任务币
0
威望
0
贡献
0
主题
0
在线时间
305 小时
发表于 2016-3-25 13:29:28 | 显示全部楼层
棒棒的,感谢楼主分享。
回复 支持 反对

使用道具 举报

1

主题

6313

帖子

4万

积分

垂名青史

Rank: 16Rank: 16Rank: 16Rank: 16

麒麟币
33915
任务币
450
威望
1
贡献
6
主题
1
在线时间
1293 小时

最佳新人忠实会员

发表于 2016-3-26 22:52:47 | 显示全部楼层
好资源~!点赞
回复 支持 反对

使用道具 举报

0

主题

1万

帖子

3万

积分

垂名青史

Rank: 16Rank: 16Rank: 16Rank: 16

麒麟币
21764
任务币
359
威望
2
贡献
131
主题
0
在线时间
754 小时

忠实会员

发表于 2016-4-3 23:34:51 | 显示全部楼层
常常吸取前輩的實務經驗才能增長自己的實力!
回复 支持 反对

使用道具 举报

23

主题

1万

帖子

3万

积分

垂名青史

Rank: 16Rank: 16Rank: 16Rank: 16

麒麟币
14932
任务币
400
威望
0
贡献
1230
主题
23
在线时间
1499 小时

最佳新人忠实会员

发表于 2016-5-1 09:01:01 | 显示全部楼层
CG游麟网真的很棒,我喜欢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
客服QQ:
47413829
新QQ群:
418757022
在线时间:周一至周五
9:00-22:00 Email:
47413829@qq.com
举报:网盘资源失效
在线客服
快速回复 返回顶部 返回列表