ARKit –如何为大型环境生成worldMap?

时间:2018-10-03 23:30:53

标签: ios augmented-reality arkit world-map

我正在使用ARKit开发4人游戏。我知道如何保存然后获取worldMap。不难

sceneView.session.getCurrentWorldMap { worldMap, error in
    guard let map = worldMap
        else { self.showAlert(title: "Can't get current world map", message: error!.localizedDescription); return }

    guard let snapshotAnchor = SnapshotAnchor(capturing: self.sceneView)
        else { fatalError("Can't take snapshot") }
    map.anchors.append(snapshotAnchor)

    do {
        let data = try NSKeyedArchiver.archivedData(withRootObject: map, requiringSecureCoding: true)
        try data.write(to: self.mapSaveURL, options: [.atomic])
        DispatchQueue.main.async {
            self.loadExperienceButton.isHidden = false
            self.loadExperienceButton.isEnabled = true
        }
    } catch {
        fatalError("Can't save map: \(error.localizedDescription)")
    }
}

但是我不知道如何使用iPhone跟踪以下位置(50x50米)来生成此worldMap

enter image description here

您能告诉我如何跟踪该空间吗?

1 个答案:

答案 0 :(得分:0)

如果您想在周围带有AR对象的真实环境中有效移动,则应使用整个开发人员的工具库进行精确定位:核心位置框架(核心位置框架)(该服务可用于确定设备的地理位置,海拔高度,方向或相对位置)到附近的iBeacon),iBeacon框架和经过认证的硬件(用于iBeacon位置感知的交互式可能性对于室内导航而言尤其酷),Vision和Core ML框架(旨在使用经过训练的机器学习模型来对输入数据(例如符号)进行分类和图片)。

在使用上述框架之前,您应该在iPhone的整个环境中进行多次跟踪(每次向现有功能阵列添加新功能点)。看下面的图片,想象点云的样子:

enter image description here

希望这会有所帮助。