下载本教程工程文件(Github)
从我最早开始接触增强现实以来,有三种核心识别方式:
可以通过图像在空间内布置虚拟物品
可以转换任意墙面或地板成为虚拟世界的一部分
从2017年Vuforia开始便具备这一功能,包括EasyAR也是很早具备此功能的,但由于其操作流程极其受限,我一直没有试着去尝试,直到ARKit在2019年给出了非常轻便的方法 ARReferenceObject,这篇教程记录基于此,有兴趣可以点击查阅官方文档。通过本教程,可以实现如下效果:
iPhone 6s或更新,系统iOS 12或更高;
iPad五代或更新,系统iOS 12或更高。
下载官方提供的工程文件“ScanningAndDetecting3DObjects”,通过Xcode安装到设备中,详情可看官方文档;
在设备中,扫描App名称为:ARKit Scanner。
确保被扫描物体非透明、非高反射度(如镜面)、表面尽可能粗糙(更多识别点),最小长度不小于1厘米,最大长度不大于5米;
扫描环境处于自然光中最佳,确保被扫描物体光照均匀,如使用人造光则日光灯最佳(色温6500k);
被扫描物体以外,中性色且无反光。
1.打开ARKit Scanner,镜头对准被扫描物体,直至有点云和黄框立方体出现,点击“Next”进行框定;
2.双指在屏幕上移动或缩小黄框立方体,直至正好框住被扫描物体,点击“Scan”进行扫描;
3.绕着被扫描物体,直至“上左右前后”五个面都出现黄色透明面,并且在App的标题部分显示“100%”,黄框立方体将自动出现3轴坐标轴;
4.点击“Test”,将被扫描物体放置在不同环境中测试识别准确度(若光线不足,可点击“Light On”打开设备闪光灯);
5.若在第四步的识别准确度测试中效果不佳,可以点击左上角“Merge Scans>Merge New Scan”增加扫描数据;
6.点击“Test”,检查识别准确度是否提高,在本例中,可以看到识别点云大幅度增加了;
7.点击“Share”导出识别数据文件arobject(请勿通过QQ、微信等通讯软件进行传输,文件将发生损坏)。
1.确保布置好ARFoundation开发环境(基本操作,此处不详述);
2.将上一章节中创建的arobject拖入Assets中,其应该如下图显示,如果没有图片,说明文件损坏,原因上一章已说;
3.在Project中右键,Create>XR>ReferenceObjectLibrary,将arobject文件拖拽入Reference Object Assets,并输入Name;
4.在Inspector中,AR Session Origin>Add Component,添加AR Tracked Object Manager;
5.将ReferenceObjectLibrary拖拽入AR Tracked Object Manager>Reference Library中;
6.将识别模型(确保位置在0位置,尺寸已根据物体的真实大小做了调整,且已制成Prefab)拖拽入AR Tracked Object Manager>Tracked Object Prefab。
在案例中,我只使用了视频作为识别对象,教程可看 AR transparent video playback in Unity 第三章。
关于物体识别,我更考虑在空间内的与空间发生关系的物品,如家具等,作为混合现实空间体验的标记物,这可能是物体识别最大的价值所在(当下,图像识别稳定度比物体识别稳定度高多了)。