arkit从入门到精通-arsession介绍

weicy weicy     2022-10-05     172

关键词:

  • 转自:ARKit从入门到精通(6)-ARSession介绍

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

  • ARSession与ARScnView之间的关系看起来是这样的:技术分享图片

      • 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从入门到精通-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登录网页二、功能介绍和使用(有些功能可能小伙伴没有哦&#x... 查看详情

jumpserver从入门到精通(代码片段)

一分钟带你入门JumpServer开源堡垒机一、jumpserver介绍和安装步骤1、前言2、安装步骤①上传安装包到opt目录下,并进行解压②进入目录,执行脚本文件③输入http://ip:80登录网页二、功能介绍和使用(有些功能可能小伙伴没有... 查看详情