我试图使用ARKit,我的问题非常简单。我怎样才能获得相机的位置?
我知道如果我在SCNNode
,0
,0
上放置0
并且我的ARCamera正在寻找实例,我将不得不抬头看看3D物体。这意味着必须以某种方式获取设备相机的位置和方向。
那我怎么知道where the camera is
和where she is looking to
?
提前致谢。
答案 0 :(得分:12)
您可以使用ARCamera.transform
属性获取相机的当前变换。
以下代码来自Introducing ARKit at WWDC 2017,您可能希望将其作为简介。
我们正在使用变换将一个节点放在摄像机前10厘米处。
在斯威夫特:
var translation = matrix_identity_float4x4
translation.columns.3.z = -0.1 // Translate 10 cm in front of the camera
node.simdTransform = matrix_multiply(currentFrame.camera.transform, translation)
在Objective-C
中matrix_float4x4 translation = matrix_identity_float4x4;
translation.columns[3][2] = -0.1; // Translate 10 cm in front of the camera
node.simdTransform = matrix_multiply(currentFrame.camera.transform, translation)
答案 1 :(得分:0)
或者,您可以同时对X
,Y
和Z
轴使用以下方法:
var translation = matrix_identity_float4x4
translation.columns.3 = simd_float4(0, 0.2, -0.5, 1) // x, y, z, HC
aNode.simdTransform = matrix_multiply(translation,
currentFrame.camera.transform)
columns.3
中的最后一个元素是齐次坐标,它等于1
。
希望这会有所帮助。