ARKit как отключить взаимодействие по SCNNode - PullRequest
0 голосов
/ 04 декабря 2018

Я создал простейшую демонстрацию ARKit, добавив поле SCNNode в ARSCNView.

    let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)

    let boxNode = SCNNode()
    boxNode.geometry = box
    boxNode.position = SCNVector3(x, y, z)

    sceneView.scene.rootNode.addChildNode(boxNode)

В моем приложении отображается белая рамка.Когда я перееду, коробка останется в предполагаемом месте.

Я могу увеличивать / уменьшать окно и вращать окно.Когда окно масштабируется или поворачивается, оно не будет оставаться в фиксированном месте, а будет перемещаться с моей камерой.

Как отключить эту функцию масштабирования / поворота?

===

вот мой viewcontroller.swfit

//
//  ViewController.swift
//  ARKitDemo1
//
//  Created by David Peng on 2018/11/27.
//  Copyright © 2018 David Peng. All rights reserved.
//

import UIKit
import SceneKit
import ARKit

class ViewController: UIViewController, ARSCNViewDelegate {

    @IBOutlet weak var sceneView: ARSCNView!

    override func viewDidLoad() {
        super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
        sceneView.delegate = self

        addBox()
        // debug feature
        sceneView.showsStatistics = true
        sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints]
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        let configuration = ARWorldTrackingConfiguration()
        sceneView.session.run(configuration)
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        sceneView.session.pause()
    }

    func addBox(x: Float = 0, y: Float = 0, z: Float = -0.2) {
        let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)

        let boxNode = SCNNode()
        boxNode.geometry = box
        boxNode.position = SCNVector3(x, y, z)

        sceneView.scene.rootNode.addChildNode(boxNode)
    }

 }
...