如何使用Mapbox和ARKit在增强现实中整合3D地图

最近,我想看看是否可以在增强现实中实现3D地图,以进行潜在的安装。 我从未使用过ARKit,我在3D方面的经验也相当有限,而且我对真正的本机应用程序iOS开发一无所知(React Native距我已经很近了)。 幸运的是,Mapbox是一个令人难以置信的插件,可用于在Unity中处理地图,并且还有一个(在撰写本文时为beta)(实际上是脚本和示例集)用于将ARKit集成到Unity中的插件。

通过一点点的试验和错误,我就能使事情正常进行,尽管我绝不是权威,甚至不是寻求帮助的好资源,但我可以分享自己的过程和对我有帮助的资源,以及使用Unity for AR的一些基本原理。

  • 完成所有这些操作后,插入设备(iphone 6s或更高版本,运行iOS 11 beta),然后在XCode顶部的“播放”按钮旁边将其选择为要构建的设备,然后点击“播放” 。 XCode将编译该项目,这可能需要一些时间,最终它应该编译无误,并显示在设备的主屏幕上。 一旦构建完成,我的矿井就会自动启动,但是我听说有些设备无法自动启动该应用程序的问题,在这种情况下,您只需在主屏幕上找到它并单击即可启动。
  • 您应该看到一个标准的摄像头,在适当的照明条件下(可能需要一点时间),您将看到代表ARKit的点云的黄色圆点,以及场景中心带有蓝色,红色的棋盘立方体以及代表3D轴线的绿色极点。 当您的相机找到可以识别为平面的东西时,黄色十字准线框将关闭以形成完整的矩形,您可以单击屏幕以放置3D立方体。 如果放置不带黄色矩形的3D立方体,则ARKit会尽最大努力确定将场景放置在空间中的哪个位置,但准确性不高。
  • 我已经在[此处]上传了我的Unity文件。

恭喜! 希望您已经在Unity中使用ARKit! 如果没有,请前往支持论坛并寻求或寻求帮助。

在Unity中生成Mapbox地图

我不会在这里详细介绍,因为Mapbox在创建如何在Unity中构建3D地图的演练方面做得非常出色,但是基本上是以下过程:

  • 按照此指南安装SDK,在成功完成每个步骤后,单击“下一步”。
  • 完成本教程的所有三个阶段(您只需要第一步即可完成,但是有趣的东西出现在第2部分和第3部分中),并确保您可以成功构建一个新的Unity项目(没有ARKit),您可以单击在Unity中播放并查看。
  • 如果您有麻烦或感觉到已发现错误,请在Github存储库中提交问题。 Mapbox使用最新的Unity beta版来快速响应我自己的问题,却看不到“ Mapbox”菜单项。
  • 我还在[此处]上传了文件(您需要确保添加自己的Mapbox访问令牌)。 也许会有所帮助。

放在一起

尽管关于如何前进的文档对我而言并不是很直观,但是Unity ARKit插件实际上为您提供了将自己的内容集成到ARKit中所需的一切,对于这个特定示例,我们要做的就是向右拖动正确对象的脚本。

首先,我尝试将我的MapBox映射合并到Unity项目中时出现了一些错误,所以我做了相反的事情,从ARKit中获取了脚本,并在我的MapBox项目中实现了这些脚本。 要使一切正常运行:

  • 将ARKit插件导入到您的mapbox项目中。
  • 创建一个名为ARCameraManager的空游戏对象,然后从层次结构中拖动对Main Camera的引用。 在检查器的脚本选项中选择是否要Get Point CloudLight Estimation 。 其他所有内容均应为默认设置。
  • 如果要生成平面,以便可以在ARKit找到要附着物体的表面时看到,请从ARKit示例中的UnityARKitScene复制GeneratePlanes游戏对象到Mapbox场景中。
  • 创建另一个名为MapParent游戏对象,并将在其教程中创建的Mapbox Map游戏对象拖到MapParent中。 这在允许您缩放地图时很有用。 我将地图父级的比例任意更改为.05 ,但如果您想要一个巨大的生命尺寸的AR地图,请将其保留为1(或更大?)。
  • 在实际的Map Game Object上,从ARKit > Helpers文件夹附加UnityARHitTest Example脚本。 对于HitTransform参数,将MapParent游戏对象从“层次结构”拖到“检查器”字段中。 这样可以使您可以通过单击屏幕来放置地图。 否则,它会漂浮在大约视线高度的空间中间。
  • 在您的Main Camera ,从ARKit > Helpers文件夹中附加UnityARVideo脚本,并在Clear Material字段中,从UnityARKit > Materials选择YUV Material UnityARKit > Materials 。 另外,在检查器的上方,确保在“ Clear Flags下选择了“ Depth Only
  • 最后,从ARKit > Helpers文件夹将UnityARCamera Near Far脚本附加到Main Camera

(我认为)就是这样! 您现在应该能够像以前一样进行构建设置,并为iOS构建。 然后在XCode中打开您的xcodeproj文件,再次设置签名团队,然后将播放推向手机。 希望您做得对,现在就可以将3D地图放置在增强现实中了!