ARMeshAnchor – SceneKit SCNView Renderer EXC_BAD_ACCESS



我使用SCNGeometrySource将ARMeshAnchor数据转换为网格,它工作得很好,但有时3/10我会从SceneKit渲染器获得bad_access。

[![1]][1]

这是因为ARMeshAnchors不断更新他们的数据,因为ARKit改进了对现实世界的理解。所有ARMeshAnchors都是动态锚。然而,他们的网格的后续变化并不打算实时反映。

如果要复制ARMeshAnchors集合,请使用以下代码:

var anchorsArray = [ARMeshAnchor]()

let frame = arView.session.currentFrame

let meshAnchors = frame?.anchors.compactMap { $0 as? ARMeshAnchor }

anchorsArray += meshAnchors!

每个ARMeshAnchor都与存储在MTLBuffer中的原始几何数据相连接:

anchorsArray[0].geometry.faces.buffer
anchorsArray[0].geometry.vertices.buffer
anchorsArray[0].geometry.normals.buffer
anchorsArray[0].geometry.classification?.buffer

最新更新