美文网首页
ARKit:初识AR

ARKit:初识AR

作者: 脸狐 | 来源:发表于2017-10-20 14:45 被阅读0次

第一次写简书,鉴于ARKit网上相关资料比较少,写一套实战教程,希望能帮到需要的人吧。表达能力捉急,写的不好的请留言提意见。两个图是盗的

1、写在前面:

本文开发语言OC。

开发环境需要满足以下条件

1.Xcode版本:Xcode9及以上

2.iOS系统:iOS11及以上

3.iOS设备:处理器A9及以上(6S机型及以上)

4.MacOS系统:10.12.4及以上(安装Xcode9对Mac系统版本有要求)

2、最终效果预览

3、AR运行模式简介

AR 运作流程图(盗的)

AR 运作流程图

蓝色表示 ARKit ,绿色表示 SceneKit 。

ARKit负责捕捉现实世界的信息,SceneKit通过ARkit得到的信息,建立一个虚拟世界。之后通过ARKit将虚拟世界与现实世界实时维系起来。

ARKit 和 SceneKit 关系图

ARKit和SceneKit关系图

介绍一下主要的类:

ARSCNView:渲染虚拟世界和呈现现实世界,我们手机上获得的在现实世界中放置的虚拟物品的效果的就是它。

ARSession:会话配置,追踪现实世界信息,并更新SCNView场景,

ARCamera:相机当前的位置信息,通过四元数给出。(四元数 这个比较抽象,我不是很懂,读者可以自行百度一下,一般就用第三列,是xyz坐标信息,ARAnchor也是)。

ARAnchor:锚点,通过相机捕捉到的现实世界中的点

SCNNode:节点,我们添加上去的点,一般先确定锚点,然后再锚点点位置上添加节点

ARConfiguration:一般就用ARWorldTrackingConfiguration,6自由度追踪,比较准确。AROrientationTrackingConfiguration,3自由度追踪,旋转,精度不如ARWorldTrackingConfiguration。ARFaceTrackingConfiguration,人脸追踪,得IPhone X才行,注释太长,咱不管他,需要了解的直接看Xcode里注释吧。

4,第一架AR飞机

打开Xcode,新建工程,选择AR

下一步,这里选sceneKit。我们用的场景渲染是sceneKit

下一步,创建好了之后,可以看到,苹果给我们生成的一些初始代码:

上面用sb拉了一个SceneView

@property (nonatomic, strong) IBOutlet ARSCNView *sceneView;


- (void)viewDidLoad {

[super viewDidLoad];

// Set the view's delegate

self.sceneView.delegate = self;

// 显示fps,帧频等信息

self.sceneView.showsStatistics = YES;

// 创建一个场景,加载飞机的模型

SCNScene *scene = [SCNScene sceneNamed:@"art.scnassets/ship.scn"];

// Set the scene to the view

self.sceneView.scene = scene;

}

- (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated];

// Create a session configuration:世界会话追逐配置,一般用ARWorldTrackingConfiguration这个就行了

ARWorldTrackingConfiguration *configuration = [ARWorldTrackingConfiguration new];

// Run the view's session

[self.sceneView.session runWithConfiguration:configuration];

}

- (void)viewWillDisappear:(BOOL)animated {

[super viewWillDisappear:animated];

// Pause the view's session

[self.sceneView.session pause];

}

跑一下,体验一下第一架飞机。

系统生成的飞机demo

嗯,太假了。我们来给他加个光影效果:

//添加光照节点

SCNNode *lightNode = [SCNNode node];

lightNode.light = [SCNLight light];

lightNode.light.type = SCNLightTypeOmni;

lightNode.position = SCNVector3Make(0, 10, 10);

[self.sceneView.scene.rootNode addChildNode:lightNode];

效果:

添加了光照节点的效果

看着是不是好多了。


5......没有5了,字数限制到这里了。下一篇吧。

本文Demo地址:https://github.com/HalfOfSunshine/AR-Distance-Calculator

相关文章

  • ARKit:初识AR

    第一次写简书,鉴于ARKit网上相关资料比较少,写一套实战教程,希望能帮到需要的人吧。表达能力捉急,写的不好的请留...

  • ARkit初体验

    一.AR&ARkit ARkit。三部分,相机姿态估计, 环境感知(平面估计)及光源感知。 ARkit和AR和巨大...

  • ARKit - 动工前必知概念

    1. ARKit 工作流程 ARkit 是一个业界领先的AR框架, 先简单介绍一下AR的原理. 基本上ARKit...

  • ARKit & OpenGL ES - ARKit原理篇

    iOS11推出了新框架ARKit,通过ARKit和SceneKit可以很方便的制作AR App。苹果也提供了AR基...

  • [ WWDC2018 ] - ARKit2 革新 What’s

    WWDC2018:ARKit 2 新特性 Session 602:What’s New in ARKit 2 AR...

  • 初探AR

    AR相关 - ARKit的理解 要想很好的开发AR项目,首先还是要对ARKit有个基本的了解,那我们现在就来看看一...

  • 2017-08-30 Google AR来了

    Google AR sdk :https://github.com/google-ar 谷歌今天对苹果ArKit下...

  • 学习ARKit(三)

    前言 在前面两小节中(学习ARKit(一)、学习ARKit(二)),我们介绍了简单的介绍了AR与ARKit的相关概...

  • ARKit API介绍

    1.框架中所有的API介绍 1.1-ARKit框架简介 1.2-ARAnchor 1.3-AR...

  • 手把手带你写AR应用--AR尺子简介

    文章: AR尺子--简介 AR尺子--预览 概要: 苹果推出ARKit之后。Google相继也推出了ARCore。...

网友评论

      本文标题:ARKit:初识AR

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