我在美国(Houston,TX),我尝试在RealityKit中添加一个ModelEntity到一个特定的地理位置。但是我在任何地方都看不到这个实体。我做错了什么吗?
// Geo anchor
let location = CLLocationCoordinate2D(latitude: 30.0374898290727,
longitude: -95.58518171314036)
let geoAnchor = ARGeoAnchor(coordinate: location, altitude: 70)
arView.session.add(anchor: geoAnchor)
let geoAnchorEntity = AnchorEntity(anchor: geoAnchor)
arView.scene.anchors.append(geoAnchorEntity)
let box = ModelEntity(mesh: MeshResource.generateBox(size: 0.5),
materials: [SimpleMaterial(color: .green, isMetallic: true)])
geoAnchorEntity.addChild(box)
1条答案
按热度按时间uyto3xhc1#
ARGeoAnchoring的工作原理
ARGeoAnchoring
专门在户外工作,通常在主要的公共街道上,靠近公路。它是如何工作的?嗯,库比蒂诺的汽车使用360˚激光雷达扫描道路沿着的环境,然后将扫描结果(苹果Map称为localization imagery
)上传到服务器。考虑一下,当用户运行ARGeo配置时,互联网连接是强制性的。使用ARGeo配置运行会话可以通过GPS、Map数据和iPhone的指南针跟踪你的位置。如果你的位置与苹果汽车经过的坐标相匹配,那么你设备的传感器“看到”的内容(我指的是RGB摄像头、GPS和IMU数据)将与苹果服务器上存储的数据进行比较。根据匹配结果,将创建(或不创建)一个位置锚。
为什么会这么复杂呢?答案很明显:GPS本身并不能提供高精度的位置锚定位,支持GPS的智能手机通常精确到5.0米以内。
为了精确地放置位置锚点,地理跟踪需要比单独使用GPS更好地理解用户的地理位置。ARKit下载描述该地区物理环境的图像。苹果通过捕捉街道上的风景照片并记录每张照片的地理位置来提前收集这些定位图像。通过比较设备的的当前摄影机图像与此图像,会话将用户的精确地理位置与场景的局部坐标进行匹配。
欲了解更多信息,请阅读这篇文章和这篇文章。