1.首先是概念问题
新鲜事物的学习都是要从概念开始学习的,我这里说的概念并不是严格意义上的概念,只是我对AR的一些通俗的理解。学习AR必不可少的要先了解它所用到的框架。
(好吧,AR的严格概念:增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。)
- ARKit:增强现实
- SceneKit:3D场景引擎
- SpriteKit:2D场景引擎
关于三者的关系:SceneKit 与 SpriteKit二者都可以实现增强现实,现在主流的都是用SceneKit 3D实现的,ARKit框架本身只包含了相机追踪,并不能直接加载模型,所以只能依赖SceneKit或SpriteKit游戏引擎去加载模型,从而实现AR(ARKit限制:iOS11以上且iPhone6s及以上的A9处理器才能使用ARKit) 本文,主要也是讲述SceneKit如何实现AR。
概念总结:
一:相机捕捉现实世界图像(由ARKit来实现)
二:在图像中显示虚拟3D模型(由SceneKit来实现)
2.几个重要的类
了解了基本概念,现在我们就要了解AR的实现需要用到哪些类,以及每个类负责了哪一块的工作。首先看一张框架关系图
ARKit框架图.png
从图中我们可以看到AR技术用到的主要框架是ARKit和SceneKit,常用的几个重要类:
- ARScnView:继承自SCNView,用来展示3D场景与模型;
- ARCamera:通过相机来捕捉真实世界的图像;
- ARSession:会话,连接ARScnView与ARCamera,使ARCamera捕捉到的图像可以以3D场景的形式展示在ARScnView上;
- ARConfiguration:运行会话就需要进行会话配置,ARConfiguration类或其子类,确定了ARKit将如何跟踪设备相对于现实世界的位置和运动,从而影响你创建的AR体验的种类;
- ARFrame:ARKit传输ARCamera获取到的跟踪信息和图像参数的对象;
- SCNScene:3D世界的场景,万物皆Scene
- SCNNode:节点,就是3D模型
AR工作流程图.png
3.创建Demo
了解了概念,知道了有哪些类以及每个类的功能,下面就来实际敲码Demo一下。首先是创建工程,①苹果有专门的AR框架工程“Augmented Reality App”,注意在“content Technology”选择Scenekit;②我们也可以创建“Single View App”,然后再在controller上添加ARSCNView等AR所需的控件。
下面说一下AR特有文件的创建,如下图。
Demo文件.png 文件创建.png
3D模型需要专门的3D软件制作,动画效果则可以自己在Xcode上创建设置。具体各个参数的效果可参考。
动画参数设置.png
以上。都是些比较基础入门的东西以及一些个人的理解,文章开头的参考文章有不少干货,大家可以去看看。后续再放个小。