使用 AR 的条件:
开发工具 Xcode.version>=9.0,
手机系统版本iOS 11
以上
A9处理器及以上
6s 机型及以上
AR 热身:
我们都知道 AR 是增强现实(Augmented Reality)的缩写,简单来说就是通过摄像设备实时的在空间中的某个位置及角度加上图像,视频或者2D 或者3D 模型的技术,以此与虚拟物体进行互动.
实现一个简单的 AR 场景需要了解以下几个专业名词辅助理解:
1.传感器追踪:主要追踪现实世界动态物体的六轴变化,空间可以表示为八个象限的x, y, z轴坐标系,六轴运动分别就是在三个轴上的移动和三个轴上的旋转.任何一个没有受约束的物体,在空间均具有这6个独立的运动。
ARKit原理:
ARKit 从头到尾只做一件事:相机捕捉现实世界; 靠的是
SceneKit
显示3D模型
ARkit三大特性:
1.追踪 (全局追踪, 视觉惯性测距 VIO, 没有外部设置)
2.场景理解 (平面检测”现实世界的理解”, 命中测试, 光估计(灯的各个部位光线强度不一样,用的Metal
))SceneKit
(iOS8) ,SpriteKit
(iOS7) ,Metal
(iOS7)
3.渲染 (AR 视图, 自定义渲染(unity
,unreal
)两个虚拟引擎)
目前看 ARKit 只提供了3D渲染的入口,其他两个都被封装起来了,所以目前来看渲染是差异化的主要途径,但不唯一。
Metal 是不支持模拟器的,并且对真机的版本没有限制.
ARKit 中最重要的两个类是:
ARSession
:使用事前对它进行一个追踪,通过一个run
方法启动这个追踪,ARWorldTrackingSessionConfiguration
来追踪设备的方向
与位置
,并且能够检测平面
。这个选项只有A9处理器之上
才支持。其他型号处理器(6S以下)只能追踪设备的方向
。
ARSCNView
:ARKit的提供了自带的两个渲染类
:ARSCNView
和ARSKView
,后者用来渲染2D
模型。同时ARKit也支持自定义用OpenGL
或Metal
实现渲染类,(unity
,unreal
)两个虚拟引擎,但要自己管理与ARSession
之间的通信,同时要遵循iOS GPU命令不能在后台调用的规则。
四大点:
模型
,节点
,渲染
,手势
创建简单 AR 应用的重要代码如下:
// 创建一个场景
let scene = SCNScene()
// 创建球型模型
let sphere = SCNSphere(radius: 0.1)
// 创建渲染器
let material = SCNMaterial()
// 设置渲染器延伸的内容
material.diffuse.contents = UIImage(named: "earth")
// 将渲染器添加到模型上
sphere.materials = [material]
// 创建节点,节点几何为模型
let sphereNode = SCNNode(geometry: sphere)
// 设置节点的位置
sphereNode.position = SCNVector3(0, 0, -0.5)
// 将节点设置为场景的根节点
scene.rootNode.addChildNode(sphereNode)
// 将创建的场景赋值给视图场景
sceneView.scene = scene
完整代码在 Github 上:简单星球 AR 应用
网友评论