有谁成功地从ARKit应用程序中提取了估计深度数据和分割缓冲区?我试图识别一个人和一个渲染的资产之间的任何碰撞。因为在运行时已经存在一个分割掩码和一个深度掩码,因为人的遮挡是打开的,我想知道我是否可以得到这个数组并使用它来识别碰撞事件。
我做了一些研究,似乎我可能需要设置一个自定义的渲染器来处理这个问题,但我想知道是否有其他人想出了一个更简单的方法。我使用的是一个非常简单的配置。
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .horizontal
configuration.frameSemantics.insert(.personSegmentationWithDepth)
// Run the view's session
sceneView.session.run(configuration)
分割和深度数据都可以通过 ARKit 的属性访问。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
}
}