В ARKit 2 / Xcode 10 beta 6, Как получить lookAtPoint из leftEyeTransform и rightEyeTransform? - PullRequest
0 голосов
/ 25 августа 2018

В 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 "?

...