【发布时间】:2021-02-03 05:48:00
【问题描述】:
我正在使用 ARKit 的 ARFaceTrackingConfiguration 与 ARConfiguration.WorldAlignment.camera 对齐,但我发现文档(看似)并不能反映现实;
根据以下文档的摘录,我希望面部锚点的transform 以右手坐标系表示。但是,当我尝试移动头部时,我注意到面部锚点的 Z 坐标始终为负数(即faceAnchor.transform.columns.3.z < 0)。请注意,在 X 和 Y 方向上移动头部对应于预期结果(与 Z 坐标不同)。
相机对齐根据设备相机的本机传感器方向定义坐标系。相对于
AVCaptureVideoOrientation.landscapeRight方向的相机图像,x 轴指向右侧,y 轴指向上方,z 轴指向设备的正面(朝向用户).
我希望transform 的行为符合文档,即面部锚的 Z 坐标应该是正的,因为文档说“z 轴指向设备的正面(朝向用户) ”。到目前为止,Z 轴似乎指向了设备的背面……
我是否遗漏了一些明显的东西?
我尝试通过以下代码修复旋转,但我不确定它是否是正确的修复方法:
// Repair rotation
let oldFaceRotation = simd_quatf(face.transform) // get quaternion from
let repairedFaceRotation = simd_quatf(ix: oldFaceRotation.axis.y, iy: oldFaceRotation.axis.x, iz: -oldFaceRotation.axis.z, r: oldFaceRotation.real)
// Repair translation
var repairedPosition = face.transform.columns.3
repairedPosition.z *= -1
// Combine
var correctedFaceTransform = float4x4(repairedFaceRotation)
correctedFaceTransform.columns.3 = repairedPosition
【问题讨论】:
标签: ios augmented-reality arkit realitykit truedepth-camera