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