-
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从入门到精通-arcamera介绍
转自:ARKit从入门到精通(7)-ARCamera介绍ARCamera是一个相机,它是连接虚拟场景与现实场景之间的枢纽。在ARKit中,它是捕捉现实图像的相机,在SceneKit中它又是3D虚拟世界中的相机。(一般第一人称3D游戏,主角其实就是一个3D相... 查看详情
arkit从入门到精通-arkit捕捉平地
转载:http://blog.csdn.net/hdfqq188816190/article/details/733602871.1-ARKit捕捉平地实现流程介绍1.2-完整代码1.3-代码下载地址在介绍完ARKit详细的工作原理以及所有的API之后,最令人期待的干货终于要来了!废话不多说,先看效果桌子上的绿萝... 查看详情
arkit从入门到精通(11)-arkit开发常见问题及解决方案
转载请注明出处:ARKit从入门到精通(11)-ARKit开发常见问题及解决方案本文主要介绍ARKit开发过程中一些常见问题1.ARKit框架无法导入问题2.ARKit运行黑屏或者白屏问题:Unabletorunthesession,configurationisnotsupportedonthisdevice:<ARWorldTracking... 查看详情
arkit从入门到精通(10)-arkit让飞机绕着你飞起来
1.1-ARKit物体围绕相机旋转流程介绍 1.2-完整代码 1.3-代码下载地址废话不多说,先看效果 其实是会一直围着你转圈的,只不过笔者不好意思暴露家里的场景,所以请读者朋友们见谅~由于是晚上,笔者选择的是一个台灯... 查看详情
arfoundation入门到精通-总目录
----------------------------------- 第一章节-----------------------------------1.1 ARFoundation简介1.2ARCore支持机型1.3ARkit支持机型1.4配置Android开发环... 查看详情
-arkit工作原理及流程介绍
下一小节:[ARKit从入门到精通(2)-ARKit工作原理及流程介绍]http://blog.csdn.net/u013263917/article/details/73038519该系列文章共十篇,笔者将由易到难循序渐进的介绍ARKit开发废话不多说,先看效果桌子上的绿萝太孤独了,给它来一个郁金... 查看详情
arfoundation入门到精通-1.3arkit支持机型
一、ARKit对芯片的要求和系统版本ARKit4.0:运行iOS14,配置了A12芯片的设备ARKit3.5:运行iPadOS13.4,配置了激光雷达扫描仪的第四代iPadProARKit3.0:运行iOS13,人体抠图和人体识别需要A12芯片ARKit2.0:运行iOS12,芯片要求A9以上ARKit1.5:... 查看详情
androidndk从入门到精通
专栏地址 AndroidNDK开发,从入门到精通NDK入门 NDK开发第一课:环境配置与第一个JNI程序JNI知识 JNI数据类型和类型描述符 JNIEnv和JavaVM JNI接口大全 JNI静态注册和动态注册Android.mk和CMake语法 Android.mk... 查看详情
ios增强现实(arkit)简单介绍
...间是通过AR会话,也就是ARKit框架中非常重量级的一个类ARSession来搭建沟通桥梁的要想运行一个ARSession会话,你必须要指定一个称之为会话追踪配置的对象:ARSessionConfiguration,ARSes 查看详情
❤️spring从入门到大神--aop从入门到精通
文章目录1、AOP介绍2、入门案例2.1、需求:2.2、实现思路:3、AOP作用和优势4、入门案例24.1、需求5、AOP实现方法6、相关AOP术语7、相关注解7.1、切入点表达式7.2、通知方法7.3、抽取公共切入点8、完整通知演示8.1、AOP编程8.2、目标接... 查看详情
charles从入门到精通
Charles从入门到精通 发表于2015-11-1412:00文章目录1. 目录2. 简介3. 安装Charles4. 将Charles设置成系统代理5. Charles主界面介绍6. 过滤网络请求7. 截取iPhone上的网络封包7.1. Charles上的设置7.2. iPhone上的... 查看详情
android开发书籍推荐:从入门到精通系列学习路线书籍介绍(代码片段)
...多时候我们都会不断收到新手的提问“Android开发的经典入门教材和学习路线?”、“Android开发入门教程有哪些推荐?”等类似的问题,我们不断重复回答这些问题,这让我们萌生了做《Android开发书籍推荐:... 查看详情
visualbasic2010从入门到精通pdf
...联系实际,具有很强的操作性。《VisualBasic2010(中文版)从入门到精通》还提供了大量的通过 查看详情
glide从入门到精通使用
介绍不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍gilde。glide是Golang的包管理工具,是为了解决Golang依赖问题的。... 查看详情
es6从入门到精通系列学习笔记23篇(完结)
说明ES6从入门到精通系列(全23讲)学习笔记。可以自行搜索B站,有小马哥的视频学习。目录ES6从入门到精通#01:ES6介绍ES6从入门到精通#02:let和const命令ES6从入门到精通#03:模板字符串ES6从入门到精通#04&... 查看详情
es6从入门到精通系列学习笔记23篇(完结)
说明ES6从入门到精通系列(全23讲)学习笔记。可以自行搜索B站,有小马哥的视频学习。目录ES6从入门到精通#01:ES6介绍ES6从入门到精通#02:let和const命令ES6从入门到精通#03:模板字符串ES6从入门到精通#04&... 查看详情
jumpserver从入门到精通(代码片段)
一分钟带你入门JumpServer堡垒机一、JumpServer介绍和安装步骤1、前言2、安装步骤①上传安装包到opt目录下,并进行解压②进入目录,执行脚本文件③输入http://ip:80登录网页二、功能介绍和使用(有些功能可能小伙伴没有哦... 查看详情
jumpserver从入门到精通(代码片段)
一分钟带你入门JumpServer开源堡垒机一、jumpserver介绍和安装步骤1、前言2、安装步骤①上传安装包到opt目录下,并进行解压②进入目录,执行脚本文件③输入http://ip:80登录网页二、功能介绍和使用(有些功能可能小伙伴没有... 查看详情