当前位置: 首页>移动开发>正文

iOS--AR开篇

一、前述

以前认为与其写一篇技术博客,不如看一部电影。现在觉得,与其看一部电影,不如写一篇博客。其实早些时候确实有写博客的念头,只是因为担心自己并非业界大牛,写的东西没人看,如果过写的不对被别人喷,种种原因放弃了写东西的念头。现在,也放看开了许多,写简书只是单纯的记录自己的学习历程,在追寻技术的道路上留下自己的足迹,仅此而已。

二、ARKit

看了AR趋势 ,我认为作为iOS开发者,每个人都应该去了解或掌握AR开发技术。AR(现实增强),顾名思义,就是把虚拟世界透过手机相机,投射在真实世界中,达到一种增强的效果。

iOS--AR开篇,第1张
现实增强.jpg

自己总结了它的三大特性:

1.全局追踪: 不仅可以追踪我们的现实场景,还可以追踪我们的虚拟物件。

2.视觉惯性测距:简单说,就是和我们平常肉眼看到的实物一样,远小进大,有视距感。

3.无外接装置:无需外接装置介入。

ARKit的主要工作就是通过相机捕捉现实世界,而SceneKit只是3D的渲染引擎。

iOS--AR开篇,第2张
ARKit.png

ARSession:管理设备相机的共享对象和增强现实体验所需运动处理

iOS--AR开篇,第3张
ARKit1.png

2.1 实现地球、水星、火星的3D切换,首先我们创建一个AR项目

iOS--AR开篇,第4张
ARSCNView.jpg

创建好项目,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轴为负数,代表物件在相机后面,反之亦然。

iOS--AR开篇,第5张
position.jpg
iOS--AR开篇,第6张

https://www.xamrdz.com/mobile/4tg1848570.html

相关文章: