利用插值函數lerp與slerp消除激光雷達運動畸變

介紹一下lerp與slerp的區別
lerp()函數,我們都很瞭解,進行插值運算,對於物體平移,使用lerp函數,十分方便。這裏就不過多說明了,詳細請看unity 聖典。然而對於物體旋轉方向的插值,效果就不那麼理想了。其實unity還爲我們提供了另一種插值函數---Slerp。Quaternion.lerp()。關於這個函數在聖典中的說明很短,只解釋是球形插值。讓人費解。關於這個問題我的理解是,如果想要對物體的旋轉進行插值,我們應該選擇slerp函數,這個函數利用四元數,對旋轉的角度進行插值,(至於更深層次的機制,我也不甚瞭解,希望大家留言補充)從而能夠達到較爲理想的效果。另外,還有Quaternion.lerp()函數,這個說是效果也不如slerp。大家可以自行嘗試。下面是關於slerp函數的代碼解釋

static function Slerp (from : Quaternion, to : Quaternion,t : float) : Quaternion 
注意form和to都是Quaternion四元數類型,而不是vector3類型。
Quaternion.Slerp (Quaternion.Euler(rotation_begin),Quaternion.Euler(rotation_end),t); 
Euler()方法是爲了將Vector3類型轉換成四元數類型。這是slerp函數的參數要求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章