所以我在ARKit
中使用ARAnchors
和ARImageTrackingConfiguration()
。我正在使用具有不同彩色背景的同一ARAnchor
的多个版本。我希望能够识别ARAnchor
的背景颜色(因为如果我将它们全部注册为ARAnchors
,即使它们具有不同的背景,它们也会混合在一起)。我正在考虑的方法是获取ARAnchor
在2D空间中的位置,然后获取帧like this中像素的颜色。
问题是我找不到在2D空间中获得ARAnchor
位置的方法。我正在使用如下设置。如果您有任何知道如何转换坐标的方法或更好的方法,请告诉我。
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
if let imageAnchor = anchor as? ARImageAnchor {
if (anchor.name == "EXAMPLE MARKER") {
let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width, height: imageAnchor.referenceImage.physicalSize.height)
plane.firstMaterial?.diffuse.contents = UIImage(named: "EXAMPLE")
let planeNode = SCNNode(geometry: plane)
planeNode.eulerAngles.x = -.pi / 2
node.addChildNode(planeNode)
// HOW TO CONVERT ANY OF THESE COORDINATE SYSTEMS TO GRECT? CGPOINT?
}
}
return node
}
我试图按照以下方式获得位置,但总是以全零的形式出现
print(anchor.accessibilityFrame)
print(imageAnchor.accessibilityFrame)
print(node.frame)
print(node.boundingBox.max,node.boundingBox.min)
结果
(0.0,0.0,0.0,0.0)
(0.0,0.0,0.0,0.0)
(0.0,0.0,0.0,0.0)
SCNVector3(x:0.0,y:0.0,z:0.0)SCNVector3(x:0.0,y:0.0,z:0.0)