28-《ARKit by Tutorials》读书笔记7: 图片追踪物体追踪与 AR 速览

499 阅读2分钟

ARKit文章目录

本文是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。

希望以后的更新能提供更给力内容,读书笔记系列也会持续更新。