更新时间:2023-04-26 GMT+08:00
分享

SDK内部派发事件

SDK内部派发事件如表1所示。

表1 SDK内部派发事件列表

事件名称

描述

携带的数据

数据类型

事件说明

GYRO_STATUS

陀螺仪有效性检测。

gyro

boolean

需要侦听回调,回调函数会接收到一个参数:event: { data: Object }

event.data.gyro表示设备陀螺仪是否正常。

WEB_INFO

版本信息。

{

slam: string;

phone: string;

}

Object

侦听函数,会接收到一个参数:event: { data: Object }

  • event.data.slam表示当前AR位置追踪算法的版本号。
  • event.data.phone表示当前设备型号。

UPDATE_CAMERA_FOV

刷新渲染相机FOV。只需要相机内参fy值,计算透视相机的fov值。

fy

number

需要侦听回调,回调函数会接收到一个参数:event: { data: Object }

event.data.fy表示设备相机内参fy值。

LANDSCAPE_BY_ROLL

当前设备是否横屏。

isLandscapeByRoll

boolean

需要侦听回调,回调函数会接收到一个参数:event: { data: Object }

event.data.isLandscapeByRoll表示当前设备是否横屏。

AUGULAR_VELOCITY_BIG

当设备角速度过大时会接收到此通知。

str

string

需要侦听回调,回调函数会接收到一个参数:event: { data: Object }

event.data.str表示提示信息的内容。

VPS_CHECK_INFO

视觉定位时检测信息提示。

  • 定位失败,请左右移动手机重新定位 。
  • 连续定位失败,请尝试更换场景。

str

string

需要侦听回调,回调函数会接收到一个参数:event: { data: Object }

event.data.str表示提示信息的内容。

ORIENTATION_NORMAL

手机俯仰角是否正常。视觉定位时需要竖屏正向手持设备。

isNormal

boolean

需要侦听回调,回调函数会接收到一个参数:event: { data: Object }

event.data.isNormal表示当前设备的俯仰角是否正常。

VIDEO_STREAM_GET_ERROR

视频流获取失败。

可能原因是:

  • 浏览器不支持WebRTC。
  • 请求打开摄像头权限失败。

-

-

需要侦听回调。回调函数无event参数。

VIDEO_STREAM_GET_NONE_PIXEL

视频流为空白像素。通常原因是浏览器多个标签页同时申请获取视频流。

-

-

需要侦听回调。回调函数无event参数。

NO_SRTEAM

获取设备的相机时出错。一般是设备没有后置摄像头。

-

-

需要侦听回调。回调函数无event参数。

VPS_FAIL

VPS定位失败。可能是定位不在地图范围、定位超时等原因。

-

-

需要侦听回调。回调函数无event参数。

接口调用及相机fov设置示例

// 以事件名"UPDATE_CAMERA_FOV"为例
hwar.addEventListener("UPDATE_CAMERA_FOV", (evt) => {
    resolve(evt.data.fy);//请根据返回的fy来设置渲染相机的fov
});

// Three.js r144版本 相机fov设置代码示例(TS语言)
// 获取设备标定参数后设置相机参数
public updateFov(fy): void {
    this.nVpsFy = fy;
    let nFov: number = ThreeUtils.calculateVerticalFov(RenderConfig.RenderCameraWidth, this.nVpsFy);
    let fov: number = ThreeUtils.radianToDegree(nFov);
    this.camera.fov = fov;
}
// ThreeUtils.ts
static calculateVerticalFov(nImageHeight: number, nFocal: number) {
    return 2 * Math.atan(0.5 * nImageHeight / nFocal);
}
static radianToDegree(nRadian: number) {
    return nRadian / Math.PI * 180;
}

// LayaAir 2.12版本 相机fov设置代码示例(TS语言)
// 获取设备标定参数后设置相机参数
public updateFov(fy): void {
    this.nVpsFy = fy;
    let nFov: number = LayaUtils.calculateVerticalFov(RenderConfig.RenderCameraWidth, this.nVpsFy);
    let fov: number = LayaUtils.radianToDegree(nFov);
    this.mainCamera.fieldOfView = fov;
}
// LayaUtils.ts
static calculateVerticalFov(nImageHeight: number, nFocal: number) {
    return 2 * Math.atan(0.5 * nImageHeight / nFocal);
}
static radianToDegree(nRadian: number) {
    return nRadian / Math.PI * 180;
}

相关文档