AR Kit 2.0 获取跟踪图像的图像细节?

AR Kit 2.0 get the image details of tracked image?

我对 AR Kit 还很陌生,但最近我发现图像跟踪功能非常棒。我发现它很简单:

let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: Bundle.main)

let configuration = ARImageTrackingConfiguration()
configuration.trackingImages = referenceImages
configuration.maximumNumberOfTrackedImages = 1

sceneView.session.run(configuration)

效果很好!但是,我想通过识别哪个图像被跟踪并根据被跟踪的图像显示不同的 AR 对象/节点来进一步提升体验。有没有办法获取有关当前正在跟踪的特定图像的更多信息?

在资产目录中的 AR Reference Group 中,当您单击参考图像时,您可以打开属性检查器并输入 "Name."

此名称随后反映在 ARImageAnchorname 属性 中,用于在 AR 会话开始跟踪该特定图像时创建的锚点。

然后在

func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode?

您可以检查锚点并做出相应的响应。例如:

func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
    guard let anchor = anchor as? ARImageAnchor else { return nil }
    if anchor.name == "calculator" {
        print("tracking calculator image")
        return SCNNode.makeMySpecialCalculatorNode()
    }
    return nil
}