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 中缩放 SCNNode

在两点之间绘制 SceneKit 对象

SceneKit:在 SCNView 上渲染 SpriteKit 粒子系统时应用程序崩溃,当所有代码似乎都是系统代码的一部分时如何调试

SceneKit - 为啥添加聚光灯会使地板变黑?

SceneKit – SCNAction 和 CABasicAnimation 有啥区别?