如何继续运行相同的ARWorldTrackingConfiguration

时间:2018-04-06 10:31:34

标签: swift xcode arkit xcode9.2

我想根据提供的字符串的值在AR场景上创建两个3D对象。字符串的默认值为“1”,之后,我将跳转到另一个ViewController并将字符串值更改为“2”,然后再返回到ARViewController。

我想问一下,当我移动到另一个ViewController然后回到ARViewController时,如何保持AR场景的现有节点和世界原点保持不变?似乎每当我回到AR场景时,它将再次进行世界跟踪并移除我现有的节点和世界原点。我只能通过字符串值“2”显示最新的3D对象。正在删除由字符串“1”创建的3D对象。

以下是AR ViewController的代码:

class ARViewController: UIViewController {

public var object = Connector()

@IBOutlet weak var ARScene: ARSCNView!

public let configuration = ARWorldTrackingConfiguration()

override func viewDidLoad() {
    super.viewDidLoad()
    self.ARScene.session.run(configuration)
}

override func viewDidAppear(_ animated: Bool) {
   if object.stringbeingpassed == "1"{
        self.addNode(newposition: SCNVector3(0,0,0))
    }else{
        self.addNode(newposition: SCNVector3(0.1,0.1,0.1)) 
    }
}

func addNode(newposition:SCNVector3){
    let ball = SCNNode()
    ball.geometry = SCNSphere(radius: 0.02)
    ball.position = newposition
    self.ARScene.scene.rootNode.addChildNode(ball)
    let action = SCNAction.rotateBy(x: 0, y:CGFloat(360.degreesToRadians), z: 0, duration: 4)
    let forever = SCNAction.repeatForever(action)
    ball.runAction(forever)
}

0 个答案:

没有答案