gpt4 book ai didi

ios - 使用 ARSCNPlaneGeometry 获取 SCNPhysicsShape 会生成球体形状而不是平面

转载 作者:行者123 更新时间:2023-11-30 10:53:04 25 4
gpt4 key购买 nike

在使用 ARKit 的应用程序中,我使用 ARSCNPlaneGeometryupdate 方法从以下位置获取 SCNGeometry一个ARPlaneGeometry。我从该几何体中获取一个 SCNPhysicsShape 用作平面节点的 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)
}

我遇到的问题是,即使显示的平面节点是平面,生成的物理形状也不是平面的,而是粗糙球体的。我知道这一点是因为我正在使用场景 View 调试选项 .showPhysicsShapes

我还使用 ARSCNViewDelegaterenderer(_:didUpdate:for:) 方法不断更新几何和物理形状,并且形状保持不变。

之前有其他人遇到过这个问题吗?

最佳答案

嗯,看起来 SCNPhysicsShape 类从 ARSCNPlaneGeometry 计算出来的形状抽象完全关闭了,除非你通过一个选项来帮助它一点。如果代替:

planeNode.physicsBody = SCNPhysicsBody(type: .static, shape: SCNPhysicsShape(geometry: planeGeometry!))

您使用:

planeNode.physicsBody = SCNPhysicsBody(type: .static, shape: SCNPhysicsShape(geometry: planeGeometry!, options: [SCNPhysicsShape.Option.type: SCNPhysicsShape.ShapeType.boundingBox]))

获得了“近似”形状,尽管并不十分精确。

关于ios - 使用 ARSCNPlaneGeometry 获取 SCNPhysicsShape 会生成球体形状而不是平面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54258170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com