2014-11-24 167 views
0

我有一個動畫f0,f1,f2,f3中的四個關鍵幀,我試圖插入f1和f2之間的時間t =(f- F1)/(F2-F1)。四元數的二次插值(SQUAD)

我的問題是,我可以做關鍵幀之間的二次插值來找到旋轉?我想要使​​用全部四個關鍵幀。我也希望它在關鍵幀中是C1連續的。

我已經看過SQUAD和Catmull-Rom樣條曲線,但是我仍然有點猶豫要實現它們,因爲我不確定公式應該是什麼樣子。 SQUAD講述瞭如何在一系列旋轉之間進行插值,我不確定如何將它應用到四個。提前致謝!

回答

5

不幸的是,四元數不能生存在一個線性空間,所以它們之間的插值有點棘手,正如你已經發現的那樣。

我假設你想要使用加權平均值,就像你將在3D空間中計算曲線一樣。

首先,未定義超過兩個四元數的精確球面插值(SLERP)。這是因爲它們的組合使用乘法來描述,並且它們的乘積是non-commutative(除了其他原因)。所以,你將不得不使用的近似解的,因爲所有其他動畫軟件:-)

SQUAD(又名Shoemake的Quaternion curves)是一種可能性,或者更炫(更準確)優化爲基礎generalized quaternion interpolation。然而,在實踐中,我總是使用NLERP(歸一化線性插值,例如描述爲here),如果插值四元數相當接近(大約60到90度的差別仍然很好),這會給出良好的結果,同時非常簡單和快速。帶有3D矢量示例的簡單文章顯示了它們之間的區別here

個人而言,我總是回到幾何工具的Quaternion Algebra and Calculus筆記,這些筆記對CG中四元數的理論和實踐都有極其簡潔的描述。

並且不要忘記反向性,迄今爲止執行四元數插值時最常見的問題:)