ARKit-将节点添加到当前摄像机视图中的场景

时间:2019-03-02 00:18:24

标签: scenekit arkit child-nodes pointofview

我有一个基本的ARKit应用程序,该应用程序调用一个函数以将SNCSphere刚从摄影机视图中渲染出来,直到启动为止,并且一直停留在当前位置,直到在屏幕上点击沿-Z方向施加脉冲的位置为止。然后调用该函数以添加另一个球体。但是,当它起飞时,即使它已添加到场景视图的视点,它也会朝初始摄像机视图的原始方向移动。

这是因为添加到速度上的脉冲实际上是在原始设备-Z方向上添加了该脉冲?还是我需要更新视点相机,以便每次根据当前视点将球体节点添加到此新相机时,将其添加到此新相机?这就产生了一个问题,即每次设备更改其视点时,都需要更新摄像机。

这有点难过,这是我第一次尝试使用ARKit应用程序,我似乎可以将其确定下来。

//add new sphere

func addSphere() {

//create sphere and apply parameters
    loadSphereNode = SCNNode(geometry: SCNSphere)
    loadSphereNode!.name = "sphere"
    loadSphereNode!.scale = SCNVector3(1, 1, 1)
    loadSphereNode!.position = SCNVector3(0, 0, 0.5)

//generate physics for sphere but don't apply them        
    spherePhysicsBody = SCNPhysicsBody(
        type: .dynamic,
        shape: SCNPhysicsShape(geometry: (loadDartNode!.geometry)!)
    )
    spherePhysicsBody!.mass = 0.003
    spherePhysicsBody!.friction = 2
    spherePhysicsBody!.contactTestBitMask = 1

//add loaded sphere to a temporary variable        
    currentSphereNode = loadSphereNode
//add sphere to point of view
    sceneView.pointOfView?.addChildNode(currentSphereNode!)

}

//button action    
@IBAction func moveSphere(_ sender: Any) {

//add physics to sphere
    currentSphereNode?.physicsBody = SpherePhysicsBody
//apply impulse
    currentSphereNode?.physicsBody?.applyForce(SCNVector3(x: 0, y: 0, z: -1.25), asImpulse: true)

//call to add new sphere
    addSphere()

}

0 个答案:

没有答案