1

基于运动学的世界被运动弄乱了

你好,我一直在 Unity3d 中开发一个基于 AR 的不起眼的游戏。到目前为止,我一直在使用 Vuforia 在(多)跟踪器上部署我的场景。然而,我一直在用 Kudan 进行测试,我对它在使用跟踪器时的跟踪性能非常满意。


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


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


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

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

任何链接或反馈表示赞赏。

4

1 回答 1

1

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

cameraPos = markerTransform.InverseTransformPoint(kudanCamera.position);
cameraRot = Quaternion.LookRotation(markerTransform.InverseTransformDirection (kudanCamera.transform.forward));
于 2017-06-27T15:18:58.100 回答