我試圖將旋轉從一個傳感器映射到使用四元數的Unity,並且我不能 似乎弄清楚爲什麼旋轉映射不正確。將四元數映射到Unity
我使用Adafruit BNO055以四元數的形式拉絕對方向。它們的四元數實現的源碼 可以在here找到。從我所瞭解的 四元數中,我幾乎什麼都不需要,我應該能夠將四元數從傳感器中拉出來,並將其泵入Unity中的任何GameObject中,以便它們共享相同的方向。如果我有一個循環 設置,從傳感器讀取四元數據並將其傳送到Unity,則GameObject應該像物理世界中的傳感器一樣旋轉。不幸的是,這沒有發生。
從傳感器發送到統一
數據w: 0.903564
x: 0.012207
y: 0.009094
z: -0.428223
是對四元數從傳感器不等於在Unity使用的四元發送的一個例子?如果不是,我會怎樣去改進這些映射?
在此先感謝您的幫助!
單位四元數被拉出傳感器。沒有特殊類型的四元數。檢查你的旋轉邏輯(例如,用四元數乘法運算) –
@JinbomHeo你能詳細說一下檢查你的旋轉邏輯嗎?我基本上是說object.rotation = new Quaternion(w,x,y,z) – nathansizemore
Unity quaternion的構造函數是新的Quaternion(x,y,z,w),而不是w,x,y,z。並且可能存在相對旋轉值。如果是這種情況,你應該是object.rotation = object.rotation *新的四元數(x,y,z,w)。 –