这两天事情有点多,现在才来写。看着同学们一个个都写完了,好急呀!
推荐两篇同学的写的挺好,写东西主要与人方便自己方便,所以我也参考了好多同学的,嘻嘻。。。。。
一、ARKit的初步介绍
什么是AR
增强现实(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。
增强现实技术,不仅展现了真实世界的信息,而且将虚拟的信息同时显示出来,两种信息相互补充、叠加。在视觉化的增强现实中,用户利用头盔显示器,把真实世界与电脑图形多重合成在一起,便可以看到真实的世界围绕着它。
关于ARKit的概述
2017年06月06日, 苹果iOS11发布ARKit框架,为了在真实空间和虚拟空间之间创建一个对应关系,ARKit使用一种称为视觉惯性测距的技术。该过程将来自iOS设备的运动感应硬件的信息与设备相机可见的场景的计算机视觉分析相结合。ARKit识别场景图像中的显著特征,跟踪视频帧中这些特征位置的差异,并将该信息与运动感测数据进行比较。结果是设备的位置和运动的高精度模型。
ARKit可以将2D或3D元素从设备的相机中添加到实时视图中,使得这些元素似乎在现实世界中。ARKit结合了设备运动跟踪,摄像机场景拍摄,高级场景处理和显示便利,他可让你轻松创建无与伦比的iPhone和iPad增强现实体验。
开发要求
Xcode9(最新版的是Xcode9 beta6 如果是最新Xcode 要macOS High Sierra 10.12.6版本)
A9硬件iOS手机设备从6s开始使用
ios 11 下载地址 https://developer.apple.com/download/
升级iOS11时可用手机Safari打开下载安装较为方便,必须用开发者账号
![Uploading Snip20170904_13_847170.png . . .]。
必须真机,模拟器无法运行。
项目初体验
1)创建AR项目
点击Next
选择SceneKit
项目创建成功,直接command+R,先体验一下。。。
小灰机、、、、、、、
ARSession
官方注释:The ARSession class configures and runs different Augmented Reality techniques on a device.
译文:ARSession类在设备上配置并运行不同的增强现实技术。
一个ARSession对象协调ARKit代表你执行的主要过程,以创建增强的现实体验。这些过程包括从设备的运动感测硬件读取数据,控制设备的内置相机,以及对拍摄的相机图像执行图像分析。会话综合了所有这些结果,以建立设备所在真实世界空间与你为AR内容建模的虚拟空间之间的对应关系。
ARKit构建的每个AR体验都需要一个ARSession对象。如果您使用ARSCNView(显示使用3D SceneKit内容增强相机视图的AR体验的视图)或ARSKView(用于显示使用2D SpriteKit内容增强相机视图的AR体验的视图)对象来轻松构建AR体验的可视化部分,则视图对象包含一个ARSession实例。如果您为AR内容构建自己的渲染器,则需要自己实例化和维护一个ARSession对象。
运行会话需要会话配置:类的实例或其子类。这些类确定ARKit如何跟踪设备相对于现实世界的位置和运动,从而影响您可以创建的AR体验的种类。AROrientationTrackingConfiguration ARWorldTrackingSessionConfiguration
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
}
时间紧,推荐几个更好的:1)http://www.jianshu.com/p/16b11e50396c
2)http://www.jianshu.com/p/ff0d37ca125c(详细介绍了几何图形相关)
3)http://www.jianshu.com/p/afccb5924229(播放视频)