【问题标题】:Tracking two objects at the same time in ARImageTrackingConfiguration在 ARImageTrackingConfiguration 中同时跟踪两个对象
【发布时间】:2019-08-14 22:23:57
【问题描述】:

我想将两个 3D 模型链接到两个不同的跟踪器。我将跟踪器捕捉到参考照片,但我不明白如何在 ARImageTrackingConfiguration 中同时跟踪两个对象

guard let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "Photos2", bundle: Bundle.main) else {
    print("No images available")
    return
}

我将跟踪器捕捉到参考照片,但我不明白如何在 ARImageTrackingConfiguration 中同时跟踪两个对象

【问题讨论】:

    标签: swift scenekit augmented-reality arkit swift5


    【解决方案1】:

    你需要把它放到ViewController中:

    class ViewController: UIViewController {
    
        func trackingConfig() {
    
            guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", 
                                                                               bundle: nil)
            else {
                return
            }
    
            let config = ARWorldTrackingConfiguration()
            config.detectionImages = referenceImages
            let options: ARSession.RunOptions = [.resetTracking,                                        
                                                 .removeExistingAnchors] 
            sceneView.session.run(config, options: options)
        }
    }
    

    然后创建一个包含渲染器方法的扩展和一个 switch inside 函数:

    extension ViewController: ARSCNViewDelegate {
    
        func renderer(_ renderer: SCNSceneRenderer,
                     didAdd node: SCNNode,
                      for anchor: ARAnchor) {
    
            guard let imageAnchor = anchor as? ARImageAnchor,
                  let imageName = imageAnchor.referenceImage.name
            else {
                return
            }
    
            let geometryNode = nodeGetter(name: imageName)
            node.addChildNode(geometryNode)
        }
    
        func nodeGetter(name: String) -> SCNNode {
    
            var node = SCNNode()
    
            switch name {
                case "geometry_01": node = geoOne
                case "geometry_02": node = geoTwo
                default: break
            }
            return node
        }
    }
    

    【讨论】:

    • 在switch中,“geometry_01”和geo01应该取什么值?
    • case "geometry_01" 带来了包含一些几何图形的geoOne 节点。或者你的问题是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2021-05-22
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多