ARKit —简单的动手体验

大家好,我又是安东尼奥 👋上一次我们进行互动时,我写了一篇关于增强现实(AR)的简单技术介绍,以及它令人惊讶的惊人程度🌟,因此,如果您还没有读过,请仔细阅读。 我保证它不会像它的标题那样令人无聊,使您相信。 😅

全面披露,这篇博客不是要教您ARKit的基础知识,那里已经有很多很好的教程(这是一个非常酷的教程!),我不想只写其中一个。 我想带您经历一个实际的初步动手体验过程,并使用一种很有前途的,崭露头角的技术,这种技术可以带来实际有用的AR体验,而不仅仅是一些松散耦合的技术展示。功能和头。 (这句话满口是形容词,但这是重点!)因此,事不宜迟,让我们开始吧。


ARKit

正如我在上一篇文章中提到的那样,我决定试乘ARKit,然后让我告诉您,这是什么旅程!

对于那些以前从未听说过ARKit的人来说,它是苹果公司开发iOS增强现实应用程序的官方工具包。 它利用了他们最新的A11芯片和深度感知相机,具有以下功能:

  • 会话之间的持久性AR体验 ,可以在以后恢复;
  • AR会话也可以由多个用户同时共享 ,每个用户都有自己的iOS设备。
  • 现实环境中的平面和表面检测
  • 真实世界中图像和物体的特征检测
  • 真实环境中的图像和物体检测与跟踪
  • 物理引擎,用于AR对象相互之间及其环境交互。

而且,我们只是在摸索,每批功能的数量,它们的可靠性以及它们相互补充的方式都超出了我们的预期。 😁


因此,为了体验此技术奇迹并获得启发,我下载了iOS 12Xcode 10 (ARKit 2的最低要求),下载了所有Apple演示,几个开源项目,并深深地欣赏了它们的优点。 我立刻被迷住了。 使用SwiftShot播放或观看以下视频。 这不是no头,太神奇了!

首先,我们要做的就是将CoreLocation导入到我们的项目中,接下来我们需要设置一个LocationManager,它将不断向我们提供用户的GPS位置。 就我们的应用而言,由于AR已经耗尽了电池的电量,因此我决定采用可以走动的精度,但可以尝试其他精度。

全面披露:地球的曲率不会以任何可见的方式影响我们的应用程序,因为我们将处理最大2 Km的“小”距离,但要考虑潜在的问题并选择使用ARCL作为缓解措施,我们已经在提出更严格的要求。 😉

AR POI场景

与我们的第一个AR场景一样,使用ARCL框架添加我们最近购买的POI也不需要很多。 我们将从他们的书中摘取一页,并创建一个扩展了LocationNode (又扩展了SCNNode )的自定义节点:我们自己的LocationTextAnnotationNode

LocationTextAnnotationNode由一个文本子节点组成,用于显示POI的名称及其与当前位置的相对距离。 还有一个图像节点,我们可以在视觉上在AR场景中定位POI。 如您所见,大多数代码本身都是关于如何以美学方式呈现每个节点的,几乎没有考虑到如何将其全部放入AR场景中……🤔感谢ARCL的努力!

创建后,每个LocationTextAnnotationNode都将添加到AR场景。 很简单,对吧?

POI路由

既然已经将POI正确放置在我们的AR场景中,我们希望能够与它们交互,从而使我们能够选择目的地并询问前往该目的地的路线。 设置点击手势识别器并不太麻烦,我们只需要对AR场景中被点击的位置进行命中测试,检索所有受影响的场景节点,然后选择第一个符合条件的匹配项即可。

选择了POI之后,我们要询问从当前位置到其GPS坐标的方向,我们将其作为连续的路线段捆绑进行寻址,最后将这些方向转换为可添加到AR场景的场景节点。


就是这样,我们拥有AR应用程序所需的一切:

  • ✅知道用户当前的GPS位置;
  • ✅可以搜索附近的景点,例如餐馆,古迹,旅游景点等;
  • ✅在用户所在的位置周围有一个AR场景;
  • s将POI相对于用户在AR场景中的当前位置放置;
  • ✅选择POI时,将获取从用户当前位置到其GPS位置的方向;
  • ✅方向将作为节点和路段添加到AR场景中,从而定义了一条清晰的路线。

如果您需要更多有关如何将所有东西很好地粘合在一起的线索,请务必在仓库中检查成品,因为我不得不省略本文的大部分代码库,以确保您既得利益。 😅

哦,别忘了将应用程序带出去兜风! 😃


我希望这篇文章能补充上一篇文章,让您更深入地了解AR开发的神奇世界,并有可能进一步激发您开发自己的应用程序。 我很想知道您最终会创建什么,所以请随时通知我!

再一次,我将在页面末尾保留一堆材料,这些材料以某种形状或形式帮助我撰写了这篇文章。 随时发表评论或将您可能发现的其他有趣/有用的项目和教程发送给我,我将在这里包括它们。

再见! 👋


苹果展示ARKit

  • https://developer.apple.com/arkit/
  • https://developer.apple.com/arkit/gallery/
  • https://www.apple.com/lae/ios/augmented-reality/

官方ARKit文档

  • https://developer.apple.com/documentation/arkit
  • https://developer.apple.com/documentation/arkit/arworldmap
  • https://developer.apple.com/documentation/arkit/creating_a_multiuser_ar_experience
  • https://developer.apple.com/documentation/arkit/handling_3d_interaction_and_ui_controls_in_augmented_reality
  • https://developer.apple.com/documentation/arkit/handling_3d_interaction_and_ui_controls_in_augmented_reality
  • https://developer.apple.com/documentation/arkit/recognizing_images_in_an_ar_experience
  • https://developer.apple.com/documentation/arkit/scanning_and_detecting_3d_objects
  • https://developer.apple.com/documentation/arkit/swiftshot_creating_a_game_for_augmented_reality
  • https://developer.apple.com/documentation/arkit/swiftshot_creating_a_game_for_augmented_reality
  • https://developer.apple.com/documentation/arkit/using_vision_in_real_time_with_arkit

其他Apple官方文件

  • https://developer.apple.com/documentation/corelocation
  • https://developer.apple.com/documentation/vision/tracking_multiple_objects_or_rectangles_in_video

WWDC在ARKit上的视频

  • https://developer.apple.com/videos/play/wwdc2018/602
  • https://developer.apple.com/videos/play/wwdc2018/603
  • https://developer.apple.com/videos/play/wwdc2018/610
  • https://developer.apple.com/videos/play/wwdc2018/805

ARKit库

  • https://github.com/chriswebb09/ARKitNavigationDemo
  • https://github.com/DanijelHuis/HDAugmentedReality
  • https://github.com/olucurious/Awesome-ARKit
  • https://github.com/ProjectDent/ARKit-CoreLocation

杂项 文章

  • https://medium.com/journey-of-one-thousand-apps/arkit-and-corelocation-part-one-fc7cb2fa0150
  • https://rubygarage.org/blog/create-augmented-reality-app-for-ios-11
  • https://www.3dgep.com/understanding-quaternions/
  • https://www.raywenderlich.com/110054/routing-mapkit-core-location
  • https://www.raywenderlich.com/146436/augmented-reality-ios-tutorial-location-based-2
  • https://www.raywenderlich.com/171726/why-i-love-arkit-apple-ios-11
  • https://youtu.be/WTiakRbUF3g

AR资产

  • http://graphics.pixar.com/usd/docs/USD-Frequently-Asked-Questions.html
  • http://graphics.pixar.com/usd/downloads.html
  • https://medium.com/@konathalasuren/all-about-apples-new-usdz-file-format-simplified-12dff29f3fc0