Получить 3D-координаты обоих глаз в 3D Facemesh от ARKit - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу получить реальные 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)
}

Я не уверен, что этот код работает нормально. Если нет, то как можно получить координаты глаз? Я хочу рассчитать размер, расстояние глаз.

Ценю вашу помощь, заранее спасибо ...

...