WWDC Quick Look 💓 By SwiftGGTeam
Build next-generation experiences with visionOS 27

Build next-generation experiences with visionOS 27

观看原视频

Highlight

visionOS 27 为开发者提供了三条路径将内容带到 Apple Vision Pro:直接兼容现有 iOS/iPadOS 应用、用 RealityKit 和 Reality Composer Pro 3 原生构建空间体验、以及通过 Spatial Preview 和 Foveated Streaming 将 Mac 或 PC 上的重度内容串流到头显,同时 RealityKit 新增了物理空间光照、布料模拟、高斯泼溅和自定义混响网格,Reality Composer Pro 3 引入了 AI 助手、Animation Graph、Script Graph 和 Navigation Mesh。

核心内容

从三条路径到 visionOS

以前想把内容带到 visionOS,选择很有限。要么把 iOS 应用勾选兼容模式直接上架,要么从零开始用 SwiftUI + RealityKit 重写。前者体验平庸,后者成本极高。(03:12

visionOS 27 把路径扩展成了三条:

  1. 兼容模式:现有 iOS/iPadOS 应用可以直接在 visionOS 运行,或在 Xcode 里添加 visionOS 部署目标重新编译。
  2. 原生空间计算:用 SwiftUI、RealityKit、Reality Composer Pro 构建,或用 CompositorServices 接入自定义渲染引擎;Unity、Unreal、Godot 也都支持 visionOS。
  3. 扩展串流:Mac 应用通过 Spatial Preview 框架把 3D 内容推送到头显;PC 应用通过 Foveated Streaming 框架串流 OpenXR 内容。(04:36

第三条路径是这次更新中最务实的变化。Kia 和 Innoactive 用 Autodesk VRED + NVIDIA CloudXR + Foveated Streaming 做汽车设计;Laminar Research 用 X-Plane 做飞行模拟训练。这些案例说明 Apple 终于承认:重度 3D 内容靠头显本地算力搞不定,PC 串流是刚需。(00:42

RealityKit:从视觉到听觉的全面升级

RealityKit 在 visionOS 27 里新增了四项核心能力。

物理空间光照(Physical Space Lighting) 让虚拟光源能照到真实世界的表面。演讲里展示了一个虚拟天文馆投影仪,星星和星云的光会随投影仪旋转投射到房间各处。底层用的是新的 Projective Textures API,可以给聚光灯附加纹理,模拟彩色玻璃投影或水下焦散效果。(07:25

布料模拟(Cloth Simulation) 让虚拟服装和织物有了真实的重量和垂感。演示中一个虚拟人体模特穿着长裙行走,裙摆自然摆动;拉动虚拟床单时,布料也会按物理规律折叠。(08:03

自定义混响网格(Custom Reverb Mesh) 把空间音频的真实性推到了新高度。系统会根据场景中的木材、金属、石头等材质,精确模拟声音的吸收和散射。演讲里的虚拟乐队在博物馆演奏,声音用从代替从单一方向传来,四面八方填充整个空间。(08:33

高斯泼溅(Gaussian Splatting) 让开发者可以直接扫描真实物体并导入虚拟场景。演示里一盆小植物被扫描成 3D 高斯泼溅模型,连土壤的纹理都清晰可见。(09:04

Reality Composer Pro 3:美术和 TA 不再需要写 Swift

以前的 Reality Composer Pro 更像静态场景摆放工具,复杂逻辑必须回 Xcode 写代码。RCP 3 彻底改变了这个工作流。(09:51

AI 助手(Reality Composer Pro Assistant) 可以直接通过文本描述生成带材质和纹理的 3D 模型。演讲里演示了生成一碗干果并自动摆放到场景中的空碗里,还生成了 3D 蜡烛放在桌上。(10:25

Animation Graph 用状态机控制动画过渡。开发者可以在编辑器里可视化地设置 idle 到 walking 的过渡,并在头显里实时预览。(11:12

Navigation Mesh 自动生成可行走区域(蓝色网格),然后手动添加跳跃点、梯子和障碍物,让角色在场景中自动寻路。(11:31

Script Graph 用节点连线的方式处理交互逻辑。点击事件驱动角色移动,所有编辑都在 RCP 3 里完成,不需要打开 Xcode。Devs United Games 用几个节点就实现了 Aquascape 角色入场的动画,鱼游动时动画播放速度还会自动匹配实际速度。(11:55

Shader Graph 也大幅升级,新增了次表面散射(subsurface scattering),可以做出逼真的皮肤、眼睛、头发,或者冰面、传送门等特效。(12:49

Spatial Preview:Mac 内容一键投到头显

Spatial Preview 是一个 macOS 框架,让 Mac 应用可以把图片、文档和 3D 内容直接推送到 Apple Vision Pro,还支持 SharePlay 协作。(15:42

开发者可以在头显里自由走动、调整内容位置、修改材质覆盖、添加标注反馈。Cinema4D 和 SketchUp 已经集成了这个功能,实现了实时协作 3D 工作流。macOS 27 的 Preview 应用也内置了这个能力,用户开箱即用。(16:48

Foveated Streaming:用眼球欺骗带宽

Foveated Streaming 让 Apple Vision Pro 可以连接 PC 串流 OpenXR 内容。visionOS 自动把手部、控制器位置和麦克风数据发给 PC,PC 回传视频和音频流,体验与原生应用无异。(17:41

这个框架在 visionOS 26.4 已经发布,X-Plane 12、iRacing、Autodesk VRED 都已经接入。核心技术是注视点压缩:根据眼动追踪数据,视线焦点区域用高画质传输,周边视觉区域降低分辨率。协议底层用 NVIDIA CloudXR,支持 Wi-Fi 无线串流,不需要任何线缆或外接设备。(19:26

Apple 的实测数据:一天内可以让 OpenXR 应用跑起来,一周内可以集成 visionOS 独有特性。(20:07

物体追踪与空间配件

物体追踪(Object Tracking)在 visionOS 27 支持高帧率追踪,Create ML 新增了扩展训练选项提升手持物体的追踪精度,还新增了获取公制空间位姿的 API(不带显示校正),适用于高精度空间测量场景。这些功能同时下放到了 iOS。(21:09

空间配件(Spatial Accessories)是 visionOS 27 的新方向。开发者可以自己造配件:一个 LED 星座阵列(供头显追踪)、一个 IMU(捕捉方向和加速度)、一个蓝牙芯片(传信号)。配件还可以带按钮、触摸板和触觉反馈。DFRobot 和 MikroE 今年会推出现成参考硬件和开发套件。(23:21

演示里一个 3D 打印手电筒装了 DFRobot seeMote Cap,虚拟光束实时跟随物理手电筒移动;一个 MikroE Spatial Anchor R1 装在物理方向盘里,虚拟车辆跟着方向盘转动。(24:12

沉浸式媒体管线更新

Apple Immersive Video(AIV)支持视频点播和直播流。每帧超过 1 亿像素,90fps,立体 180 度拍摄。(25:38

Immersive Media Support(IMS)框架在 visionOS 27 新增了相机呈现覆盖命令、ImmersivePreviewRenderer API 和宽比例 portal 支持。新的示例代码演示了如何用静态注视点(static foveation)压缩双轨 QuickTime 视频,让高画质 AIV 可以在常规带宽下串流。(27:34

ASAF(Apple Spatial Audio Format)Production Suite 也更新了,新增了参考视频相对定位、Scene Compressor 插件、热力图绘制和空间过滤算法增强。(30:17

详细内容

Projective Textures API 的使用

场景:在 RealityKit 中为聚光灯添加投影纹理,模拟彩色玻璃或水下焦散效果。

import RealityKit

let spotlight = Entity()
var lightComponent = SpotLightComponent()
lightComponent.intensity = 5000
lightComponent.innerAngleInDegrees = 30
lightComponent.outerAngleInDegrees = 45

if let projectionTexture = try? TextureResource.load(named: "stained_glass") {
    lightComponent.projectedTexture = projectionTexture
}

spotlight.components.set(lightComponent)
spotlight.look(at: [0, -1, 0], from: [0, 2, 0], relativeTo: nil)

关键点:

  • SpotLightComponent 创建聚光灯组件,设置强度和内外锥角
  • TextureResource.load(named:) 加载投影纹理资源
  • projectedTexture 属性将纹理绑定到聚光灯,光线穿过纹理图案投射到场景表面
  • look(at:from:relativeTo:) 设置灯光方向和位置,从 [0, 2, 0] 照向 [0, -1, 0]

Foveated Streaming 的注视点渲染配置

场景:在自定义渲染引擎中启用注视点渲染,配合 CompositorServices 使用。

import CompositorServices

struct FoveatedLayerConfiguration: CompositorLayerConfiguration {
    func makeConfiguration(
        capabilities: LayerRenderer.Capabilities,
        configuration: inout LayerRenderer.Configuration
    ) {
        configuration.foveationEnabled = true
        configuration.foveationScaling = 0.6
        configuration.isStaticFoveation = false
    }
}

关键点:

  • CompositorLayerConfiguration 协议用于配置自定义渲染层
  • foveationEnabled = true 开启注视点渲染,系统会根据眼动追踪数据动态调整渲染分辨率
  • foveationScaling = 0.6 设置中央高分辨率区域的比例,值越小中心清晰区越小,越省带宽
  • isStaticFoveation = false 使用动态注视点(每帧根据眼球位置重算),设为 true 适用于视频流等固定焦点的场景

空间配件的追踪接入

场景:通过 Game Controller 框架连接空间配件,用 RealityKit 追踪其位姿。

import GameController
import RealityKit
import ARKit

// 监听空间配件连接通知
NotificationCenter.default.addObserver(
    forName: .GCControllerDidConnect,
    object: nil,
    queue: .main
) { notification in
    if let controller = notification.object as? GCController,
       controller.isSpatialAccessory {
        startTracking(controller)
    }
}

func startTracking(_ controller: GCController) {
    // 通过 RealityKit 或 ARKit 获取配件在空间中的位姿
    // 配件的 LED 星座供头显视觉追踪,IMU 提供方向数据
    // 蓝牙传输按钮和触摸板输入
}

关键点:

  • GCControllerDidConnect 通知在空间配件配对时触发
  • controller.isSpatialAccessory 判断控制器是否为空间配件(visionOS 27 新增属性)
  • 头显通过 LED 星座视觉追踪配件位置,IMU 提供加速度和方向数据
  • 蓝牙芯片传输按钮、触摸板和触觉反馈信号
  • 追踪频率匹配显示器的原生刷新率,低光环境和短暂遮挡下仍能稳定追踪

核心启发

1. 用 Spatial Preview 做 3D 设计评审工具

做什么:在 Mac 上的设计工具(如 Cinema4D、SketchUp)里做一个”一键投送到 Vision Pro”按钮,让设计师和客户同时在头显里围绕 3D 模型走动、标注、改材质。

为什么值得做:Spatial Preview 框架让 Mac 应用无需构建 visionOS 应用就能实现空间预览,加上 SharePlay 支持远程协作,设计评审的迭代周期可以从天缩短到分钟。

怎么开始:在 macOS 应用里引入 SpatialPreview 框架,用 SpatialPreview.start(configuration:) 推送 USDZ 内容,配置 supportsSharePlay = true 启用协作。

2. 用 Foveated Streaming 做数字孪生展示

做什么:把工厂或建筑的 BIM 模型放在 PC 上渲染,通过 Foveated Streaming 串流到 Vision Pro,让工程师在 1:1 比例下 walkthrough。

为什么值得做:BIM 模型动辄几千万面,塞进头显本地渲染不现实。Foveated Streaming 让 PC 端 Unreal Engine 或 Autodesk VRED 做重度渲染,头显只负责显示和交互,眼动追踪压缩让 Wi-Fi 串流足够流畅。

怎么开始:在 PC 端把 OpenXR 应用接入 NVIDIA CloudXR SDK,头显端用 visionOS 的 Foveated Streaming 框架配对。一天内可跑通基础串流,一周内可以叠加 ARKit 空间理解和 SwiftUI 界面。

3. 用 Reality Composer Pro 3 的 Script Graph 做交互原型

做什么:让美术和策划在 RCP 3 里用节点图搭完整个交互流程(点击开门、角色寻路、状态切换),程序员只负责把节点图导出后的核心逻辑用 Swift 重写。

为什么值得做:Script Graph + Animation Graph + Navigation Mesh 让非程序员也能做可运行的空间交互原型,大幅降低原型验证成本。AI 助手还能快速生成占位资产。

怎么开始:在 Reality Composer Pro 3 里新建场景,用 Script Graph 连接事件节点(如 OnTap)和行为节点(如 MoveTo),用 Navigation Mesh 定义可行走区域,直接点击”在 Vision Pro 上预览”验证。

4. 用高斯泼溅扫描真实场景做沉浸式导览

做什么:扫描博物馆展厅、历史建筑或自然景观,生成高斯泼溅模型,在 Vision Pro 里做沉浸式导览或教育体验。

为什么值得做:高斯泼溅比传统摄影测量更轻量、视觉效果更自然,RealityKit 原生支持意味着可以直接用 SwiftUI + RealityKit 构建应用,不需要自己写渲染器。

怎么开始:用支持高斯泼溅输出的扫描工具(如 Polycam 或 Luma AI)采集场景,导出 .splat 或兼容格式,在 Reality Composer Pro 3 中导入并调整光照,用 SwiftUI 的 RealityView 加载场景。

5. 用空间配件做行业专用交互设备

做什么:为医疗、工业或培训场景定制物理手柄、探针或方向盘,内部嵌入 DFRobot seeMote Cap 或 MikroE Spatial Anchor R1,让虚拟内容精确跟随物理工具移动。

为什么值得做:空间配件开放协议让任何物体都能变成追踪控制器,结合高帧率追踪和低延迟,手术导航训练、赛车模拟、工业维修指导等场景都能受益。

怎么开始:购买 DFRobot 或 MikroE 的开发套件,把 LED 星座、IMU 和蓝牙模块集成到目标物体中,在 visionOS 应用里通过 GameController 框架监听连接事件,用 RealityKitARKit 读取位姿数据。

关联 Session

评论

GitHub Issues · utterances