在 ARKit 中使用人物遮挡时可以提取 estimatedDepthData 和 segmentationBuffer 吗
Can you extract the estimatedDepthData and segmentationBuffer when using people occlusion in ARKit
有人成功地从 ARKit 应用程序中提取了 estimatedDepthData 和 segmentationBuffer 吗?我正在尝试识别人与渲染资产之间的任何碰撞。由于在运行时已经存在一个分割掩码和一个深度掩码,因为人们遮挡是打开的,我想知道我是否可以获得该数组并使用它来识别碰撞事件。
我做了一些研究,看来我可能需要设置一个自定义渲染器来处理这个问题,但我想知道是否还有其他人找到了更简单的方法。我使用的配置非常简单。
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .horizontal
configuration.frameSemantics.insert(.personSegmentationWithDepth)
// Run the view's session
sceneView.session.run(configuration)
分割和深度数据都可以通过 ARFrame
的属性访问。您需要确认 ARSessionDelegate
协议才能获得更新。
func session(_ session: ARSession, didUpdate frame: ARFrame) {
if let segmentationData = frame.segmentationBuffer {
// Do smth with segmentation data
}
if let depthData = frame.estimatedDepthData {
// Do smth with depth data
}
}
有人成功地从 ARKit 应用程序中提取了 estimatedDepthData 和 segmentationBuffer 吗?我正在尝试识别人与渲染资产之间的任何碰撞。由于在运行时已经存在一个分割掩码和一个深度掩码,因为人们遮挡是打开的,我想知道我是否可以获得该数组并使用它来识别碰撞事件。
我做了一些研究,看来我可能需要设置一个自定义渲染器来处理这个问题,但我想知道是否还有其他人找到了更简单的方法。我使用的配置非常简单。
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .horizontal
configuration.frameSemantics.insert(.personSegmentationWithDepth)
// Run the view's session
sceneView.session.run(configuration)
分割和深度数据都可以通过 ARFrame
的属性访问。您需要确认 ARSessionDelegate
协议才能获得更新。
func session(_ session: ARSession, didUpdate frame: ARFrame) {
if let segmentationData = frame.segmentationBuffer {
// Do smth with segmentation data
}
if let depthData = frame.estimatedDepthData {
// Do smth with depth data
}
}