美文网首页
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

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