У меня обнаруживается горизонтальная плоскость.После того, как он обнаружен, я хочу, чтобы эта плоскость, которая была прямоугольником, всегда отображалась горизонтально (ширина> высота).вот код, который я использую для создания этого SCNNode:
func createFloorNode(anchor: ARPlaneAnchor) ->SCNNode {
let geometry = SCNPlane(width: CGFloat(anchor.extent.x), height: CGFloat(anchor.extent.z))
let floorNode = SCNNode(geometry: geometry)
floorNode.position = SCNVector3(anchor.center.x, 0, anchor.center.z)
floorNode.geometry?.firstMaterial?.diffuse.contents = UIColor.red
floorNode.geometry?.firstMaterial?.isDoubleSided = true
floorNode.eulerAngles = SCNVector3(-Double.pi/2, 0, 0)
if geometry.width < geometry.height {
floorNode.eulerAngles = SCNVector3(-Double.pi/2, -Double.pi/2, 0)
}
floorNode.name = floorNodeName
return floorNode
}
После этого мне добавили функцию жеста касания, и я хочу, чтобы он сообщал мне, если я нажал внутри моего SCNNode:
@objc func tapped(sender: UITapGestureRecognizer) {
guard let sceneView = sender.view as? ARSCNView else { return }
let tapLocation = sender.location(in: sceneView)
let hitTest = sceneView.hitTest(tapLocation, types: .existingPlaneUsingExtent)
guard !hitTest.isEmpty else {
print("Not a plane")
return
}
print("Touched on the plane")
}
Проблема в том, что после того, как я повернул свой scnnode, функции продолжают обнаруживать плоскость как старую (до обнаружения).Если я не поверну его, он будет работать нормально.
Есть идеи?