美文网首页
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代理相关类

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