通过 Unity 使用 ARKit 创建的 ARWorldMap 的持久性

Persistance with an ARWorldMap created with ARKit through Unity

我是 AR 新手,正在使用 Unity、ARFoundation 和 ARKit。

我的 ARWorldMap 在室外或室内体验中是否具有持久性,它会像 Azure 一样有效吗?我只会在 iOS 上部署,所以跨平台并不重要。

拯救 ARWorldMap 不是火箭科学。如果 Unity 的 ARKit 扩展支持此功能,则 ARWorldMap 将以与预期相同的方式保存在任何 AR 应用程序中。主要区别在于 iOS 的 Unity 构建是在 slow Objective-C 中编写的,而不是 faster Swift 用于 UI 套件,而不是 最快的 Swift 用于 SwiftUI。在 iOS 中,用于存储 ARWorldMap 必须使用 NSKeyedArchiver,而用于检索 ARWorldMap 数据必须使用 NSKeyedUnarchiver.

func writeWorldMap(_ worldMap: ARWorldMap, to url: URL) throws {

    let data = try NSKeyedArchiver.archivedData(withRootObject: worldMap, 
                                         requiringSecureCoding: true)
    try data.write(to: url)
}

A​​RWorldMap 存储世界坐标网格、设备的位置和方向、周围环境的参考快照和 ARAnchors。很难说出你的意思 ...as effective as Azure... 但 ARWorldMap 数据是在 iOS AR 应用程序中存储和检索持久性数据的最有效离线方式。