ARFoundation road - architecture and terminology

(A) ARFoundation Functional Overview

  In the foregoing we know, ARFoundation just re-packaged and ARKit of ARCore, ARFoundation not realize the underlying function of AR, change sentence said, ARFoundation just a function of porter, therefore, there is no underlying API functions, ARFoundation there can be no (ARFoundation will add some auxiliary functions to facilitate developers to develop AR applications). Meanwhile, ARFoundation can realize the function associated with the underlying platform SDK is located, as ARKit have worldmap function, and ARCore not, at this time, even if ARFoundation support worldmap function, it can only be effective ARKit running iOS platform this function , compiled into the Android platform will be wrong. This means that ARFoundation functions supported by the underlying SDK are closely related, from the underlying SDK talk ARFoundation function is meaningless. Of course, if ARKit and ARCore support functions, ARFoundation work is done at compile time based on the platform of choice to switch seamlessly with the underlying SDK, reached a development, cross-platform deployment purposes.
  Current, ARFoundation mainly supports the following features:

Features description
Tracking World (World tracking) Tracking a user equipment's location and orientation (attitude) in the physical space.
Detection plane (Plane detection) For detecting horizontal and vertical plane.
Reference point (Reference points) Attitude to a particular point of track. ARCore called Anchor.
Illumination estimation (Light estimation) Estimating a direction of the light intensity and the physical environment.
Face Tracking (Face tracking) Detect and track human faces.
Image tracking (Image tracking) Tracking 2D image of the physical space.
Tracking the object (Object tracking) Object tracking objects in the physical space, currently only supports ARKit.
Seesion Share Support people sharing scenario, this is called cooperative multiplayer (Collaborative session) in ARKit in, called Cloud Anchor in ARCore in.
Human motion capture (Motion capture) Acronym motion capture, detect the physical space and human action, with a level of 17 bone joint composed to express human motion.
Humanoid occlusion (People occlusion) Body position is determined using computer vision in the scene, acquiring body shape and position in the scene object virtual occlusion.
The camera image API The camera image provided underlying support to facilitate the developers to develop computer vision applications.

(B) ARFoundation architecture system

  Although ARFoundtion package is once again on top of the underlying SDK API, but AR Unity in order to achieve cross-platform applications (platform independent) has done much to build an open architecture system so that this architecture can accommodate various types of underlying SDK, to support current and future join other underlying AR SDK, a macro perspective, ARFoundation development of all types want to build a unified platform for AR applications.
  To achieve this open architecture, ARFoundation founded on a set of subsystems (subsystem). subsystem belonging UnityEngine.XR.ARSubsystems namespace, responsible for implementing a specific function modules, and this has nothing to do with the platform to achieve, namely to achieve a particular module subsystem platform-dependent process. As XRPlaneSubsystem responsible for implementing the plane detection, display, not only that, it also calls automatically depending on different underlying operating platform SDK, from the caller's point of view, he only called XRPlaneSubsystem functionality, without having the final tube implementation is based on iOS or Android, the platform that is transparent.
  This architecture provides for a platform-independent functions can be incorporated into different underlying SDK in the future development of the next, in order to achieve the ultimate development of a target cross-platform deployment. FIG its structure is shown below:
Here Insert Picture Description

(C) the term substantially

  世界跟踪(Tracking)
  指AR设备确定其在物理世界中的相对位置和方向的能力。在2D和3D空间中跟踪用户的运动并最终定位它们的位置是任何AR应用程序的基础,当我们的移动设备在现实世界中移动时,ARFoundation会通过一个名为并行测距与映射(Concurrent Odometry and Mapping ,COM)的过程来理解移动设备相对于周围世界的位置。 ARFoundation会检测捕获的摄像头图像中的视觉差异特征(称为特征点),并使用这些点来计算其位置变化。 这些视觉信息将与设备 IMU 的惯性测量结果结合,一起用于估测摄像头随着时间推移而相对于周围世界的姿态(位置和方向)。
  在开发中,通过将渲染 3D 内容的虚拟摄像头的姿态与 ARFoundation 提供的设备摄像头的姿态对齐,开发者能够从正确的透视角度渲染虚拟内容,渲染的虚拟图像可以叠加到从设备摄像头获取的图像上,让虚拟内容看起来就像现实世界的一部分一样。

  可跟踪(Trackable)
可以被AR设备检测和/或跟踪的真实特征,例如特征点,平面,人脸,人形等等。

  特征点(Feature Point)
  AR设备使用摄像机和图像分析来跟踪世界上用于构建环境地图的特定点,例如木纹表面的结。特征点云包含了被观察到的3D点和视觉特异点的集合,通常还附有检测时的时间戳。

  会话(Session)
  Session的功能是管理AR系统的状态,处理Session生命周期,是AR API的主要入口。在开始使用AR API的时候,通过设置的ARSessionState来检查当前设备是否支持AR。Session负责处理整个AR应用的生命周期,这样AR系统会根据需要开始和暂停相机帧的采集,初始化和释放相关的资源。
  
  Session空间(Session space)
  相对于AR session初始化时的坐标系,例如,例如,会话空间(0,0,0)是指创建AR会话的位置。AR设备跟踪的坐标信息都是处在Session空间中,因此,在使用时,需要将其从Session空间转换到其他空间。这类似于模型空间和世界空间的转换。

   用户交互(User interaction)
  ARFoundation利用命中测试来获取对应于手机屏幕的 (x,y) 坐标(通过点按或应用支持的任何其他交互提供),并将一条射线投影到摄像头的视野中,返回这条射线贯穿的任何平面或特征点以及交叉位置在现实世界空间中的姿态。 这让用户可以选择环境中的物体或者与它们互动。

   **增强图像(Augumented Image) **
  使用增强图像(图像检测)可以构建能够响应特定 2D 图像(如产品包装或电影海报)的 AR 应用, 用户可以将手机的摄像头对准特定图像时触发 AR 体验,例如,他们可以将手机的摄像头对准电影海报,使人物弹出,然后引发一个场景。可离线编译图像以创建图像数据库,也可以从设备实时添加单独的图像。 注册后,ARFoundation将检测这些图像、图像边界,然后返回相应的姿态。

   共享 (Sharing)
  借助于ARKit中的多人协作(Collaborative session)或者ARCore中的Cloud Anchor,可以创建适用于 Android 和 iOS 设备的协作性或多人游戏应用。使用云锚点,一台设备可以将锚点和附近的特征点发送到云端进行托管。 可以将这些锚点与同一环境中 Android 或 iOS 设备上的其他用户共享。 这使应用可以渲染连接到这些锚点的相同 3D 对象,从而让用户能够同步拥有相同的 AR 体验。共享需要服务器的支持。

   平面(Plane)
  AR中所有的内容,都要依托于平面类进行渲染。如虚拟机器人,只有在检测到平面网格的地方才能放置。平面可分为水平、垂直两种,Plane描述了对一个真实世界二维平面的认知,如平面的中心点、平面的x和z轴方向长度,组成平面多边形的顶点。检测到的平面还分为三种状态,分别是正在跟踪,可恢复跟踪和永不恢复跟踪。如果是没有正在跟踪的平面,包含的平面信息可能不准确。两个或者多个平面还会被被自动合并成一个父平面。如果这种情况发生,可以通过子平面找到它的父平面。

   姿态(Pose)
  Pose表示从一个坐标系到另一个坐标系的转换。在所有的ARFoundation APIs中,Pose总是描述从物体的局部坐标系到世界坐标系的变换,也就是说,来自ARFoundation API的Pose可以被认为等同于OpenGL的模型矩阵或DirectX的世界矩阵。随着ARFoundation对环境的了解不断变化,它将调整坐标系模式以便与真实世界保持一致。 这时,Camera的位置(坐标)可能会发生明显的变化,以便它们所代表的物体处理恰当的位置。因此,每一帧图像都应被认为是在一个完全独立的世界坐标空间中。

   Illumination estimation (LightEstimate)
  LightEstimate provides us with an interface to query the current frame of the lighting conditions. We can get the current camera view of the light intensity, in a range of values (0.0, 1.0), and 0 for black and 1 for white, use this light to draw information content, virtual objects can make more realistic. Direction of illumination may also be acquired, so as to adjust the direction of the shadow of the virtual object AR, increase the realism of the virtual object.

references

1、About AR Foundation About AR Foundation

Guess you like

Origin blog.csdn.net/yolon3000/article/details/91866650