在本节中,我们将看看如何在后面配置提供的ARKit模板。我们将发现什么是世界跟踪和AR会话。同样,我们将学习如何将一些调试选项应用于场景中的指导。
下载
要学习本教程,您需要Xcode 10或更高版本,以及导入3D模型的最终Xcode项目。您可以下载本节的最终Xcode项目,以帮助您与自己的进度进行比较。
用户界面
了解构成起始AR应用程序的主要元素非常重要。首先,让我们来看看用户界面。
故事板
让我们选择Main.storyboard文件。故事板反映了用户界面的外观。中间部分是Storyboard编辑器。它带有一个默认视图View Controller,它是运行应用程序时的第一个视图,如右箭头所示。好吧,那就是你没有定义一个启动画面。您可以通过添加标签,按钮和其他对象等对象来自定义此视图,并轻松编辑其属性而无需触及代码。您还可以添加其他视图并管理它们之间的链接。基本上,故事板是设计师最好的朋友。
文件大纲
在左侧的文档大纲中,您可以看到所有对象的显示方式。您可以选择一个图标直接导航到该对象。
检查器
在右侧面板中,有与场景编辑器中不同的检查器。有文件检查器,快速帮助检查器,身份检查器,属性检查器, 大小检查器和连接检查器。
对象库
在检查员的左上方,有一个圆形图标,用于存储对象。如果您长按它,您可以访问对象库或媒体库。对于Xcode 9,它位于屏幕的右下角。
如果您想了解更多这整个屏幕,可有两个部分在谈论它的书,Xcode 9 简介和Storyboad 简介。
AR场景视图
ARKit模板已经放入对象库中可用的ARSCNView视图类中。此视图反映了相机看到的内容并将其显示在屏幕上。把它想象成一只眼睛的角膜,而相机就是眼睛,代码就是处理所有东西的大脑,以便在设备上投射视线。
Scene 幕后
现在让我们来看看幕后的事情。是时候深入研究代码吧!
转到ViewController.swift文件。这是所有代码都是针对我们之前在Main.storyboard中看到的视图控制器场景编写的。
导入套件
套件是Apple提供的框架,它们与特定主题相关。您需要导入框架以利用其功能。其中三个已经导入。
UIKIT的
UIKit是开发iOS应用程序的基本框架,它可以集成标签,按钮,条形图和各种视图控制器等组件。
SCENEKIT
如前所述,SceneKit是我们选择的处理3D对象的渲染技术。导入它以使其功能和类受益。
ARKIT
我们需要ARKit来让我们体验增强现实。没有它,我们将无法跟踪我们的设备在世界上的位置,将我们的虚拟对象放在桌子上,甚至放在房间里。
查看控制器类
在导入下方,ViewController已被声明为UIViewController类的一部分,并且与故事板中的视图相关。类具有属性,方法和协议,所有这些都在开发中被利用。
场景视图
在课程内部,从故事板到ARSCNView的链接被称为SceneView。在Xcode中,此链接称为IBOutlet。您也可以在故事板中看到引用插座。
子类
再往下,你会发现已经预设了3个子类,viewDidLoad,viewWillAppear和viewWillDisappear。您可以根据视图的显示时间提供说明。viewDidLoad是视图已加载的时候,viewWillAppear在视图加载之前是正确的,而viewWillDisappear在视图消失之前是正确的。
世界跟踪配置
在ViewWillAppear中,设置了ARKit的重要配置。
该ARWorldTrackingConfiguration通过使用其照相机赠送设备的位置和方向,以及它的运动,并将此。已定义一个称为配置的新会话配置, 以允许进行世界跟踪。
AR会话
然后,我们需要使用刚刚设置的配置运行会话。
一个ARSession允许您运行和应用不同的技术。会话使用其会话实例控制所有处理,并由场景视图自动创建。当您开始体验时,会话开始。
你能告诉我另一个用于ARKit的流行技术的例子吗?让我给你一个提示:Animoji。这是正确的,它是面部跟踪,如果你第一次购买iPhoneX,你可能会有很多乐趣。
相机使用
您可能还记得我们第一次运行应用程序时,有一条弹出消息要求允许使用相机。Apple非常坚定地保护客户的隐私。此授权在Info.plist文件中设置。在“ 信息属性列表 ”部分下,有一个隐私密钥 - 相机使用说明,。默认情况下,已在模板中写入的显示消息为此应用程序将使用摄像头进行增强现实。如果您想从头开始AR应用程序,这是必须的步骤。
相机使用权限
用户反馈
作为开发人员,我们一直需要获得反馈,以帮助我们弄清楚发生了什么和出了什么问题。
统计
在viewDidLoad中,这行代码允许在屏幕上显示统计信息。运行该应用程序以检查它。
统计信息提供有关场景渲染性能的信息,如每秒帧数(fps),动画,物理等.Apple建议将fps设置为60.在您的设备上,您可以单击 按钮展开统计栏更多细节。我们不需要这些统计数据,因此我们可以通过将showsStatistics的布尔值更改为false 来隐藏统计数据栏。
显示统计
调试选项
对于ARKit,有两个可用的调试选项可供我们在场景中进行参考。添加它们以在屏幕上看到它。调试选项是一个数组或列表,因此您需要使用方括号。现在运行应用程序。
顺便说一句,您也可以单独显示它们而不使用方括号。
世界原点
世界原点是视图加载时摄像机的起始位置。您可以使用箭头看到它,就像在场景编辑器中一样。如果您四处移动,会话会记住该位置,使其保持静止。
世界起源
特征点
你看到小黄点?这些是特征点,它们是相机感知的物体的显着特征。例如,如果你看看我的桌子,你会发现它们很少。但是如果你切换到我的键盘,你可以真正看到键和它上面的字符之间的区别。
因此,如果您有一个统一的白色或黑色表,您将看不到太多或任何特征点。这应该可以指示平面是否适合放置模型。所以,我建议你添加垫子或其他东西。
特征点
默认照明
的ARKit现场了解一部分,如果你打开autoenablesDefaultLighting,场景将添加在需要更清楚地看到虚拟对象灯。
另外,使它自动更新那些灯光。将automaticUpdatesLighting设置为true。
我们来看看我们的Apple手表场景。如果没有泛光灯,此图像显示激活默认照明与否之间的区别。亲自看看吧!
WatchSceneComparison
结论
虽然可以从一开始就使用模板,但了解它的结构非常重要。一些开发人员更喜欢从头开始,因为它有时不适合他们的需求。现在,你也可以自己开始。在下一个教程中,您将学习如何检测现实世界中的平面。到时候那里见!
原文: https://designcode.io/arkit-configuration