在使用 的应用程序中ARKit
,我使用ARSCNPlaneGeometry
类update
方法SCNGeometry
从ARPlaneGeometry
. 我SCNPhysicsShape
从该几何中获得 a 以用作SCNPhysicsBody
平面节点:
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
// Plane Geometry
let planeGeometry = ARSCNPlaneGeometry(device: MTLCreateSystemDefaultDevice()!)
planeGeometry?.update(from: planeAnchor.geometry)
let planeNode = SCNNode(geometry: planeGeometry)
// Plane Physics
planeNode.physicsBody = SCNPhysicsBody(type: .static, shape: SCNPhysicsShape(geometry: planeGeometry!))
// Add Node to Scene
node.addChildNode(planeNode)
}
我遇到的问题是,即使显示的平面节点是平面,生成的物理形状也不是平面,而是粗糙球体。我知道这一点是因为我使用的是场景视图调试选项.showPhysicsShapes
。
我还在使用 的renderer(_:didUpdate:for:)
方法不断更新几何和物理形状,ARSCNViewDelegate
并且形状保持不变。
以前有人遇到过这个问题吗?