ios - 是否可以部分执行 ARWorldMap 重新定位而不是立即添加所有 ARAnchors?

标签 ios swift augmented-reality arkit

我目前正在开发 ARKit 2.0 应用程序,用户需要在映射空间周围找到虚拟对象,我使用了 AR Persistence 并且我意识到在初始 ARWorldMap 重新定位后,所有对象都会立即出现,即使是离我很远,我和虚拟对象之间有墙。是否可以仅在当前相机检测到与初始世界地图 session 的平面相似的平面时才添加 anchor ,而不是一旦用初始世界地图映射,所有 anchor 都已映射?

最佳答案

当您成功定位到 ARWorldMap 时,您的 ARSession 会立即包含保存在该世界地图中的所有 anchor 。但这并不意味着您的应用必须立即显示您与这些 anchor 关联的任何虚拟内容。

如果您正在使用 ARSCNView,您的 renderer(_:didAdd:for:)为从世界地图恢复的每个 anchor 触发回调,就像它为您自己添加到 session 的 anchor 和 ARKit 自动添加的 anchor (平面检测、图像检测等)一样。当然,如果您不使用 ARSCNView,其他渲染器也有类似的回调(如果您构建自己的渲染器,则在 ARSessionDelegate 中。)

您在该回调方法中的逻辑决定了显示哪些虚拟内容。如果您不希望与 anchor 关联的内容出现,请不要使用该方法将其添加到场景中。或者将它添加到场景中,但在其上设置 isHidden,然后使用其他一些逻辑来取消隐藏它。

关于ios - 是否可以部分执行 ARWorldMap 重新定位而不是立即添加所有 ARAnchors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51305034/

相关文章:

java - 增强现实 - 图像大小变换

math - 增强现实演示

objective-c - UIWebView 的后退/前进按钮 - canGoBack 不适用于 ajax 网站

ios - 在 Swift 中使用 alamofire 的 ObjectMapper JSON

ios - 异步加载数据到 UITableView

ios - Tableview Cell 无法正确显示

ios - 如何在 Xcode 6.3 中安装 Quick 和 Nimble

ios - Swift: fatal error :在初始化 UIlabel 值时展开可选值时意外发现 nil

ios - ViewForHeaderInSection 中的两个 header

swift - 如何将 SCNText 放置在 SCNPlane 中?