# 2D/3D物体AR能力 (2D/3D Marker AR)
# 方法定义
2D/3D Marker AR能力,能够识别预先设定的目标物体(定义为Marker,包括2D平面物体和3D物体),进行视觉跟踪与定位,通过在目标物体周围渲染虚拟物体,从而实现AR功能。
# 方法区别
2D Marker
,仅适用于平面类物体,用户上传一张平面物体的俯视图像作为目标物体,算法运行时识别该平面物品,并渲染出相关虚拟物体。2D Marker可以理解为特殊的3D Marker。3D Marker
,相比于2D Marker,能够识别3D物体,不局限与平面物体,具有更广的使用范围,算法运行前,需要手动制作3D Marker的识别目标文件(.map文件),然后算法运行时载入该文件用于识别。
# 使用提示
- 使用 addMarker 接口之前,需要在
createVKSession 的时候声明开启 marker 跟踪
。即 wx.createVKSession({ track: { marker: true } }) - 可以添加
多个 Marker 图片
,但不能重复添加相同的 marker 图片。 - 在 v2 模式下,使用 平面识别 与 Marker检测 结合,允许
同时识别多个 Marker
,同时可输出多个2d/3d marker 识别结果(需要基础库版本3.0.0),目标在视野中消失后之前返回的pose位姿信息依然有效可用,具体可以参考 平面AR能力扩展 以及内部的相关例子。
# 识别物体规范
为提高Marker质量,保证算法识别效果,具体请仔细阅读Marker规范文档 Marker规范
# 3D Marker 识别目标文件 map 生成
目前仅允许通过 小程序示例 的 接口
- VisionKit视觉能力
- 3DMarkerAR
页面生成。
# 生成任务状态解析
- 准备中 - 已上传,但生成服务器还未返回结果。建议等待20min,再考虑上传下一个视频(未更新结果,可以手动删除本任务,不过最好等待一天左右)
- 生成失败 - 会在错误提示上标明错误原因
- 已完成 - 生成完成,默认产物仅保留 30 天,请自行下载。
# 服务耗时:
- 当前版本 30s 视频耗时约 20分钟,请静待算法返回模型。
- 本服务同一时间仅处理一项任务,多个任务同时进行可能会导致后续任务的失败,建议闲时错峰进行生成。
# 对传入的视频有如下要求:
- 视频长宽比为 16:9 或 4:3,短边大于 480px
- 目标物体易于和背景物体区分出来,同时目标物体放置与背景物体一定距离,放置底面与物体易于区分,底面可以放置一张白纸。
- 目标物体最好为刚体,本身不会发生较大形变,容易变形的物体不适合用作识别对象
- 视频匀速移动,避免模糊,对目标识别面环绕物体拍摄,需要保证相机有足够的平移移动
- marker物体要求 与 2d图像要求类似,具有丰富细节,避免重复单一纹理,不反光,无高光
- 拍摄视频中特征纹理丰富,如果 marker 本身问题较弱,可以在背景中适当添加纹理物体
- 不建议使用透明物体,生成效果较差。
# 对传入的视频建议:
- 视频格式:视频帧率30fps,分辨率建议1080p
- 视频时长:视频建议时长在20s~30s,超过30s会被截断,时长过短会导致 marker 效果欠佳
# 3D Marker 来源视频参考
# 程序示例
以下接口可在 小程序接口能力展示demo 中的 接口 - VisionKit视觉能力 中体验
# 2D Marker 能力
- 基础 2D Marker 能力示例 基础 2D Marker 识别示例。
- 水平面 + 2D Marker 能力示例 水平面AR 结合 2D Marker 识别示例。
- 水平面 + 附加能力 示例 水平面AR 结合 多种附加能力示例。
# 3D Marker 能力
- 3D Marker能力使用示例 3D Marker 的生成、调用与测试示例。
# 3D Marker案例 默认识别 大致效果
# 3D Marker案例 默认识别 来源视频参考
# 3D Marker案例 默认识别 图片
# 应用场景示例
2D示例:
- 工卡AR
- 门票AR
- 艺术画AR
3D物体示例:
- 饮料、化妆瓶等容器类AR
- 公仔AR