Плоскость SCNNode после вращения не определяется правильно - PullRequest
1 голос
/ 18 марта 2019

У меня обнаруживается горизонтальная плоскость.После того, как он обнаружен, я хочу, чтобы эта плоскость, которая была прямоугольником, всегда отображалась горизонтально (ширина> высота).вот код, который я использую для создания этого 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, функции продолжают обнаруживать плоскость как старую (до обнаружения).Если я не поверну его, он будет работать нормально.

Есть идеи?

...