在ARkit中,如何创建与网格相同的物理物体?现在我已经创建了边框

时间:2018-07-09 04:55:45

标签: ios swift scenekit arkit

let physicsShape = SCNPhysicsShape(geometry: cloneNode.geometry!, options: [SCNPhysicsShape.Option.type : SCNPhysicsShape.ShapeType.boundingBox])
let physicsbody = SCNPhysicsBody(type: .dynamic, shape: physicsShape)
physicsbody.isAffectedByGravity = true
physicsbody.angularDamping = 1
cloneNode.physicsBody = physicsbody
sceneView.scene.rootNode.addChildNode(cloneNode)

但是物理物体与网格不匹配,因此它悬停在面板上

请帮助我解决这个问题,我还使用了凹面多面体-在这种情况下,它可以创建精确的形状,但是不能将对象声明为动态的。 ????

2 个答案:

答案 0 :(得分:1)

感谢您的回答max9xs

迅速4的答案如下

 boxNode.boundingBox.min = SCNVector3(0.0,0.0,0.0)
 boxNode.boundingBox.max = SCNVector3(1.0,1.0,1.0)

这将更改对象的边界框。

答案 1 :(得分:0)

只有在您的某些角顶点没有面或没有应用其他填充的情况下,才应该发生这种情况。

您可以通过以下代码启用“调试选项”,并检查边界框是否与物理形状边界匹配。

scnView.debugOptions = SCNDebugOptionShowBoundingBoxes | SCNDebugOptionShowPhysicsFields | SCNDebugOptionShowWireframe;

您还可以使用以下代码手动为几何设置边界框

SCNVector3 v1=SCNVector3Make(0, 0, 0);
SCNVector3 v2=SCNVector3Make(5, 5, 5);

[boxCharacter setBoundingBoxMin:&v1 max:&v2];