美文网首页
ARKit入门

ARKit入门

作者: AnnieAri | 来源:发表于2017-10-10 17:12 被阅读0次

    流程

    • 1 . ARConfiguration(建议用ARWorldTrackingConfiguration负责追踪相机的运动)
    lazy var arSessionConfiguration:ARWorldTrackingConfiguration = {
            let c = ARWorldTrackingConfiguration()
            c.planeDetection = .horizontal //追踪方向 目前就这一种
            c.isLightEstimationEnabled = true//自适应灯光
            return c
    }()
    
    • 2 . ARSession(负责管理相机追踪配置及3D相机坐标)
    lazy var arSession: ARSession = {
            let s = ARSession()
            return s
    }()
    
    • 3 . ARSCNView(展示3D界面)
      lazy var arSCNView: ARSCNView = {
            let v = ARSCNView(frame: self.view.bounds)
            v.delegate = self
            v.session = self.arSession
            v.automaticallyUpdatesLighting = true
            return v
    }()
    
    • 4 . 开启AR相机扫描
    //这个是swift的方法  OC方法 - (void)runWithConfiguration:(ARConfiguration *)configuration NS_SWIFT_UNAVAILABLE("Use run(_:options:) instead");
    
     self.arSession.run(self.arSessionConfiguration, options: ARSession.RunOptions.resetTracking)
    
    • 5 . 添加虚拟物体
    //获取虚拟物体的场景  这个是系统自带的小飞机 自己导入素材的时候如果获取场景失败记得查看 BuildPhase 的CopyBundleResource 添加上
    guard let scene = SCNScene(named: "art.scnassets/ship.scn") else{return}
    //AR世界万物皆节点 -有位伟人这么说过 
    //每个Scene中有且只有一个节点,里面的所有物体都是其子节点!
    let shipNode = scene.rootNode.childNodes.first!
    //将这个节点添加到我们视图的Scene中 位置默认是相机位置
    //可以为其设置一个位置    其属性  open var position: SCNVector3
    arSCNView.scene.rootNode.addChildNode(shipNode)
    

    相关文章

      网友评论

          本文标题:ARKit入门

          本文链接:https://www.haomeiwen.com/subject/zhqbyxtx.html