你好ARKit

在进入增强现实的奇妙世界之前,让我们确保已具备所有先决条件。

  • Xcode 9(测试版或更高版本) :ARKit在Xcode 9(测试版)或更高版本上可用。 因此,请确保下载最新版本的Xcode 9。
  • 物理设备 :您将需要一个物理设备来测试您的ARKit应用程序。 建议测试设备至少包含A9处理器,这意味着iPhone 6S或更高版本或最新的iPad。
  • iOS 11(测试版或更高版本) :由于ARKit是iOS 11 SDK的一部分,因此要求您的设备运行iOS 11 beta或更高版本。

根据您的Internet连接,下载和安装所有内容可能需要10分钟到45天的时间。 我在开玩笑,最多30天🙂

现在,您已经下载并安装了所有必备软件,并准备好尝试使用iOS版ARKit构建增强现实应用程序。 在本章的最后,您将了解实现ARKit应用程序的基本概念。

启动Xcode 9并创建一个新项目。 您会注意到Xcode 9带有一个专门为ARKit应用程序设计的新项目模板, 如图1所示。

图1:Xcode 9中的增强现实项目模板

选择“ 增强现实应用程序 ”模板后,按“ 下一步 ”按钮。 这将带您到项目选项屏幕,该屏幕允许您配置项目的不同属性。 对我们而言,最重要的选择是“ Content Technology ”,它允许开发人员使用SpriteKit,SceneKit或Metal框架创建ARKit应用程序。

图2:对多种内容技术的支持

确保选择SceneKit,因为本书中的大多数示例都使用SceneKit作为内容技术。 接下来,为您的项目指定一个位置,最后按“创建”按钮使ARKit项目生效。

您只有片刻的时间见证了增强现实的魔力。 运行该应用程序,并确保您的物理iPhone已插入并已连接。 图3显示了运行中的ARKit默认应用程序。 您的花园可能没有我的花园绿🙂

图3:运行中的ARKit默认应用

休斯顿! 我们有ARKit!

本章是我的《 iOS开发者的ARKit》一书的一部分。 立即获取该书,并开始构建出色的增强现实应用程序。

祝贺您运行了第一个ARKit应用程序。 在下一节中,我们将了解制作默认ARKit项目所涉及的代码。

了解项目:

在本节中,我们将研究默认ARKit项目的不同部分,并将研究创建增强现实体验所涉及的不同类。

让我们立即进入Xcode默认添加的代码。 清单1显示了ViewController的viewDidLoad函数的实现。

 覆盖func viewDidLoad(){ 
  super.viewDidLoad() 
  //设置视图的委托 
  sceneView.delegate =自我 
  //显示统计信息,例如fps和计时信息 
  sceneView.showsStatistics = true 
  //创建一个新场景 
 让场景= SCNScene(名称:“ art.scnassets / ship.scn”)! 
  //将场景设置为视图 
  sceneView.scene =场景 
  } 

清单1:ViewController的viewDidLoad函数

在viewDidLoad内部,我们首先将场景视图委托设置为控制器的实例。 然后,我们启用统计信息属性,这将使我们能够查看调试信息,包括帧速率等。

之后,我们加载称为“ ship.scn”的SceneKit场景,该场景包含在资产文件夹中。 该场景包含飞船的实际模型。 最后,我们将sceneView场景属性设置为已加载的场景。

视图控制器的最重要职责是配置和初始化ARKit世界跟踪。 世界跟踪使我们能够跟踪现实世界中的虚拟物品,这被认为是ARKit框架工作的大脑。

清单2所示,在viewWillAppear函数中启用了世界跟踪。

 覆盖func viewWillAppear(_动画:布尔){ 
  super.viewWillAppear(动画) 
  //创建会话配置 
 让配置= ARWorldTrackingConfiguration() 
  //运行视图的会话 
  sceneView.session.run(配置) 
  } 

清单2:运行世界跟踪

注意:除了ARWorldTrackingConfiguration外,Apple还提供ARConfiguration,旨在为低于iPhone 6S且未运行A9处理器的设备提供更少的沉浸式AR体验。 不幸的是,在撰写本文时,ARConfiguration不能按预期工作,并且在非A9设备上使用ARConfiguration配置运行时,应用程序崩溃。

在这一点上,您可能想知道SceneView的来源。 打开Main.storyboard文件,然后查看您的视图控制器, 如图3所示。

清单3:ARSCNView作为控制器的根视图

您的视图控制器的根视图不是UIView,而是ARSCNView。 ARSCNView是一种特殊的视图,它允许显示启用了SceneKit的应用程序的增强现实视图。 SceneView实例通过使用插座连接到情节提要。 如果您将SpriteKit用作ARKit项目的内容技术,那么它将是ARSKView而不是ARSCNView。

在下一章中,我们将研究使用几何图形创建虚拟对象,使用材质进行装饰,最后使用节点将其插入世界。

结论:

在本章中,我们学习了如何使用ARKit运行第一个增强现实应用程序。 我们研究了默认ARKit应用程序的不同组件,并了解了每个组件在ARKit应用程序中的用途。