简介

空间核算 (Spatial Computing) 运用程序的构建仍然运用了解的 SDK 和开发环境 Xcode。

两项新的特性,混合实在和虚拟内容和运用天然输入与运用程序交互。

整个体系旨在维护人们的隐私,可以安心地专心于运用程序的体会。

结构

vision OS - 开始构建空间计算应用程序

基础知识

根本元素

空间核算的根本元素

  • 窗口 (Windows)
  • 卷 (Volumes)
  • 空间 (Spaces)

vision OS - 开始构建空间计算应用程序

同享空间

默许情况下,运用程序发动到同享空间,这是运用程序并排存在的当地,就像 Mac 桌面上的多个运用程序相同。

穿透 (Passthrough) 是指显现经过摄像头拍摄到实在空间,这样人们可以经过穿透与周围环境保持联系。

窗口

每个运用程序可以有一个或多个窗口,窗口可以包括传统视图和控件以及 3D 内容,答应混合和匹配 2D 和 3D。

这些 SwiftUI 场景,跟普通 macOS 窗口相同可以调整巨细和重排方位,比方人们可以依照自己的喜好在当时空间中从头放置窗户。

卷答应运用程序在界说的规模内显现 3D 内容,并与其他运用程序同享空间。

卷十分合适展现 3D 内容,例如棋盘。人们可以在空间中从头定位卷,并且可以从不同的视点观看它们。

卷是 SwiftUI 场景,答应您以了解的办法进行布局,并且它们运用 RealityKit 的强壮功用来显现 3D 内容。

比方在观看视频或玩游戏时集中注意力,您或许期望更好地操控运用程序的沉溺程度,可以经过翻开一个专用的完好空间来完结此操作,其间运用程序的窗口、卷和 3D 方针是仅有出现在视图中的方针。

在完好空间中,还可以运用 ARKit 的 API。

例如,除了体系供给的手势之外,还可以取得更详细的骨骼手部盯梢,以真正将人手的结构融入到您的体会中。

运用完好空间的几种不同办法

  • 可以运用穿透来接地实际国际中的内容,并使人们与周围环境保持联系。

当播映 Spatial Audio 并经过 RealityKit 烘托 3D 时,将主动运用设备不断更新对房间的了解,将视觉和声音融入人们的周围环境,让他们感觉这些虚拟方针的确属于他们的房间。

  • 可以挑选烘托到彻底沉溺式的空间以填充整个视界。

这使运用程序可以经过自界说虚拟方针的照明以及挑选音频特征的才能来灵敏地完结运用程序的创意

SDK 供给了灵敏的东西集来构建可以跨过连续沉溺感的运用程序。

交互

在 vision OS 上,咱们只需用眼睛和双手就可以与运用程序进行交互。

  • 人们可以经过检查按钮并用手指敲击来进行挑选来与按钮进行交互。
  • 人们还可以在 3D 空间中伸出手并触摸同一个按钮。

关于这两种交互,都可以运用多种手势,例如点击、长按、拖动、旋转、缩放等等。

体系会主动检测这些并生成触摸事情供运用程序呼应。

手势与 SwiftUI 可以很好的集成,相同的手势 API 可以与 RealityKit 实体无缝协作,可以轻松地直接与 3D 场景元素进行交互。

例如,这或许有助于将旗帜直接放置到该 3D 模型上,或许想象一下操控虚拟拉链,或许您或许想要交互并捡起虚拟棋子。

现在,假如您想玩保龄球游戏或将人们的手变成虚拟俱乐部,您可以经过 ARKit 的骨骼手部盯梢来完结。

vision OS - 开始构建空间计算应用程序

在这里,咱们可以看到一个示例,怎么运用水龙头将立方体堆叠在桌子上,然后用手将它们砸到桌子上。

这是一种强壮的办法,您可以将特定于运用程序的手动输入带入体会中。

最后,体系主动将来自无线键盘、触控板和辅助功用硬件的输入直接带入您的运用程序,并且游戏操控器结构还答应您增加对无线游戏操控器的支撑。

SharePlay

vision OS - 开始构建空间计算应用程序

协作和一起探究事物是空间核算的根本组成部分。

vision OS - 开始构建空间计算应用程序

咱们经过 SharePlay 和小组活动结构来做到这一点。

在 vision OS 上,就像在 macOS 上相同,人们可以同享任何窗口,就像这种“快速检查”体会相同。

当人们同享 Quick Look 3D 模型时,咱们会在参与者之间同步方向、份额和动画,以便在不同地点时轻松协作。

当人们就其空间中显现的并且他们实际指向的内容进行协作时,SharePlay 会话中的每个人都具有相同的体会十分重要。

这可以完结天然办法的参阅,例如对某个物体做手势,并增强身体在一起的感觉。

vision OS - 开始构建空间计算应用程序

咱们在体系中增加了同享上下文的概念,体系办理此同享上下文,协助保证 SharePlay 会话中的参与者都能以相同的办法体会内容。

可以运用空间人物模板进一步自界说人们体会您的内容的办法。

要了解更多信息,请观看咱们有关为此渠道规划和构建空间 SharePlay 体会的会议

Design spatial SharePlay experiences – WWDC23

Build spatial SharePlay experiences – WWDC23

隐私

鉴于该设备对周围环境和人有许多深化的了解,咱们设置了许多架构来维护人们的隐私。

隐私是辅导该渠道规划的核心准则,同时使开发人员可以轻松运用 API 来运用设备的众多功用。

体系不会答应运用程序直接拜访来自传感器的数据,而是为您履行此操作,并为运用程序供给事情和视觉提示。

例如,体系知道 3D 空间中某人的眼睛方位和手势,并将其作为触摸事情传递。

此外,当视图成为重视焦点时,体系会在视图上出现悬停作用,但不会与用户正在检查的运用程序进行通讯。

vision OS - 开始构建空间计算应用程序

在许多情况下,体系供给的行为足以让您的运用程序呼应交互,假如的确需求拜访更敏感的信息,体系会首要征求人们的许可。

例如,请求用户答应拜访场景了解以检测墙壁和家具,或拜访骨骼手部盯梢以将自界说交互引进您的运用程序。

开发东西

Xcode

vision OS 依然运用 Apple 的集成开发环境 Xcode。

vision OS - 开始构建空间计算应用程序

Xcode 供给了一整套用于开发运用程序的东西,包括项目办理支撑、UI 可视化修改器、调试东西、模仿器等等。

Xcode 还附带渠道 SDK,它供给了用于开发运用程序的全套结构和 API。

假如源文件包括 SwiftUI 预览供给程序,预览画布将主动在 Xcode 中翻开。

预览画布已扩展为支撑 3D,答应您可视化场景的 RealityKit 代码,包括动画和自界说代码。

这可以缩短迭代时间,在修改实时代码并直接检查更改和调整的成果时为您的运用程序找到正确的外观和感觉。

预览反映了代码更改,可以轻松检查代码中快速试验的成果。

Xcode 预览还具有方针形式,答应快速预览 3D 布局 ,例如检查布局是否合适视图的边界。

这关于运用传统 UI 和新 3D 视觉作用构建严密集成的场景十分有用。

vision OS - 开始构建空间计算应用程序

模仿器是运转和调试大多数运用程序以及在开发过程中运用十分可预测的环境快速迭代的好办法。

可以运用键盘、鼠标或兼容的游戏操控器在场景中移动和环视。

经过运用模仿体系手势,可以轻松地与您的运用程序进行交互。

该模仿器具有三个不同的模仿场景,每个场景都有白天和夜间照明。

咱们还扩展了 Xcode,以进行调试时支撑多种运转时可视化,然后协助经过简略地检查场景来快速了解和盯梢错误。

在这里,咱们可以看到平面预览,包括这些平面的语义以及场景中的磕碰形状。

经过 Xcode 中的调试器可以轻松切换想要重视的可视化作用。

Instruments

vision OS - 开始构建空间计算应用程序

当需求完善运用程序的功用和呼应才能时,咱们可以运用 Instruments 等了解的东西。

Instruments 是 Xcode 中包括的一个强壮的功用分析东西。

RealityKit Trace

关于空间核算,Instruments 15 包括一个新模板 RealityKit Trace,为渠道上的新行为供给更多、更深化的见地。

RealityKit Trace 模板具有新东西,使开发人员可以了解其运用程序的 GPU、CPU 和体系功耗影响,并辨认功用热门。

可以轻松调查和了解帧瓶颈,并将其追溯到重要方针,例如提交的三角形总数或模仿的 RealityKit 实体数量。

这可以快速找到并解决潜在的功用问题。

有关更多详细信息,请检查“知道 RealityKit Trace”会议。

Meet RealityKit Trace – WWDC23

Reality Composer Pro

vision OS - 开始构建空间计算应用程序

Xcode 中推出了一种名为 Reality Composer Pro 的新开发东西,用于预览并为运用程序预备 3D 内容,协助概览一切资产以及它们怎么在场景中组合在一起。

咱们增加到 RealityKit 的一项新功用是粒子,可以运用 Reality Composer Pro 中的作业流程来创作和预览它们。将粒子增加到场景中可以供给运动、生命和无限的或许性,比方云、雨和火花这些作用可以在短时间内快速构建。

vision OS - 开始构建空间计算应用程序

该东西也可以将音频增加到场景中并将它们与方针相关起来。

在空间上预览音频,这会适配整个场景的形状和上下文,比方示例中空间音频具有空间方向特性。

大多数虚拟方针将运用 RealityKit 的根据物理的材质来表示各种实际国际的材质。

RealityKit 运用传感器数据将实际国际的照明信息输入到这些资料中,将它们融入人们的周围环境。

RealityKit 还供给了一些额定的规范资料,供您的运用程序在常见场景中运用。

当有十分详细的需求时,可以运用开放规范 MaterialX 在 Reality Composer Pro 中创作自界说材质。

vision OS - 开始构建空间计算应用程序

可以经过节点图来完结此操作,无需触摸任何代码,并直接在视口中快速预览它们。

您可以在“探究 Reality Composer Pro 中的资料”课程中了解更多相关信息。

当您对 3D 内容感觉良好时,您可以将场景发送到您的设备并直接测试您的内容,乃至不用构建运用程序。

要了解更多信息,请观看“知道 Reality Composer Pro”会议。

Meet Reality Composier Pro – WWDC23

Unity

另一个可用的选项是 Unity。

vision OS - 开始构建空间计算应用程序

Unity 使您可以运用了解的作业流程编写空间核算运用程序,而无需任何插件。

可以运用现有内容来推进新的沉溺式体会。

要了解更多信息,请观看这些课程,了解怎么运用 Unity 编写沉溺式运用程序。

构建运用程序

有两种办法可以开端构建空间核算的运用程序

  • 从头开端规划一个全新的空间运用程序

  • 从现有的运用程序想要引进这个新的空间渠道

构建全新运用程序

在 vision OS 中挑选 App 模板。

vision OS - 开始构建空间计算应用程序

挑选初始场景类型。

  • 窗口

这会为您生成初始发动代码,并且以后可以轻松增加其他场景。

vision OS - 开始构建空间计算应用程序

挑选沉溺式场景类型。

  • 无 (None)
  • 混合 (Mixed)
  • 渐进 (Progressive)
  • 全 (Full)

vision OS - 开始构建空间计算应用程序

默许情况下,您的运用程序将发动到同享空间。

假如挑选了沉溺式场景类型 ,则第二个场景将增加到您的运用程序中,并带有一个示例按钮,显现怎么发动到此完好空间。

vision OS - 开始构建空间计算应用程序

当您完结配置后,您会在 SwiftUI 中看到一个初始作业运用程序,其间显现了解的按钮与 RealityKit 烘托的 3D 方针混合在一起。

要了解更多信息,请观看“开发您的第一个沉溺式运用程序”会议。

Develop your first immersive app – WWDC23

vision OS - 开始构建空间计算应用程序

咱们还发布了代码示例,每个示例都阐明晰不同的主题,展现了怎么构建融合 3D 视频和空间音频的同享、沉溺式播映体会。

Happy Beam 是一个示例,阐明怎么创立一款游戏,运用沉溺式空间(包括自界说手势)与朋友一起创立风趣的游戏。

Hello World 展现了怎么运用 3D 地球仪在不同的视觉形式之间进行转化。

现有运用程序引进空间核算

在此渠道上从头开端构建和规划运用程序供给了轻松接受空间核算概念的机会。

但是,你们中的一些人或许具有想要引进空间核算的现有运用程序。

vision OS - 开始构建空间计算应用程序

从一开端,iPad 和 iPhone 运用程序的外观和感觉都很棒。

假如您的运用程序支撑 iPad,则该变体将优于 iPhone,尽管彻底支撑仅 iPhone 的运用程序。

让咱们看一下模仿器中显现的食谱运用程序。

尽管该渠道有自己的深色风格,但 iPad 和 iPhone 运用程序保留了浅色形式风格。

Windows 可以缩放以方便运用,并且可以处理运用程序的旋转,让您可以看到不同的布局。

要了解更多信息,请观看“在同享空间中运转 iPad 和 iPhone 运用程序”会议,了解体系的内置行为、功用差异以及怎么运用模仿器进行测试。

Run your iPad and iPhone apps in the Shared Space – WWDC23

vision OS - 开始构建空间计算应用程序

运转现有的 iPad 或 iPhone 运用程序仅仅是开端。

只需单击一下即可轻松在 Xcode 项目中为此渠道增加方针。

之后,咱们只需挑选方针设备,从头编译并运转即可。

从头编译后,您将取得本机间距、巨细和从头布局。

您的窗口和材质将主动移动到渠道的外观和感觉,保证在任何光线条件下的可读性,并且您的运用程序可以运用内置功用,例如杰出显现自界说控件。

代码示例

从 Hello World 开端,探究一些可以集成到运用程序中的功用。

快速阅读

vision OS - 开始构建空间计算应用程序

在模仿器中运转该运用程序后,Hello World 将发动,并在咱们面前翻开一个进入同享空间的窗口。

这是一个了解的窗口用 SwiftUI 制造,它包括不同的元素,例如文本、图画和按钮。

运用点击手势可以在运用程序内进行导航,调查咱们的新视图怎么嵌入 3D 内容。

SwiftUI 和 3D 内容现在可以无缝协作,回来咱们的主窗口并挑选行星地球给咱们带来了一个新的视图。

vision OS - 开始构建空间计算应用程序

出现一个新元素,这是卷。

它包括地球的 3D 模型以及一些 UI 元素。

vision OS - 开始构建空间计算应用程序

经过移动窗口栏,可以在周围的任何方位调整音量的方位。

再次回来主窗口并挑选“检查外层空间”会约请咱们进入太阳系。

点击进入全沉溺的沉溺式风格,看到示例烘托了地球并调暗了穿透,使咱们可以专心于内容,而不会遭到周围环境的搅扰。

现在咱们现已看到了它的实际作用,让咱们分解 Hello World 的一些功用,并向您展现怎么在您自己的运用程序中运用这些概念。

vision OS - 开始构建空间计算应用程序

有多个元素:窗户、卷和空间。

vision OS - 开始构建空间计算应用程序

您可以将其视为您的运用程序可以用来上下调整的规模,详细取决于在特定时间运用您的运用程序的人最合适的内容。

您可以挑选在同享空间中出现一扇或多扇窗户,让人们愈加感同身受。他们可以看到穿透,并可以挑选并排放置其他运用程序。

或许您可以挑选让您的运用程序彻底占据空间来提高沉溺感。

当您规划用于空间核算的运用程序时,找到最合适您的运用程序在给定时间体会的元素并在它们之间进行灵敏调整是一个重要的考虑要素。

窗口

窗口作为您的运用程序的起点,它们是运用场景运用 SwiftUI 构建的,并且包括传统的视图和控件。

在 vision OS 上卷支撑混合 2D 和 3D 内容,3D 内容可以与 2D UI 一起在窗口中出现。

窗户可以在空间中调整巨细和方位。

回到代码示例。

在 Hello World 中,内容视图包括咱们的 SwiftUI 图画、文本和按钮,以及号召性用语以取得更感同身受的内容。

创立窗口就像将 WindowGroup 增加到场景相同简略。

在 WindowGroup 内,咱们将显现内容视图。

咱们的内容视图可以增加 3D 内容,为您的运用带来新的深度维度。

为此,您可以运用新的 Model3D 视图。

Model3D

vision OS - 开始构建空间计算应用程序

Model3D 类似于图画,可以轻松在运用程序中加载和显现由 RealityKit 烘托的精巧 3D 内容。

要将 Model3D 增加到您的视图中,咱们经过传递卫星模型的称号来初始化 Model3D。

这样,Model3D 将查找并加载模型,并将其放入视图层次结构中。

现在,此窗口已将卫星嵌入到视图中,并且可以看到它从 z 轴出来,为运用程序增加了新的深度维度。

手势辨认器

vision OS - 开始构建空间计算应用程序

现在咱们现已增加了卫星,咱们可以增加交互,交互从根本上内置于体系中并由 SwiftUI 供给。

SwiftUI 供给了在 Apple 渠道上现已了解的手势辨认器,例如 Tap、onHover 和 RotateGesture。

该渠道供给了专为 3D 交互而规划的新手势辨认器,例如 3D 空间中的旋转、点击 3D 方针等。

vision OS - 开始构建空间计算应用程序

看一下支撑与卫星交互的代码。咱们将启用空间点击手势,以便咱们可以抓住并移动卫星。

从 Model3D 开端,咱们现在可以增加手势。在内部,咱们增加一个针对卫星实体的 DragGesture。然后咱们可以运用从更新闭包传入的值来移动卫星。

回到烘托卫星的卫星视图,请注意,DragGesture 答应我点击并拖动模型,随着我的交互而移动。

vision OS - 开始构建空间计算应用程序

卷是窗口的扩展,是一种新型窗口,十分合适 3D 内容。它们可以保管多个包括 2D 或 3D 内容的 SwiftUI 视图。

尽管卷可以在完好空间中运用,但它们实际上是为同享空间构建的,因此内容必须保留在卷的规模内。

vision OS - 开始构建空间计算应用程序

让咱们看看怎么向场景增加卷。您将首要创立一个新的 WindowGroup 并将其 windowStyle 设置为卷。

然后,您需求为其指定一个defaultSize,其间包括宽度、高度和深度特点。卷的单位可以用点或米来指定。

vision OS - 开始构建空间计算应用程序

让咱们看看这个在模仿器中的运转情况。当提交运用程序时,该卷被放置在面前。

该卷具有咱们指定的尺寸,以及渠道控件运用程序标题栏,显现咱们的运用程序称号,可以轻松辨认该卷属于哪个运用程序。窗口栏,可以定位音量。封闭按钮,点击时暂停运用程序,封闭音量。

目前,咱们的卷烘托了地球的 3D 模型,但您或许想要开端增加更多内容和不同的行为。

RealityView

RealityView 可以作为运用程序的一部分,RealityView 是一个可以增加到场景中的新视图,答应直接在 SwiftUI 中办理任意数量的实体。

SwiftUI 和 RealityView 让您可以经过连接到 SwiftUI 的保管状况和实体特点来轻松集成您的运用程序。

这使得您可以轻松地运用运用程序数据模型的实在来源来驱动 3D 模型的行为。

运用 RealityView 供给的转化函数可以轻松进行坐标空间之间的转化,并且 RealityView 供给了一种经过附件在 3D 场景中定位 SwiftUI 元素的办法。

    RealityView { <#inout RealityViewContent#>, <#RealityViewAttachments#> in
        <#code#>
    } update: { <#inout RealityViewContent#>, <#RealityViewAttachments#> in
        <#code#>
    } attachments: {
        <#code#>
    }

RealityView 初始化需求三个参数:make 闭包、update 闭包和附件 (Attachments) 视图生成器。

  • make 闭包答应您创立实体并将它们附加到根实体。

  • update 闭包,每逢视图的状况发生变化时就会调用它。

  • attachments 闭包中,可以增加带有标签特点的 SwiftUI 视图,该特点答应 RealityView 将视图转化为实体。

RealityView 附件

vision OS - 开始构建空间计算应用程序

现在,让咱们经过一个示例来了解怎么在 RealityView 中运用附件。

增加附件就像将 SwiftUI 视图放入 RealityView 的附件闭包中相同简略。

让咱们运用这个糕点的图标来代表 3D 地球上的一个方位。

关于每个附件,您必须增加一个标签来为附件命名。我将这个命名为 “pin ” 。

为了显现附件,将其增加到 RealityView 的内容中。我将在更新闭包中将其增加到场景的根实体中来完结此操作。

在这里,咱们可以看到咱们之前制造的附件,烘托在我最喜欢的面包店方位上方的地球上。

vision OS - 开始构建空间计算应用程序

正如咱们方才所看到的,运用 RealityKit 可以开释强壮的功用,例如 Model3D、RealityView、附件等等。

这些可以轻松集成到您的运用程序中 。这只是 RealityKit 功用的冰山一角。

假如您想了解更多信息,我鼓舞您观看“运用 RealityKit 构建空间体会”和“运用 RealityKit 增强您的空间核算运用程序”。

空间

vision OS - 开始构建空间计算应用程序

一旦运用程序翻开专用的完好空间,体系就会躲藏一切其他运用程序,只留下您的运用程序可见。

现在,您可以将运用程序的窗口、卷和内容放置在您周围的任何方位。

借助 ARKit 和 RealityKit,虚拟内容乃至可以与周围环境进行交互。

可以将一个虚拟球扔进房间,调查它从墙上弹起,然后在地板上滚动。

经过增加手部盯梢,您可以构建自界说手势和交互,或将内容相关于人们的手放置。

其间许多功用都来自 ARKit。

要更深化地了解怎么在运用程序中运用它们,请必须检查“知道 ARKit 进行空间核算”会议。

Meet ARKit for spatial computing – WWDC23

沉溺感类型

vision OS - 开始构建空间计算应用程序

经过空间,您的运用程序还可以供给不同等级的沉溺感,详细取决于创立时挑选的款式。沉溺式风格是一个可以在完好空间中传递的参数。

有两种根本款式,称为混合 (mixed) 和满 (full) 的。

  • 混合风格将运用程序的内容分层在穿透之上。
  • 完好款式躲藏穿透并仅显现运用程序的内容。

还可以经过挑选渐 (progressive) 进式将两者结合起来。这种风格开端答应一定程度的穿透,但用户可以经过旋转坐落设备顶部的数字表冠将沉溺等级一直更改为彻底沉溺。

回到咱们的示例来探究沉溺式风格。我将从混合风格开端,看看作用怎么。

并且由于 Full Space 是一个 SwiftUI 场景,所以我可以运用 RealityView 来显现地球。

vision OS - 开始构建空间计算应用程序

这是从高轨迹观看的地球,这是我在运用程序中显现场景的办法。

请注意,我实际上并没有指定沉溺式风格。这是由于当您创立沉溺式空间时,SwiftUI 默许采用混合风格。

咱们还可以经过增加不同的沉溺式风格来使您的运用程序彻底沉溺式。这次,我将运用沉溺式“完好” 。

vision OS - 开始构建空间计算应用程序

在咱们的 ImmersiveSpace 的结尾增加沉溺式风格很简单。咱们将沉溺式风格存储在状况变量中,然后将类型设置为 full。

由于咱们想让人们挑选何时进入沉溺式体会,所以最好增加一个按钮来让人们决议是否要进入这种沉溺式风格。

vision OS - 开始构建空间计算应用程序

回到咱们的运用程序,我将 Hello World 从单个窗口彻底沉溺其间,使咱们可以从任何视点检查地球。

总结

本文介绍了空间核算的基础知识,开发东西中的新特性,以及怎么构建空间核算运用程序并给出了代码示例,一步步创立对应的元素。

有一些很棒的会议,应该是您的下一站。

关于空间规划的准则 – WWDC23

知道空间核算中的 SwiftUI – WWDC23

运用 RealityKit 构建空间核算运用程序 – WWDC23

知道 Reaity Composer Pro – WWDC23