2014-05-17 62 views
0

我正在嘗試編輯默認的oculus攝像頭腳本,以停止響應一段時間的跟蹤傳感器,然後從攝像機指向它停止之後的時間點恢復正常運動跟蹤傳感器。停止和恢復Oculus運動

我能夠阻止相機響應跟蹤傳感器,但現在當它恢復工作時,它會「捕捉」到相機所在的位置,如果傳感器未被停用。然而,我希望它能夠「無縫地」恢復跟蹤。所以我想我也必須在那段時間停止更新一些變量。

這是到目前爲止我的代碼,它位於OVRCamera腳本功能SetCameraOrientation:

if (Time.realtimeSinceStartup >= 11f && Time.realtimeSinceStartup <= 17f) 
{ 
    camera.transform.rotation = lastRotation; 
} 
else 
{ 
    camera.transform.rotation = q; 
    lastRotation = q; 
} 

這是我的新變量的變量聲明:

private Quaternion   lastRotation  = new Quaternion(); 

我會感謝如果有人能幫助我。

謝謝。

+0

你想達到什麼目的?如果凍結跟蹤數據然後恢復它,用戶可能會向上看,現在他們會看到其他地方?或者你想只在y軸附近凍結? – peterept

+0

有一點需要記住的是,凍結/恢復頭部跟蹤極大地增加了引起暈車的可能性。查看最佳實踐文檔以獲取更多信息:http://static.oculus.com/sdk-downloads/documents/Oculus_Best_Practices_Guide.pdf –

回答

0

如果您希望繼續從你離開的位置跟蹤,然後當你繼續,你需要記錄當前的方位和lastRotation之間的增量,以便您可以從此應用三角洲逆...

我不知道Unity四元數的確切語法,但是你想要這樣的:

if (Time.realtimeSinceStartup >= 11f && Time.realtimeSinceStartup <= 17f) 
{ 
    camera.transform.rotation = lastRotation; 
    deltaRotation = q * lastRotation.inverse(); 
} 
else 
{ 
    lastRotation = q * deltaRotation.inverse(); 
    camera.transform.rotation = lastRotation; 
} 
+0

我明白您的意思,並且您的代碼看起來非常有前途。我將在稍後嘗試並報告,但已經表示感謝。 – Timguin