为了获得设备和用户脸部之间的距离,您应该将检测到的用户脸部的位置转换为摄像机的坐标系.为此,您必须使用SceneKit中的convertPosition方法来切换坐标空间,从面部坐标空间切换到摄像机坐标空间.
let positionInCameraSpace = theFaceNode.convertPosition(pointInFaceCoordinateSpace, to: yourARSceneView.pointOfView)
Run Code Online (Sandbox Code Playgroud)
theFaceNode是由ARKit创建的SCNNode,代表用户的面部.ARSCNView的pointOfView属性返回查看场景的节点,基本上是相机.
pointInFaceCoordinateSpace可以是面网格的任何顶点,也可以是面部节点的位置(面部坐标系的原点).这里,positionInCameraSpace是一个SCNVector3,表示你在相机坐标空间中给出的点的位置.然后,您可以使用此SCNVector3的x,y和z值(以米为单位)获取点与相机之间的距离.
这些链接可以帮助您:
- https://github.com/evermeer/EVFaceTracker
- https://developer.apple.com/documentation/arkit/arfacetrackingconfiguration
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |