一、前述
以前认为与其写一篇技术博客,不如看一部电影。现在觉得,与其看一部电影,不如写一篇博客。其实早些时候确实有写博客的念头,只是因为担心自己并非业界大牛,写的东西没人看,如果过写的不对被别人喷,种种原因放弃了写东西的念头。现在,也放看开了许多,写简书只是单纯的记录自己的学习历程,在追寻技术的道路上留下自己的足迹,仅此而已。
二、ARKit
看了AR趋势 ,我认为作为iOS开发者,每个人都应该去了解或掌握AR开发技术。AR(现实增强),顾名思义,就是把虚拟世界透过手机相机,投射在真实世界中,达到一种增强的效果。
自己总结了它的三大特性:
1.全局追踪: 不仅可以追踪我们的现实场景,还可以追踪我们的虚拟物件。
2.视觉惯性测距:简单说,就是和我们平常肉眼看到的实物一样,远小进大,有视距感。
3.无外接装置:无需外接装置介入。
ARKit的主要工作就是通过相机捕捉现实世界,而SceneKit只是3D的渲染引擎。
ARSession:管理设备相机的共享对象和增强现实体验所需运动处理
2.1 实现地球、水星、火星的3D切换,首先我们创建一个AR项目
创建好项目,Xcode为自动为我们关联一个SCNView,并设置好代理,就像tableViewContoller一样。
核心代码:
let scene = SCNScene()
//半径为10cm的球体模型
let sphere = SCNSphere(radius: 0.1)
//渲染器
let material = SCNMaterial()
//渲染内容为一张图片
material.diffuse.contents = UIImage.init(named: "earth.jpg")
//设置物件的渲染
sphere.materials = [material]
//创建一个节点, 节点可以理解为物件
let sphereNode = SCNNode(geometry: sphere)
//设置节点位置? XYZ 负数代表在相机后面
sphereNode.position = SCNVector3(0,0,-0.5)
//放到scene的根节点上,任何一个scene都有一个节点
scene.rootNode.addChildNode(sphereNode)
sceneView.scene = scene
物件的3D模型为三轴,中心点为相机的位置Z轴为负数,代表物件在相机后面,反之亦然。