所以,我的目标是:
使用 ARReferenceImage :
完成第一步非常容易guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: nil) else { return }
let configuration = ARWorldTrackingConfiguration()
configuration.detectionImages = referenceImages
但现在我无法弄清楚如何从SceneView中提取图像。我将平面节点添加到imageAnchor:
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
DispatchQueue.main.async { [unowned self] in
guard let imageAnchor = anchor as? ARImageAnchor
else { return }
let planeNode = self.getPlaneNode(withReferenceImage: imageAnchor.referenceImage)
planeNode.opacity = 0.5
planeNode.eulerAngles.x = -.pi / 2
node.addChildNode(planeNode)
}
}
因此,我需要在屏幕上使用planeNode的投影来获取节点的2D屏幕坐标,然后剪切图像。我找到了这种方法:renderer.projectPoint(node.position)
但它并没有帮助我。当整个画面出现在屏幕上时,它甚至可以返回负值。
我这样做的方法是否正确?任何帮助将非常感激
答案 0 :(得分:0)
我解决了这个问题。
digraph {
subgraph cluster_a {
label = a
subgraph cluster_b {
label = b
node_1 [label=c]
node_2 [label=d]
}
subgraph cluster_B {
label = B
node_3 [label=C]
}
}
subgraph cluster_A {
label = A
subgraph cluster_B {
label = B
node_4 [label=C]
}
}
}
更多信息
ARKit 2 - Crop Recognizing Images
iOS 8 Core Image saving a section of an Image via Swift
https://nacho4d-nacho4d.blogspot.com/2012/03/coreimage-and-uikit-coordinates.html