本文解释了相机的作用及其生命周期。更改相机、焦距和曝光模式,或获取相机内部信息,以便将内容与相机图像同步渲染。
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概述尤其是空间参照系.