2017-07-19 82 views
3

我需要找出相机正在看的方向,例如,如果它正在寻找Z +,Z-,X +或X-。Swift SceneKit - 获取相机的方向

我试过使用eulerAngles,但偏航的范围为0-> 90-> 0-> -90-> 0这意味着我只能检测到相机是朝Z或X方向看,而不是如果它是朝着这些轴的正面或负面方向展望。

回答

5

您可以创建一个SCNNode,将它放置在worldFront属性中以获取具有x,y和z方向的矢量。

你可以做的另一种方式是像这样的项目是如何做的:

// 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

此外,这是假设你正在使用ARKit,因为你的标签提示 – wriuhasdfhvhasdv