WWDC Quick Look 💓 By SwiftGGTeam
Meet Reality Composer Pro

Meet Reality Composer Pro

观看原视频

Highlight

Apple 推出 Reality Composer Pro,一款基于 USD 的 3D 场景编辑器,让开发者通过可视化界面组合场景、添加粒子效果和空间音频,并直接在 visionOS 设备上预览,大幅降低空间应用的 3D 内容制作门槛。

核心内容

从 Reality Composer 到 Reality Composer Pro

2019 年 Apple 推出 Reality Composer,帮助开发者在 iOS 上快速入门 AR。四年后,visionOS 带来了全新的 Reality Composer Pro,定位是专业级 3D 内容开发工具。

两者的核心差异在于:Reality Composer 面向轻量 AR 场景,Reality Composer Pro 面向沉浸式空间计算体验,支持更复杂的场景结构、粒子系统、空间音频和性能分析。

项目结构:Swift Package + USD

Reality Composer Pro 项目本质上是一个 Swift Package。在 Xcode 中创建 xrOS App 模板时,会自动生成并关联一个 Reality Composer Pro 项目。

构建过程中,.rkassets 文件夹中的 USD(Universal Scene Description)文件会被编译成框架,供 Xcode 项目直接引用。USD 是 Apple 推荐的 3D 内容格式,支持层级引用和增量更新。

UI 四大面板

  • 视口(Viewport):中央 3D 预览区,支持 WASD 键、方向键和游戏手柄导航。
  • 层级面板(Hierarchy):左侧,搜索、选择和整理场景中的 3D 对象。
  • 检查器面板(Inspector):右侧,编辑选中对象的位置、旋转、缩放等属性,底部 Add Component 按钮可添加 RealityKit 组件。
  • 编辑器面板(Editor):底部,包含 Project Browser、Shader Graph、Audio Mixer 和 Statistics 四个标签页。

三种导入资产的方式

  1. 本地导入:从电脑导入已有的 3D 模型、音频等资源。
  2. Content Library:Reality Composer Pro 内置的精选素材库,包含材质、模型等。
  3. Object Capture:将真实物体的照片转换为 3D 模型。

场景组合与 USD 引用

Reality Composer Pro 支持多场景设计。场景可以是成品(直接用于 Xcode 应用),也可以是可复用组件。

Session 中演示了 Dioramas 应用的分层设计:先创建 Cloud_Chunk 场景作为可复用的云朵单元,再创建 Cloud_A 场景引用三个 Cloud_Chunk 并调整位置,最后在主场景中引用 Cloud_A、Cloud_B、Cloud_C 三个完整云朵。

USD 的引用机制让”修改一次、全局更新”成为可能。所有 location pin 都引用同一个 Location_Pin 文件,替换该文件后所有实例自动更新。

粒子系统

粒子发射器由两部分组成:

  • Particle:控制单个粒子的外观,包括颜色、属性、力场和渲染。
  • Emitter:控制粒子的发射行为,包括时机、形状和生成。

Session 演示了用 Impact 预设制作云朵:将发射器形状改为 Sphere、出生位置改为 Volume、调整 XYZ 轴缩放比例让云朵更扁平、开启 isLocalSpace 让父对象的变换影响粒子、将 birth rate 从 2000 降到 500 平衡性能、将 life span 从 2 秒增加到 5 秒。

空间音频

三种音频源类型:

  • Spatial:有位置和方向的 3D 音频,适合桌上的收音机等场景。
  • Ambient:有方向但没有位置的音频,适合从某个方向吹来的风声。
  • Channel:既没有位置也没有方向的音频,适合背景音乐。

音频文件组(Audio File Group)可以包含多个音频文件,每次播放时随机选择其中一个。Session 中用两个鸟叫声组成 Bird_Calls 组,让每只鸟的叫声有变化。

性能统计

Statistics 面板分为 General、Physics、Animation、Particle Emitters、Audio、Materials、Geometry、Textures 八大类。点击每类右上角的展开按钮可查看详细数据。

Session 中发现 diorama base 使用了 256,000 个三角形,比地形还多。用简化后的模型替换后,三角形数量降到 2,500,整个场景从 464,000 降到 210,000,减少超过一半,视觉效果保持不变。

设备预览

连接 visionOS 设备后,在工具栏的下拉菜单中选择设备,点击 on-device preview 按钮,场景会直接以 AR 形式出现在眼前。可以用捏合拖拽旋转场景,捏合缩放调整大小。

详细内容

项目设置与导航

01:14

创建 Reality Composer Pro 项目有两种方式:

  1. 通过 Xcode > Open Developer Tool 打开,适合创建独立项目。
  2. 在 Xcode 中创建 xrOS App 模板,自动生成关联的 Reality Composer Pro 项目。

第二种方式推荐用于在 Xcode 应用中使用 Reality Composer Pro 内容。生成的 Swift Package 在构建时会自动打包成框架。

项目中的 USD 文件放在 .rkassets 文件夹中,构建后可供 Xcode 引用:

// 在 Xcode 中加载 Reality Composer Pro 内容
import RealityKit

// 从 Swift Package 加载场景
let scene = try! await Entity(named: "SceneName", in: realityKitContentBundle)

关键点:

  • realityKitContentBundle 是 Reality Composer Pro 项目编译后生成的资源包
  • Entity(named:in:) 异步加载指定名称的 USD 场景
  • 场景名称对应 Reality Composer Pro 中的场景文件名

粒子发射器配置

07:11

粒子发射器有两种添加方式:

  1. 点击层级面板底部的加号按钮
  2. 在检查器面板点击 Add Component,选择 Particle Emitter Component

制作云朵的核心参数调整:

参数原始值调整后作用
Emitter ShapeCylinderSphere云朵是球形而非圆柱形
Birth LocationSurfaceVolume粒子在体积内生成
X/Z Scale1.02.0让云朵更扁平
Y Scale1.00.5降低高度
isLocalSpacefalsetrue父对象变换影响粒子
Birth Rate2000500降低粒子数量保性能
Life Span2s5s粒子存活更久

关键点:

  • 高粒子数量会影响性能,需要根据目标平台调整
  • isLocalSpace 开启后,移动、旋转、缩放父对象会同时影响粒子发射器
  • 使用预设(如 Impact)作为起点,再微调参数

空间音频配置

13:22

添加空间音频源的两种方式:

  1. 点击层级面板底部的加号按钮
  2. 在检查器面板点击 Add Component,选择 Spatial Audio

音频文件组的使用流程:

  1. 点击层级面板加号,选择 Audio File Group
  2. 将多个音频文件拖入组中
  3. 在 Spatial Audio 组件的 Focus 属性中选择该音频文件组
  4. 每次播放时随机选择组内的一个音频文件

三种音频源的选择场景:

  • Spatial:鸟叫声从鸟嘴位置发出,用户走近时声音变大
  • Ambient:森林环境音从四面八方传来,没有固定位置
  • Channel:背景音乐,不受用户位置影响

性能优化实战

17:42

Statistics 面板中的 Geometry 类别显示:

  • 场景中总三角形数:约 464,000
  • Diorama_Base 占用:256,000(超过一半)

优化步骤:

  1. 在 3D 建模软件中简化 Diorama_Base 的几何体
  2. 通过 Project Browser 的 Import 按钮导入简化后的模型
  3. 替换原有模型
  4. 重新查看 Statistics,确认 Diorama_Base 降到 2,500 个三角形
  5. 场景总三角形数降到 210,000

关键点:

  • Statistics 在开发阶段就能发现性能瓶颈
  • 几何体简化应在建模阶段完成,而非运行时
  • 视觉复杂度与几何复杂度不一定成正比,需要具体分析

核心启发

  • 做什么:用 Reality Composer Pro 制作一个虚拟产品展示应用,让用户在空间中查看商品的 3D 模型。

  • 为什么值得做:不需要编写 3D 渲染代码,通过可视化编辑器就能完成场景搭建。USD 引用机制让产品模型更新后自动同步到所有展示场景。

  • 怎么开始:在 Xcode 中创建 xrOS App 模板,在关联的 Reality Composer Pro 项目中导入产品 USDZ 模型,调整位置和缩放,添加环境光和空间音频,然后在 Xcode 中用 Entity(named:in:) 加载场景。

  • 做什么:创建一个沉浸式冥想应用,用粒子系统营造动态自然环境。

  • 为什么值得做:粒子系统可以制作飘落的雪花、飞舞的萤火虫、流动的水雾等效果,配合空间音频营造沉浸感。Statistics 面板帮助确保粒子数量在性能预算内。

  • 怎么开始:在 Reality Composer Pro 中创建粒子场景,从预设(如 Impact、Smoke、Fire)开始调整,控制 birth rate 在 500 以下,用多个小型粒子场景组合而非单个复杂发射器。

  • 做什么:开发一个教育类空间应用,在 3D 场景中展示历史建筑或生物结构。

  • 为什么值得做:层级面板可以组织复杂的场景结构(如建筑的不同楼层、生物的不同器官),检查器面板精确控制每个部件的位置和旋转,设备预览确保在真实空间中的尺度感正确。

  • 怎么开始:将模型按逻辑分组(如 “Building_Floor1”、“Building_Floor2”),在层级面板中组织层级结构,使用 Command-D 复制重复元素,连接设备后用捏合拖拽验证空间尺度。

  • 做什么:制作一个交互式故事书,每个场景都有独特的空间音频环境。

  • 为什么值得做:音频文件组可以随机播放不同的环境音效,避免重复感。Spatial Audio 让故事中的角色声音从对应位置传来,增强沉浸感。

  • 怎么开始:为每个场景创建 Ambient 音频源作为背景音,为角色和物体添加 Spatial 音频源,用音频文件组组织同类音效,在 Xcode 中通过代码触发音频播放。

关联 Session

评论

GitHub Issues · utterances