ARKit从入门到精通(6)-ARSession介绍
转载:http://blog.csdn.net/u013263917/article/details/73157082
ARSession是一个连接底层与AR视图之间的桥梁,其实ARSCNView内部所有的代理方法都是由ARSession来提供的
ARSession与ARScnView之间的关系看起来是这样的:
ARSession获取相机位置数据主要有两种方式
- 第一种:push。 实时不断的获取相机位置,由ARSession主动告知用户。通过实现ARSession的代理
-来获取
(void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame - 第二种:pull。 用户想要时,主动去获取。ARSession的属性
currentFrame来获取
- 第一种:push。 实时不断的获取相机位置,由ARSession主动告知用户。通过实现ARSession的代理
- 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从入门到精通(6)-ARSession介绍的更多相关文章
- ARKit从入门到精通(2)-ARKit工作原理及流程介绍
转载:http://blog.csdn.net/u013263917/article/details/73038519 1.1-写在前面的话 1.2-ARKit与SceneKit的关系 1.3-ARK ...
- ARKit从入门到精通(10)-ARKit让飞机绕着你飞起来
1.1-ARKit物体围绕相机旋转流程介绍 1.2-完整代码 1.3-代码下载地址 废话不多说,先看效果 其实是会一直围着你转圈的,只不过笔者不好意思暴露家里的场景,所以请读者朋友们见谅~ 由于是晚上 ...
- ARKit从入门到精通(11)-ARKit开发常见问题及解决方案
转载请注明出处:ARKit从入门到精通(11)-ARKit开发常见问题及解决方案 本文主要介绍ARKit开发过程中一些常见问题 1.ARKit框架无法导入问题 2.ARKit运行黑屏或者白屏问题:Un ...
- ARKit从入门到精通(9)-ARKit让飞机跟着镜头飞起来
1.1-ARKit物体跟随相机移动流程介绍 1.2-完整代码 1.3-代码下载地址 废话不多说,先看效果 1001.gif 1.1-ARKit物体跟随相机移动流程介绍 1.点击屏幕添加物体,已经在第三 ...
- ARKit从入门到精通(8)-ARKit捕捉平地
转载:http://blog.csdn.net/hdfqq188816190/article/details/73360287 1.1-ARKit捕捉平地实现流程介绍 1.2-完整代码 1.3-代码下 ...
- ARKit从入门到精通(3)-ARKit自定义实现
转载:http://blog.csdn.net/u013263917/article/details/73038566 在上一小节中ARKit从入门到精通(2)-ARKit工作原理及流程介绍,我们完整 ...
- ARKit从入门到精通(1)-ARKit初体验
ARKit从入门到精通(1)-ARKit初体验 转载自:http://blog.csdn.net/u013263917/article/details/72903174 该系列文章共十篇,笔者将由易到 ...
- ARKit从入门到精通
ARKit从入门到精通(10)-ARKit让飞机绕着你飞起来 ARKit从入门到精通(9)-ARKit让飞机跟着镜头飞起来 ARKit从入门到精通(8)-ARKit捕捉平地 ARKit从入门到精通(7 ...
- ARKit从入门到精通(5)-ARScnView介绍
转载:http://blog.csdn.net/u013263917/article/details/73156918 AR视图,在第一小节笔者介绍过,ARKit支持3D的AR场景和2D的AR场景,A ...
随机推荐
- 微信支付服务器CA证书更换服务器安装der证书的方法 DigiCert的根证书
[重要]微信支付服务器证书更换通知,请开发人员验证以免影响交易 尊敬的微信支付商户&服务商: 因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于2018 ...
- Junit 4.x 单元测试,参数化测试,套件测试 实例
对下面三个类进行单元测试 ,组成套件测试. public class Calculate { public int add(int a, int b) { return a + b; } public ...
- Mac 安装任何来源的文件
1.Mac 安装任何来源的文件 安装软件提示文件损坏怎么处理,打开 DMG 文件提示损坏怎么处理,来自不信任的开发者怎么处理,macOS Sierra 如何安装任何来源的文件. 非常肯定的告诉您不是我 ...
- python学习笔记——git的安装及使用
1 git的基本介绍 git 是目前世界上最先进的分布式版本哦内阁制系统 详细信息可参考廖雪峰的官方网站中的Git教程 比git功能更加强大的有TortoiseGit和Tortoise SVN,具体安 ...
- windows(64位)下使用curl命令
Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具下载 在官网处下载工具包:http://cu ...
- xbox360 双65厚机自制系统无硬盘 U盘玩游戏方法
因为没有硬盘,又没有光盘.所以想把游戏放在U盘里面.用U盘来做为硬盘玩游戏. 现有的自制系统主要是FSD,但是FSD要用硬盘才能安装,理论上U盘也可以,但是我没有尝试了. 这里介绍的是玩xex格式的游 ...
- PHP的生成器、yield和协程
虽然之前就接触了PHP的yield关键字和与之对应的生成器,但是一直没有场景去使用它,就一直没有对它上心的研究.不过公司的框架是基于php的协程实现,觉得有必要深入的瞅瞅了. 由于之前对于生成器接触不 ...
- android check box 自定义图片
http://blog.csdn.net/competerh_programing/article/details/7417074
- Spring+Mybatis整合过程中找不到.properties文件
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' ...
- haproxy+keepalived配置haproxy反向代理的高可用
http://www.cnblogs.com/shantu/p/4586277.html