ARKit的每个类的作用和总结(主要翻译自官方文档)

类的作用(纯翻译)


First Steps
  1. ARSession——一个管理增强现实所需的设备摄像头和动作处理的共享的对象。
    ARSession对象会协调增强现实过程中的大部分处理,这些处理包括:从设备的动作感应硬件读取数据控制设备内置摄像头对捕捉到的摄像图像进行分析。ARSession会整合这些结果并在设备反馈的现实空间和模型化AR内容的虚拟空间之间建立一种对应关系。
    任何一个用ARKit实现的AR场景都需要一个单独的ARSession对象。如果使用了ARSCNView或者ARSKView对象来创建了AR场景的话,一个ARSession实例已经包含在这个View之中了。如果通过别的渲染器来建立AR内容,就需要手动创建并维持一个ARSession对象。
    运行一个session需要一个session configuration,这是一个ARSessionConfiguration或其子类ARWorldTrackingSessionConfiguration的实例。这些类决定了ARKit如何追踪一个设备的位置以及相对于现实世界的运动,因此影响了所创建的AR体验。

Configurations
  1. ARSessionConfiguration——一个仅用来追踪设备方向的基础设置。
    所有的AR configuration都是用来建立现实世界和虚拟3D坐标空间的对应关系的。当app将这些虚拟内容和实时的摄像画面一起展示给用户,用户会产生一种这些虚拟内容是现实世界的一部分的错觉。
    创建和维持各空间之间的对应关系需要追踪设备的移动。ARSessionConfiguration类用三自由度(3DOF,也就是三个旋转坐标:roll(绕x轴)、pitch(绕y轴)和yaw(绕z轴))。
    这种最基础级别的运动追踪可以创建最基本的AR体验:一个虚拟物体可以出现在部分现实世界中,即使用户旋转设备从上、下或者侧面来观察这个物体。但是,无法追踪非平凡(non-trivially)的位置的变化,从而导致AR幻觉破碎,虚拟物体会相对于现实世界漂移。如用户无法看到虚拟物体的背面和其它部分。
    ARSessionConfiguration类创建了有限的但是可用于所有iOS设备的AR体验,而增强的AR
    体验只在某些设备上可用。

  2. ARWorldTrackingSessionConfiguration——一个用于追踪设备方向和位置,并且监测现实世界平面的设置。
    相比于ARSessionConfiguration,ARWorldTrackingSessionConfiguration可以从六自由度来追踪设备的运动,除了上述三自由度,还包括三个平移坐标(表示在x、y、z轴上的移动)。
    这种级别的追踪可以创建一个沉浸式的AR体验,即无论用户旋转或者移动设备来观察,虚拟物体都会位于相对于现实世界的同一个位置。
    如果设置了planeDetection,ARKit会分析场景来找到现实世界中的平面。对每一个被监测到的平面,ARKit会自动添加一个ARPlaneAnchor对象到该session。


Standard Views
  1. ARSceneView——一个用来展示增强相机视图和3D SceneKit内容的AR体验的页面。
    ARSceneView类提供了最简单的方法来创建增强了现实的体验,即将虚拟的3D内容和设备相机反映的现实世界结合起来。当运行一个由ARSession对象提供的页面时:

    • 页面会自动的渲染有由设备相机提供的实时影像作为场景的背景。
    • 页面的场景(scene,由SceneKit提供)的世界坐标系统会直接映射成由session configuration简历的AR世界的坐标系统。
    • 页面会自动的移动它的SceneKit相机来匹配现实世界中设备的移动。
      因为ARKit会自动将SceneKit空间匹配到现实世界,所以,放置一个虚拟物体让它能够保持现实世界的位置只需要正确地设置SceneKit的位置即可。
      使用ARAnchor类来追踪添加在场景中的物体并不是必须的,但是,如果实现了ARSCNViewDelegate方法,就可以添加SceneKit内容到任一由ARKit监测到锚点上。
  2. SRSKView——展示2D内容


Real-World Objects And Positions
  1. ARAnchor——可以用于在AR场景中放置物体的一个现实世界的位置和方向
    创建锚点对象并用addAnchor:方法将锚点添加到AR会话后,可以追踪相对于相机的物体的位置和方向。
    当开启来了planeDetection选项后,ARKit会自动添加这些锚点。

  2. ARPlaneAnchor——继承自ARAnchor,是在AR session中监测到的现实平面的位置和方向。

  3. ARHitTestResult——通过分析一个点在一个AR session中的设备相机视图而获得的现实平面的信息。
    如果使用SceneKit或者SpiriteKit来展示一个AR体验,可以使用以下方法来搜索位于视图某一点的现实世界内容的相机图像:

    • ARSCNView hitTest:types:
    • ARSKView hitTest:types:
      另外,使用ARFrame hitTest:types:方法可以搜索现实世界内容的相机图像。由于frame是独立于view的,对于这个方法来说,你所传递的点是标准化过的图像坐标,即坐标范围为(0,1)。
      这些方法会返回一个ARHitTestResult对象的数组来描述找到的内容。

Camera and Scene Details
  1. ARFrame——AR session的一部分,被捕捉的视频图像和位置追踪信息。
    一个运行的AR session会不断的通过设备相机捕捉视频帧。对于每一个frame,ARKit会结合图像和从设备运动感应硬件获得的数据来分析设备的真实位置。这些追踪信息和视图参数就是以ARFrame对象来保存和传递的。

  2. ARCamera——表示AR session中一个被捕获的视图帧相关的相机位置和视图特征的信息。

  3. ARLightEstimate——与被捕捉的视图帧相关的分析场景的灯光数据。
    如果在AR scene上覆盖其它图形,可以使用在明暗处理算法中使用这些信息来使得这些图形可以匹配现实世界的光照情况。(ARSCNView类会自动使用这些数据来配置光照)


总体过程总结:

  1. ARCamera捕捉现实视图,并把其信息交由ARSession处理。ARCamera捕获的数据是一个一个的ARFrame构成。
  2. ARSession类会管理对现实世界的追踪和移动,并整合和建立现实世界和虚拟世界的对应关系,它追踪的内容由ARSessionConfiguration来决定。它会将ARCamera捕获到的数据转化成虚拟世界可展示的数据交给ARSceneView。
  3. 一个基于SceneView的ARSceneView以现实视图为背景,展示SceneView形成的3D物体,其中的展示现实视图的数据就是从ARSession获得,每一个虚拟物体的场景(Scene)都对应一个ARSession类。
  4. ARSceneView作为SceneView的子类,是由一个一个的节点(node)组成,当从ARSession获得现实视图的相应数据后,ARSceneView会构成相应节点并将其作为根节点(背景)。

参考资料:ARKit从入门到精通(2)-ARKit工作原理及流程介绍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容