如何将ARKit检测到的3d模型(如降雨)降落到平面节点上

时间:2019-03-06 11:01:39

标签: ios swift 3d scenekit arkit

我想丢掉很多具有重力的3d模型,例如ARKit检测到的平面节点上的雨。

当我设置从平面节点降到较低位置的节点的y坐标时,它可以工作。

成功演示视频 https://youtu.be/VA2b2lDyoI4

但是,当我将y坐标从平面节点设置为高时,它失败了。具体来说,几乎3D模型不会掉落在平面节点上。

故障演示视频 https://youtu.be/an0oclgDDRg

如果您能指出我的错误观点,我将不胜感激。

@objc func update(tm: Timer) {

    if let ballNode = self.ballNode, let planeNode = self.planeNode {

        let cloneBall = ballNode.clone()
        let (min, max) = planeNode.boundingBox

        let x = Float.random(in: min.x...max.x)
        let y = Float.random(in: min.y...max.y)
        let z = Float.random(in: min.z...max.z)

        let cloneBallPosition = planeNode.convertPosition(SCNVector3(x, y, z), to: nil)

        cloneBall.position = cloneBallPosition

        //If I set the y coordinate 0.05, it will work.
        //cloneBall.position.y += 0.05

        //If I set the y coordinate 1, it will not work.
        cloneBall.position.y += 1

        sceneView.scene.rootNode.addChildNode(cloneBall)
    }
}

0 个答案:

没有答案