SceneKit - 获取相机的方向

krn*_*ntz 4 camera direction scenekit swift arkit

我需要找到一个摄像头正在注视哪个方向,例如,如果它的望着Z+,Z-,X+,或X-.

我已经尝试过使用了eulerAngles,但偏航的范围是0- > 90- > 0- > -90- > 0这意味着我只能检测相机是否正在朝向,Z或者X不是在向这些轴的正方向或负方向看.

wri*_*sdv 12

您可以创建一个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))
    }
Run Code Online (Sandbox Code Playgroud)