我的AR学习笔记

AR出来已经有些年日了,而我现在才去学习惭愧惭愧。其实网上已经有很多资料了,而我现在只是做一个归纳总结,以达到一个我自己看起来比较好理解的效果。
所参考到的文章: ARKit从入门到精通 ,SceneKit框架详细解析,直击苹果 ARKit 技术
官方资料传送门:ARKit官方文档,SceneKit官方文档,AR官方视频
话不多说,开始。

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的实现需要用到哪些类,以及每个类负责了哪一块的工作。首先看一张框架关系图


我的AR学习笔记_第1张图片
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模型

ARConfiguration的子类主要有以下三种:
ARWorldTrackingConfiguration:提供高品质的AR体验,使用后置摄像头精确跟踪设备的位置和方向,并允许平面检测和点击测试。
AROrientationTrackingConfiguration:提供使用后置摄像头并仅跟踪设备方向的基本AR体验。
ARFaceTrackingConfiguration:提供使用前置摄像头并跟踪用户脸部的移动和表情的AR体验。

我的AR学习笔记_第2张图片
AR工作流程图.png

3.创建Demo

了解了概念,知道了有哪些类以及每个类的功能,下面就来实际敲码Demo一下。首先是创建工程,①苹果有专门的AR框架工程“Augmented Reality App”,注意在“content Technology”选择Scenekit;②我们也可以创建“Single View App”,然后再在controller上添加ARSCNView等AR所需的控件。
下面说一下AR特有文件的创建,如下图。


我的AR学习笔记_第3张图片
Demo文件.png

我的AR学习笔记_第4张图片
文件创建.png

3D模型需要专门的3D软件制作,动画效果则可以自己在Xcode上创建设置。具体各个参数的效果可参考 "SceneKit框架详细解析"。
我的AR学习笔记_第5张图片
动画参数设置.png

以上。都是些比较基础入门的东西以及一些个人的理解,文章开头的参考文章有不少干货,大家可以去看看。后续再放个小 Demo。

你可能感兴趣的:(我的AR学习笔记)