Как мне нарисовать заполненный многоугольник, соединяющий точки, к которым прикоснулся пользователь, на обнаруженной горизонтальной плоскости в мире ARKit.
Я продолжил делать это, сохраняя очки жизни в массиве ...
let position = SCNVector3.positionFrom(matrix: result.worldTransform)
let sphere = SphereNode(position: position)
nodes.append(position)
... а затем попытаться нарисовать путь Безье
let bezierPath = UIBezierPath()
bezierPath.lineWidth = 0.1
for index in 0..<nodes.count {
let node = nodes[index] as SphereNode
if (index == 0) {
let point = CGPoint(x: CGFloat(node.position.x), y: CGFloat(node.position.z))
bezeierPath.move(to: point)
} else {
let point = CGPoint(x: CGFloat(node.position.x), y: CGFloat(node.position.z))
bezeierPath.addLine(to: point)
}
}
bezeierPath.close()
bezeierPath.fill()
bezeierPath.stroke()
let shape = SCNShape(path: bezeierPath, extrusionDepth: 0.03)
shape.firstMaterial?.diffuse.contents = UIColor.red
let node = SCNNode.init(geometry: shape)
sceneView.scene.rootNode.addChildNode(node)
Но это не рисует многоугольник в нужном месте. он рисует его за камерой под вертикальным углом.





2D-геометрии, такие как SCNPlane, SCNText и SCNShape, по своей природе вертикальны, потому что они работают в плоскости xy. В вашем примере вы используете координату z 3D в качестве координаты y 2X.
Попробуйте установить node.eulerAngles.x на -.pi / 2 (если это не сработает, попробуйте без -), и ваш узел будет горизонтальным, а не вертикальным.
Спасибо, это сделало узел горизонтальным, но все же оставил его нарисованным позади камеры и над горизонтальной плоскостью.
нашли какое-нибудь решение?