ARKit – ARCamera 的位置

ARKit – Position of the ARCamera

我正在尝试使用 ARKit,我的问题很简单。如何获取相机的位置?

我知道如果我把 SCNNode 放在 (0,0,0) 上,例如我的 ARCamera 正在看地面,我会必须抬头才能看到 3D 对象。这意味着必须以某种方式访问​​设备相机的位置和方向。

那么我怎么知道 where the camera iswhere she is looking to

提前致谢。

您可以使用 ARCamera.transform 属性 获取相机的当前变换。 以下代码来自 Introducing ARKit at WWDC 2017,您可能希望将其作为介绍观看。 我们正在使用变换将节点放置在相机前面 10 厘米处。

在Swift中:

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)

或者,您可以同时对 XYZ 轴使用以下方法:

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

希望这对您有所帮助。