您好,我一直在Unity3d开发一款简陋的基于AR的游戏。在此之前,我一直在使用Vuforia在(多)跟踪器上部署我的场景。但是,我一直在和Kudan一起进行测试,我对使用跟踪器时的跟踪性能非常满意。
http://i.imgur.com/nTHs6cM.png
我的引擎基于光线投射的碰撞,而不是“UnityEngine.Physics”(几乎所有东西都是运动学)。当我使用Kudan引擎在跟踪器上部署我的3D环境时,我偶然发现了一个问题,我的整个物理都搞砸了。如果移动标记,则元素随之移动,但轴似乎随标记而变化,但我的物理似乎响应了我的旧轴方向。我的角色总是站在世界Y轴(不是跟踪器内的本地)的上方。另一个问题是我的播放器3D资产在“站立”和“下降”状态之间保持切换并最终在地板上剪切和掉落(这可能是由于摄像机检测中的抖动)。
http://i.imgur.com/ROn4uEz.png
我想到的解决方案之一是使用本地坐标系,但我希望有一个替代解决方案,因为当我使用Vuforia时,我不需要进行任何进一步的修正。
感谢任何链接或反馈。
答案 0 :(得分:1)
您可以使用transform.InverseTransformPoint和transform.InverseTransformDirection结合Quaternion.LookDirection来获取kudan相机相对于MarkerTransformDriver对象的位置和旋转。这将允许您将相机放置在世界空间中,并保留您想要在unity3d世界原点增加静态的任何内容。
cameraPos = markerTransform.InverseTransformPoint(kudanCamera.position);
cameraRot = Quaternion.LookRotation(markerTransform.InverseTransformDirection (kudanCamera.transform.forward));