gpt4 book ai didi

ios - 如何在 Arkit 中提供持久性?

转载 作者:行者123 更新时间:2023-11-28 23:39:54 25 4
gpt4 key购买 nike

首先我想说,我在IOS开发和AR技术方面真的是初学者。我已经使用 Arkit 开发了关于 AR 的示例项目。我已经创建了 vitrual 3D 对象并将该对象放在真实位置的某个位置。但是对象的生命周期只有一个 session 。

我的意思是该对象出现在一个 session 中,当我在同一位置重新打开应用程序时,通常它的位置会丢失。我不保存对象的位置。如何在 Arkit 中提供持久性?我读过一些有关它的文章。

为了提供持久的 AR 体验,我应该遵循哪些步骤?如何将 AR 和定位服务结合起来?有人有什么想法吗?你能帮我解决一下吗?

如果问题重复,我真的很抱歉。

最好的问候。

最佳答案

iOS 12ARKit2 中恢复 AR session 体验变得非常简单。苹果提供了World Map Persistence在 ARKit2 中,您可以保留有关 AR session 的几乎所有内容。您可以保存 ARKit 世界地图并在以后恢复 map 数据,即使应用程序已终止,这样用户可以在稍后重新打开应用程序时返回到之前的 AR session 。

Apple Documents 中所述,您可以:

Save a world map when your app becomes inactive, then restore it the next time your app launches in the same physical environment. You can use anchors from the resumed world map to place the same virtual content at the same positions from the saved session.

ARWorldMap conforms to the NSSecureCoding protocol, so you can convert a world map to or from a binary data representation using the NSKeyedArchiver and NSKeyedUnarchiver classes.

您将世界地图转换为数据并将其存储在文件中,然后您可以在下次应用启动时加载此文件并将其转换回 ARWorldMap 并将场景 View 配置的初始世界地图设置为加载的世界地图:

 override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

// Retrieve the persisted world map, then simply set it in the configuration and run the session:

let configuration = ARWorldTrackingConfiguration()
configuration.initialWorldMap = worldMap

sceneView.session.run(configuration)
}

您可以关注this tutorial完整的工作示例。

关于ios - 如何在 Arkit 中提供持久性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53791575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com