Re: [程式] 游戏数学:Sterp - 物件旋转摆扭解构

楼主: oopFoo (3d)   2018-09-04 18:12:11
※ 引述《cjcat2266 (CJ Cat)》之铭言:
: 最近在看一个GDC影片的时候讲者提到
: 旋转的 "摆扭解构" (swing-twist decomposition)
: 只是一语带过,但勾起了我的好奇心,所以就开始研究
: 研究后觉得算蛮有用的工具,所以就写了一篇文来整理和分享心得
: 一般从一个旋转渐变到另外一个旋转
: 是用球线性内插 (slerp, spherical linear interpolation)
: 数学上的意义是,代表旋转的四元数沿着4D球体表面的最短大圆路径移动
: 虽然在4D定义上是"最短路径",不过在某些情况下,slerp的效果不是最理想的
: 例如一个长竿在slerp的时候,两端视觉上并不是沿着3D球体表面的最短大圆路径
: 理想上两端应该要沿着大圆路径"摆动" (swing),然后本身沿着长轴"扭动" (twist)
: 这个时候就需要用摆扭解构把旋转分成摆动和扭动两个部分
: 后两部分各自内插后再组合,就可以达到理想的效果
: 详细解释(含插图动画)、推导、Unity中的实作和证明,请见:
: http://allenchou.net/2018/05/game-math-swing-twist-interpolation-sterp/
:
好棒。好久没在想quaternion的东东,虽然还是在用。
nlerp不知你听过吗?
http://number-none.com/product/Understanding%20Slerp,%20Then%20Not%20Using%20It/
游戏上来讲,其实比较好用。nlerp是commutative,也cheaper to compute.
作者: cjcat2266 (CJ Cat)   2018-09-05 00:27:00
有啊,没有特别需求就是用nlerp
作者: elcnick (左手谢谢右手指教)   2018-09-06 02:39:00
其实Unity3d的Quaternion.Lerp就是nlerp
作者: cjcat2266 (CJ Cat)   2018-09-06 13:32:00
官方文件上有写Quaternion.Lerp就是Nlerp
作者: newyellow (newyellow)   2018-09-15 00:14:00
其实我不太用 slerp,都是用 lerp 再搭配 Curve 使用

Links booklink

Contact Us: admin [ a t ] ucptt.com