Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ARKit 2:从后端重新加载ARWorldMap时,虚拟对象是浮动的_Ios_Swift_Augmented Reality_Arkit - Fatal编程技术网

Ios ARKit 2:从后端重新加载ARWorldMap时,虚拟对象是浮动的

Ios ARKit 2:从后端重新加载ARWorldMap时,虚拟对象是浮动的,ios,swift,augmented-reality,arkit,Ios,Swift,Augmented Reality,Arkit,我目前正在开发一个可以保存和重新加载的应用程序(由于在WWDC18上发布ARKit 2而成为可能)。当我检索存储在后端的世界地图并在重新加载的情况下运行ar会话时,对象会四处浮动,直到对象放置在其原始曲面上(从原始会话)。我可以通过隐藏对象来防止这个问题,直到我可以断言对象是,但在苹果发布了iOS的beta 4更新后,这就不再起作用了,iOS也更新了ARKit SDK。是否有其他人遇到此问题和/或找到解决方案 以下是以前解决此问题的代码: func renderer(_ renderer: SC

我目前正在开发一个可以保存和重新加载的应用程序(由于在WWDC18上发布ARKit 2而成为可能)。当我检索存储在后端的世界地图并在重新加载的情况下运行ar会话时,对象会四处浮动,直到对象放置在其原始曲面上(从原始会话)。我可以通过隐藏对象来防止这个问题,直到我可以断言对象是,但在苹果发布了iOS的beta 4更新后,这就不再起作用了,iOS也更新了ARKit SDK。是否有其他人遇到此问题和/或找到解决方案

以下是以前解决此问题的代码:

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

    if let _ = anchor as? ARPlaneAnchor {
        for object in self.virtualObjectLoader.loadedObjects {
            if object.modelName == anchor.name {
                DispatchQueue.main.async {
                    object.isHidden = false
                }
            }
        }
    }
}

在什么时候将对象添加到场景中(在重新定位期间)?我觉得你太快了

此外,我发现在对象周围添加多个aranchor有助于实现某些“滑动/移动”

ARWorldMaps有一组Aranchor,这些Aranchor将在重新定位期间添加到场景中,我已将其中一个锚点指定为我的对象的锚点,当我看到它们放置在渲染器中时:didAddNode:ForAnchor:我使用该锚点添加我的对象

guard let object = items.filter({ (item) -> Bool in
                return item.anchor == anchor
            }).first else { return }
// Then add the object