ARKit – ARCamera 的位置
ARKit – Position of the ARCamera
我正在尝试使用 ARKit,我的问题很简单。如何获取相机的位置?
我知道如果我把 SCNNode
放在 (0
,0
,0
) 上,例如我的 ARCamera 正在看地面,我会必须抬头才能看到 3D 对象。这意味着必须以某种方式访问设备相机的位置和方向。
那么我怎么知道 where the camera is
和 where 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)
或者,您可以同时对 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
。
希望这对您有所帮助。
我正在尝试使用 ARKit,我的问题很简单。如何获取相机的位置?
我知道如果我把 SCNNode
放在 (0
,0
,0
) 上,例如我的 ARCamera 正在看地面,我会必须抬头才能看到 3D 对象。这意味着必须以某种方式访问设备相机的位置和方向。
那么我怎么知道 where the camera is
和 where 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)
或者,您可以同时对 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
。
希望这对您有所帮助。