初探ARKit

一、什么是ARKit

AR(Augmented Reality),即虚拟增强现实技术,也就是将虚拟的计算机图形和真实环境结合的技术

ARKit能支持苹果所谓的“世界追踪”(world tracking)特性。以识别场景图像中的显著特征,从视频的每一帧中跟踪这些特征位置的差异,并将该信息与运动感测数据进行比较,从而得到设备的位置和运动的高精度模型。

“World tracking”还可以分析和理解场景中的内容。寻找与相机画面中的点对应的真实世界表面,检测相机画面中的平面,并报告位置和尺寸,然后在这个平面放置内容,并与场景中的虚拟内容进行交互。

在iOS11系统上,ARKit正式成为iOS系统框架,让开发者能够使用OC或swift语言就能开发AR App。

二、ARKit开发要求

Xcode 9或以上,iOS 11以及硬件设备A9处理器以上(6s以上机型)

三、ARKit实现原理

相机捕捉现实世界(ARkit),显示3D模型(sceneKit)
其中ARSession用于管理设备相机的共享对象和增强现实体验所需运动处理
ARSessionConfiguration跟踪设备方向,ARFrame捕获图像,追踪场景信息

原理如下图:

初探ARKit_第1张图片
ARKit原理图.png
  1. 打开xcode 9,新建一个工程,选择Augmented Rdeality App
初探ARKit_第2张图片
1.png
  1. 选择SceneKit
初探ARKit_第3张图片
2.png
  1. 创建一个新的SCNScene
    let scene = SCNScene() sceneView.scene = scene

  2. 创建几何模型

let sphere = SCNSphere(radius: 0.1)

  1. 渲染
 let material = SCNMaterial()
 material.diffuse.contents = UIImage(named:"earth.jpg")
 sphere.materials = [material]
  1. 设置根节点
let sphereNode = SCNNode(geometry: sphere)
//设置节点位置,z轴为负数
sphereNode.position = SCNVector3(x: 0, y: 0, z: -0.5)
scene.rootNode.addChildNode(sphereNode)

AR视觉位置如下图

初探ARKit_第4张图片
AR视觉位置.png

中间的盒子代表手机相机,从+Z这边看的话,AR模型在我们后脑勺位置,从-Z方向看才是在我们正前方位置。所以节点位置第三个参数Z为负数。

7.添加手势

func registerGestureRecognizers(){
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapped))
        self.sceneView.addGestureRecognizer(tapGestureRecognizer)
    }
    
    @objc func tapped (recognizer: UIGestureRecognizer){
        
        let sceneView = recognizer.view as! ARSCNView
        let touchLoaction = recognizer.location(in: sceneView)
        let hitRersults = sceneView.hitTest(touchLoaction, options: [:])
//        一開始的時候 index = 0
        if  !hitRersults.isEmpty {
            if index == self.textures.count {
                index = 0
            }
            
            guard let hitRersult = hitRersults.first else {
                return
            }
            
            let node = hitRersult.node
            node.geometry?.firstMaterial?.diffuse.contents = UIImage(named: textures[index])
            
            index += 1
        }
    }
  1. AR效果
初探ARKit_第5张图片
AR.PNG

五、总结

通过ARKit实现AR记住四步就可以了:
创建几何 -> 渲染 -> 设置节点 -> 添加手势

你可能感兴趣的:(初探ARKit)