ARMeshAnchor – SceneKit SCNView 渲染器 EXC_BAD_ACCESS
Posted
技术标签:
【中文标题】ARMeshAnchor – SceneKit SCNView 渲染器 EXC_BAD_ACCESS【英文标题】:ARMeshAnchor – SceneKit SCNView Renderer EXC_BAD_ACCESS 【发布时间】:2021-05-10 05:54:39 【问题描述】:我使用 SCNGeometrySource 将 ARMeshAnchor 数据转换为网格,它工作正常,但有时 3/10 我会从 SceneKit 渲染器获得 bad_access。
[![在此处输入图片描述][1]][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
【讨论】:
如何对 ARMeshAnchor 数据进行深拷贝/克隆?以上是关于ARMeshAnchor – SceneKit SCNView 渲染器 EXC_BAD_ACCESS的主要内容,如果未能解决你的问题,请参考以下文章
SceneKit 在 RealityKit 中的“allowsCameraControl”等价物
SceneKit:在 SCNView 上渲染 SpriteKit 粒子系统时应用程序崩溃,当所有代码似乎都是系统代码的一部分时如何调试