将 ARKit 场景保存到后端并稍后加载?

Save ARKit scene to backend and load later?

如果我的问题措辞不正确,请提前致歉;因为我是 AR 技术的新手,也是 CS 的学生。我整天都在阅读有关 AR 的内容,但我还没能回答我的问题。

我的问题是:使用 Apple 的 ARKit,我们是否能够从后端加载 ARKit 场景或会话以识别创建它的平面?完美的例子是 WWDC 演示中的 Babysitter 应用程序。我可以在我家的表面上创建绘图,将该会话保存到后端,然后当保姆过来时,它会从云端下载会话数据,并将绘图加载到它们保存的位置吗?

再次抱歉,如果我把问题搞砸了,我还没有足够的经验来正确地提出这个问题。

更新: 在 "ARKit 2" aka ARKit for iOS 12 中,您确实可以保存和恢复 AR 会话状态。参见 , the WWDC18 talk on ARKit 2, or Apple's ARKit docs and sample code

任何类型的共享 AR 的问题——无论是两台或多台设备同时看到相同的体验,还是一台设备为其他人(甚至是原始设备)录制内容供以后体验——是这些事情需要一个共享的参考框架。也就是说,坐标 0,0,0 需要为两个用户指代相同的真实世界位置(和方向)。

ARKit 所做的一切都是在相对于您的设备在开始会话时所处位置的参考系中,并且它不提供一种方法来根据任何类型的“绝对”世界坐标来定位该参考系。也就是说,如果您尝试记录您在 0.2, -0.1, -0.5 处放置了一些虚拟内容的体验,那么稍后回放该体验的人将在相同的真实世界位置看到该内容的唯一方法是:第二个人站在完全相同的位置,将他们的设备保持在相同的高度,并指向相同的方向。

Giphy“保姆笔记”演示 that made the press a few weeks ago 似乎主要是关于录制 AR 体验的 视频

具有共享(或“绝对”)参考系的 AR 可能是可能的,但这不是 ARKit 开箱即用的功能。

另一种似乎有效的方法是比较点云位置。 如果 2 名玩家正在查看具有相似图案的某个表面,那么您可以将其定义为新的参考点。 我做了一些实验,它似乎有效 - 但它并不那么可靠。 现在我正在测试摄影测量的新方法,其中环境的原始网格存储在云中并与相机中的网格进行比较。

您可以通过扫描二维码作为锚点来完成。

https://github.com/eugenebokhan/ARKit-Multiplayer