ARKit从入门到精通(6)-ARSession介绍

翻译 2017年06月13日 01:23:03
  • 转载请注明出处:ARKit从入门到精通(6)-ARSession介绍

  • ARSession是一个连接底层与AR视图之间的桥梁,其实ARSCNView内部所有的代理方法都是由ARSession来提供的

  • ARSession与ARScnView之间的关系看起来是这样的:


0701.png
    • ARSession获取相机位置数据主要有两种方式

      • 第一种:push。 实时不断的获取相机位置,由ARSession主动告知用户。通过实现ARSession的代理- (void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame来获取
      • 第二种:pull。 用户想要时,主动去获取。ARSession的属性currentFrame来获取

  • API介绍
@interface ARSession : NSObject

/**
 代理
 */
@property (nonatomic, weak) id <ARSessionDelegate> delegate;

/**
指定代理执行的线程(主线程不会有延迟,子线程会有延迟),不指定的话默认主线程
 */
@property (nonatomic, strong, nullable) dispatch_queue_t delegateQueue;

/**
相机当前的位置(是由会话追踪配置计算出来的)
 */
@property (nonatomic, copy, nullable, readonly) ARFrame *currentFrame;

/**
 会话追踪配置
 */
@property (nonatomic, copy, nullable, readonly) ARSessionConfiguration *configuration;

/**
运行会话(这行代码就是开启AR的关键所在)
 */
- (void)runWithConfiguration:(ARSessionConfiguration *)configuration NS_SWIFT_UNAVAILABLE("Use run(_:options:)");

/**
运行会话,只是多了一个参数ARSessionRunOptions:作用就是会话断开重连时的行为。ARSessionRunOptionResetTracking:表示充值追踪  ARSessionRunOptionRemoveExistingAnchors:移除现有锚点
 */
- (void)runWithConfiguration:(ARSessionConfiguration *)configuration options:(ARSessionRunOptions)options NS_SWIFT_NAME(run(_:options:));

/**
暂停会话
 */
- (void)pause;

/**
添加锚点
 */
- (void)addAnchor:(ARAnchor *)anchor NS_SWIFT_NAME(add(anchor:));

/**
移除锚点
 */
- (void)removeAnchor:(ARAnchor *)anchor NS_SWIFT_NAME(remove(anchor:));

@end

//session代理分类两部分,一个是观察者(KVO) 一个是委托者(代理)
#pragma mark - ARSessionObserver


//session KVO观察者
@protocol ARSessionObserver <NSObject>

@optional

/**
 session失败
 */
- (void)session:(ARSession *)session didFailWithError:(NSError *)error;

/**
相机改变追踪状态
 */
- (void)session:(ARSession *)session cameraDidChangeTrackingState:(ARCamera *)camera;

/**
 session意外断开(如果开启ARSession之后,APP退到后台就有可能导致会话断开)
 */
- (void)sessionWasInterrupted:(ARSession *)session;

/**
session会话断开恢复(短时间退到后台再进入APP会自动恢复)
 */
- (void)sessionInterruptionEnded:(ARSession *)session;

@end

#pragma mark - ARSessionDelegate



@protocol ARSessionDelegate <ARSessionObserver>

@optional

/**
 相机当前状态(ARFrame:空间位置,图像帧等)更新
 */
- (void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame;

/**
添加锚点
 */
- (void)session:(ARSession *)session didAddAnchors:(NSArray<ARAnchor*>*)anchors;

/**
刷新锚点
 */
- (void)session:(ARSession *)session didUpdateAnchors:(NSArray<ARAnchor*>*)anchors;

/**
移除锚点
 */
- (void)session:(ARSession *)session didRemoveAnchors:(NSArray<ARAnchor*>*)anchors;

@end

ARKit & OpenGL ES - ARKit原理篇

iOS11推出了新框架ARKit,通过ARKit和SceneKit可以很方便的制作AR App。苹果也提供了AR基本的应用框架,你可以直接从此开始你的AR App的开发。 不过本系列文章将使用...
  • x32sky
  • x32sky
  • 2017年06月20日 09:57
  • 986

ARKit从入门到精通(11)-ARKit开发常见问题及解决方案

转载请注明出处:http://www.jianshu.com/p/fb04f79e2058 本文主要介绍ARKit开发过程中一些常见问题 1.ARKit框架无法导入问题2.ARKit运行黑屏或者...

unity使用苹果ARKit-01:Unity-ARKit-Plugin unity使用苹果ARKit

Unity-ARKit-Plugin这是一个苹果IOS原生插件,可以在IOS平在下为你的项目使用所有的 ARKit SDK功能。...
  • wjtx123
  • wjtx123
  • 2017年06月09日 08:56
  • 8305

ARKit从入门到精通(5)-ARScnView介绍

转载请注明出处:http://www.jianshu.com/p/00309c11b2f1 AR视图,在第一小节笔者介绍过,ARKit支持3D的AR场景和2D的AR场景,ARSCNView是3D的...

ARKit从入门到精通(4)-ARKit全框架API大全

转载请注明出处:http://www.jianshu.com/p/3c7ee58d40f4 1.1-ARKit框架简介 1.2-ARAnchor1.3-ARCamera1.4-ARError1.5...

ARKit从入门到精通(8)-ARKit捕捉平地

转载请注明出处:http://www.jianshu.com/p/fc40ed0080dd 1.1-ARKit捕捉平地实现流程介绍 1.2-完整代码 1.3-代码下载地址 在介绍完ARKit...

【初学必看】AR学院教程汇总贴(Vuforia篇)

欢迎转载,转载请注明: 来自AR学院(www.arvrschool.com),原文地址为:http://www.arvrschool.com/read.php?tid=325&fid=21 谢谢合...

AR入门系列-06-Vuforia文字识别

先将TextRecognition和Word预制件拖到Hierarchy视图中 点击TextRecognition,第一使用,标注2中会提示添加Wordlist 我们需要在官网中下载案例,...

ARKit从入门到精通-ARKit工作原理及流程介绍

2017-06-15 坤小 Cocoa开发者社区 转载请注明出处:http://www.jianshu.com/p/0492c7122d2f 1.1-写在前面的话 1...

ARKit从入门到精通(1)-ARKit初体验

ARKit从入门到精通(1)-ARKit初体验 转载请标注出处:http://blog.csdn.net/u013263917/article/details/72903174,以及版权归属黑马...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ARKit从入门到精通(6)-ARSession介绍
举报原因:
原因补充:

(最多只允许输入30个字)