美文网首页
ARKit初识浅谈

ARKit初识浅谈

作者: ihere洋 | 来源:发表于2017-09-03 17:32 被阅读0次

    AR全称Augmented Reality(增强现实),是一种将虚拟3D场景加入到由摄像机捕捉到的3D现实场景当中的技术。AR是借助于AVFoundation和CoreMotion来实现这一效果的。
    分为两个步骤来实现:

    • 1.相机捕捉现实世界图像(由ARKit来完成)
    • 2.在图像中现实3D模型(由Scenekit来完成)

    实现原理:
    1.ARCamera用相机捕捉真实世界图像,ARSCNView将相机捕捉到的界面图像作为3D场景,他们两者之间通过ARSession连接起来的。而ARSession需要指定一个为会话追踪配置的对象ARSessionConfiguration,我们使用其子类ARWorldTrackingConfiguration来跟踪设备的方向和位置,以及检测设备摄像头看到的现实世界的表面。当ARWorldTrackingSessionConfiguration计算出相机在3D世界中的位置时会交给ARSession去管理,该位置是一个类ARFrame,ARSession有对应的属性currentFrame。
    2.ARSCNView继承于SCNView,SCNView是来显示3D场景的,SCNView又继承于UIView。SCNView有个类型为SCNScene的属性scene表示3D世界的场景(万物皆是Scene),SCNScene有个根节点类型为SCNNode的rootNode,任何3D模型都可看作成一个节点然后添加到根节点,这样就可以在3D场景中显示该3D模型了。结构图如下:


    1798026-50bbc2f9a06fb069.png

    相关代码如下:

    override func viewDidLoad() {
            super.viewDidLoad()
            // 设置代理
            sceneView.delegate = self
            // 显示数据
            sceneView.showsStatistics = true
            //创建场景
            let scene = SCNScene()
            //创建球体模型,半径为0.1米
            let sphere = SCNSphere(radius: 0.1)
            //为模型添加渲染器
            let material = SCNMaterial() 
            material.diffuse.contents = UIImage(named: "earth.jpg")
            sphere.materials = [material]
            //创建节点
            let sphereNode = SCNNode(geometry: sphere)
            //设置节点的位置
            sphereNode.position = SCNVector3(0,0,-0.5)
            //添加到场景的根节点上
            scene.rootNode.addChildNode(sphereNode)
            sceneView.scene = scene
        }
        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()
        }
    

    效果如下:


    CC211523FACD6914778A55FF5F90D337.jpg

    相关文章

      网友评论

          本文标题:ARKit初识浅谈

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