美文网首页
ARKit代理相关类

ARKit代理相关类

作者: NewSongs | 来源:发表于2017-09-11 19:56 被阅读106次

1.锚点

这个概念一开始不太容易理解。那么如何理解锚点呢?

这样假如我们现在正在创作一本电子版小说,我发现每次继续写小说都要拉到文档最后好麻烦⊙_⊙好了其实要解决这个问题也挺简单的,我在开始添加个结尾书签直接跳到结尾就好了●ω●,书签多方便想链接到哪里都可以,好了我们加了一个结尾书签方便我们每次写新的内容。

但是后来我发现一个问题,我每次写完都要修改这个书签的位置o_O,因为每次写完新的内容结尾位置也改变了...好不快乐~~好吧我想到一个办法在文章结尾处加一个"End"的字符,让书签指向"End"每次我都在"End"前面添加内容,这样也算完美的解决了问题了吧

~~~在这里我们的书签,永远说他在"物体"的相对位置(书签指向"End"第一个字符的位置,一开始我们加的"结尾书签"也是指向最后一个字符的后面),这里书签也就是"锚点"。
实际中我们一般让锚点指点一个特殊的点称为"定位点",并携带一些其他信息,来表示"物体"(一般我们还会在书签中加入标题信息,有时我们也会在书签中加入某个章节的字数,以便我们可以直接对所有章节进行分割)

2.用于表示现实世界的对象和位置类

ARAnchor

AR锚点,可用于表示对象在AR场景中真实世界的位置和方向。

ARPlaneAnchor

AR平面锚点,有关在AR会话中检测到的真实平面的位置和方向的信息,ARPlaneAnchor继承自ARAnchor

ARHitTestResult

通过检查AR会话的设备摄像机视图中一个点找到有关现实世界表面的信息。

3.用于相机和场景细节类

ARFrame

作为AR会话的一部分捕获的视频图像和位置跟踪信息。

ARCamera

有关AR会话中拍摄的视频帧的摄像机位置和成像特性的信息。

ARLightEstimate

与AR会话中捕获的视频帧相关联的估计场景照明信息。

4.AR代理

(1)ARSessionObserver

你可以实现的方法来响应AR会话状态的更改。ARSessionDelegate、ARSCNViewDelegate、ARSKViewDelegate这此协议定义了共同的可选方法,以及协议。当采用这些协议之一时,可以实现该协议的方法:

func session(ARSession, cameraDidChangeTrackingState: ARCamera)

通知代表ARKit设备位置跟踪质量的变化。

func sessionWasInterrupted(ARSession)

告诉代表会话已暂时停止处理帧和跟踪设备位置。

func sessionInterruptionEnded(ARSession)

告诉代表会话已恢复处理帧和跟踪设备位置。

(2)ARSessionDelegate

如果您需要直接使用ARFrame捕获会话的对象或直接跟踪会话的跟踪ARAnchor对象集的更改请执行此协议。通常情况下,你建立一个自定义视图显示AR时,采用这个协议的内容,如果显示与SceneKit或SpriteKit内容中,ARSCNViewDelegate或ARSKViewDelegate协议提供类似的信息,并与技术集成。此协议扩展了ARSessionObserver协议。

func session(ARSession, didUpdate: ARFrame)

向代理人提供新捕获的摄像机图像和附带的AR信息。

func session(ARSession, didAdd: [ARAnchor])

告诉代表一个或多个锚点已被添加到会话中。

func session(ARSession, didUpdate: [ARAnchor])

告诉代表会话已调整一个或多个锚点的属性。

func session(ARSession, didRemove: [ARAnchor])

告诉代表一个或多个锚已从会话中删除。

(3)ARSKViewDelegate

实现此协议以提供ARAnchor与视图的AR会话跟踪的对象相对应的SpriteKit内容,或者管理视图对这些内容的自动更新。此协议扩展了ARSessionObserver协议。

func view(ARSKView, nodeFor: ARAnchor)

请求委托人提供一个对应于新添加的锚点的SpriteKit节点。

func view(ARSKView, didAdd: SKNode, for: ARAnchor)

告诉代理人,一个与新的AR锚点相对应的SpriteKit节点已被添加到场景中。

func view(ARSKView, willUpdate: SKNode, for: ARAnchor)

告诉委托人SpriteKit节点的属性将被更新以匹配其相应锚点的当前状态。

func view(ARSKView, didUpdate: SKNode, for: ARAnchor)

告知委托人SpriteKit节点的属性已更新,以匹配其对应锚点的当前状态。

func view(ARSKView, didRemove: SKNode, for: ARAnchor)

告诉代理人,与AR锚点相对应的SpriteKit节点已从场景中删除。

(4)ARSCNViewDelegate

实现此协议以提供ARAnchor与视图的AR会话跟踪的对象相对应的SceneKit内容,或者管理视图对这些内容的自动更新。此协议扩展了ARSessionObserver协议。

func renderer(SCNSceneRenderer, nodeFor: ARAnchor)

请求委托人提供一个对应于新添加的锚点的SceneKit节点。

func renderer(SCNSceneRenderer, didAdd: SCNNode, for: ARAnchor)

告诉代理人,一个与新的AR锚点相对应的SceneKit节点已添加到场景中。

func renderer(SCNSceneRenderer, willUpdate: SCNNode, for: ARAnchor)

告诉代理,SceneKit节点的属性将被更新以匹配其相应锚点的当前状态。

func renderer(SCNSceneRenderer, didUpdate: SCNNode, for: ARAnchor)

告诉代理人,一个SceneKit节点的属性已被更新,以匹配其相应锚点的当前状态。

func renderer(SCNSceneRenderer, didRemove: SCNNode, for: ARAnchor)

告诉代理人,已将已删除的AR锚点对应的SceneKit节点从场景中删除。

相关文章

  • ARKit代理相关类

    1.锚点 这个概念一开始不太容易理解。那么如何理解锚点呢?这样假如我们现在正在创作一本电子版小说,我发现每次继续写...

  • 代理模式总结

    代理模式概念: 相关角色:代理接口(Subject);代理类(ProxySubject);委托类(RealSubj...

  • 到底有多强?苹果的增强现实框架:ARKit

    相关 ARKit进阶:物理世界ARKit进阶:材质ARKit实战:如何实现任意门 写在前面 其实准备ARKit已经...

  • ARKit3.5 框架学习 (一)核心类简介(上)

    @[TOC] ARKit3.5 框架学习 (一)核心类简介(上) 1. ARKit框架简介 ARKit整合iOS...

  • Java 代理模式:静态代理、JDK 动态代理和 Cglib 动

    代理模式是Java常用的设计模式,代理类通过调用被代理类的相关方法,并对相关方法进行增强。加入一些非业务性代码,比...

  • ARKit浅析篇

    在上一篇ARKit体验篇中我们体验了ARKit,这一篇主要从类出发分析下ARKit的流程。 ARKit浅析 我们知...

  • ARKit入门知识( 一)

    ARKit概述 ARKit属于框架级别,类于iOS开发中UIKit。ARKit结合运用 iOS 设备摄像头和运动功...

  • 学习ARKit(三)

    前言 在前面两小节中(学习ARKit(一)、学习ARKit(二)),我们介绍了简单的介绍了AR与ARKit的相关概...

  • 学习ARKit(二)

    前言 前面一节学习ARKit(一)简单的介绍了AR与ARKit的相关概念,下面将深入到ARKit中来了解一下ARK...

  • ARKit实战:如何实现任意门

    ARKit实战:如何实现任意门 相关 到底有多强?苹果的增强现实框架:ARKitARKit进阶:物理世界ARKit...

网友评论

      本文标题:ARKit代理相关类

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