Highlight
Apple 在 visionOS 上全面采用 USD 作为 3D 内容核心格式,引入 MaterialX 着色器支持、Display P3 色彩管理,并与业界协作推动 OpenUSD 生态发展,让开发者能用行业标准工具链创建空间计算内容。
核心内容
USD:3D 内容的通用语言
USD(Universal Scene Description)由 Pixar 创建,现已更名为 OpenUSD。它是表示 3D 内容的行业标准格式,从个人创作者到大型工作室都在使用。Apple 从 2017 年开始在平台上支持 USD,如今 USD 已成为 visionOS 上 3D 内容的核心格式。
USD 的核心优势在于组合(composition)能力。它允许通过复杂的层级关系表达资产数据,让多人可以并行工作在不同部分,最后组合成完整场景。Reality Composer Pro 正是利用这一特性,让团队成员各自处理场景的不同方面。
MaterialX:可移植的着色器标准
MaterialX 由 Industrial Light & Magic 为《星球大战》项目创建,现由 Academy Software Foundation 维护。它让艺术家通过节点图组合着色器逻辑,无需编写代码。MaterialX 图可以嵌入 USD 文件中,随场景数据一起传输。
visionOS 上的 RealityKit 支持渲染 MaterialX 着色器。Reality Composer Pro 的 Shader Graph 就是基于 MaterialX 节点,同时添加了一些 visionOS 专属节点:
- RealityKit PBR:基于物理的渲染着色器,实现逼真的 3D 内容
- RealityKit Unlit:无光照着色器,用于风格化渲染
- Geometry Modifiers:修改表面几何形变的着色器节点
Apple 为 MaterialX 项目贡献了 Metal 着色器代码生成支持,已在 MaterialX 1.38.7 中发布。这意味着开发者可以在 macOS 上的第三方工具(如 Houdini、Maya)中创作 MaterialX 材质,然后在 visionOS 的 RealityKit 中渲染。
应用层的 3D 支持
Quick Look:visionOS 上的 Quick Look 支持 USDZ 文件的空间预览,用户可以绕着模型走动,将其与周围环境结合。
Freeform:Apple 的白板应用现在支持嵌入 USDZ 内容,跨 macOS、iOS、iPadOS 和 visionOS 协作。
Safari Model 元素:新的 HTML <model> 元素(在开发者菜单中启用)让网页可以嵌入交互式 USDZ 模型,用户可以在页面中旋转查看。Apple 正与 W3C Immersive Web Working Group 合作推进标准化。
色彩管理:从 sRGB 到 Display P3
Apple 显示器主要使用 Display P3 色彩空间,比传统 sRGB 多显示约 25% 的颜色。RealityKit 扩展了色彩空间管理,支持 Display P3 宽色域。
正确标记色彩空间的纹理能展现更深、更饱和的色调。这在对鹦鹉羽毛、鲜艳衣物等真实世界颜色时尤为重要。色彩空间标记还能确保内容在不同设备上显示一致,避免意外的色彩偏移。
USD 生态的行业协作
Hydra Storm + Metal:Apple 与 Pixar 合作为 Hydra Storm 渲染器添加了 Metal 支持。在 Apple Silicon 的统一内存架构下,MacBook Pro 可以流畅处理原本需要 26GB 显存的工作站级场景(如 Animal Logic ALab)。
Blender:Apple 与 Blender Foundation 合作,在 Blender 3.5 中显著改进了 USD 导入导出,首次支持 USDZ 格式。同时引入了 Metal 后端,Eevee 和 Cycles 渲染器在 Metal 下最终渲染速度最高提升一倍,视口渲染在某些场景下比 OpenGL 快 4 倍。
Autodesk Maya:Apple 持续贡献 Maya USD 插件,改进了几何体和材质导出、动画导入等功能。
DaVinci Resolve:Blackmagic Design 利用 Storm 渲染器在 Fusion 中添加了快速的 USD 视口渲染。
RealityKit 的 USD 组件扩展
RealityKit 在 visionOS 上引入了新的 USD Schema 来支持其 ECS(Entity Component System):
- RealityKitComponent:用于内置组件
- RealityKitCustomComponent:用于自定义 Swift 组件
Swift 中的结构体和字典可以通过等效的 RealityKit USD Schema 表示。这让自定义组件数据可以与其他 USD Prim(对象)一起存在于场景层级中,任何支持 USD 创作的工具都可以直接编辑。
RealityKit 还在 USD 的 spatialAudio 基础上扩展了 Audio File、Audio File Group 和 MixGroup,创建更沉浸的音频体验。
详细内容
Safari Model 元素
(03:24)
Safari 新增的 <model> 元素让网页嵌入 3D 内容变得像嵌入图片一样简单:
<model src="path/to/model.usdz" alt="A 3D teapot">
<img src="fallback.jpg" alt="Teapot photo">
</model>
关键点:
- 用法与
<audio>、<video>、<img>元素类似 - 提供交互式 3D 视图,用户可以旋转查看对象
- 在所有支持 Safari 的 Apple 平台上可用
- 需要在 macOS 开发者菜单或其他平台的设置中启用
- Apple 正与 W3C 合作推进标准化
MaterialX 在 Reality Composer Pro 中的应用
(04:51)
Reality Composer Pro 的 Shader Graph 将 MaterialX 节点嵌入 USD 文件。创作流程:
- 在 Reality Composer Pro 中打开 Shader Graph 编辑器
- 拖拽 MaterialX 节点组合着色器逻辑
- 使用 RealityKit PBR 节点实现基于物理的渲染
- 使用 Geometry Modifiers 节点修改表面形变
- 预览着色器效果
- USD 文件自动包含 MaterialX 节点图
关键点:
- MaterialX 节点图随 USD 场景一起传输
- 第三方工具(Houdini、Maya 的 LookdevX)也支持 MaterialX
- Apple 贡献了 MaterialX 到 Metal 的代码生成器
- 未来 macOS 上的 USD 也将支持 MaterialX
Display P3 色彩空间的优势
(06:42)
Display P3 与 sRGB 的对比:
| 特性 | sRGB | Display P3 |
|---|---|---|
| 色域范围 | 标准 | 宽 25% |
| 红色表现 | 较平淡 | 更深更饱和 |
| 绿色表现 | 较平淡 | 更 lush |
| 适用场景 | 通用显示器 | Apple 显示器 |
关键点:
- 创建纹理时使用 Display P3 色彩配置文件
- 确保纹理文件正确标记色彩空间
- RealityKit 在 visionOS 上支持 Display P3 渲染
- 色彩空间标记确保内容在不同设备上显示一致
RealityKit 自定义组件的 USD 表示
(09:26)
Swift 自定义组件:
struct EngagementComponent: Component {
var engagementPoints: [String: SIMD3<Float>]
var defaultEngagement: String
}
对应的 USD 表示:
#usda 1.0
def Xform "Entity"
{
def RealityKitCustomComponent "EngagementComponent"
{
uniform token info:id = "MyApp.EngagementComponent"
string defaultEngagement = "main"
dictionary engagementPoints = {
string main = "(0, 1, 0)"
string secondary = "(1, 0, 0)"
}
}
}
关键点:
RealityKitCustomComponent是 USD Schema 类型info:id标识对应的 Swift 组件类型- 字典和数组等 Swift 类型有对应的 USD 表示
- 自定义组件数据与几何体等其他 Prim 共存于 USD 层级中
- 任何支持 USD 创作的工具都可以直接编辑这些数据
核心启发
-
做什么:为电商网站添加 3D 产品预览,让用户在空间中查看商品。
-
为什么值得做:Safari 的
<model>元素让网页嵌入 3D 内容变得简单,无需 WebGL 开发。USDZ 格式跨 Apple 平台一致支持。 -
怎么开始:将产品模型导出为 USDZ 格式,在网页中使用
<model src="product.usdz">嵌入,提供 fallback 图片。 -
做什么:在 3D 内容创作流程中采用 Display P3 色彩空间。
-
为什么值得做:Apple 显示器支持 Display P3,正确标记色彩空间的纹理能展现更鲜艳真实的颜色。避免内容在不同设备上出现色彩偏移。
-
怎么开始:在 Blender、Maya 等工具中设置项目色彩空间为 Display P3,导出纹理时保留色彩配置文件,在 Reality Composer Pro 中验证最终效果。
-
做什么:用 USD 的组合特性组织大型 3D 项目的协作流程。
-
为什么值得做:USD 的引用和组合机制让多人可以并行工作在不同场景部分,修改自动同步到引用处。Reality Composer Pro 直接支持这种工作流。
-
怎么开始:将场景拆分为可复用组件(如角色、道具、环境),每个组件单独保存为 USD 文件,在主场景中通过引用组合,团队成员各自负责不同组件。
-
做什么:为 RealityKit 应用创建自定义组件,并在 USD 中存储组件数据。
-
为什么值得做:RealityKitCustomComponent Schema 让组件数据可以随 USD 场景一起编辑和传输,无需在代码中硬编码。
-
怎么开始:定义 Swift
Component协议的结构体,在 USD 文件中使用RealityKitCustomComponentSchema 存储数据,在应用启动时从 USD 加载并绑定到对应实体。
关联 Session
- Meet Reality Composer Pro — Reality Composer Pro 入门,使用 USD 组合特性协作创建 3D 场景。
- Explore materials in Reality Composer Pro — Reality Composer Pro 中的 Shader Graph 和 MaterialX 材质系统详解。
- Discover Quick Look for spatial computing — visionOS 上 Quick Look 对 USDZ 文件的预览支持。
- Create 3D models for Quick Look spatial experiences — 为 visionOS Quick Look 创建 3D 模型的最佳实践。
评论
GitHub Issues · utterances