Swift: Получите x и y "мировые координаты" вектора 1 м, расположенного вдоль вектора z "координат лица", используя переднюю камеру ARKit - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь вычислить мировые координаты x и y вектора z (координаты лица), но результаты не точны. Я что-то не так делаю?

Спасибо Это код.

public func renderer(_ renderer: SCNSceneRenderer, didUpdate node: 
SCNNode, for anchor: ARAnchor) {
    guard let faceAnchor = anchor as? ARFaceAnchor else { return }
    let blendShapes = faceAnchor.blendShapes
    DispatchQueue.main.async {
        let eyeParameter = blendShapes[.eyeBlinkRight]
        let eyeParameterFloat = CGFloat(truncating: eyeParameter!)

        //Obtain transform matrix (World coordinates -> Face coordinates)
        let faceMatrix = faceAnchor.transform //Transform property inherent from ARAnchor!

        //Inverse the matrix (Face coordinates -> World coordinates)
        let inverseFaceMatrix = faceMatrix.inverse

        //Convert inverse matrix to inverse SCN Matrix
        let scnInvMatrix = SCNMatrix4(inverseFaceMatrix)

        //Create 1m SCNVector on the z axe of the face coordinates
        let scnVector = SCNVector4(0.0,0.0,1.0,0.0)

        //Multiply Vector and Inv Matrix
        let FaceVector = self.multiplyMatrixVector(matrix: 
        scnInvMatrix, vector: scnVector)
...