SceneKit + ARKitAR/VR/MRARKit

理解ARKit

2017-06-29  本文已影响483人  li_礼光

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

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

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

理解细节点:

PS : 在ARKit内部计算完,符合要求后会调用这个方法.(官方解释有点难以理解什么时候调用)
- (void)renderer:(id <SCNSceneRenderer>)renderer 
      didAddNode:(SCNNode *)node
       forAnchor:(ARAnchor *)anchor;

使用ARKit调用两个框架

#import <SceneKit/SceneKit.h>  //理解 : 一个供AR实现内容的平台
#import <ARKit/ARKit.h>        //理解 : 一个实现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资源文件.

理解Scene

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

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) ;

原始位置 :

默认距离

z轴-10(米)的位置 :

距离10米远

文章最后:

后续要研究的内容

上一篇 下一篇

猜你喜欢

热点阅读