Я работаю над приложением для iOS и в настоящее время пытаюсь получить координаты (относительно мира / rootNode) 4 вершин повернутого SCNNode в AR Experience
Из того, что якак видно из отладки этого беспорядка, ограничивающая коробка повернутого и наклоненного SCNPlane по-прежнему находится на одном уровне с мировым происхождением.
Я пробовал решение в этом потоке.
Самолет, который я пытаюсь обнаружить, помещается прямо поверх изображения, обнаруженного ARKit:
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard let imageAnchor = anchor as? ARImageAnchor else { return }
let referenceImage = imageAnchor.referenceImage
updateQueue.async {
// Create a plane to visualize the initial position of the detected image.
let plane = SCNPlane(width: referenceImage.physicalSize.width,
height: referenceImage.physicalSize.height)
let planeNode = SCNNode(geometry: plane)
planeNode.opacity = 0.25
/*
`SCNPlane` is vertically oriented in its local coordinate space, but
`ARImageAnchor` assumes the image is horizontal in its local space, so
rotate the plane to match.
*/
planeNode.eulerAngles.x = -.pi / 2
/*
Image anchors are not tracked after initial detection, so create an
animation that limits the duration for which the plane visualization appears.
*/
planeNode.runAction(self.imageHighlightAction)
// This is where I tried to calculate the edge
let (min, max) = planeNode.boundingBox
let topLeft = SCNVector3(min.x, max.y, 0)
let worldTopLeft = planeNode.convertPosition(topLeft, to: self.sceneView.scene.rootNode)
let world2dTopLeft = self.sceneView.projectPoint(worldTopLeft)
node.addChildNode(planeNode)
}
}
Ожидаемый результат - это некая 2D-позиция на экране, которая будетпрямо в верхней части угла в 3D-виде, но я всегда получаю огромные цифры, например x: 8847.291, y: -10651.121
Кто-нибудь нашел решение этой проблемы?