1.8 ARKit会话录制与重放
使用Unity XR模拟工具能利用虚拟的场景辅助进行AR应用功能测试,加速应用开发迭代,但虚拟的场景无法满足需要进行现场验证的应用需求,如导航、实景增强类应用,这类应用还是需要亲自到现场测试,除了天气影响,这还是一个非常烦琐且费时费力的工作。
为解决这个问题,ARKit引入了录制与重放会话功能(Record & Replay Sessions),利用该功能可以预先录制场景数据信息(包括摄像头图像信息、运动传感器信息、场景表面几何网格、设备姿态信息),在调试AR应用时可以重放这些场景数据并进行相应操作,因此可以对录制的AR会话进行重用,加速调试过程。
录制AR会话需要在移动设备端进行,苹果公司提供了Reality Composer App应用,可以在AppStore中下载并安装。利用Reality Composer进行会话录制的具体过程如下:
(1)在移动设备端(iPhone或iPad)打开Reality Composer,打开后的界面如图1-47(a)所示,单击右上角的“+”号新建一个项目,进入“选取锚定”界面,如图1-47(b)所示。
(2)在“选取锚定”界面中,选择锚定类型,可根据测试需求选择不同的锚定类型,本示例选择水平锚定方式,选定后打开的场景如图1-47(c)所示。
(3)在当前场景中删除默认的虚拟元素,如图1-47(d)所示,然后单击右上角“···”符号便可打开如图1-48(a)所示的“更多”菜单。
图1-47 录制AR会话界面(一)
(4)在如图1-48(a)所示的“更多”菜单中选择“开发者”,打开“开发者”界面,如图1-48(b)所示。
(5)在“开发者”页面选择“录制AR会话”功能,打开场景信息录制界面,如图1-48(c)所示。
(6)单击场景信息录制界面下方的“开始录制”按钮进行场景录制,在录制过程中平稳缓慢地移动设备,当检测到平面后,录制界面中会出现相应的平面检测框,提示用户当前平面检测情况。在采集到足够信息后单击录制界面下方的结束按钮,这时会打开“捕捉完成”界面,如图1-48(d)所示。用户可以根据情况选择“重播”“共享”“删除”,通过“共享”可以将录制的AR会话发送到开发计算机端。
图1-48 录制AR会话界面(二)
将录制好的AR会话数据发送到开发计算机端后,启动Xcode IDE,将调试设备选为真机,如图1-49(a)所示,然后在Xcode菜单中依次选择Product→Scheme→Edit Scheme,如图1-49(b)所示,打开Scheme设置对话框,如图1-50所示。
图1-49 启动Xcode IDE
图1-50 将ARKit项的Replay Data属性设置为录制好的AR会话
在Scheme设置对话框中,选择Run选项,在右侧面板中选择Options选项卡,勾选ARKit项中Replay data前的复选框,单击其后方的下拉列表框,在弹出的下拉菜单中单击Add Replay Data to Project按钮(如果下拉菜单中已有录制好的会话,则可直接选择需要的会话),在打开的选择文件对话框中选择录制好的AR会话,然后关闭Scheme设置对话框,如图1-50所示。
至此已完成所有AR会话的录制及设置工作,按正常调试AR应用程序流程启动调试,当应用部署到真机设备后会自动重放录制的会话,虽然此时真机设备保持不动,但重放的AR会话就跟使用真机扫描环境一样,同样也允许与场景进行交互,如放置虚拟物体。
使用录制与重放会话的功能可以更方便地调试AR应用,例如,可以录制并保存几个不同的场景会话,利用这些场景会话,就可以调试AR应用在不同场景中的表现而不用亲自到现场场景中去测试。
提示
目前,在使用Xcode进行ARKit开发时,不能使用模拟器,所以需要将调试设备选为真机设备。如果不选择真机设备,则Xcode代码编辑器中的ARKit相关代码会报错,而且也无法设置录制的AR会话。