作者oopFoo (3d)
看板GameDesign
標題Re: [程式] 遊戲數學:Sterp - 物件旋轉擺扭解構
時間Tue Sep 4 18:12:11 2018
※ 引述《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.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.146.94
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1536055935.A.2E0.html
推 cjcat2266: 有啊,沒有特別需求就是用nlerp 09/05 00:27
好棒。可惜厲害的人才都必須離開台灣。
推 cjcat2266: 我認為不能這麼說,在台灣的人才不少吧 09/05 15:32
→ cjcat2266: 在一些國內業界論壇出入,其實可以看到頂標水準不輸國 09/05 15:35
→ cjcat2266: 外的 09/05 15:35
台灣還是有神人
推 elcnick: 其實Unity3d的Quaternion.Lerp就是nlerp 09/06 02:39
謝謝,之前不太確定lerp就是nlerp,沒研究遊戲engine太久了。
不過還是Jonathan Blow解釋清楚。google "lerp vs slerp"那個unity forum看了,沒講到重點。
※ 編輯: oopFoo (36.231.129.217), 09/06/2018 10:40:24
推 cjcat2266: 官方文件上有寫Quaternion.Lerp就是Nlerp 09/06 13:32
推 newyellow: 其實我不太用 slerp,都是用 lerp 再搭配 Curve 使用 09/15 00:14