В ARKit 2 / Xcode 10 beta 6 / iOS 12 «lookAtPoint» обнуляется;но я могу получить "leftEyeTransform" и "rightEyeTransform", а затем могу рассчитать расстояние между глазами, используя этот код (проверено на двух людях на разных расстояниях и проверено линейкой!):
func update(withFaceAnchor anchor: ARFaceAnchor) {
let faceGeometry = occlusionNode.geometry as! ARSCNFaceGeometry
faceGeometry.update(from: anchor.geometry)
print("\nLook at Point:", anchor.lookAtPoint, "\nLeft:", anchor.leftEyeTransform, "\nRight:", anchor.rightEyeTransform)
var leftEyePosition = SCNVector3(anchor.leftEyeTransform.columns.3.x, anchor.leftEyeTransform.columns.3.y, anchor.leftEyeTransform.columns.3.z)
var rightEyePosition = SCNVector3(anchor.rightEyeTransform.columns.3.x, anchor.rightEyeTransform.columns.3.y, anchor.rightEyeTransform.columns.3.z)
let d = distance(float3(leftEyePosition), float3(rightEyePosition))
print("\nInter-eye distance in centimeters: ", d * 100)
}
Некоторые примеры выходных данных:
Look at Point: float3(0.0, 0.0, 0.0)
Left: simd_float4x4([[0.9997796, -0.0031222918, 0.020761598, 0.0)], [0.0, 0.98888004, 0.14871553, 0.0)], [-0.020995062, -0.14868274, 0.98866206, 0.0)], [0.031608228, 0.031428084, 0.026632207, 1.0)]])
Right: simd_float4x4([[0.99887705, 0.007054036, -0.04684897, 0.0)], [0.0, 0.9888536, 0.14889139, 0.0)], [0.047377057, -0.1487242, 0.98774314, 0.0)], [-0.031623494, 0.03171173, 0.02669965, 1.0)]])
Inter-eye distance in centimeters: 6.32324
Как мне получить"lookAtPoint" - пересечение взгляда двух глаз - используя кватернионы в "leftEyeTransform" и "rightEyeTransform "?