我试图创建一个用户堆叠不同几何形状的应用程序。在加载到ARSCNView内的.scn文件中,我插入一个静态平面,然后在每次点击用户时,应用程序都会插入一个动态SCNNode。
第一个节点插入平面上方几英寸处,以复制掉落的物体。然后,每个其他节点都被丢弃在另一个节点之上。
这是该应用程序的主要思想;添加3个或4个节点后出现问题,它们看起来互相滑动,几乎摇晃,整个结构崩溃。
这是我插入的节点:
let dimension: CGFloat = 0.075
let cube = SCNBox(width: dimension, height: dimension, length: dimension, chamferRadius: 0.0)
let node = SCNNode(geometry: cube)
node.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.dynamic, shape: nil)
node.physicsBody?.mass = 2.0
node.physicsBody?.friction = 1.0
node.physicsBody?.restitution = 0.01
node.physicsBody?.damping = 0.0
node.physicsBody?.angularDamping = 0.0
node.physicsBody?.rollingFriction = 1.0
node.physicsBody?.allowsResting = true
let insertionYOffset = 0.3
node.position = SCNVector3(hitResult.worldCoordinates.x, hitResult.worldCoordinates.y + Float(insertionYOffset), hitResult.worldCoordinates.z)
我试图使用这些值,这些是最好的,但它们不足以创建稳定的块结构。
作为一项要求,我需要保持块的动态,它们需要受到重力,风等的影响。
答案 0 :(得分:1)
这个问题最有可能与一个名为Dynamic的因素有关,这个因素可以让它连续移动,或者可能与对象相互碰撞以解决这个问题所需要做的就是将碰撞模板更改为两个不同的数字。
答案 1 :(得分:1)
我看到两点可能是模拟的缺陷:
1
)。非常小或非常大的物体往往不太自然。对于模拟,0.075听起来有点小。我没有看到明显的解决方案,也许找一种方法来改变参考尺寸。