全新的 visionOS

阐明:介绍来历 Platfroms State of the Union(1:02:00~结束 visonOS 部分)

  • 概述:

    • visionOS 是苹果推出的一种空间核算操作体系,经过结合 SwiftUI、RealityKit 和 ARKit 等技能,为开发者供给了构建具有 3D 空间体会的运用程序的才能。visionOS 的根本元素包括窗口、体积和空间,开发者能够运用这些元素构建可在用户空间内存在的运用程序。一起,visionOS 还支撑现有的 iPad 和 iPhone 运用程序,并供给了扩展的 SwiftUI、RealityKit 和 ARKit 功用,使开发者能够为 Vision Pro 创立具有深度、交互性和沉溺感的运用程序。此外,visionOS 还供给了强大的开发者东西,包括 Xcode Previews、模仿器和 Mac Virtual Display 等,以支撑开发者在 Vision Pro 上进行运用程序的开发和测验。
  • 关键词:

    • Spatial Computing(空间核算)、SwiftUI、RealityKit、ARKit、Window(窗口)、Volume(体积)、Space(空间:Shared Space、Full Space)、开发者东西。
  • Fundamentals(根本元素)

    • 3个根底元素:Window、Volume、Space。Space包括:Shared Space、Full Space。
  • 空间

    • Shared Space (同享空间)

      • 默认情况下,运用程序会发动进同享空间。就像 Mac 桌面上的运用相同,Shared Space 是运用程序并排存在的当地。用户有充分的权限将运用程序放到任何他们想要的方位上。

        Learn about visionOS

        图1 – Shared Space 简图

      • 从上图能够看到,同享空间中有几个根本的构成元素分别是 Window、Volume、3D Object,下面一一介绍。

    • Full Space (专用空间)

      • 在游戏、观影等需求独立空间的交互场景下,你能够独自开启一个专用空间。在专用空间中,你能够创立上述Window、Volume、3D 物体等根本元素去与用户交互。
  • Window(窗口)

    • 在 visionOS 的同享空间中,你的运用能够开启一个或多个由 SwiftUI scenes 构建的 Window。Window 不仅能容纳传统的 Views 视图和交互控件,而且还支撑 3D 模型 和 RealityViews 的展示。这就意味着,在 Window 中答应 3D 内容与 2D 内容并存显现。
      Learn about visionOS

      图2 – Shared Space Window 简图

  • Volume(体积)

    • Volume 是一个三维体积容器用于展示 3D 物体,它也是由 Swift UI scenes 构成。Volume 能在同享空间中恣意移动并从任何角度观察到。

      Learn about visionOS

      图3 – Shared Space Volume简图

visionOS 架构图(非本文视频来历获取)

  • 1、CORE OS:macOS、iOS、iPadOS 的整合根底上,额定新增了许多才能来支撑空间核算和低延迟的要求。
  • 2、REAL-TIME SUBSYSTEM:新的实时执行引擎,能担任高性能需求任务。
  • 3、FOVEATED RENDER:动态凝视点烘托管线,能保证每一帧上你眼睛凝视的当地都有最优化的图画质量。
  • 4、MULTI-APP 3D ENGNIE:Apple 主页多 app 专用的 3D 引擎,能让不同的 app 一起在一个模仿器中运转。

Learn about visionOS

图4 – visionOS 架构示意图

visionOS SDK

  • 1、SwiftUI 、UIKit:用于构建用户界面。
  • 2、RealityKit:用于烘托 3D 内容、动画和视觉作用。
  • 3、ARKit:环境空间了解。

Learn about visionOS

图5 – visionOS SDK 架构

SwiftUI 扩展

  • 现在你能够为窗口内增加深度或 3D 方针。
  • ZStack的才能扩展:在 iOS 和 macOS 中,通用用 ZStack 用来布局UI。在 visionOS中,你能够用深度信息将子视图进行分离,只需求将代码中的 ZStack 中的元素,运用新的z-offset特点增加深度的细微改动,就能够让你的二维运用具有三维的立体感。较大的 offset View 将会展示在靠前的方位。你能够运用深度信息的不同去用来强调或表明模态的改动。例如:在挑选并展示选项的详情的场景中,你能够依据宽、高和深度去做更多的操控已凸显选中的元素。
ForEach(Fruit.allCases) { fruit in
    .offset(z: selectedFruit == fruit ? 100 : 0)
}

Learn about visionOS

图6 – visionOS 中 运用 SwiftUI ZStack 构建深度差视图的布局示意图

  • Gesture的才能扩展:在 visionPro 中,手势能识别到额定空间。咱们一般都习惯于在屏幕上拖动方针,现在针对 Gesture 的才能扩展,让人们能在他们的物理空间的任何当地移动或旋转物体。当然,你也能够运用 SwiftUI 创立一个 Volume 独立于你的运用窗体之外,当运转在 Shares Space 中时与其他运用程序并排放置。Full Space 中,你能够随意放置 SwiftUI 创立的 windows、volumes 和 3D物体,与其交互。

  • 凭借 RealityKit 的烘托才能,SwiftUI 能烘托身临其间的体会。你能很简单的混合 SwfitUI 和 RealityKit API 调用。你能够运用 ornaments、material、hover effect 等 UI 增强功用去增加体会。

    • ornaments(装修):答应你将 UI 组件附加到 windows 和 volumes 的边际,它们充当着类似 toolbars 和 menu 的角色。

      Learn about visionOS

      图7 – ornaments 收起作用图(左侧悬浮附件控件

      Learn about visionOS

      图8 – ornaments 打开作用图(左侧悬浮附件控件

    • hover effects(悬停作用):会高亮 UI 元素,用于响运用户看到的 UI 元素。体系空间默认就有 hover effects 作用,针对你自定义的控件,你能够操控控件呼应交互时是高亮还是发光。

    • material(原料):UI 元素会主动适运用户周围的国际,进行动态模糊和高亮,进而让你的运用程序有更高的可读性。【通俗的来讲,会主动依据当时物理空间的环境光源的改动或 UI 元素相对于光源的物理空间方位改动去从头烘托 UI 元素,让其有跟随环境改动的实在质感,让你感觉展示在你面前的 UI 便是一个现实国际实在的存在的东西。Spatial Computing 初显现 。】

      视频1 – 原料、UI元素随环境光源自适应改动作用

RealityKit

  • 从头开始构建用于烘托空间体会,它是Apple 的 3D 烘托引擎。早在 2019 年, RealityKit 和 SwiftUI 就作为独自的 framework 进行介绍了,在 vision Pro 中,它们深度交融了。

    • (1)你能够结合运用它们用来构建炫酷且体积庞大的用户界面。3D 方针 能够绑定 SwiftUI views 和 state,借此能够将2D 和 3D 视觉元素进行无缝联接。
    • (2)能够依据物理照明条件进行调整,并经过在地板和桌面上投射暗影来营造现实体会。
    • (3)能够在 3D 场景中创立新的入口。【Keynote 中展示的恐龙作用】
    • (4)烘托令人难以置信的清晰文件,以便用户舒适的阅读。
    • (5)可自定义的原料体系,能够创造出令人惊叹的视觉作用。
    • (6)Dynamic foveation(动态凝视烘托):高效的烘托才能。运用眼动追踪以十分高的保真度挑选性的烘托用户凝视的区域,下降外围内容的烘托成本。
    • (7)答应设置物理特点例如:金属原料、反光值,以烘托令人惊叹的视觉作用。
    • (8)答应自定义导入依据图画的照明资源或 IBL。
    • (9)支撑 MaterialX。
    • (10)全新的 SwiftUI view RealityView:能够在 Window、Volume 和 Space 中运用,你能够运用RealityView 在你操控的场中任何当地放置 3D 物体;支撑在 3D 物体上附加物 2D SwiftUI views。

ARKit

  • 运用 ARKit 能够让你充分运用用户的环境。

    • (1)ARKit 了解用户周围的空间,答应运用的内容与环境空间进行交互。例如:球从地板上弹起或水溅到墙上。

    • (2)ARKit 托管着 visionOS 的实时算法,为很多中心的体系功用供给支撑。这些算法从始至终一直在运转着,意味着你的运用程序能主动从所处的同享空间中获取 ARKit 的支撑。持久性和国际映射由体系处理,分隔、遮罩和环境照明灯展主动适用于整个物理空间。

    • (3)在用户的授权下,ARKit 功用能够直接用于你创立的 Full Space 中的运用程序。在内的运用程序能够经过启用 ARKit 的以下才能(运用了与 iOS 上 ARKit 相同的 Anchor 概念,这将你使你能讲你现有的 ARKit 运用很便利地整合 visionOS 中)与房间进行实在互动。

      • Plane estimation(平面预算):

      • Scene reconstruction(场景重建):

      • Image anchoring(图画锚点):

      • World tracking (国际追踪):

      • Skeletal Hand tracking(手部追踪):为你的 app 体会创立自定义的手势交互;构建虚拟用户的双手以增强交互体会;与 iOS 上引进的骨骼模型相同,供给相同的关节定位和方向。

      • Learn about visionOS

        图9 – 运用手部追踪显现虚拟用户手示意图

  • Accessibility(无障碍规划)

    • Spatial computing(空间核算)为无障碍拜访开辟了巨大的新时机:

      • 1、用户能够彻底经过眼睛、语音或两者结合与Vision Pro进行交互。
      • 2、用户能够挑选运用手指、手腕或头部作为代替指针来阅读 Vision Pro
    • 开发者能够运用熟悉的技能使其运用程序具有辅佐功用:

      • 1、Accessibility Inspector:运用Accessibility Inspector剖析和陈述visionOS运用程序中的辅佐功用问题。
      • 2、内置于结构中的辅佐功用支撑使开发者能够轻松地为具有残障的用户带来visionOS运用程序和体会。
    • 开发者能够经过增加标签和描绘来协助 VoiceOver 向瞎子或视力低下的用户描绘运用程序中的方针:

      • 1、标签和描绘能够供给方针的外观等信息

        • let container = Entity()
          let sphere = ModelEntity(mesh: .generateSphere(radius: 0.1), materials: [blueMaterial])  
          // 增加传达信息的标签 
          var accessibilityComponent = AccessibilityComponent()
          accessibilityComponent.isAccessibilityElement = true
          accessibilityComponent.traits = [.button] 
          accessibilityComponent.label= "Sphere" 
          accessibilityComponent.value = "A big blue marble"
          sphere.components[AccessibilityComponent.self] = accessibilityComponent
          container.addChild(sphere) 
          content.add(container)
          
      • 2、能够依据用户偏好运用动态类型、削减透明度和头部锁定内容的代替办法来使运用程序更具辅佐功用。

    • 总结:visionOS 的辅佐功用使得空间核算变得愈加无障碍。用户能够经过眼睛、语音或两者结合与Vision Pro 进行交互,还能够挑选运用手指、手腕或头部作为代替指针来阅读 Vision Pro。开发者能够运用熟悉的技能使其运用程序具有辅佐功用,并经过 Accessibility Inspector 剖析和陈述辅佐功用问题。内置于结构中的辅佐功用支撑使开发者能够轻松地为具有残障的用户带来 visionOS 运用程序和体会。经过增加标签和描绘,开发者能够协助 VoiceOver 向瞎子或视力低下的用户描绘运用程序中的方针,并依据用户偏好运用动态类型、削减透明度和头部锁定内容的代替办法来使运用程序更具辅佐功用。这些 API 和东西使得开发者的运用程序在使全球用户都能够享受到空间核算的无障碍性方面发挥巨大作用。

Key technologies(关键技能)

  • 光照和暗影:

    • 1、visionOS 经过创立用户环境的 3D 模型完成运用与周围国际的天然交融。
    • 2、运用无需拜访相机数据即可完成逼真的光照和暗影作用。
  • Spatial Audio(空间音频):

    • 1、visionOS 运用 3D 模型和 PHASE 空间音频引擎完成下一代空间音频。
    • 2、PHASE 引擎结合声响传感和 3D 场景了解,创立空间声学特征的具体模型。
    • 3、空间声学特征的具体模型与苹果的个性化空间音频技能相结合,主动为每个人及其周围环境量身定做体会。(当声源和用户在环境中移动时,PHASE 会实时更新其音频光线跟踪模仿。)
      Learn about visionOS

      图10 – visionOS 中空间音频示意图

  • 用户输入:

    • 1、用户输入在 visionOS上是主动进行的,并经过规划保护用户隐私。
    • 2、Hover effects 主动出现在运用 SwiftUI 或 RealityKit 构建的 UI 元素上。
    • 3、用户经过点击手指进行交互,无需知道用户在点击之前看向哪里。
  • 同享与协作:

    • 1、Vision Pro 用户能够在 FaceTime 通话中与其他参与者同享运用窗口。
    • 2、经过 SharePlay 完成运用的同享体会。
    • 3、运用 GroupActivities API 能够决议运用如何进行协作。
      Learn about visionOS

图11 – 适配了 GroupActivities 的 SharePlay API 的运用窗口额定操作选项示意图

  • Spatial Personas:

    • 1、Spatial Personas 使 Vision Pro 用户以三维方式出现在 FaceTime 通话中。

    • 2、供给同享和共同的空间上下文,让用户感觉像是在同一个物理空间中。

    • 3、能够在运用中运用 Spatial Personas 完成更天然的同享和协作体会。

    • 4、运用程序能够响运用户的物理动作,使操作感觉愈加天然,例如:在自在方式的白板旁站立或在桌面游戏中移动棋子。

      Learn about visionOS

      图12 – Spatial Personas 开发版预览,与其他用户在统一空间中共同协作,能实时识别到其他用户的身体动作

    • 总结:Spatial Personas 是 Vision Pro 用户能够运用的功用,它运用户能够摆脱熟悉的 FaceTime 分割屏,感觉愈加感同身受,就像他们聚集在同一个物理空间中。visionOS 保证用户和运用程序具有同享和共同的空间背景。您的运用程序能够运用这个新的上下文来运用 SharePlay。现在,除了在用户之间同步运用程序的更改之外,还能够响运用户的物理动作,使站在自在方式的白板旁或在桌面游戏中移动棋子等操作感觉愈加天然。

Developer Tools

  • Xcode 作为开发东西和调试东西:

    • 1、运用Xcode作为 visionOS 开发的中心东西。
    • 2、Xcode Previews 可在编辑器中快速迭代外观。
    • 3、模仿器供给强大的环境来运转和调试运用。
    • 4、Mac Virtual Display 可将 Mac 的高保真 4K 虚拟显现器引进到 visionOS 中,随后能够运用 Xcode 的模仿器进行运用的开发和调试。
  • Reality Composer Pro 用于 3D 内容制作和预览:

    • 1、运用 Reality Composer Pro 预览和准备 visionOS 运用中的 3D 内容。
    • 2、导入和组织 3D 模型、动画、图画和声响。
    • 3、与 Xcode 紧密集成,优化财物以在 visionOS 上运用。
    • 4、能够在 Vision Pro 上预览、调整和推送新的更改。
  • 测验流程:

    • 1、运用 TestFlight 进行 Vision Pro 的 beta 测验。
    • 2、将运用提交到 TestFlight 进行测验,用户能够从原生的 TestFlight 运用中供给反应。
    • 3、Vision Pro 用户能够拜访适用于 iPad 和 iPhone 运用程序的 beta 版本。
  • 与 Unity 协作,深度集成:

    • 1、与 Unity 深度协作,使 Unity 创立的运用能够在 Vision Pro 上运转。
    • 2、Unity 的开发东西和功用能够与 Vision Pro 渠道完美结合。
    • 3、Unity-created 运用能够与其他 visionOS 运用在 Shared Space 中共存。
      Learn about visionOS

    图13 – Unity 运用与 visionOS 运用在 Shared Space 中共存示意图

Build visionOS Apps(构建 visionOS 运用)

  • iPad、iOS 中的 2D 运用能快速便利扩展的扩展到 visionOS中,成为一个可缩放的窗口。中心结构上,visionOS 包括许多与 iPadOS、iOS 相同的根底库。

集成你的运用到 vision Pro

  • 第一步:启用“xrOS Device”支撑并重构建运用

    • 打开 Xcode,挑选你的主 Target,General->Supported Destinations中点击+号,挑选“xrOS Device”,在跳转出来的“Enable Destination Support”弹框中,挑选“Enable”。

      Learn about visionOS

      图14 – Xcode 启用 xrOS Device 示意图

    • 启用之后,会发现可选构建设备中多了“xrOS Device”,挑选“xrOS Device”作为构建方针,从头构建运用,构建成功后,会发动一个具有 visionOS 外观和原料感的窗体,而窗体中出现了你的运用程序。

      Learn about visionOS

      图15 – Xcode xrOSDevice模仿器运转运用示意图

第二步:将你的运用扩展到 Windows、Volumes 或 Spaces中

  • 运用 SwiftUI、RealityKit、ARKit 拓展或创立你的 visionOS 运用。