在本机中使用相机

本文解释了相机的作用及其生命周期。更改相机、焦距和曝光模式,或获取相机内部信息,以便将内容与相机图像同步渲染。

Vuforia引擎自动处理相机的生命周期,您无需显式管理它。您仍然可以通过CameraController API管理相机配置。但是,了解生命周期和向您公开的摄影机参数可能会很有用,以确保渲染的内容与摄影机图像很好地对齐。

常规设置

摄像头通过Vuforia Engine生命周期操作进行初始化和取消初始化vuEngine启动()vuEngineStop()。相机的配置,例如相机焦距、曝光区域、感兴趣区域、视频和闪光灯的不同模式,随附摄像头控制器。请参阅照相机应用程序接口了解更多信息。另请参见Vuforia发动机生命周期获取有关相机权限的信息。

相机生命周期

在大多数平台上,虽然Vuforia Engine可以访问相机,但设备上的其他应用程序无法访问它。要释放相机并允许其他应用程序访问它,您可以使用vuEngineStop().

相机的生命周期与引擎的生命周期相关联。在停止会话后恢复时,相机将使用与前一会话中相同的相机视频模式。

例如;

  • 恢复会话时,将视频模式设置为VU_CAMERA_video_mode_PRESET_OPTIMIZE_SPEED将保留。
  • 在Vuforia引擎启动和停止期间,焦点模式也会保持不变,但由于VU_CAMERA_focus_mode_TRIGGERAUTO,模式切换到VU_CAMERA_focus-mode_FIXED时除外。然后,当引擎恢复时,它被设置为VU_CAMERA_FOCUS_MODE_CONTINUOUAUATO。
  • 曝光模式不会跨会话保留(停止/暂停,然后启动引擎),并且将默认为VU_CAMERA_Exposure_mode_CONTINUOUAUATO。

启动应用程序

  • 请求摄像机许可
  • 创建Engine实例vuEngineCreate()
  • 起动发动机vuEngine启动()
  • 使用CameraController功能配置摄像头
    • 摄像头视频模式
    • 对焦模式
    • 曝光模式
    • 焦点区域
    • 暴露区域

用于渲染

  • 检查可用的摄像头框架vuStateHasCameraFrame()
  • 获取vuStateGetCamera内部来自州政府。
  • 在视频背景上渲染VuRenderVBBackendType根据平台。请参见本机渲染了解更多信息。

正在停止应用程序

停止Vuforia引擎vuEngineStop()当摄影机绑定到Engine实例时。

摄像头内部

渲染虚拟内容以增强物理对象时,务必使用与所用设备上相机的内部特征相匹配的投影参数进行渲染。否则,虚拟内容将不会紧密对齐。通过以下方式访问相机的内部函数并检索匹配的投影矩阵VuCamera内部.

vuCameraIntrinsicsGetFov(内部);vuCameraIntrinsicsGetMatrix(内部);浮动近平面:浮动远平面;VuRotation旋转=VU_rotation_ANGLE_0;vuCameraIntrinsicsGetProjectionMatrix(内部、近平面、远平面、旋转);

请参阅摄像机内部投影矩阵有关坐标系约定和投影矩阵用于渲染。

相机坐标系

当没有激活“设备姿势观测器”时,相机坐标系将用作Vuforia Engine返回的所有观察的参考框架。

Vuforia Engine检测和跟踪的目标相对于相机的3D参考帧有一个姿势(表示目标局部参考帧的位置和方向的组合)。在Vuforia Engine中,定义参考系时,X轴和Y轴与给定目标或帧标记相切的平面对齐,Z轴与该平面正交。相机参考框定义为Z轴指向相机观察方向,X轴和Y轴与视图平面对齐(X指向右侧,Y指向下方)。

姿势由VuPoseInfo(VuPose信息)姿势VuMatrix44F。可以使用以下调用获取:

vuObservationGetPoseInfo(const VuObserveration*观察,VuPoseInfo*poseInfo);

有关更多信息,请参阅设备跟踪API概述尤其是空间参照系.