看板 GameDesign 關於我們 聯絡資訊
※ 引述《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