2017-07-19 5 views
3

Ich muss herausfinden, in welche Richtung eine Kamera, z. wenn es nach Z +, Z-, X + oder X- schaut.Swift SceneKit - Holen Sie sich die Richtung der Kamera

Ich habe versucht mit eulerAngles, aber der Bereich für Gieren geht 0 -> 90 -> 0 -> -90 -> 0 was bedeutet, ich kann nur erkennen, ob die Kamera in Richtung Z oder X, nicht wenn es ist Blick auf die positive oder negative Richtung dieser Achsen.

Antwort

5

Sie können einen SCNNode erstellen, der ihn in der Eigenschaft worldFront platziert, um einen Vektor mit der x-, y- und z-Richtung zu erhalten.

Eine andere Möglichkeit, die Sie tun können, es ist wie, wie dieses Projekt hat es geschafft:

// Credit to https://github.com/farice/ARShooter 

func getUserVector() -> (SCNVector3, SCNVector3) { // (direction, position) 
     if let frame = self.sceneView.session.currentFrame { 
      let mat = SCNMatrix4(frame.camera.transform) // 4x4 transform matrix describing camera in world space 
      let dir = SCNVector3(-1 * mat.m31, -1 * mat.m32, -1 * mat.m33) // orientation of camera in world space 
      let pos = SCNVector3(mat.m41, mat.m42, mat.m43) // location of camera in world space 

      return (dir, pos) 
     } 
     return (SCNVector3(0, 0, -1), SCNVector3(0, 0, -0.2)) 
    } 
+0

Auch dies wird vorausgesetzt, dass Sie Arkit verwenden, wie Ihr Tag legt nahe, – wriuhasdfhvhasdv

Verwandte Themen