Swift 如何修改";AR参考图像集“;在会话运行期间?

Swift 如何修改";AR参考图像集“;在会话运行期间?,swift,xcode,scenekit,arkit,detection,Swift,Xcode,Scenekit,Arkit,Detection,在我的应用程序中,我拍摄了几张照片,并将它们作为UIImages添加到一个名为imagesPicked的数组中。我将该数组转换为一个集合,通过按钮操作将其加载到配置中,然后通过resetTracking()运行会话。所有这些都是通过以下代码实现的。但我希望修改该代码,以便能够在仍在运行时向AR参考图像集添加新图像(例如更改配置),而无需重置会话。我怎样才能做到这一点?Thx var detectionImages = Set<ARReferenceImage>() func rese

在我的应用程序中,我拍摄了几张照片,并将它们作为UIImages添加到一个名为imagesPicked的数组中。我将该数组转换为一个集合,通过按钮操作将其加载到配置中,然后通过resetTracking()运行会话。所有这些都是通过以下代码实现的。但我希望修改该代码,以便能够在仍在运行时向AR参考图像集添加新图像(例如更改配置),而无需重置会话。我怎样才能做到这一点?Thx

var detectionImages = Set<ARReferenceImage>()
func resetTracking() {
        let configuration = ARWorldTrackingConfiguration()
        configuration.detectionImages = detectionImages
        session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
    } 


var index = 0
 func createARReferenceSet() -> Set<ARReferenceImage>?
{
        var customReferenceSet = Set<ARReferenceImage>()
        do{
            for i in 0...imagesPicked.count-1{
                let image = imagesPicked[i]
                let cgImage = image?.cgImage
                let imageWidth = CGFloat(0.1)
                let customARReferenceImage = ARReferenceImage(cgImage!, orientation: CGImagePropertyOrientation.up, physicalWidth: imageWidth)
                customARReferenceImage.name = "MyCustomARImage\(index)"
                customReferenceSet.insert(customARReferenceImage)
                index += 1
            }
            }
        return customReferenceSet
    }
}


@IBAction func detectChosenImage(_ sender: Any) {
        detectionImages = createARReferenceSet()!
        resetTracking()
    }
var detectionImages=Set()
func resetTracking(){
let configuration=ARWorldTrackingConfiguration()
configuration.detectionImages=detectionImages
运行(配置,选项:[.resetTracking、.removeExistingAnchors])
} 
var指数=0
func createARReferenceSet()->Set?
{
var customReferenceSet=Set()
做{
对于0中的i…imagesPicked.count-1{
设image=imagesPicked[i]
设cgImage=image?.cgImage
设imageWidth=CGFloat(0.1)
让customARReferenceImage=ARReferenceImage(cgImage!,方向:CGImagePropertyOrientation.up,物理宽度:imageWidth)
customARReferenceImage.name=“MyCustomARImage\(索引)”
customReferenceSet.insert(customARReferenceImage)
指数+=1
}
}
返回customReferenceSet
}
}
@iAction func detectChosenImage(u发送方:任意){
detectionImages=createARReferenceSet()!
重置跟踪()
}

要在不重置当前会话的情况下将图像添加到AR参考图像集,请在不重置当前会话的情况下运行新配置。[.resetTracking.removeExistingAnchors]选项,尝试只调用
会话。运行(配置)

运行正在使用的新配置时。[.resetTracking.removeExistingAnchors]选项,尝试调用
会话。运行(配置)
。是的,您是对的。谢谢:)很高兴听到这个消息,只是作为回答发布的