ARCore和Sceneform与地理位置相关。

4
我一直在阅读文档和示例,但仍然无法想出如何将ARCore/Sceneform与地理位置结合使用的方法。一个示例是打开我的相机,根据我的地理位置和其他地方的地理位置,在我照相机与物体指向相同方向时对它们进行渲染。
请问是否有人能够指导我应该去哪里寻找相关信息以及提供任何建议?是否有从ARCore/Sceneform中可以使用的功能来帮助实现这一需求?
2个回答

1

ARCore的地理空间API

使用ARCore 1.31 地理空间API,您可以从Google Earth 3DStreet View图片(来自Google Maps)中获取地理空间数据,以使您的ARCore应用支持全球范围的基于位置的AR体验。这个数据模型是从数十亿张图片中提取的,并由Google VPS提供。

要启用地理空间API,请使用以下代码:

fun configureSession(session: Session) {
    session.configure(
        session.config.apply {
            geospatialMode = Config.GeospatialMode.ENABLED
        }
    )
}

然后检查对象的TrackingState是否为TRACKING:

val earth = session?.earth ?: return

if (earth.trackingState != TrackingState.TRACKING) { return }

现在,您已经准备好确定一个新锚点的姿态

val altitude = earth.cameraGeospatialPose.altitudeMeters - 1

val qtrnX = 0f; val qtrnY = 0f; val qtrnZ = 0f; val qtrnW = 1f;

earthAnchor = earth.createAnchor(latLng.latitude, 
                                 latLng.longitude, 
                                 altitude, qtrnX, qtrnY, qtrnZ, qtrnW)

地理空间支持区域

在使用地理空间 API 之前,请确保您所在的区域是支持的


嗨,安迪,你有计划在Medium上使用SwiftUI + Realitykit编写一个使用地理空间API的示例项目吗?我真的很想学习它们如何一起工作。谢谢,安迪! - Frank Lan

0

我认为没有什么特定于Sceneform的帮助,但我有一些想法: 1. 坐标系统是以米为单位的,这应该有助于您进行所需的计算。 2. 您可以让用户将设备直立(通过传感器检查),并使用相机姿态来与所有您想要使用的传感器(如指南针和地理位置)对齐。将所有内容相对于此位置进行定位。您可能还希望创建一个锚点到该位置,以便随着ARCore对世界的理解不断改进,保持所有内容的更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接