Vuforia官方API自学,只为学习交流,肯定会有错误与肤浅之处,仅供参考
Vuforia Engine 10 API:
- 官方文档:Vuforia Engine 10 API | VuforiaLibrary
- Vuforia Engine 10 API简化并改进了使用Vuforia Engine开发AR体验的过程,简化了AR生命周期的管理,并提供了更好的工具来创建、处理和控制AR体验和应用程序。支持多个开发环境和大量设备。
- Vuforia 10 API包含三个关键概念:
- Engine(引擎)
- Observer and Observations(观察员和观察结果)
- Controller (控制器)
-
-
Engine:
- Engine引擎是管理Vuforia Engine生命周期的高级对象。使用Engine可以创建、销毁、启动和停止AR。
- 在大多数情况下,Vuforia将使用默认配置设置引擎,开发人员只需要一些其它配置,如添加许可证密钥。此外,还可以配置Vuforia Engine实例,配置处理应用程序生命周期和行为的流程。在Unity中,Vuforia Engine实例表示为VuforiaApplication单例(跨场景)和Unity场景中的VuforiaBehaviour组件。
- 上述配置示例:
- 添加许可证密钥License Key(必须配置)
- 配置摄像机参数
- 配置渲染参数
- 启动Engine前需要进行配置。在Vuforia Engine启动后,通过控制器Controller也可以进行某些特定的配置。
-
Observer:
- 观察者Observer是一个组件,用于创建、设置观察真实世界的属性。大多数情况下,Observer观察的都是我们称之为Target目标的物理对象。也就是说,我们可以为我们想要检测、跟踪和获取有关信息的,真实世界的每个部分/位置/物理对象创建了一个Observer。例如,Target可以是图像、物理对象、三维空间、空间锚点,甚至是真实环境中的照明。
- 在Unity中,Observer作为附加到游戏对象的目标行为组件来创建和管理
- Observer归Vuforia Engine所有。默认情况下,Observer在创建时就会被激活。
- Observer类型示例:
- Image Target Observer:观察2D图片和其它图形形式
- Model Target Observer:观察基于CAD模型或物理对象扫描的3D对象
- Area Target Observer:检测和跟踪用户物理环境中预定义的3D区域
- Cloud Image Target Observer:使用云图像识别技术在现实世界中识别图像
- Anchor Observer:使用它在场景空间中动态创建固定位置以放置数字内容
- Illumination Observer:使用它来估计用户物理环境的照明条件
- 当一个Observer被激活时,可以通过State接收Observation(有时通过回调函数接收)
-
State:
- State在快照中及时收集有关观察场景的信息。包括有关Observer生成的观察的信息,有时也用于摄影机帧数据和渲染状态。
- Unity State:在Unity中,State会自动工作,因为Unity场景将每帧更新一次,所以不需要进行显式调用从State中检索信息
-
Observation:
- Observations包含Observers在给定时间点创建的信息。当用户四处移动并与AR场景交互时,Observers会报告变化(依据设置好的如何去观察目标状态的设置来报告目标状态的变化)。这种报告称为在该State收集的Observations(观察结果)。
- Observations包含不同数据的组合,例如姿势信息pose info、状态信息status info、网格信息mesh info等。可以通过State或注册的回调函数从Observations检索出这些信息。
- 从State检索信息的方式:
- 使用拉动机制pull mechanism更新所有激活的Observers,并从State对象检索所有Observer的Observations,官方建议采用这种方法。
- 使用推送机制push mechanism注册一个全局回调函数,该回调将从State对象中递送出所有收集的Observations,该方法只能用于关键处理,如计算机视觉分析。
- 大多数Observation都以本机形式报告给State,但少数Observations的行为不同,需要通过观察者回调直接访问。如云图像目标观察者Cloud Image Target Observer。特定的用例也可能要求使用替代的推送机制。例如,以非常低的频率收集Observation,或当Observation由用户交互手动触发时。
-
Controller:
- Vuforia Engine的许多控件和设置在Engine启动之前都是使用默认配置设置的。但如果需要,可以在运行时使用控制器Controller调整Engine和其他设置。示例如下:
- CameraDevice/CameraController:控制对摄像机属性(如视频模式、自动对焦和闪光灯)的访问。
- PlatformController:控制对特定于平台的功能的访问,例如设备方向和Fusion Provider。一些功能是特定于平台的,仅在各自的平台和设备(即Android、iOS和UWP)上可用。
- VideoBackground/RenderController:控制对渲染配置的访问。
- Vuforia Engine的许多控件和设置在Engine启动之前都是使用默认配置设置的。但如果需要,可以在运行时使用控制器Controller调整Engine和其他设置。示例如下:
-
回过头再看这张图片:
-
- 以我目前所学理解解析图片:
- Engine Config和Observer Config是用户根据需要配置Engine和Observer(不配置会使用默认配置,但有些必须配置,比如License Key)
- Engine在应用程序启动时会自动初始化,Engine拥有Observer,State和Controller
- 根据不同的观察目标Target,Engine拥有不同类型的Observer,Observer通过观察Target收集信息并把信息保存到State中,也就是把Observation保存到State中
- 在Engine运行过程中,如果还需要配置一些Engine设置或其他设置,可以调用Engine的Controller进行设置
-