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