ARKit之路-简化AR调试

版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载。

  AR应用运行时需要采集来自设备摄像头的图像信息、设备运动传感器信息,并以此为基础来构建环境感知和估计设备姿态。AR应用目前无法在模拟器中进行测试,而必须采用真机进行测试,这导致AR应用的测试工作非常缓慢低效,特别是对需要进行现场验证的应用,如导航、实景增强类应用,需要亲自到现场测试,除了天候影响,这还是一个非常繁琐且费时费力的工作。

  为解决这个问题,ARKit3引入了录制与重放Session的功能(Record & Replay Sessions),利用该功能可以预先录制场景数据信息(包括视频图像信息、运动传感器信息、平面检测信息、设备姿态信息),在调试AR应用时可以重放这些场景数据并进行相应操作,因此可以对录制的Session进行重用,加速调试过程。

  录制Session需要在移动设备端进行,苹果公司提供了Reality Composer App应用,读者可以在AppStore中下载安装。利用Reality Composer进行Session录制的具体过程如下:

  (1)在移动设备端(iPhone和iPad)打开Reality Composer,打开后界面如图1左图所示,点击右上角的“+”号新建一个项目,进入到“选取锚定”界面,如图1左2所示;

  (2)在“选取锚定”界面中,选择锚定类型,可根据测试需求选择不同的锚定类型,本示例我们选择水平锚定方式,选定后打开场景如图1右2所示;

  (3)在当前场景中删除默认的虚拟元素,如图1右图所示,然后点击右上角“···”符号打开图2左图所示“更多”菜单;

在这里插入图片描述

图1 录制Session界面之一

  (4)在图2左图打开的“更多”菜单中选择“开发者”,打开“开发者”页面,如图2左2所示;

  (5)在“开发者”页面选择录制“录制AR会话”,打开场景信息录制界面,如图2右2所示;

  (6)点击场景信息录制界面下方的开始录制按钮进行场景录制,在录制过程中平稳缓慢的移动设备,当检测到平面后,录制界面中会出现相应的平面检测框提示用户当前平面检测情况。在采集到足够信息后点击录制界面下方结束按钮,这时会打开“捕捉完成”界面,如图2右图所示。用户可以根据情况选择“重播”、“共享”、“删除”,通过“共享”可以将录制的AR Session发送到计算机端。

在这里插入图片描述

图2 录制Session界面之二

  将录制好的Session数据发送到计算机端后,启动Xcode IDE,选择调试设备为真机,如图3左图所示。然后在Xcode菜单中依次选择Product►Scheme►Edit Scheme,如图3右图所示,这将打开Scheme设置对话框,如图4所示。

在这里插入图片描述

图3 选择调试设备、打开Scheme设置对话框

  在Scheme设置对话框中,勾选ARKit项中“Replay data”前的多选框,点击其后的下拉框选择“Add Replay Data to Project”(如果下拉菜单中已有录制好的Session,直接选择需要的Session即可),在打开的选择文件对话框中选择录制好的Session,然后关闭Scheme设置对话框。

在这里插入图片描述

图4 设置ARKit项的Replay Data为录制好的Session

  至此已完成所有Session录制及设置工作,按正常调试AR应用程序流程启动调试,当应用部署到真机设备后会自动重放录制的Session,虽然此时真机设备保持不动,但重放的Session就跟使用真机扫描环境一样,同样也可以与场景进行交互,如放置虚拟物体。

  使用录制与重放Session的功能可以更方便的调试AR应用,例如,我们可以录制保存几个不同的场景Session,利用这些场景Session,就可以调试AR应用在不同场景中的表现而不用亲自到实际场景中去测试。

  注意

  在使用Xcode进行ARKit开发时,不能使用模拟器,所以需要将调试设备选择为真机设备,如果不选择真机设备,Xcode代码编辑器中的ARKit相关代码会报错,同时,也无法设置录制的Session。