2016-12-12 32 views
1
基於

運動世界搞砸被搞砸的運動

您好,我一直在開發中Unity3d一個不起眼的基於AR遊戲。在此之前,我一直在使用Vuforia將我的場景部署在(多)跟蹤器上。不過,我一直在與Kudan進行測試,並且對使用跟蹤器時的跟蹤性能感到非常滿意。基於運動的世界正在用標記移動


http://i.imgur.com/nTHs6cM.png


我的引擎是基於光線投射的碰撞,而不是 「UnityEngine.Physics」(幾乎所有的運動)。當我使用Kudan引擎將我的3D環境部署在跟蹤器上時,我偶然發現了一個問題,我的整個物理結果都搞砸了。如果標記被移動,則元素隨之移動,但軸似乎隨着標記而改變,但是我的物理似乎響應了我的舊軸方向。我的角色總是站在世界Y軸的上方(而不是跟蹤器內的本地)。另一個問題是我的3D播放器資源不斷在「站立」狀態和「下降」狀態之間切換,最終導致剪輯和落地(這可能是由於相機檢測中的抖動)。


http://i.imgur.com/ROn4uEz.png

一個浮現在腦海中的解決方案是使用局部座標系,但我希望有我用Vuforia時,因爲一個替代解決方案,我沒有做任何進一步修正。

任何鏈接或反饋表示讚賞。

+0

與Kudan相機總是停留在原點(0,0,0),任何被跟蹤的物體都圍繞它移動。如果你想繼續使用Kudan,你似乎必須切換到本地座標系統。 – DisturbedNeo

+0

謝謝。我懷疑這一點。 – Keny

回答

1

您可以使用transform.InverseTransformPoint和transform.InverseTransformDirection結合Quaternion.LookDirection來獲取kudan相機相對於MarkerTransformDriver對象的位置和旋轉。這將允許您在世界空間放置相機,並在unity3d世界原點保留您想要增強靜態的任何內容。

cameraPos = markerTransform.InverseTransformPoint(kudanCamera.position); 
cameraRot = Quaternion.LookRotation(markerTransform.InverseTransformDirection (kudanCamera.transform.forward)); 
+0

這使我接近ARToolKit所需的東西。雖然,這不完全正確。我認爲也許一個軸是相反的旋轉。我在這裏創建了另一個問題:https://stackoverflow.com/questions/45236934/artoolkit-dynamic-camera-with-single-static-marker –