Osheep

时光不回头,当下最重要。

ARKit 到底怎么实现的

官方的一句话

Integrate iOS device camera and motion features to produce augmented reality experiences in your app or game

集成iOS设备摄像头和运动功能,在你的应用程序或游戏中产生增强现实体验

我写过一个小实例100行代码实现手机AR,有兴趣的可以去看看,这个demo 也是ARKit 的原理介绍

ARKit 重要的类介绍

ARSCNView

显示3D 内容的视图 继承SCNView ,SCNView 继承UIView,所以这个视图可以是任何UIView的子视图,所以你可以像使用UIView一样使用它。你要你使用了ARSCNView 则要和SceneKit 框架一起使用

ARSKView

功能和上面类似,只是它是专门显示2D模型内容的视图,如果你要使用它则对应使用SpriteKit 框架

ARSession

管理设备摄像机和运动处理的共享对象。

ARAnchor

表示一个真实世界的位置和方向,可以将物理模型放置的AR场景中

ARPlaneAnchor

在AR会话中检测到真实世界平面的位置和方向的信息

ARFrame

一个正在运行的AR会话连续地从设备摄像机捕获视频帧。对于每一帧,ARkit分析图像,通过从装置的运动传感硬件来判断设备的实际位置数据

ARCamera

代表 AR会话中捕获的视频帧的摄像机位置和成像特性的信息

ARSessionConfiguration

场景配置,这种配置下,手机位置不动,旋转手机,能够看到,模型相对环境的角度不会改变,但是如果移动手机,模型的位置就会变化

ARWorldTrackingSessionConfiguration

旋转手机或者移动手机,模型的位置和角度都不会变化

接下来演示一个demo 给大家看看

第一步 创建一个工程

《ARKit 到底怎么实现的》

49751CA2-3CC2-487C-80BD-383C17358113.png

第二步 在ViewController 里面导入两个框架

import SceneKit
import ARKit

第三步 创建一个场景显示视图

@IBOutlet var sceneView: ARSCNView!

第四步 创建一个3D 场景

    let scene = SCNScene(named: "art.scnassets/ship.scn")!
   // 给场景显示视图设置场景
    sceneView.scene = scene

第五步 创建场景配置

 let configuration = ARWorldTrackingSessionConfiguration()
 // Run the view's session
  sceneView.session.run(configuration)

这个时候运行一下工程 可以查看一下效果,ARKit 部分的内容比较简单,如果想要学习AR 开发, 难点不是ARKit 框架,而是苹果在 2014 年推出3D游戏引擎框架SceneKit,这个框架至今没有被重用,但是相信AR 会让这个框架火起来,在年初我已经将SceneKit 的教程写完,已发布至AppStore ,想要学习的朋友可以去下载,SceneKit下载地址

点赞