0. 准备工作

  • ARKit要求iOS设备的处理器不低于A9。ARKit是无法在iOS模拟器中运行的
  • Xcode
  • 苹果开发者账号(688人民币/年)

1. 创建项目

  • 通过Xcode的 File->New->Project进入项目创建界面
  • 选择Single View App,并点击Next按钮。这里为什么不选择Augmented Reality App,是因为该项目会自动包含一套demo进去,我们目前需要的是一个干净的项目。
  • 输入项目名称,并选择签名团队,之后点击Next按钮
  • 再选择项目创建的目录位置,就可以完成项目的创建了

2. 创建ARSCNView用来展示内容

  • 在storyboard的view中添加ARSCNView,这里是要把选中的控件拖入到对应的View下面。
  • 接下来我们通过“按住Ctrl + 拖拽” 将新添加的ARSCNView关联到代码的ViewController中,完成IBOutlet的创建,从而建立UI与代码的联系。
  • 使用Container View组件在之前的View组件层级下创建一个状态显示、重新启动控制区域,并修改其名称为Status View Controller, 并关联到StatusViewController 类上
  • 在Status View Controller 中添加状态展示区域和重启按钮,并关联到代码中
  • 关联session,并实现session相关协议。关于ARSession以及其相关的委托的翻译请参见ARKit翻译-ARSession

)

这里我们通过extension的方式,来实现ARSessionDelegate的相关方法。其中主要涉及到追踪状态变化、会话异常、会话中断和会话终端恢复的事件相应。

3. 加载用来追踪的图片

可以看到图中划线的AR Resources字样,这个就是要加载追踪图片资源的组,我们可以在Assets.xcassets中找到它,并可以自定义。

在这里,我只添加一张图到AR Resources组中。

4. 追踪图片,并在找到的图片上附加一个平面

这里第一步表示如果发现的锚点,是一个ARImageAnchor,则进行处理。如果发现的是一个ARImageAnchor,也就表示与我们上文自定义的图片找到了匹配。那么接下来就会在异步队列中加入一个任务,即在找到的图片锚点上绘制一个与图片大小一致的平面。

5. 演示视频

6. 项目地址

在github上开源了这个项目,虽然说只是把官方的代码重新敲了一遍,但是还是放上来吧,给有需要的人: https://github.com/lazygunner/ImageDetection