iOS--AR开篇

作者: 上善若水_Sam | 来源:发表于2017-11-11 08:01 被阅读33次

    一、前述

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

    二、ARKit

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

    现实增强.jpg

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

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

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

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

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

    ARKit.png

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

    ARKit1.png

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

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

    position.jpg

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

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

    几何,节点,炫染,手勢

    补上真机效果:

    相关文章

      网友评论

        本文标题:iOS--AR开篇

        本文链接:https://www.haomeiwen.com/subject/cisimxtx.html