如何在指向给定地理方向的ARCore中放置对象

时间:2019-04-02 16:48:13

标签: java android augmented-reality arcore

我目前正在使用ARCore应用,想要在AR场景中放置从用户当前位置开始并指向地理北部的对象(例如箭头)。

我的想法是将对象放置在X轴上,围绕Y轴旋转它们,最后平移对象以使其原点位于用户的位置。我计划首先获取相对于北方的设备方向(我能够做到),并且还获取相对于ARCore世界坐标系的方向。我现在正在努力做后者。我想我需要在X轴和当前视图方向之间围绕Y轴的角度。我发现应该可以通过Pose做到这一点:

arFragment.getArSceneView().getArFrame().getCamera().getDisplayOrientedPose();

我不知道该怎么做。值qx(),qy(),qz(),getXAxis(),getYAxis()和getZAxis()似乎不是我所期望的。当我看着它们在移动设备时发生变化(将它们转换为度数)时,它们的范围大约为-55至55。

TL; DR:  如何在ARCore中旋转对象以指向给定的地理方向?

我找到了此解决方案,但不知道'dHelper'应该是什么: Placing an object with a given compass bearing in ARCore

1 个答案:

答案 0 :(得分:1)

在摄像机视图上放置一个箭头,该箭头将指导您,您在任何情况下都不需要arc。这是na ImageView

的简单旋转

如果要根据方位旋转3D对象,则需要获取实际位置,目标位置,对方位进行计数并根据从计算中获得的度数的int值进行旋转。