title: Displaying a DAE file with ARKit and tracking an Anchor in the scene
body: <p>I'm trying out ARKit, and I set up an <code>ARSCNView</code> using <a href="https://developer.apple.com/documentation/arkit/building_a_basic_ar_experience" rel="nofollow noreferrer">this tutorial</a>.</p>
  
  <p>Then set up tracking horizontal 3D planes with the second part of <a href="https://developer.apple.com/documentation/arkit/arscnview/providing_3d_virtual_content_with_scenekit" rel="nofollow noreferrer">this tutorial.</a></p>
  
  <p>I created a single view application then constrained an <code>ARSCNView</code> flush to the root view with an outlet to my <code>ViewController</code>.</p>
  
  <p>Here is the code in the <code>ViewController</code>:</p>
  
  <pre><code>import UIKit
  import ARKit
  
  class ViewController: UIViewController {
  
      //MARK: Properties
      @IBOutlet weak var arScene: ARSCNView!
  
      //MARK: ARKit variables
      var realityConfiguration: ARWorldTrackingSessionConfiguration?
  
      //MARK: Lifecycle
      override func viewDidLoad() {
          super.viewDidLoad()         
      }
  
      override func viewDidAppear(_ animated: Bool) {
          super.viewDidAppear(animated)
          self.prepare()
      }
  
      //MARK: Actions      
  
      //MARK: Overrides
  }
  
  extension ViewController {
      func prepare() {
          //Check to see if active reality is supported
          guard ARSessionConfiguration.isSupported else {
              //Custom alert function that just quickly displays a UIAlertController
              AppDelegate.alert(title: "Not Supported", message: "Active Reality is not supported on this device")
              return
          }
          //Set up the ARSessionConfiguration
          self.realityConfiguration = ARWorldTrackingSessionConfiguration()
          //Set up the ARSCNView
          guard let config = self.realityConfiguration else {
              return
          }
          //Run the ARSCNView and set its delegate
          self.arScene.session.run(config)
          self.arScene.delegate = self
      }
  }
  
  extension ViewController: ARSCNViewDelegate {
      func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -&gt; SCNNode? {
          return nil
      }
  
      func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
          guard let planAnchor = anchor as? ARPlaneAnchor else {
              return
          }
  
          let plane = SCNPlane(width: CGFloat(planAnchor.extent.x), height: CGFloat(planAnchor.extent.z))
          let planeNode = SCNNode(geometry: plane)
          planeNode.position = SCNVector3Make(planAnchor.center.x, 0, planAnchor.center.z)
  
          planeNode.transform = SCNMatrix4MakeRotation(-Float.pi / 2, 1, 0, 0)
  
          node.addChildNode(planeNode)          
      }
  
      func renderer(_ renderer: SCNSceneRenderer, willUpdate node: SCNNode, for anchor: ARAnchor) {
          print("Will updated Node on Anchor: \(anchor.identifier)")
      }
  
      func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
          print("Did updated Node on Anchor: \(anchor.identifier)")
      }
  
      func renderer(_ renderer: SCNSceneRenderer, didRemove node: SCNNode, for anchor: ARAnchor) {
          print("Removed Node on Anchor: \(anchor.identifier)")
      }
  }
  </code></pre>
  
  <p>I downloaded Xcode 9 beta, followed Apple's tutorials and realized my iPhone 6 does not have the A9 chip required for the <code>ARWorldTrackingSessionConfiguration</code> object.</p>
  
  <p>About halfway down in the first tutorial I linked, Apple says you can still create AR experiences without the A9 chip. However, they do not go into further detail. Has anyone else found a starting point, and is willing to provide a code example of using a .dae file and</p>
  
  <ul>
  <li>Choosing an anchor point to display it</li>
  <li>Tracking that anchor point</li>
  <li>Actually displaying the .dae file</li>
  </ul>