我正在使用AVFoundation作为前置摄像头视图。在前置摄像头中,我使用视觉框架检测每一帧的人脸。从中,我能够得到鼻子的CGPoint。现在,我想使用 sceneKit 视图在其中一个鼻子点上添加一个 3D 对象,我想将这些鼻子 CGPoint 转换为 SCNVector3,以便我可以为 3D 对象提供位置。
通过 hitTest 或光线投射方法在 SceneKit 中将 CGPoint 转换为 SCNVector ,
let touchPoint = CGPoint(x: 34, y: 298) // for hitTest example
let hitTestResult : [ARHitTestResult] = sceneView.hitTest(touchPoint, types: .featurePoint)
guard let hitResult = hitTestResult.first else {
return
}
let vector = SCNVector3((hitResult.worldTransform.columns.3.x), (hitResult.worldTransform.columns.3.y), (hitResult.worldTransform.columns.3.z))
print(vector) // returns somewhat like this SCNVector3(x: -0.2502137, y: 0.15422173, z: -0.17789307)