CG游麟网官方站
查看: 2636|回复: 12

[3D软件技术教程] 【Maya】详解三维旋转动画的技术运用--下篇(技术运用)

[复制链接]

133

主题

174

帖子

2万

积分

苍生崇拜

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

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

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

发表于 2016-3-24 17:07:39 | 显示全部楼层 |阅读模式
【Maya】详解三维旋转动画的技术运用--下篇(技术运用)【旋转层级—摄像机动画的制作】
场景中一个小车从斜坡上飞下,然后斜坡后的摄像机镜头跟随车子进行摇动。
2882303761534328558.jpg
因为使用目标摄像机(Camera and Aim),很多时候并不能满足我们对于动画的细节要求,因此这里我使用常规的摄像机来说明旋转顺序的重要性。
首先进入摄像机视点,移动到相应位置。在后面的动画设置中,将只对摄像机的旋转数值进行操作,不改变摄像机的位置。
1.在小车即将飞越斜坡时设置一个关键帧;
2390848452197524547.jpg
2.在小车飞到最高点时,再对摄像机设置一个关键帧;
2615184008635919462.jpg
3.小车落地时,对摄像机设置最后一个关键帧。
2390848452197524566.jpg
为了平滑动画效果,动画曲线使用默认的类型。播放观看动画效果。
2882303761534328582.jpg 2521734316367986654.jpg



从结果中可以看到,摄像机视点在过程中很不听话的偏离了预定路线,发生了严重的摇晃。
改变摄像机默认的旋转顺序(RotateOrder)xyzzxy,然后重复前面的动画关键帧设置。 23925373037621332.jpg

现在播放动画,可以看到,摄像机的跟随动画相对完善了很多。
1554304821413450492.jpg 3113676192390493388.jpg

对比一下两个不同旋转顺序的摄像机的动画曲线:camera1的曲线中,RotateX和RotateY轨道具有朝Y轴正向的趋势,而RotateZ则朝着Y轴负向,且曲线关键点之间的数值变化较大;camera2的曲线较为平缓,统一朝向Y轴负向。不难看出,如果需要调节动画曲线,camera2的曲线形态更容易控制。
1165024928622613584.jpg


旋转顺序对于动画的影响是很直接的,因此我们要根据动画的需要改变物体的旋转顺序。在上篇我已提到,旋转顺序的设置,关键点就在于“最高层级的旋转轴应该是动画中使用频率和数值范围变化最大的”。
现实拍摄中,摄像机最常发生的动作就是摇镜头,对于maya的坐标系就是Y旋转轴;在一定范围内,摄像机会有仰视和俯视的动作,那么对应的则是X旋转轴;摄像机左右倾斜(就像一个人歪着脑袋看景物)的几率并不大,那么Z旋转轴就是最低层级。因此,多数情况下,maya中摄像机最适合的旋转顺序就是zxy

再举一个例子,赛车运动。同摄像机一样,赛车在地面上打转的几率最高,Y旋转轴依然是最高层级的;接着,X旋转轴是赛车前空翻时所需要的,Z旋转轴是赛车侧翻时所需要的。如果你要制作一段赛车前进中撞到障碍后向前翻腾的动画,那么最佳的旋转顺序就是zxy;如果你要制作一段赛车被旁边的金刚之类的怪物撞击后侧翻的动画,那么最佳的旋转顺序就是xzy。
如果在动画完成时发现物体选错了旋转顺序,可以通过欧拉过滤(EulerFilter)和四元插值来解决。选择camera1,然后在GraphEditor动画曲线编辑器中,执行Curves->EulerFilter。
1020065315616632135.jpg
此时动画曲线变得较为平缓,解决了可能产生万向节翻转的问题。播放动画,发现效果虽然有了改进,但是仍无法避免摄像机的晃动,此时涉及到的就是欧拉旋转的“绕远”问题。
2521734316367986632.jpg
选择三条旋转动画的曲线,执行Curves->ChangeRotationInterp->QuaternionSlerp,将欧拉曲线四元化。
1014435816082416184.jpg
*注意:四元化命令和EulerFilter 是分别独立的,两者并无直接联系。
2524267591158373387.jpg
经过四元插值计算的camera1的动画,现在看起来和camera2效果差不多了,而且具体的说来,此时的camera1旋转动画比camera2更为标准。

以下是删除camera2动画中间关键帧的RotateY关键点后的效果,直接实现了流畅的镜头动画(未调节曲线的正切手柄)
2763802796339142489.jpg

【欧拉过滤-万向节翻转的解决】
接下来,进一步介绍欧拉过滤(EulerFilter)的重要性:纠正万向节锁或者翻转的产生。
角色的手臂关节是旋转动画中运动最为灵活的部位,通常很难选用一个合适的旋转顺序。
1.在第1帧时,设置角色手臂关节的第一个关键帧;
2661345904816462617.jpg
2.第50帧时,设置手臂关节的第二个关键帧。
2547067064271935898.jpg
3.播放动画。
2738470048435187175.jpg
我使用了一个粒子发射器跟随手臂运动,绘制出旋转动画的路线。从动画效果中可以看到,角色手臂并没有按预计的动作过程干脆利索的完成一个抬手动作,而是绕了一个大圈子,甚至穿插到角色身体模型中才到达终点位置。
选择手臂关节,在GraphEditor中执行Curves->EulerFilter,再次播放动画。
2891029485812364123.jpg 584905001621954905.jpg
万向节翻转的问题得到了不错的解决。欧拉过滤除了在手工调节的旋转动画中需要用到,在导入动作捕捉数据时也会很有帮助。例如,捕捉动画数据过程中因复杂的动作而导致旋转曲线变形,使用欧拉过滤可使变形的曲线正常化。不过,经过欧拉过滤修正后的动画曲线,若非需要,尽量不要添加新关键帧,否则会导致相应的X,Y,Z关键帧异常。
3DS Max中,欧拉过滤对应的位置:
Graph Editors->Track View->Utilities-> TrackViewUtilities->Euler Filter
2791668819033503925.jpg

【四元数-欧拉旋转问题的解决】
上篇提到“解决翻转问题使用的是欧拉过滤(EulerFilter),解决绕远问题则是使用四元插值来计算动画曲线(四元插值也能同时解决万向节翻转的问题)”。
欧拉过滤仅解决了旋转动画异常翻转的问题,但是并不能改进动画的最佳过程,虽然很多时候动画效果在我们看来已经可以接受。以下就介绍四元数的运用。
1.在第1帧时,设置角色手臂关节的第一个关键帧;
2558326063340366362.jpg
2.第50帧时,设置手臂关节的第二个关键帧。
2605613859427754065.jpg
3.播放动画。
2535808065203508977.jpg 46443371174464749.jpg


这次,手臂并没有发生异常的万向节翻转,使用EulerFilter也没有任何效果,但是从粒子绘制的动画路线中可以看出,角色的手臂进行了一个较为夸张的向外伸展动作后才到达终点位置,这说明欧拉旋转插值造成了明显的“绕远”动画路线。欧拉旋转下,这个问题只能通过增加过渡关键帧来解决,而使用四元数可以得到快速的纠正。在GraphEditor中选择手臂关节的旋转轨道或者动画曲线,执行
Curves->ChangeRotationInterp->QuaternionSlerp。
播放动画,可以看到动画效果得到了纠正。
2535808065203509041.jpg 580682876971297098.jpg


四元数能解决欧拉旋转产生的各种问题,但它无法制作关键帧之间超过360度的旋转,并且在欧拉曲线转换为四元曲线后,很难再编辑关键帧的位置和正切手柄。当然,转换为四元插值计算的动画曲线,你可以加入新的关键帧并通过旋转手柄对其进行调节。四元数比较适合制作旋转幅度较大且运动较为单一的旋转动画。
如果确实需要对四元曲线进行正切手柄的操作,可以使用maya的TraxEditor轨道编辑器中的TimeWarp(时间变形)功能,对新增加的TimeWarp曲线进行类似动画曲线的调节。因为这个操作属于TraxEditor和GraphEditor的使用技术,此处我就不详细说明了。相对于3dsMax,目前的maya在四元数的操作上稍显复杂,因此四元数的直接应用并不是很流行。

在3dsMax中,四元数就是TCB类型的动画曲线控制器:赋予“TCB旋转”的控制器给旋转属性,也就相当于把“EulerXYZ”的控制器类型转为了四元数控制。TCB类型的动画控制器,可以通过更改TCB(张力,连续性,偏移)数值来改变动画曲线,控制十分方便。
34058472199206017.jpg 1022035640453600850.jpg

【总结】
虽然四元数具有很大的优势,但是多数动画师都会很谨慎的对待欧拉旋转和四元数的转换。毕竟转换为四元数后,动画的编辑将缺少灵活性,相对说来,EulerFilter欧拉过滤会更为实用。相比增加关键帧来改善欧拉旋转的动画效果,四元数象征着标准规范,不过普遍的动画就是一种视觉上“看上去那么一回事”就可以了,因此四元数被很多动画师忽略也是情有可言的。

附语:在游戏引擎中,四元数是常用的动画插值计算方式,尤其作为动作之间的过渡动画的计算插值;景观软件VUE中的动画插值采用的也是四元数。  
楼主热帖
回复

使用道具 举报

2

主题

340

帖子

5439

积分

誉满一方

Rank: 8Rank: 8

麒麟币
5069
任务币
85
威望
0
贡献
0
主题
2
在线时间
103 小时
发表于 2016-3-24 20:52:17 | 显示全部楼层
楼主太有才了,膜拜中……
回复 支持 反对

使用道具 举报

0

主题

1万

帖子

3万

积分

垂名青史

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

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

忠实会员

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

使用道具 举报

0

主题

4867

帖子

1万

积分

蜚声中外

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

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

使用道具 举报

23

主题

1万

帖子

3万

积分

垂名青史

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

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

最佳新人忠实会员

发表于 2016-3-26 10:21:07 | 显示全部楼层
CG游麟网真的很棒,我喜欢。
回复 支持 反对

使用道具 举报

1

主题

6313

帖子

4万

积分

垂名青史

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

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

最佳新人忠实会员

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

使用道具 举报

9

主题

1673

帖子

2544

积分

名动江湖

Rank: 6Rank: 6

麒麟币
800
任务币
135
威望
0
贡献
0
主题
9
在线时间
104 小时

最佳新人忠实会员

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

使用道具 举报

15

主题

5648

帖子

2万

积分

苍生崇拜

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

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

忠实会员最佳新人

发表于 2016-3-28 09:21:02 | 显示全部楼层
很崇拜楼主,这个资源不错!
回复 支持 反对

使用道具 举报

0

主题

1万

帖子

3万

积分

垂名青史

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

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

忠实会员

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

使用道具 举报

0

主题

139

帖子

1万

积分

蜚声中外

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

麒麟币
17899
任务币
0
威望
0
贡献
0
主题
0
在线时间
256 小时
发表于 2017-4-26 03:15:47 | 显示全部楼层
这个帖子不错,大家快来顶起来!
回复 支持 反对

使用道具 举报

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

本版积分规则

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