首页 > 解决方案 > 如何在 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”应该是什么:Placeing an object with a given compass bearing in ARCore

标签: javaandroidaugmented-realityarcore

解决方案


在相机视图上放置一个箭头,它将指导您在任何情况下都不需要arcore。这是 na 的简单旋转ImageView

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


推荐阅读