Код: Выделить всё
override func viewDidAppear(_ animated: Bool) {
let configuration = ARFaceTrackingConfiguration()
sceneView.session.run(configuration)
}
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let faceMesh = ARSCNFaceGeometry(device: sceneView.device!)
let node = SCNNode(geometry: faceMesh)
node.name = "Test Node"
node.geometry?.name = "Test geometry"
node.geometry?.materials.first?.name = "Test material"
node.geometry?.firstMaterial?.fillMode = .lines
return node
}
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
if let faceAnchor = anchor as? ARFaceAnchor, let faceGeometry = node.geometry as? ARSCNFaceGeometry {
faceGeometry.update(from: faceAnchor.geometry)
// let vertices = faceAnchor.geometry.vertices
let textureCoordinates = faceAnchor.geometry.textureCoordinates
exportMesh(node: node)
self.index = self.index + 1
}
}
func exportMesh(_ node: SCNNode, to url: URL, completion: (() -> ())?) {
DispatchQueue.global().async {
let mesh = MDLMesh(scnGeometry: node.geometry!)
let asset = MDLAsset()
asset.add(mesh)
do {
try asset.export(to: url)
} catch {
print("Can't write mesh to url")
}
DispatchQueue.main.async {
completion?()
}
}
}
Далее я извлекаю тот же файл из каталога документов.
Код: Выделить всё
func loadMeshes() {
let asset = MDLAsset(url: path)
let scene = SCNScene(mdlAsset: asset)
let renderer = SCNRenderer(device: MTLCreateSystemDefaultDevice(), options: nil)
scene.rootNode.childNodes.first?.geometry?.firstMaterial?.fillMode = .lines
scene.rootNode.childNodes.first?.geometry = geometry
let renderTime = TimeInterval(0)
// Output size
let size = CGSize(width:1080, height: 1920)
// Render the image
let image = renderer.snapshot(atTime: renderTime, with: size,
antialiasingMode: SCNAntialiasingMode.multisampling4X)
}
Этот снимок представляет собой всего лишь геометрию лица. Мне нужен снимок или изображение сетки лица относительно исходного положения и угла, под которым оно было расположено в режиме реального времени.
Если я смотрю сбоку или сверху вниз, то создаётся сетка. изображение, созданное из сцены, также должно отражать то же самое.

Подробнее здесь: https://stackoverflow.com/questions/787 ... to-uiimage
Мобильная версия