Как измерить ширину лица по данным лица ARKit?
Я пытаюсь измерить ширину лица человека с помощью ARKit.
ARKit предоставляет ARSCNFaceGeometry со свойством ограничивающей рамки. Упоминается, что ограничивающая рамка находится в локальном координатном пространстве. Насколько я понимаю, если я могу получить ширину ограничивающей рамки вокруг сетки лица, она должна равняться ширине лица.
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
guard let faceAnchor = anchor as? ARFaceAnchor,
let faceGeometry = node.geometry as? ARSCNFaceGeometry else {return}
faceGeometry.update(from: faceAnchor.geometry)
let width = faceGeometry.boundingBox.max.x - faceGeometry.boundingBox.min.x
print(width)
}
Когда я использовал это, я чувствовал, что получил ширину лица, но по какой-то причине значение номинала никогда не меняется, даже если я обнаруживаю разные лица.
Я также попытался преобразовать координаты из локального пространства в мировое пространство с помощью
let (localMin, localMax) = faceGeometry.boundingBox
let min = node.convertPosition(localMin, to: nil)
let max = node.convertPosition(localMax, to: nil)
let width = max.x - min.x
В этом случае значение ширины по-прежнему неверно.
Любые мысли о том, как точно получить ширину?