java - 如何在 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
解决方案
在相机视图上放置一个箭头,它将指导您在任何情况下都不需要arcore。这是 na 的简单旋转ImageView
如果要根据方位旋转 3D 对象,则需要获取实际位置、目标位置、计算方位并根据从计算中收到的 int 度值进行旋转。
推荐阅读
- powershell - 通过 Powershell 拒绝域内组织单位的读取权限
- itext - 字体未正确嵌入使用 itextsharp 5.0.5.0 生成的 PDF
- angular - 在渲染 Angular Material 表时访问下一行
- google-apps-script - 创建 PDF 时的 Apps 脚本不存在最新更改
- sql - 比较同一表中的 2 列值
- angular - 如何对 ReplaySubject 的所有排放应用延迟?
- python - 为 Yocto 创建配方时,python3 中没有名为“datetime”的模块,但 python2.7 中存在 datetime
- java - 在 Firebase 功能上保存当前时间不起作用
- dart - 从double转换为int时如何避免使用'as'?
- python - 游戏。Windows 10. 在 loop.run_in_executor 之后使用 ProcessPoolExecutor 创建额外的窗口