Как я могу повторно отсканировать изображение в ARKit? - PullRequest
0 голосов
/ 02 февраля 2019

В моем проекте я использую ARKit для обнаружения определенного изображения, и когда он обнаруживается, приложение показывает мне информацию.Если я уже отсканировал изображение и хочу повторно просмотреть его для просмотра информации, это не сработает.Это код, который я использовал для распознавания изображений:

    sceneView.delegate = self
    sceneView.showsFPS = true
    sceneView.showsNodeCount = true

    if let scene = SKScene(fileNamed: "Scene") {
        sceneView.presentScene(scene)
    }

    guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "image", bundle: nil) else {
        fatalError("Missing expected asset catalog resources.")
    }

    let configuration = ARWorldTrackingConfiguration()
    configuration.detectionImages = referenceImages

    sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
}


// MARK: - ARSKViewDelegate
func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? {

    if let imageAnchor = anchor as? ARImageAnchor,
        let referenceImageName = imageAnchor.referenceImage.name,
        let scannedImage =  self.images[referenceImageName] {

        self.selectedImage = scannedImage

        self.performSegue(withIdentifier: "showImageInformation", sender: self)

    }

    return nil
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showImageInformation"{
        if let imageInformationVC = segue.destination as? ImageInformationViewController,
            let actualSelectedImage = selectedImage {
            imageInformationVC.imageInformation = actualSelectedImage
        }
    }
}

1 Ответ

0 голосов
/ 05 февраля 2019

Единственный способ - сбросить текущий сеанс.Пример:

func resetExperience(session: ARSession, configuration: ARWorldTrackingConfiguration) {

    guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "image", bundle: nil) else {
        fatalError("Missing expected asset catalog resources.")
    }

    configuration.detectionImages = referenceImages
    session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
}

И некоторая общая информация: ARWorldTrackingConfiguration .Надеюсь, это поможет!

...