理解ARKit

参考博文 : ARKit从入门到精通(1)-ARKit初体验

看完算是个初步认识吧, 知道如何使用.好多细节好需要研究

// 总结 : 这个Demo
//  1.ARSCNView                 负责展示AR内容
//  2.ARSession                 负责管理AR事务
//  3.ARSessionConfiguration    负责处理现实世界内容跟踪
//  4.SCNNode                   负责创建节点(模型)
//  5.SCNScene                  负责描述3D场景(装模型的容器)

理解细节点:

  • 最开始接触的时候,会考虑怎么将模型展示到屏幕上,实现AR显示,你可能在屏幕上各种点击,想着在我的桌面上,地板上,半空中展示出来,但是,ARKit内部是自动去实现算法处理,然后呢,才在屏幕上显示你编程出来的内容.简单粗暴来说,不稳定,暂时不能做到很精准的将模型投放到某一个位置.最终你可能还是实现出来了,但是位置有偏差.
PS : 在ARKit内部计算完,符合要求后会调用这个方法.(官方解释有点难以理解什么时候调用)
- (void)renderer:(id )renderer 
      didAddNode:(SCNNode *)node
       forAnchor:(ARAnchor *)anchor;

使用ARKit调用两个框架

#import   //理解 : 一个供AR实现内容的平台
#import         //理解 : 一个实现AR内容的框架

一些基础的内容

//AR视图:展示3D界面
@property(nonatomic,strong)ARSCNView *arSCNView;

//AR会话,负责管理相机追踪配置及3D相机坐标
@property(nonatomic,strong)ARSession *arSession;

//会话追踪配置:负责追踪相机的运动
@property(nonatomic,strong)ARSessionConfiguration *arSessionConfiguration;

//节点 : 具体内容
@property(nonatomic,strong)SCNNode *planeNode;

应该还有一个是

@property(nonatomic,strong)SCNScene *Scene;

这个是什么呢?怎么理解呢???

简单粗暴的理解:

如果你做过自定义的Xib的话,比如自定义Cell,加载Xib的时候,会取整个Xib文件中的Cell组件. 对于整个Xib来说,就只有那么一个完整得Cell的组件.也就是这个Cell. (当然你也可以自定义两个,也是可行的,取对应的那一个就好,不过就是自己给自己找麻烦). 就是一个单独空间中,我只有这么一个东西. 就是一瓶纯净水中只有水这一样东西一样意思. 这里面是加载一个SCN资源文件.

理解ARKit_第1张图片
理解Scene

同时也可以加载DAE文件.你可以访问这个地址TurboSquid, 在里面也可以找到相当多的免费的3D模型.DAE文件资源 :

理解ARKit_第2张图片
DAE文件资源

这里面把苹果系统Demo的飞机换成这个就可以了就可以了.其实是一样的.

获取模型代码的实现

 SCNScene *scene = [SCNScene sceneNamed:@"Models.scnassets/ship.scn"];
 SCNNode *shipNode = scene.rootNode.childNodes[0];
  
 //将模型添加到当前屏幕中
 [self.arSCNView.scene.rootNode addChildNode:shipNode];

设置模型的位置大小

shipNode.position = SCNVector3Make(x, y, z) ;

原始位置 :

理解ARKit_第3张图片
默认距离

z轴-10(米)的位置 :

理解ARKit_第4张图片
距离10米远

文章最后:

后续要研究的内容

  • 关于SCNNode的细节处理也是值得去考虑的?比如,位置,大小,纹理等等.

  • AR交互怎么实现的?

你可能感兴趣的:(理解ARKit)