CG游麟网官方站
查看: 2586|回复: 13

[3D软件技术教程] Maya】详解三维旋转动画的技术运用--上篇(概念介绍)

[复制链接]

133

主题

174

帖子

2万

积分

苍生崇拜

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

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

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

发表于 2016-3-24 16:52:55 | 显示全部楼层 |阅读模式
【欧拉旋转和万向节锁】
很多动画新手,对于万向节这个概念可能会很陌生。但如果你是从事于3D动画制作,尤其是和旋转有关的动画(角色骨骼动画),稍微深入的了解这个工业术语将对你有很大的帮助。
3889984178141763967.jpg
Gimbal:万向节,又称常平架或平衡环,常用于镜头的调整装置,如监视器,支架望远镜。这里讨论的万向节是三维动画中的旋转轴系统,不是汽车的部件Universal Joint(也叫万向节),也不是航行的船只或飞机上使罗盘等仪器保持水平位置的圆环支架。虽然原理上是差不多的,但现实仪器和计算机函数各自所受到的限制是不同的。
580964351947906631.jpg
EulerRotaion:欧拉旋转。万向节的运动就是具有层级顺序的旋转轴运动,在3D软件中,表现为欧拉XYZ轴向旋转。每个物体都具有自身的欧拉旋转轴,且旋转轴之间的先后顺序可有六种不同的组合,以适应各类旋转动画的需要。
2806305517822353715.jpg
Maya中有两种欧拉旋转方式(位于GraphEditor中的Curves->ChangeRotationInterp)
:Independent(独立)和Synchronized(同步)。前者在调整关键帧的时候是将每个旋转轴向单独处理,后者则会强制同步三轴向的关键帧在时间线上的位置,这在使用GraphEditor的时候可看到效果。默认是Independent的方式。
2774217370477332168.jpg
欧拉旋转会引起的问题:
1.GimbalLock:万向节锁,也称为常平架锁定。在3D软件中,当旋转轴彼此重叠于平面上(旋转90°),在进行动画时,此重叠旋转轴将产生同样的效果(如XY轴重叠,此时无论转动X轴向还是Y轴向,物体都指向同样的位置)。这时方向轴失去了旋转自主性(旋转轴丢失),使用默认的欧拉旋转手柄,单轴向旋转物体的时候,会引起互补轴产生不必要的旋转,这说明已经发生了万向节锁。
2.GimbalFlipping:万向节翻转。当旋转关键帧之间的同轴差值大于180度,物体将在动画过程中发生突然翻转的现象。
3.旋转动画的路线“绕远”。调节旋转动画的动画师会经常遇到这样的现象,就是在某些方向上进行旋转动画的时候,物体不是进行最短距离的旋转,而是绕了个大弧线。


GimbalLock会造成旋转轴的丢失,那为什么我们在软件中操作的时候没有看到这个变化?这是因为软件为了操作的直观,固定着旋转手柄的外观,但背后其实是在进行着欧拉角计算,这点可以从通道栏中多组数值的变化看出。如果需要显示欧拉旋转的效果,可以双击Maya左侧工具盒的旋转工具图标,然后在工具设置窗口中选择Gimbal(或者直接点击右侧通道栏的Rotate文字,场景中的旋转手柄会快速切换为万向节模式)。使用Gimbal可以让我们很清楚的看到旋转轴发生的变化,但你也会发现在进行动画调节时会十分的别扭。
1302384717257311355.jpg
以下两图的比较,说明了GimbalLock发生时,旋转动画的异常结果:改变RotateX和RotateZ的数值,得到的是相同的结果。
1331095164881805315.jpg 2650086905747937065.jpg

GimbalLock造成万向节系统失去了某一方向的旋转轴,当我们使用物体的局部旋转操作手柄进行调节,看到的不仅仅是别扭的动画过程,还有就是通道栏数值的异常变化。
下图仅仅是改变了旋转控制手柄的Z旋转轴,就造成了所有旋转轴的数值变化。
1179943102388183761.jpg
解决万向节锁问题的思路在于更改旋转轴的层级,但是,旋转轴的层级关系恰恰就是万向节锁发生的原因。这里我精简的归纳为:除了层级最高的旋转轴,其他旋转轴只要发生90度以上的旋转,即产生万向节锁。所说的丢失轴向,表现为万向节翻转;万向节翻转的发生,正是由于万向节锁的存在。而只要发生了两个轴以上的旋转动画,旋转轴路线的绕远问题绝对会发生。

【旋转层级】
旋转层级,和maya中的RotateOrder(旋转顺序)有关。Maya默认的RotateOrder是xyz,意味着旋转顺序是x-y-z,旋转层级则是x<y<z(z层级最高,z包含y,y包含x)。
2567051787618296728.jpg
以下是层级对旋转动画的影响:

转动蓝色的z轴向,x和y轴向将随着改变;转动y轴向,x轴向将随着y轴而改变;旋转x轴,对任何轴向都没影响。
2735936773644692189.jpg
要按正确的旋转顺序进行,应该是:先调节x旋转轴,然后是y旋转轴,最后才是z旋转轴。
1548675321879141484.jpg
*根据经验,最高层级的旋转轴应该是动画中使用频率和数值范围变化最大的。Maya默认的xyz旋转顺序,对于常用的摄像机动画来说,并不是最佳的解决方案(下篇会详细说明)。
注意,改变物体的旋转顺序,只能在一定范围内适应动画的需要,并不能从根本上解决万向节锁的问题。虽然建立多个组来分离物体旋转轴是另一种避免万向节锁的方法,但是这并不是一种值得推广的技巧,因为有如下弊端:
1.需要在outliner中选择,调节数值不够方便;
2.动画路线不可预料,不能使用四元插值解决旋转路线的问题;
2502031067998131753.jpg

【四元插值】
解决翻转问题使用的是欧拉过滤(EulerFilter),解决绕远问题则是使用四元插值来计算动画曲线(四元插值也能同时解决万向节翻转的问题)。
对于从事CG制作而言,我们不需要去了解四元插值那个复杂的计算公式,但我们要知道这个概念的意义:获取球面旋转的最短路线(也可以反向求取最长路线)。例如制作人物肩膀部位手臂的旋转动画时,假如使用的是FK而不是IK,就很容易出现“绕远”的旋转路线甚至发生翻转动画;当引入四元插值计算,动画效果会更接近人物实际的行为。
1300414392420343870.jpg
欧拉旋转和四元插值的区别(摘自maya帮助文档)
1150669704810271919.jpg
*注意:无论对象旋转使用的是四元数还是 Euler 角度,“通道盒”(Channel Box)始终会显示 Euler 角度值。

【总结】
欧拉旋转会产生万向节锁,万向节锁会导致万向节翻转,可使用“欧拉过滤”解决;要减少万向节锁的发生几率,可以根据情况改变物体的旋转顺序;欧拉插值会产生旋转动画的路线不可预料,可使用“四元数”来纠正效果并同时解决万向节锁的问题。
楼主热帖
回复

使用道具 举报

0

主题

252

帖子

300

积分

小有名气

Rank: 3Rank: 3

麒麟币
39
任务币
0
威望
0
贡献
0
主题
0
在线时间
43 小时
发表于 2016-3-24 17:42:15 | 显示全部楼层
这个帖子不错,大家快来顶起来!
回复 支持 反对

使用道具 举报

2

主题

340

帖子

5439

积分

誉满一方

Rank: 8Rank: 8

麒麟币
5069
任务币
85
威望
0
贡献
0
主题
2
在线时间
103 小时
发表于 2016-3-24 20:52:35 | 显示全部楼层
CG游麟网真的很棒,我喜欢。
回复 支持 反对

使用道具 举报

1

主题

352

帖子

1639

积分

名动江湖

Rank: 6Rank: 6

麒麟币
1272
任务币
85
威望
0
贡献
0
主题
1
在线时间
18 小时
发表于 2016-3-24 20:53:54 | 显示全部楼层
这就是我想要的!非常感谢!
回复 支持 反对

使用道具 举报

0

主题

1万

帖子

3万

积分

垂名青史

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

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

忠实会员

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

使用道具 举报

0

主题

204

帖子

5928

积分

誉满一方

Rank: 8Rank: 8

麒麟币
5724
任务币
0
威望
0
贡献
0
主题
0
在线时间
108 小时
发表于 2016-3-25 08:29:04 | 显示全部楼层
CG游麟网真的很棒,我喜欢。
回复 支持 反对

使用道具 举报

5

主题

3975

帖子

5955

积分

誉满一方

Rank: 8Rank: 8

麒麟币
1992
任务币
235
威望
0
贡献
0
主题
5
在线时间
321 小时

忠实会员最佳新人

发表于 2016-3-25 09:33:53 | 显示全部楼层
这个帖子不错,大家快来顶起来!
回复 支持 反对

使用道具 举报

0

主题

4867

帖子

1万

积分

蜚声中外

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

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

使用道具 举报

23

主题

1万

帖子

3万

积分

垂名青史

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

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

最佳新人忠实会员

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

使用道具 举报

9

主题

1673

帖子

2544

积分

名动江湖

Rank: 6Rank: 6

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

最佳新人忠实会员

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

使用道具 举报

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

本版积分规则

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