本文是Ray Wenderlich上《ARKit by Tutorials》2.0 版新增章节的读书笔记,主要讲内容概要和读后感
本章节简单介绍了 USDZ 格式及简单应用,完成了一个图片识别 app,一个 3D 物体识别 app。整体难度较低。
USDZ 格式和 AR Quick Look速览
USDZ 的创建
使用Xcode Command Line Tools运行usdz_converter来转换模型,可以参考以前的系列文章。
在 Web 上的应用USDZ
使用 a 标签:
<img src="pig.jpg" width="250" height="250">
<a href="pig.usdz" rel="ar">
</a>
在app 中应用USDZ
在 app 可以使用QLPreviewController
来预览 USDZ 格式,具体做法与预览视频几乎完全一样:
- 创建控制器QLPreviewController;
- 实现代理
QLPreviewControllerDelegate
和数据源QLPreviewControllerDataSource
检测图片和 3D 物体
图片检测示例,使用的是扑克牌;3D 物体检测,使用的是一个复原后的 3 阶魔方。
图片追踪
图片追踪对图片的质量有很高要求,如果直接把扑克牌的图片放进 Xcode 中,会显示警告,而且在 AR 世界追踪(ARWorldTrackingConfiguration)时也很容易出错。
这是因为图片不符合 ARKit 的追踪要求:
- 图片太过相似
- 图片上有重复的结构图案
- 颜色直方图分布太窄
- 图片有大量纯净色块,缺乏纹理
这就造成了下面的错误,图片无法对齐,而且会被反复识别多次:
为了解决这个问题,可以使用另一个配置ARImageTrackingConfiguration,这个配置项本质上是基于**计算机视觉(即 CV)**的,所以优点很明显:
- CPU 占用更少:只需要识别图片
- 效果更好:不在画面中出现目标图片时,就不显示
- 更精确:6 自由度图片追踪
- 可以在移动环境中使用:比如在车上
使用效果如下,识别准确,对齐也完美:
3D 物体检测
首先需要制作用于检测的3D模型,还是用 WWDC 2018 上官方公布的 ARKit Scanner来扫瞄模型。
最终识别后效果
最后
《ARKit by Tutorials》2.0 版新增章节读完了,感觉写的太简单了,还不如直接看苹果的官方 Demo。
希望以后的更新能提供更给力内容,读书笔记系列也会持续更新。