ARKit 增强现实简介

发布日期:2026-07-12 03:56:03   来源 : 杭州电子商务研究院    浏览量 :6
杭州电子商务研究院 发布日期:2026-07-12 03:56:03  
6

什么是增强现实?

增强现实 (AR) 就是将虚拟元素以数字方式放入现实世界并与这些元素进行交互,就像它们真的存在一样。AR 为许多领域开辟了令人兴奋的新可能性,包括导航、游戏、军事技术、旅行增强等。

我们可以用 AR 出现之前不可能的方式来美化现实世界的环境。可能性是无穷无尽的,唯一的限制就是我们的创造力。

苹果于 2017 年 6 月在全球开发者大会 (WWDC) 上发布了ARKit 框架。ARKit框架依赖于 iOS 的高级功能,例如实时世界跟踪和命中测试、水平平面检测以及将真实照明应用于虚拟物体的能力。

但我们不必成为所有这些领域的专家。ARKit 隐藏了所有底层复杂性,使创建 AR 应用程序变得相当简单。

以下是我们将在本教程中构建的 AR 演示的屏幕截图:

跟着我一起看看我们是如何实现的。你可以从Github下载演示项目。

您的第一个 AR 应用程序

您将在几分钟内创建您的第一个 iOS 增强现实应用。兴奋吗?继续阅读。

先决条件

要实现本教程中的 ARKit 演示,您需要一台装有Xcode 9或更高版本的Mac。此外,ARKit 需要 A9 或更新的处理器来实时执行所有复杂的计算。因此,您需要 iPhone SE、iPhone 6s、iPhone 6s Plus、第 5 代 iPad 或运行 iOS 11 的较新设备

请注意,ARKit 应用程序不会在模拟器中运行。

让我们开始吧

通过 Xcode 9 和上述硬件,Apple 让我们能够轻松创建精美逼真的增强现实应用和游戏。Xcode 9 甚至附带专用模板,让我们能够在几分钟内构建我们的第一个 ARKit 应用。

打开 Xcode 并选择File -> New -> Project。选择Augmented Reality App模板:

点击Next,然后为你的项目选择一个名字(例如,“FirstARKitApp”)。你可以保留其他设置的默认设置(语言:Swift,内容技术:SceneKit)。点击Next,然后在你选择的文件夹中创建项目。

恭喜!您刚刚创建了您的第一个增强现实应用程序。

是的,你没看错!无需编码。在真实设备上运行应用后,你将看到以下内容:

现在,让我们仔细看看生成的项目。 Main.storyboard包含一个视图控制器,该控制器具有ARSCNView类型的主视图。ARSCNView是一种特殊视图,用于显示将设备的摄像头视图与虚拟 3D 内容融合的场景。 该视图连接到ViewController.swift文件中的 sceneView 出口

      @IBOutlet var sceneView: ARSCNView!
    

接下来,让我们检查一下 ViewController 的viewDidLoad()方法:

      override func viewDidLoad() {
  super.viewDidLoad()

  // Set the view's delegate
  sceneView.delegate = self

  // Show statistics such as fps and timing information
  sceneView.showsStatistics = true

  // Create a new scene
  let scene = SCNScene(named: "art.scnassets/ship.scn")!

  // Set the scene to the view
  sceneView.scene = scene
}
    

sceneView 的委托设置为self ,但在本演示中我们不会使用ARSCNViewDelegate 。

      sceneView.showsStatistics = true
    

通过将showsStatistics属性设置为 true,我们将在运行应用程序时看到实时统计数据。

点击左下角的+图标可以显示更多详细信息:

  • 绿色条是性能指标。满条表示性能良好。
  • 渲染引擎显示在性能指示器的右侧。可能的值是 GL(OpenGL)和 Mt(Metal)。在能够运行 ARKit 的现代设备上,您会看到 Mt。
  • FPS 计数器显示帧速率,即每秒屏幕更新的次数。60 是最大值,30 以上的值也是可以接受的。
  • 节点数(菱形图标旁边的值)显示场景图中的节点数。稍后将详细介绍。
  • 下一条信息是多边形数量指示器。它显示当前场景中渲染了多少个多边形。
  • 环形图显示了渲染一帧所花费的时间。我们还可以看到渲染一帧需要多少时间。在这个例子中,显示一帧仅花费了 0.4 毫秒。因此,如果设备支持如此高的帧速率,我们可以显示高达 2500 帧/秒。

接下来我们加载场景:

      let scene = SCNScene(named: "art.scnassets/ship.scn")!
    

SCNScene实例表示 3D 场景及其内容,包括灯光、3D 对象、摄像头和其他属性。当前场景使用与 ARKit 模板捆绑在一起的ship.scn进行初始化:

这艘船将会在我们的演示中显示并与现实世界相结合。最后,我们将场景分配给ARSceneView对象:

      sceneView.scene = scene
    

我们几乎准备好运行我们的第一个 AR 应用了。最后的配置步骤在viewWillAppear()委托方法中执行

      override func viewWillAppear(_ animated: Bool) {
  super.viewWillAppear(animated)
  // Create a session configuration
  let configuration = ARWorldTrackingConfiguration()
  // Run the view's session
  sceneView.session.run(configuration)
}
    

ARSCNView有一个与之关联的 AR 会话。ARSession处理摄像头图像并跟踪设备的运动。调用ARsessionrun()方法后,AR 处理开始。run ()方法需要一个有效的ARConfiguration实例。此配置对象定义会话的运动和场景跟踪行为。

ARConfiguration无法直接实例化。请改用 ARKit 提供的以下子类之一。

引用 ARKit 文档

  • ARWorldTrackingConfiguration:提供高质量的 AR 体验,使用后置摄像头精确跟踪设备的位置和方向,并允许平面检测和命中测试。
  • AROrientationTrackingConfiguration:提供使用后置摄像头并仅跟踪设备方向的基本 AR 体验。
  • ARFaceTrackingConfiguration:提供使用前置摄像头并跟踪用户脸部运动和表情的 AR 体验。

ARKit 模板使用ARWorldTrackingConfiguration类。此类配置还将跟踪设备的位置和方向变化。因此,我们将能够自由移动保持在现实世界固定位置的宇宙飞船模型。

如果我改用AROrientationTrackingConfiguration,设备的位置变化将不会被跟踪。因此,星际飞船将与设备一起移动。我们可以使用此配置来显示围绕我们设备运行的太阳系行星。

然而,缺乏位置变化跟踪对于大多数 AR 应用和游戏来说是一个大问题,所以你最终可能会使用ARWorldTrackingConfiguration。除了位置和方向变化之外,ARFaceTrackingConfiguration还可以跟踪面部表情,这为更多应用提供了可能。

请注意,ARFaceTrackingConfiguration 需要iPhoneX 的 TrueDepth 相机。

下一步

继续阅读本系列的下一篇指南《客厅中的虚拟 3D 形状》

如果您喜欢这篇关于 ARKit 的快速介绍,您可能想了解更多。您可能想查看我在 Pluralsight 上的 Swift 课程。我谈论设计模式和 Swift 最佳实践、技巧和窍门。

我还为您收集了几个链接:

介绍 ARKit(WWDC 2017):https://developer.apple.com/videos/play/wwdc2017/602/ 官方 ARKit 网站:https://developer.apple.com/arkit 适用于您的 ARKit/SceneKit 应用的免费和高级 3D 模型:https://free3d.com、https://sketchfab.com、https://www.turbosquid.com Blender,免费 3D 创作工具:https://www.blender.org

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据