美文网首页
iOS开发——ARKit之ARSession头文件

iOS开发——ARKit之ARSession头文件

作者: 小驴拉磨 | 来源:发表于2017-09-09 20:04 被阅读31次

    ARSession

    ARSessio的属性及其实例方法

    //ARSession类在设备上配置并运行不同的增强现实技术。
    API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(macos, watchos, tvos)
    @interface ARSession : NSObject
    
     //用于接收ARSession更新的代表。代理属性
    @property (nonatomic, weak) id <ARSessionDelegate> delegate;
    
    /**
     执行委托调用的调度队列。
      @discussion如果没有提供或没有,将在主队列上执行委托呼叫。
     */
    @property (nonatomic, strong, nullable) dispatch_queue_t delegateQueue;
    
    /**
     会话的当前帧。
     */
    @property (nonatomic, copy, nullable, readonly) ARFrame *currentFrame;
    
     //会话正在使用的ARConfiguration。
    @property (nonatomic, copy, nullable, readonly) ARConfiguration *configuration;
    
    /**
     使用提供的配置运行会话。
      @discussion在已经开始的会话上调用运行
      过渡到立即使用新的配置。
      @param配置要使用的配置。
     */
    - (void)runWithConfiguration:(ARConfiguration *)configuration NS_SWIFT_UNAVAILABLE("Use run(_:options:) instead");
    
    /**
     使用提供的配置和选项运行会话。
      @discussion在已经开始的会话上调用运行过渡到立即使用新的配置。选项可用于在转换配置时更改默认行为。
      @param配置要使用的配置。
      @param选项要使用的运行选项。
     */
    - (void)runWithConfiguration:(ARConfiguration *)configuration options:(ARSessionRunOptions)options NS_SWIFT_NAME(run(_:options:));
    
    /**
     暂停会话
      @discussion一旦暂停,将不会收到更多的更新
      会话直到再次调用。
     */
    - (void)pause;
    
    /**
     在会话中添加一个锚点。
      @discussion锚将被添加到下一帧更新中。
      @param anchor要添加的锚点。
     */
    - (void)addAnchor:(ARAnchor *)anchor NS_SWIFT_NAME(add(anchor:));
    
    /**
    从会话中删除一个锚点。
      @discussion锚将从后续的帧更新中删除。
      @param anchor要移除的锚点。
     */
    - (void)removeAnchor:(ARAnchor *)anchor NS_SWIFT_NAME(remove(anchor:));
    

    ARSession观察者协议方法

    /**
     会话失败时调用。
      @discussion失败时,会话将暂停。
      @param session失败的会话。
      @param错误正在报告的错误(请参阅ARError.h)
     */
    - (void)session:(ARSession *)session didFailWithError:(NSError *)error;
    
    /**
     当相机的跟踪状态发生变化时,会调用此功能。
      @param session正在运行的会话。
      @param相机更改跟踪状态的相机。
     */
    - (void)session:(ARSession *)session cameraDidChangeTrackingState:(ARCamera *)camera;
    
    /**
     当会话中断时调用此方法。
      @discussion会话将被中断,不再能跟踪什么时候
      它无法接收所需的传感器数据。 当视频捕获中断时,
      例如当应用程序被发送到后台或当有的时候
      多个前台应用程序(请参阅AVCaptureSessionInterruptReason)。
      在中断结束之前,不会传送额外的帧更新。
      @param session中断的会话。
     */
    - (void)sessionWasInterrupted:(ARSession *)session;
    
    /**
     当会话中断结束时调用。
     
      @discussion会话将从最后一次已知的状态继续运行一次
      中断已经结束。 如果设备移动,锚点将不对齐。
      为避免这种情况,一些应用程序可能想要重置跟踪(请参阅ARSessionRunOptions)。
      @param session中断的会话。
     */
    - (void)sessionInterruptionEnded:(ARSession *)session;
    
    /**
     当会话输出新的音频采样缓冲区时,这被称为。
      @param session正在运行的会话。
      @param audioSampleBuffer捕获的音频采样缓冲区。
     */
    - (void)session:(ARSession *)session didOutputAudioSampleBuffer:(CMSampleBufferRef)audioSampleBuffer;
    
    @end
    

    ARSessionDelegate 代理方法

    /**
     当新的帧被更新时调用。
      @param session正在运行的会话。
      @param frame已更新的框架。
     */
    - (void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame;
    
    /**
     当新的锚点被添加到会话时,这被称为。
      @param session正在运行的会话。
      @param anchors一个添加的锚的数组。
     */
    - (void)session:(ARSession *)session didAddAnchors:(NSArray<ARAnchor*>*)anchors;
    
    /**
     当锚更新时调用。
      @param session正在运行的会话。
      @param anchors一组更新的锚点。
     */
    - (void)session:(ARSession *)session didUpdateAnchors:(NSArray<ARAnchor*>*)anchors;
    
    /**
     当从会话中删除锚时,会调用此方法。
      @param session正在运行的会话。
      @param anchors已删除的锚点的数组。
     */
    - (void)session:(ARSession *)session didRemoveAnchors:(NSArray<ARAnchor*>*)anchors;
    

    相关文章

      网友评论

          本文标题:iOS开发——ARKit之ARSession头文件

          本文链接:https://www.haomeiwen.com/subject/ygvojxtx.html