【发布时间】:2021-05-10 05:54:39
【问题描述】:
我使用 SCNGeometrySource 将 ARMeshAnchor 数据转换为网格,它工作正常,但有时 3/10 我会从 SceneKit 渲染器获得 bad_access。
[![在此处输入图片描述][1]][1]
【问题讨论】:
标签: swift augmented-reality scenekit arkit realitykit
我使用 SCNGeometrySource 将 ARMeshAnchor 数据转换为网格,它工作正常,但有时 3/10 我会从 SceneKit 渲染器获得 bad_access。
[![在此处输入图片描述][1]][1]
【问题讨论】:
标签: swift augmented-reality scenekit arkit realitykit
这是因为
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
【讨论】: