ARKit + SceneKit:我可以访问帧的分段缓冲区但禁用自动人物遮挡吗?

Posted

技术标签:

【中文标题】ARKit + SceneKit:我可以访问帧的分段缓冲区但禁用自动人物遮挡吗?【英文标题】:ARKit + SceneKit: Can I access the frame's segmentationBuffer but disable automatic person occlusion? 【发布时间】:2021-11-04 01:35:43 【问题描述】:

我正在使用 ARKit 和 SceneKit,并希望对帧中检测到的人应用自定义渲染。为此,我想使用ARFrame.segmentationBuffer

如果我将.personSegmentation 添加到我的 ARConfiguration 的帧语义中,我可以访问此缓冲区。但是,这也会自动开始遮挡框架中的任何人,这会阻止我的自定义渲染出现

是否可以访问分段缓冲区但禁用自动人物遮挡,以便我可以按自己的方式渲染人物?

【问题讨论】:

【参考方案1】:

是的!使用 SceneKit,似乎将 .personSegmentation 添加到帧语义中会自动添加一个实现人员遮挡的SCNTechnique

要禁用此自动遮挡,只需将 sceneView.technique 设为空即可:

self.sceneView.technique = nil

您仍然可以访问segmentationBuffer,但将不再应用遮挡

您还可以使用ARMatteGenerator为检测到的人生成更高分辨率的遮罩

【讨论】:

以上是关于ARKit + SceneKit:我可以访问帧的分段缓冲区但禁用自动人物遮挡吗?的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit + ARKit:无需相机滚动的广告牌

在 ARkit 中未检测到 SceneKit 碰撞

没有渲染/虚拟内容的 ARKit/SceneKit 屏幕截图

3d 模型 SceneKit/ARKit 的哪种格式文件更好用

带有 SceneKit 的 ARKit 广告牌效果

ARKit + SceneKit:将重建场景用于物理?