ARKit 2.0的新功能

自WWDC会议结束以来已经过去了两个星期。 观看了会议,重新阅读了文档,完成了演示项目,这意味着您可以填写文章中收集的所有信息。



在ARKit的第一个版本中,可以跟踪手机在太空中的移动,确定周围光线的数量和温暖程度,还可以获取有关水平面的信息。 与iOS 11.3一起发布的ARKit 1.5改进了图像质量,添加了垂直平面的定义,静态2D图像的识别以及自动对焦。 让我们看看2.0版中添加了什么。


保存和还原AR卡


我们有机会保存环境地图以及增强现实的间隔对象。 拥有卡片后,您可以使用它进行AR会话初始化,然后将先前放置的对象显示在正确的位置。 保存的卡也可以传输到服务器并在其他设备上使用。


它是这样实现的: ARSession具有getCurrentWorldMapWithCompletionHandler方法,该方法返回ARWorldMap 。 关于控制点的信息存储在此对象内部,ARKit可以借助该信息恢复场景的零坐标,以及可以将对象附加到其的ARAnchors数组。 ARWorldMap可以保存或发送到某个地方。 要还原地图,需要在开始会话之前将其传输到ARSessionConfigurationinitialWorldMap字段。 启动后,会话状态将切换为.relocalizing ,原因是.relocalizing 。 一旦ARKit收集了足够的还原点,零坐标将被设置为正确的位置,并且会话状态将切换为.normal状态。


为了获得最佳性能,Apple建议执行以下操作:


  • 从不同角度扫描场景。 点阵列将更大,更准确;
  • 环境应该是静态的并且质地良好;
  • 点数组应该相当密集。

您不需要ARFrame监视这些参数,因为现在ARFrame具有一个worldMappingStatus字段。 但是在设计应用程序时需要考虑它们。


多人增强现实


环境地图保存机制允许在多个设备之间同步坐标系。 了解每个设备相对于环境地图的位置,您可以构建多用户方案。


在演示中,展示了SwiftShot游戏,您需要在弹弓中射击对手的弹弓。



游戏是用Swift + SceneKit编写的。 使用MultipeerConnectivity框架同步用户操作。 可以在此处下载应用程序源。


环境反射


我想将虚拟现实的金属对象添加到场景中,我想在其中看到真实世界对象的反映。 为此, ARWorldTrackingConfiguration一个environmentTexturing字段。 如果将SceneKit用作引擎,并将environmentTexturing字段设置为SceneKit ,则会得到以下结果:



ARKit从摄像机接收到图像后,会根据环境纹理构建立体地图。 使用机器学习算法可以生成未落入框架的信息。


跟踪2D运动图像


在ARKit 1.5中,仅跟踪静态图像出现了。 在第二版中,取消了限制,现在您可以获取运动图像的坐标。 Vuforia SDK曾经提供类似的功能。 在演示中,作为使用示例,他们展示了如何替换相框中视频中的照片:



为了更好地跟踪,您需要使用具有鲜明特征的对比鲜明,纹理清晰的图像。 如果不遵守此要求,Xcode将警告您。


要跟踪图像,您需要使用ARImageTrackingConfigurationtrackingImages数组将传递到配置,并maximumNumberOfTrackedImages 。 图像坐标将作为ARImageAnchor返回。


跟踪静态3D对象


还增加了对静态3D对象识别的支持。 在识别之前,必须先扫描物体。 您可以使用Apple应用程序执行此操作。 待扫描的对象应坚实,磨砂并具有良好的纹理。


要跟踪对象, 从文件或资源目录创建ARReferenceObject并将其添加到ARWorldTrackingConfiguration.detectionObjects 。 有关您将在ARFrame收到的对象的信息。


例如,演示文稿以增强现实的形式展示了博物馆中有关小雕像的信息。


人脸追踪


在以前的版本中,可以获取人脸的坐标和旋转,人脸的多边形网格以及一系列混合(从零到一的51种情绪)。 在第二版中,我们将看到三项创新:


定向光的定义。


ARKit 2使用面部图像作为光源信息。 使用它,您可以确定光的强度,温度和方向。 这将使面具更加逼真;


语言跟踪。


引擎盖上增加了一个fingerOut,它显示了语言“高度”的[0,1]程度。 从我自己身上,我可以补充一点,几乎我所有的朋友都试图展示这种语言,我曾与animoji一起玩过。


眼动追踪。


ARFaceAnchor具有三个新字段: leftEyeTransformrightEyeTransformlookAtPoint 。 互联网上已经有使用示例的演示:



新版本的常规改进:


  • 平面的初始化和定义加快了;
  • 在太空中跟踪电话和确定飞机位置变得更加精确;
  • 随着平面的扩展,确定平面边界的准确性提高了;
  • 添加了4:3宽高比支持(默认情况下将选择此格式)。

除过渡到4:3宽高比外,所有改进将自动应用于您的应用程序。 对于后者,您需要使用新的SDK重建应用程序。




如果这些信息对您有用,请使用向上箭头支持我。 我准备回答评论中的问题。

Source: https://habr.com/ru/post/zh-CN415277/


All Articles