iOS--AR开篇

一、前述

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

二、ARKit

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

现实增强.jpg


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

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

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

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

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


iOS--AR开篇_第1张图片
ARKit.png

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


iOS--AR开篇_第2张图片
ARKit1.png

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

iOS--AR开篇_第3张图片
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开篇_第4张图片
position.jpg

github地址:前几天手残,把手机升级到最新的iOS11.2beta版本,造成的结果就是Xcode版本跟不上,没法给大家提供真机效果图,不过大家可以亲自试试。关于AR项目,今天算是入门吧,我以为会争取每周更新一次。如果哪里写的不对的地方,欢迎大家指正,谢谢!

总结:ARKit 入门需要掌握的几点

几何,节点,炫染,手勢

补上真机效果:

你可能感兴趣的:(iOS--AR开篇)