首页 文章

基于运动学的世界被标记运动搞砸了

提问于
浏览
1

基于运动的世界被混淆在运动中

你好,我一直在Unity3d开发一款简陋的基于AR的游戏 . 在此之前,我一直在使用Vuforia在(多)跟踪器上部署我的场景 . 但是,我一直在和Kudan一起进行测试,我对使用跟踪器时的跟踪性能非常满意 .

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

我的引擎基于光线投射的碰撞而不是"UnityEngine.Physics"(几乎所有东西都是运动学的) . 当我使用Kudan引擎在跟踪器上部署我的3D环境时,我偶然发现了一个问题,我的整个物理都搞砸了 . 如果移动标记,则元素随之移动,但轴似乎随标记而变化,但我的物理似乎响应了我的旧轴方向 . 我的角色总是站在世界Y轴(不是跟踪器内的本地)的上方 . 另一个问题是我的播放器3D资产在"standing"和"falling"状态之间保持切换并最终在地板上剪切和掉落(这可能是由于摄像机检测中的抖动) .

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

想到的解决方案之一是使用本地坐标系,但我希望有一个替代解决方案,因为当我使用Vuforia时,我不需要进行任何进一步的修正 .

任何链接或反馈都表示赞赏 .

1 回答

  • 1

    您可以使用transform.InverseTransformPoint和transform.InverseTransformDirection结合Quaternion.LookDirection来获取kudan相机相对于MarkerTransformDriver对象的位置和旋转 . 这将允许您将相机放置在世界空间中,并保留您想要在unity3d世界原点增强静态的任何内容 .

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

相关问题