bl.createVKSession
功能描述
创建 vision kit 会话对象。详见指南
参数
Object object
| 属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
|---|---|---|---|---|---|
| version | string | 否 | vision kit 版本。 | ||
| 合法值说明v1v1适用于用户在平面场景下,例如桌面,地面,泛平面场景,放置虚拟物体,不提供真实世界距离。用户放置物体时,手机相机倾斜向下对着目标平面点击即可,具有广泛的机型支持v2v2提供真实物理距离的 ar 定位功能,提供平面识别功能,用户在平面范围点击放置虚拟物体的功能,具有有限的机型支持。iOS 设备在基础库 2.22.0 开始支持v2。安卓设备在基础库 2.25.1 开始支持v2,另外,安卓v2不支持竖直平面。使用v2算法需要初始化,移动手机进行左右平移初始化效果最佳。 | |||||
| track | Object | 是 | 跟踪能力配置,目前不同的跟踪能力之间是互斥的,默认使用平面跟踪能力。需要注意目前 track 中不同的跟踪配置存在互斥关系(比如 marker 跟踪配置和 OSD 跟踪配置不能同时存在),请按需配置。 | ||
| 结构属性类型默认值必填说明最低版本planeObject是平面跟踪配置结构属性类型默认值必填说明最低版本modenumber是平面跟踪配置模式合法值说明最低版本1检测横向平面2检测纵向平面,只有 v2 版本支持 3检测横向和纵向平面,只有 v2 版本支持 forcebooleanfalse否是否开启强制使用V2的模式,只有 v2 版本支持 markerboolean否marker 跟踪配置,基础库(3.0.0)开始允许同时支持v2的水平面检测能力 OSDboolean否OSD 跟踪配置 depthObject否深度识别配置。用法详情指南文档。 结构属性类型默认值必填说明最低版本modenumber是深度识别模式 合法值说明最低版本1通过摄像头实时检测 2静态图片检测 faceObject否人脸检测配置。用法详情指南文档。安卓bilibili8.0.25开始支持,iOSbilibili8.0.24开始支持。 结构属性类型默认值必填说明最低版本modenumber是人脸检测模式 合法值说明最低版本1通过摄像头实时检测 2静态图片检测 OCRObject否OCR检测配置。用法详情指南文档。 结构属性类型默认值必填说明最低版本modenumber是OCR检测模式 合法值说明最低版本1通过摄像头实时检测 2静态图片检测 IDCardObject否身份证检测配置。用法详情指南文档。 结构属性类型默认值必填说明最低版本modenumber是身份证检测模式 合法值说明最低版本2静态图片检测 bodyObject否人体检测配置。用法详情指南文档。 结构属性类型默认值必填说明最低版本modenumber是人体检测模式 合法值说明最低版本1通过摄像头实时检测 2静态图片检测 handObject否手势检测配置。用法详情指南文档。 结构属性类型默认值必填说明最低版本modenumber是手势检测模式 合法值说明最低版本1通过摄像头实时检测 2静态图片检测 shoeObject否鞋部检测配置。用法详情指南文档。 结构属性类型默认值必填说明最低版本modenumber是鞋部检测模式 合法值说明最低版本1通过摄像头实时检测 threeDofboolean否提供基础AR功能,输出相机旋转的3个自由度的位姿,利用手机陀螺仪传感器,实现快速稳定的AR定位能力,适用于简单AR场景。 | |||||
| gl | WebGLRenderingContext | 否 | 绑定的 WebGLRenderingContext 对象 |
返回值
VKSession
vision kit 会话对象。错误码参考 错误码列表
示例代码
// 以下 demo 以 v2 为例
// 创建 session 对象
const ssession = bl.createVKSession({
track: {
plane: {mode: 3},
},
version: 'v2',
gl, // WebGLRenderingContext
})
// 逐帧分析
const onFrame = timestamp => {
// 开发者可以自己控制帧率
const frame = session.getVKFrame(canvasWidth, canvasHeight)
if (frame) {
// 分析完毕,可以拿到帧对象
doRender(frame)
}
session.requestAnimationFrame(onFrame)
}
session.start(err => {
if (!err) session.requestAnimationFrame(onFrame)
})
// 渲染函数
const doRender = frame => {
// ...
}