SceneKit –获取摄像机方向 [英] SceneKit – Get direction of camera
问题描述
我需要找出相机所朝的方向,例如如果它正在寻找Z+
,Z-
,X+
或X-
.
I need to find out which direction a camera is looking at, e.g. if it is looking towards Z+
, Z-
, X+
, or X-
.
我尝试使用eulerAngles
,但是偏航范围变为0
-> 90
-> 0
-> -90
-> 0
,这意味着我只能检测摄像机朝向Z
或X
,而不是朝向那些轴的正向或负向.
I've tried using eulerAngles
, but the range for yaw goes 0
-> 90
-> 0
-> -90
-> 0
which means I can only detect if the camera is looking towards Z
or X
, not if it's looking towards the positive or negative directions of those axes.
推荐答案
您可以创建一个SCNNode并将其置于worldFront属性中,以获取x,y和z方向的向量.
You can create an SCNNode that place it in worldFront property to get a vector with the x, y, and z direction.
您可以执行此操作的另一种方法是,例如该项目的执行方式:
Another way you could do it is like how this project did it:
// 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))
}
这篇关于SceneKit –获取摄像机方向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!