Конвертировать CGPoint из вида в SCNVector3 в sceneKit
Я использую AVFoundation для передней камеры View. С передней камеры я распознаю Лицо в каждом кадре, используя рамки видения. От этого я могу получить CGPoints из носа. Теперь я хочу добавить 3D-объект в одну из точек носа, используя представление sceneKit, и я хочу преобразовать эти носовые CGPoint в SCNVector3, чтобы я мог назначить положение трехмерному объекту.
1 ответ
Преобразование CGPoint в SCNVector в SceneKit с помощью метода hitTest или raycast,
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)