Чтобы определить расстояние между устройством и лицом пользователя, необходимо преобразовать положение обнаруженного лица пользователя в систему координат камеры.Для этого вам придется использовать метод convertPosition из SceneKit для переключения координатного пространства с координатного пространства лица на координатное пространство камеры.
let positionInCameraSpace = theFaceNode.convertPosition(pointInFaceCoordinateSpace, to: yourARSceneView.pointOfView)
theFaceNode - это SCNNode, созданный ARKitпредставляющий лицо пользователя.Свойство pointOfView вашего ARSCNView возвращает узел, с которого просматривается сцена, в основном камера.
pointInFaceCoordinateSpace может быть любыми вершинами грани сетки или просто позицией theFaceNode (которая является источником системы координат грани).Здесь positionInCameraSpace - это SCNVector3, представляющий положение заданной точки в координатном пространстве камеры.Затем вы можете получить расстояние между точкой и камерой, используя значения x, y и z этого SCNVector3 (выраженные в метрах).
Вот некоторые ссылки, которые могут вам помочь:
- Расстояние между лицом и камерой с помощью ARKit
- https://github.com/evermeer/EVFaceTracker
- https://developer.apple.com/documentation/arkit/arfacetrackingconfiguration
- Как измерить расстояние от устройства долицо с помощью ARKit в iOS?