《AR与VR开发实战》——2.7 3D物体识别
本节书摘来自华章出版社《AR与VR开发实战》一书中的第2章,第2.7节,作者 张克发 赵兴 谢有龙,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.7 3D物体识别
2.5节和2.6节讲解了柱体识别和立方体识别,这两节的内容都只是针对简单几何体进行识别,在本节中,我们将介绍不规则三维物体的识别步骤和方法。
1.下载并导入插件
登录官网,点击Downloads下的Tools,下载Vuforia Object Scanner (Vuforia物体扫描器)。Vuforia Object Scanner是一个用于扫描物体表面识别点信息的App,只支持Android操作系统。根据官网规定,建议大家采用Samsung Galaxy S5和Google Nexus 5这两款安卓手机进行操作,当然也可以尝试使用其他Android手机。
下载完毕并解压后会得到以下两部分内容:
Media文件夹:三维物体扫描图,需要采用A4纸打印出来。
scanner.apk:用于三维物体扫描,需要安装在上述两款安卓手机中。
接下来,我们依然按照之前介绍的方法下载Samples插件包并将其导入工程,下图中的Object Recognition表示对应的插件包中包含物体识别案例。
2.扫描三维物体识别信息(点云数据)
将打印出来的纸张放在桌面上,在右上角坐标区域放置需要识别的三维物体。打开已经安装的扫描数据App,360°扫描物体后将生成后缀名为.od的数据文件。
3.创建数据库
接下来登录Vuforia开发者官网并创建数据库,这次我们选择3D Object,点击Browse按钮选择上一步中生成的数据文件。
创建成功后点击下载数据包并将其导入Unity工程。
4.实现三维物体扫描
在Vuforia文件夹中找到ARCamera和ObjectTarget两个预制件并拖到层级视图Hierarchy中。
选择ObjectTarget,在Inspector面板中选择三维数据包。
然后在ObjectTarget下创建一个扫描成功后要显示的子对象,并调节到合适的位置及大小,在此我们直接创建Unity自带的三维模型Sphere。
最后点击运行以测试三维物体的识别效果。