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从入门到精通(1)-ARKit初体验

ARKit从入门到精通(1)-ARKit初体验转载请标注出处:http://blog.csdn.net/u013263917/article/details/72903174,以及版权归属黑马程序员:...
  • u013263917
  • u013263917
  • 2017年06月07日 19:37
  • 66245

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

转载请注明出处:ARKit从入门到精通(6)-ARSession介绍 ARSession是一个连接底层与AR视图之间的桥梁,其实ARSCNView内部所有的代理方法都是由ARSession来...
  • HDFQQ188816190
  • HDFQQ188816190
  • 2017年06月17日 01:00
  • 731

ARSessionConfiguration 在xcode上找不到

关于ARKit已有很过文章系统介绍过了,也很详尽,再次不在重复 但是ARSessionConfiguration在xcode上找不到,用xcodeBeta版会提示是被ARConfiguration代...
  • liujingran_2015
  • liujingran_2015
  • 2017年10月19日 16:15
  • 129

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

ARKit从入门到精通(1)-ARKit初体验 转载请标注出处:http://blog.csdn.net/u013263917/article/details/72903174,以及版权归属黑马...
  • ZY_FlyWay
  • ZY_FlyWay
  • 2017年06月12日 17:33
  • 6138

从零开始学基于ARKit的Unity3d游戏开发系列1

前言 无可置疑的是,对绝大多数的中小游戏团队来说,目前和Unreal Engine4(虚幻4)已经成为3D游戏开发的首选商业引擎。因为Unity3d的简单易上手特性,强大的功能和丰富的游戏资源及...
  • yuyingwin
  • yuyingwin
  • 2017年12月27日 09:28
  • 286

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

转载请注明出处:ARKit从入门到精通(2)-ARKit工作原理及流程介绍 1.1-写在前面的话1.2-ARKit与SceneKit的关系1.3-ARKit工作原理 1.3.1-ARSCNView...
  • ZY_FlyWay
  • ZY_FlyWay
  • 2017年06月12日 17:34
  • 2407

ARKit从入门到精通(3)-ARKit自定义实现

转载请注明出处:http://www.jianshu.com/p/e67d519d2cf7 在上一小节http://www.jianshu.com/p/0492c7122d2f中,我们完整的介绍...
  • u013263917
  • u013263917
  • 2017年06月11日 15:59
  • 12127

ARKit基本使用流程

1.准备工作,创建对象@property (nonatomic, strong) ARSession *session;//ARSessionConfigutation AR会话跟踪配置 @prop...
  • biangabiang
  • biangabiang
  • 2017年08月11日 18:24
  • 1704

ARKit教程推荐

ARKit从入门到精通 http://www.jianshu.com/u/b5c2ad9cbe7b
  • chenhaifeng2016
  • chenhaifeng2016
  • 2017年06月16日 15:40
  • 1884

关于unity3d for ARkit(一)

最近苹果发布了自家的AR技术,ARkit,代表着又一个巨头进入到AR/VR这个市场,之后有很多技术人员也想了解最新的技术,我只说一下关于 unity3d上ARkit的相关要求和说明:       ...
  • ziguang111
  • ziguang111
  • 2017年07月28日 14:18
  • 4109
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ARKit从入门到精通(6)-ARSession介绍
举报原因:
原因补充:

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