我目前正在开发ARKit 2.0应用程序,用户需要在映射的空间中找到虚拟对象,我使用了AR Persistence,并且我意识到在对初始ARWorldMap进行重新定位后,所有对象都会立即出现,即使是离我很远,在我和虚拟物体之间有墙。是否可以仅在当前摄像机检测到与初始世界地图会话的平面相似的平面时添加锚点,而不是一次与初始世界地图映射而已映射所有锚点?
答案 0 :(得分:3)
成功定位到ARWorldMap
后,您的ARSession
将立即包含该世界地图中保存的所有锚点。但这并不意味着您的应用程序必须立即显示与这些锚点关联的任何虚拟内容。
如果您使用的是ARSCNView
,则renderer(_:didAdd:for:)
回调会针对从世界地图中恢复的每个锚点触发,就像您自己添加到会话中的锚点以及用于该锚点的回调一样ARKit会自动添加(平面检测,图像检测等)。当然,如果您不使用ARSCNView
,其他渲染器也有类似的回调(如果您构建自己的渲染器,则在ARSessionDelegate
中)。
您在该回调方法中的逻辑将确定显示哪些虚拟内容。如果您不希望显示与锚点关联的内容,请不要使用该方法将其添加到场景中。或将其添加到场景中,但在其上设置isHidden
,然后使用其他逻辑将其取消隐藏。