ARKit - добавление узла к сцене в текущем виде с камеры

У меня есть базовое приложение ARKit, которое вызывает функцию для визуализации SNCSphere только из вида камеры до ее запуска, и оно остается в этой текущей позиции до тех пор, пока не будет нажат экран, где применяется импульс в направлении -Z, который затем вызывает функция, чтобы добавить другую сферу. Однако, когда он снимается, он делает это в направлении исходной ориентации исходного изображения с камеры, даже если он добавляется к точке обзора сцены.

Это потому, что импульс, добавляемый к скорости, фактически добавляет этот импульс к исходной ориентации устройства -Z? или мне нужно обновить камеру pointofview, чтобы каждый раз, когда добавлялся узел сферы, он добавлялся к этой новой камере на основе текущей точки обзора? Это создаст проблему, когда каждый раз, когда устройство меняет свою точку зрения, камеру необходимо будет обновлять.

Просто немного озадачен здесь, это моя первая попытка приложения 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 ответов

Другие вопросы по тегам