【发布时间】:2020-06-28 17:04:20
【问题描述】:
目前,我的应用正在跟踪一组 5 张参考图片。但是,我希望它能够区分参考图像(即图像是图像 A、图像 B 还是图像 C。跟踪我打印在明信片上的真实照片)。
目前,我的代码能够检测到图像并在其上放置一个平面(即一个简单的矩形)。但是,我的问题是,是否可以区分应用程序是否检测到图片 A 和图片 B 的图片?如果有,怎么做?
我知道有一个使用 ML 的选项,但想看看 SceneKit/ARKit 中是否有我没有考虑过的更简单的选项;特别是因为我使用的是准确的图像,而不是试图让应用猜测对象。
class ViewController: UIViewController, ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
sceneView.delegate = self
}
//MARK-: WHERE I CONFIGURE MY APP TO DETECT AN IMAGE
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let configuration = ARImageTrackingConfiguration()
guard let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "Photos", bundle: Bundle.main) else {
print("No images available")
return
}
configuration.trackingImages = trackedImages
configuration.maximumNumberOfTrackedImages = 7
sceneView.session.run(configuration)
}
//MARK-: WHERE I PLACE A PLANE OVER THE DETECTED IMAGE
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
if let imageAnchor = anchor as? ARImageAnchor {
let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width, height: imageAnchor.referenceImage.physicalSize.height)
plane.firstMaterial?.diffuse.contents = UIColor(white: 1, alpha: 0.8)
let planeNode = SCNNode(geometry: plane)
planeNode.eulerAngles.x = -.pi / 2
node.addChildNode(planeNode)
}
return node
}
}
【问题讨论】:
标签: swift augmented-reality scenekit arkit scene