这两天事情有点多,现在才来写。看着同学们一个个都写完了,好急呀!
推荐两篇同学的写的挺好,写东西主要与人方便自己方便,所以我也参考了好多同学的,嘻嘻。。。。。
一、ARKit的初步介绍
什么是AR
增强现实(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。
增强现实技术,不仅展现了真实世界的信息,而且将虚拟的信息同时显示出来,两种信息相互补充、叠加。在视觉化的增强现实中,用户利用头盔显示器,把真实世界与电脑图形多重合成在一起,便可以看到真实的世界围绕着它。
关于ARKit的概述
2017年06月06日, 苹果iOS11发布ARKit框架,为了在真实空间和虚拟空间之间创建一个对应关系,ARKit使用一种称为视觉惯性测距的技术。该过程将来自iOS设备的运动感应硬件的信息与设备相机可见的场景的计算机视觉分析相结合。ARKit识别场景图像中的显著特征,跟踪视频帧中这些特征位置的差异,并将该信息与运动感测数据进行比较。结果是设备的位置和运动的高精度模型。
ARKit可以将2D或3D元素从设备的相机中添加到实时视图中,使得这些元素似乎在现实世界中。ARKit结合了设备运动跟踪,摄像机场景拍摄,高级场景处理和显示便利,他可让你轻松创建无与伦比的iPhone和iPad增强现实体验。
开发要求
项目初体验
1)创建AR项目
4156033-b52ec11416e22a39.jpeg点击Next
4156033-e64c81f89f753fa7.png选择SceneKit
项目创建成功,直接command+R,先体验一下。。。
小灰机、、、、、、、
ARSession
官方注释:The ARSession class configures and runs different Augmented Reality techniques on a device.
译文:ARSession类在设备上配置并运行不同的增强现实技术。
ARSCNView
官方注释:A view that integrates ARSession rendering into SceneKit.
@discussion The view draws the camera background, provides and updates a camera, manages nodes for anchors, and updates lighting.
译文:将ARSession渲染集成到SceneKit中的视图。
@discussion视图绘制相机背景,提供和更新相机,
管理锚点的节点,并更新照明。将ARSession渲染集成到SceneKit的视图。
SCNScene
官方注释:SCNScene is the class that describes a 3d scene. It encapsulates a node hierarchy.
译文:SCNScene是描述3d场景的类。 它封装了一个节点层次结构。
主要属性:rootNode 根节点
SCNMaterial (渲染器)
官方注释:A SCNMaterial determines how a geometry is rendered. It encapsulates the colors and textures that define the appearance of 3d geometries.
译文:SCNMaterial确定几何体的呈现方式。 它封装了定义3D几何体外观的颜色和纹理。
material.diffuse.contents 能够放入UIImage、视屏等;
例如:let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "earth.jpg")
sphere.materials = [material]
实现正方形代码
override func viewDidLoad() {
super.viewDidLoad()
// Set the view's delegate
sceneView.delegate = self
// Show statistics such as fps and timing information
//是否显示底部状态显示器
sceneView.showsStatistics = true
let scene = SCNScene()
// 创建正方形
let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
// 渲染
let material = SCNMaterial() // material 渲染器
// material.diffuse.contents = UIColor.red
material.diffuse.contents = UIImage(named: "brick.png")
box.materials = [material]
// 创建节点
let boxNode = SCNNode(geometry: box)
// 设置节点位置
boxNode.position = SCNVector3(0,0,-0.2)
// 把节点添加到根节点
scene.rootNode.addChildNode(boxNode)
sceneView.scene = scene
}