序言
关注 AR/VR 也有一段时间了, 从一开始微软的 HoloLens, 谷歌眼镜, 到苹果上次在 WWDC 上向开发者们展示他们的 AR 方面的成果, 微软 HoloLens 高昂的价格让人望而却步, 而谷歌眼镜无疾而终, 相较于前两者, 苹果的 AR 技术只需要一台 iPhone, 成本降低了许多, 开发者大会上苹果展示的几个 Demo 效果也着实令我惊艳, 于是闲暇时间就在网上找了些资料, 写了个小东西.
话不多说先上最终完整的效果视频地址: 银河系
在这里也欢迎大家加入小编的 iOS 交流群 656315826, 群里会提供完整的 ARKit 教学视频, 源码和 ARKit 资料书籍欢迎大家入驻!
1.AR 技术简介
ARKit 是 2017 年 6 月 6 日, 苹果发布 iOS11 系统所新增框架, 它能够帮助我们以最简单快捷的方式实现 AR 技术功能. 增强现实技术 (Augmented Reality, 简称 AR), 是一种实时地计算摄影机影像的位置及角度并加上相应图像, 视频, 3D 模型的技术, 这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动.
ARKit 框架提供了两种 AR 技术, 一种是基于 3D 场景 (SceneKit) 实现的增强现实, 一种是基于 2D 场景 (SpriktKit) 实现的增强现实
误区解读
ARKit 虽然是 iOS11 新出的框架, 但并不是所有的 iOS11 系统都可以使用, 而是必须要是处理器 A9 及以上才能够使用, 苹果从 iPhone6s 开始使用 A9 处理器, 也就是 iPhone6 及以前的机型无法使用 ARKit
开发的环境
1.Xcode 版本: Xcode9 及以上
2.iOS 系统: iOS11 及以上
3.iOS 设备: 处理器 A9 及以上 (6S 机型及以上)
4.MacOS 系统: 10.12.4 及以上 (安装 Xcode9 对 Mac 系统版本有要求)
下来进入小项目实战
开发一个 AR 项目, 你需要用到 ARKit 和 SceneKit 这两个库, ARKit 用来捕捉现实场景参数, SceneKit 则用来在 AR 视图中加载显示 3D 模型.
AR 场景中使用的是 3 维坐标系如图, 你可以通过调节 z 轴的参数来调节物体距离远近.
三维坐标系
开始我们需要使用初始化 ARSCNView,ARSCNView 是用来加载 AR 的 3D 场景视图
ARSession 通过管理 ARSessionConfiguration 实现场景的追踪并且返回一个 ARFrame
ARSessionConfiguration(会话追踪配置) 主要目的就是负责追踪相机在 3D 世界中的位置以及一些特征场景的捕捉, 需要配置一些参数
SCNScene 是 AR 场景中的场景, 场景中是由许多 SCNNode 节点组成, SCNNode 是一个个 3D 模型. 例如我们这个例子中需要用到的节点有太阳, 地球, 月球, 可以 new 三个 SCNNode
为了使太阳更加逼真, 我们需要给 sunNode 增加纹理
同时地球, 月球都同太阳的创建方法. 接下来我们将 sunNode 节点添加到 Scene 中
初始化工作做好之后, 接下来开启场景捕捉
创建工作基本完成.
接下来就是如何让这些模型动起来了
这里要给大家先介绍下 SceneKit
SceneKit
AR 工程中有一个 ARSCNView, 它用来加载 3D 模型的 AR 视图的, 它继承于 SCNView, 相对的加载 2D 视图的就是 ARSKView, 视图中的那些模型的创建运动就需要用到 SceneKit 和 SpriteKit.
SceneKit 是用来构建 3D 场景的框架, 且可以与 Core Animation 和 SpriteKit 无缝交互. 在 SceneKit 中可以直接引入 COLLADA 行业标准文件制作好的 3D 模型或场景.
Sprite 是用来创建 2D 模型, 在游戏开发中, 指的是以图像方式呈现在屏幕上的一个图像. 这个图像也许可以移动, 用户可以与其交互, 也有可能仅只是游戏的一个静止的背景图. 而在 AR 中, 2D 模型会随着手机的远近放大缩小, 而不能像 3D 模型那样可以从侧面观察.
SCeneKit 结构图
今天给大家的分享就到这吧! 小编也不知道后面该怎么解释了 (尴尬)! 想知道后面如何做的可以加入小编的 iOS 交流群 656315826, 群里会提供视频讲解和源码, 大家一起交流成长!!
来源: http://www.jianshu.com/p/bf7ec0122eef