Я хочу получить реальные 3D-координаты обоих глаз из 3D Facemesh из ARKit .
Пока я пробовал код ниже;
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
guard let faceAnchor = anchor as? ARFaceAnchor else { return }
let geometry = virtualFaceNode.geometry as! ARSCNFaceGeometry
let pointOfView = SCNNode()
// Determine Adjusted Position for Right Eye
let orientation : SCNQuaternion = node.orientation
let orientationQuaternion : GLKQuaternion = GLKQuaternionMake(orientation.x, orientation.y, orientation.z, orientation.w)
let eyePos : GLKVector3 = GLKVector3Make(1.0, 0.0, 0.0)
let rotatedEyePos : GLKVector3 = GLKQuaternionRotateVector3(orientationQuaternion, eyePos)
let rotatedEyePosSCNV : SCNVector3 = SCNVector3Make(rotatedEyePos.x, rotatedEyePos.y, rotatedEyePos.z)
let mag : Float = 0.066 // This is the value for the distance between two pupils (in metres). The Interpupilary Distance (IPD).
pointOfView.position.x += rotatedEyePosSCNV.x * mag
pointOfView.position.y += rotatedEyePosSCNV.y * mag
pointOfView.position.z += rotatedEyePosSCNV.z * mag
DispatchQueue.main.async {
self.updateValue.text = "x= " + String(describing: pointOfView.position.x) + "y= " + String(describing: pointOfView.position.y) + "z= " + String(describing: pointOfView.position.z)
}
geometry.update(from: faceAnchor.geometry)
}
Я не уверен, что этот код работает нормально. Если нет, то как можно получить координаты глаз? Я хочу рассчитать размер, расстояние глаз.
Ценю вашу помощь, заранее спасибо ...