开启左侧

[临床动画学] 关于bone骨骼瞎几把转 的解决办法及原理解释

    [复制链接]
大家好,我是拉撒路

今天我们要解决的是,bone和dummy乱转问题,以及找到为什么他会乱转的原因
本人现在转职做了技术美术,以后讲的东西会更加的技术向一些
我相信会对大家有帮助,毕竟就算你硬背下来几个术语,也可以在同行面前装逼
相信经验比较丰富的动画师都遇到过bone不听话乱转的情况
这里涉及到坐标轴的两种算法,欧拉角和四元数。
首先解释下啥叫欧拉角,简单说就是根据模型自身的坐标轴进行旋转,相当于max里面的local。
clipboard.png
欧拉角是有旋转顺序的,xyz三个轴向是父子孙三级关系(max内默认是X父Y子Z孙,关系可以修改)
父级旋转会带动子级和孙级,子级旋转会带动孙级而不影响父级,孙级只影响子级。
我们常见的坐标轴,三个轴向永远是互相垂直的,但是欧拉角的坐标轴只要开始转动就不再是互相垂直的了,甚至会重合。
简单演示下欧拉角的转动方式,比如我要把一个茶壶XYZ各转30度,在max后台的处理方式是
先转X(红)轴30度,此时Y(绿)轴和Z(蓝)轴已经被带动,然后继续转Y轴,同时Z轴收到带动,最后转Z轴。如图
未标题-1.gif
欧拉角的优势就是简单快捷参数少,人脑电脑都容易懂。
(别给我说你不懂 等会讲四元数你就知道什么是不懂了)
欧拉角的缺点嘛,经验多的动画师肯定都遇到过,那就是万向轴死结。
啥是万向轴死结,看一个简单的例子
(啊这例子一点都不简单,妈蛋为了还原万向轴错误试了好久才成功)
这是曲线图 只有两帧 我让一个圆锥沿单轴旋转180度
clipboard1.png
然而实际的效果跟我预想的不一样,模型看起来发生了一个拐弯才到达指定角度,
但是我的的确确只有两帧,并且曲线也是直的。这就是万向轴死结
未标题-5.gif
原因是什么,粗暴一点理解就是因为坐标轴之间的父子关系
(复杂的解释涉及到数学算法,写了你们也不会,才 才不是因为我没看懂)
由于父子孙关系的存在,子级转动一定角度之后父级和孙级就会重合,如下图
未标题-6.gif X轴和Z轴重合了,这时候如果我想要转动壶身让壶嘴朝向我,怎么办没有这个轴了。
(注意 这里我是吧max后台的欧拉角坐标轴具象出来了,并非是我们平时操作max的坐标轴)
QQ截图20170613172014.png 有一个轴向没有了,此此时我们必须同事转动三个坐标轴,每个轴转90度,像这样
未标题-2.gif 我们来拆解一下步骤,X先顺时针转90度,Y轴顺时针转90度,Z轴逆时针转90度,大功告成
未标题-4.gif 诶?万向轴情况没有发生对不对?恩 我们漏掉了一种情况,
同时转动三个轴还有一种转法也可以让壶嘴对着我
逆时针转X轴,顺时针转Y轴,顺时针转Z轴
(刚才是 X顺时针转,Y轴顺时针转,Z轴逆时针转)
未标题-6.gif 对吧,那我们开看下同时转这三个轴我们会得到什么样的结果
未标题-3.gif 好了 万向轴出现了,现在你明白刚刚为什么我吐槽说,要还原万向轴问题很难嘛
因为他完全是在正确的转法和错误的转法之间随机的……
两种方案都能实现最终效果,但是他们的过程是不同的。
至于你问max是如何选择每次执行哪一种过程,我只能回答是看运气……
QQ截图20170613171837.png 如图,错转的时候壶嘴画出了一条优美的曲线……可能这就是传说中美丽的意外吧……

说了这么多原因,是时候给解决方法了
第一种,调轴向,正如我们之前所讲,万向轴出现的原因就是因为父子孙的层级关系,
改掉层级关系自然也就能解决问题。
QQ截图20170613172204.png 选中出问题的骨骼(dummy或模型),在运动面板找到欧拉角参数,改变轴顺序。
至于改哪个才是对的,你真的要自己一个一个去试了。
如果找不到欧拉角参数这个选项,那就指定一下旋转的控制器,操作如图。
可能你默认的就是欧拉角XYZ,没关系,再指定一次,你就能找到欧拉角参数了。
clipboard12.png 这个方法,要挨个试轴向比较麻烦,还有个办法比较简单粗暴。
就是在刚刚指定欧拉角XYZ的地方,改成TCB旋转。
123.png 改成TCB之后,骨骼就不能一次旋转超过180度,否则就会调轴,这一点用过cs骨骼的都能明白是啥意思。
但是改了TCB万向轴的问题就彻底解决了,因为TCB的的计算方式是四元数。
讲道理,到这一步我就该讲四元数是什么了,但是我真是讲不动。
我粗暴的理解下来,就是说四元数旋转是用四个坐标来表示一个角度,所以可以避免万向轴。
更具体的,乃们自己看看吧。 1234.png 12345.png 这里再补充两个可以解决万向轴问题的方案,每种方案各有约缺点,各位酌情使用。
欧拉角过滤器,出现万向轴的时候,你可以第一时间点一下看看,也许好运降临问题就直接解决了。
曲线面板、编辑、轨迹视图实用程序、欧拉角过滤器
clipboard12313.png 还有一个方案并不成熟,万向轴问题也可遇不可求,没办法百分百复现。
我今天也没时间继续研究了,我大概说下思路。
还是在曲线面板 我发现出现万向轴问题的骨骼,他们曲线的初始位置没有归零,我尝试归零之后,问题貌似就解决了。如果没有解决,你可以尝试删除两个轴向上的曲线,来排查是哪个轴向出问题了。
欢迎大家吧出现万向轴问题的文件发给我。我在【unity美术万事屋】恭候各位
点【unity美术万事屋】:464443383
那么 今天就先到这~
参考阅读:
http://www.cnblogs.com/yiyezhai/p/3176725.html
https://wellmakers.com/index.php/archives/87/
http://www.ceeger.com/Unity/Doc/2011/Gimbal_Lock.html
http://www.bilibili.com/video/av8387812/









点击标签,内容一促即达。

拉撒路
上海市
其他作品 (35)

关于bone骨骼瞎几把转 的解决办法及原理解释

35519 779 6年前
您需要登录后才可以回帖 登录

全部评论
以前用maya的时候经常出现,不得不转global轴向,两个轴重合最蛋疼了,
后来在别的高手的文件里发现可以把父子孙关系改变且K帧才得以较完美的解决。

max遇到欧拉角一般我就用曲线编辑器里面那个过滤了,
max9没有就用的飘带插件,归零,也可以解决好像。

又学到了一种改成tcb的方法。终于比较详细的理解了欧拉角咯!

总之。赞美路爷!
6年前 回复
曾经因为万向死锁问题研究了好久,又回去把高数相关内容全看了一遍……后来发现,没什么卵用,改TCB就好了
6年前 回复
路爷赛高,路爷赛胖~~
6年前 回复
老司机带带我好不好!
6年前 回复
.DD
以前只知道转TCB,学习了,给力!

6年前 回复
不错,又占了一个沙发!
6年前 回复
这个是真的强 我之前就看出这个问题  但是不能理解到底该怎么纠正

6年前 回复
参考下

6年前 回复
看看,,,
6年前 回复
厉害了我的哥!
6年前 回复
数据加载中...
没有更多评论了
快速回复 返回顶部 返回列表