探索 USD 生态系统
Explore the USD ecosystem
2023年6月5日
一句话判断
USD 和 MaterialX 在 xrOS 上获得了全面支持——从 Safari 的 3D Model 元素、Freeform 的 USDZ 嵌入、Reality Composer Pro 的 Shader Graph,到 MaterialX 生成 Metal 着色器的能力,3D 内容创作和消费的完整生态已经成型。
这场 Session 讲了什么
3D 软件工程师 Dhruv Govil 全面介绍了 Apple 平台上的 3D 内容技术生态系统,重点围绕 USD(Universal Scene Description)和 MaterialX 两大开放标准。
USD 基础:USD 由 Pixar 创建,已更名为 OpenUSD,是表示 3D 内容的行业标准格式。Apple 从 2017 年开始采用 USD,现在它是 xrOS 上 3D 内容的核心格式。
MaterialX 基础:由 Industrial Light & Magic 为《星球大战》创建,现由 Academy Software Foundation 维护。允许艺术家用节点图组合着色器逻辑,不需要写代码。MaterialX 可以嵌入 USD 文件中一起传输。
应用层支持:Quick Look 在 xrOS 上支持 USDZ 文件的空间预览。Freeform 现在支持嵌入 USDZ 内容并跨平台协作。Safari 新增 Model 元素,可以在网页中嵌入交互式 3D 模型。
Reality Composer Pro:新的 macOS 创作工具,支持 USD 的组合(composition)特性,允许多人并行工作。内置 Shader Graph 创作工具,生成 MaterialX 节点。
RealityKit 的 MaterialX 支持:xrOS 上的 RealityKit 支持渲染 MaterialX 着色器。Apple 为 MaterialX 项目贡献了 Metal 着色器代码生成支持,已在 MaterialX 1.38.7 中发布。
色彩管理:RealityKit 扩展了色彩空间管理,支持 Display P3 宽色域。正确标记色彩空间的纹理能展现更深、更饱和的颜色。
值得深挖的点
Safari Model 元素:像 <audio> 和 <video> 一样简单的 <model> 标签,直接在网页中嵌入 USDZ 文件的交互式 3D 预览。目前作为实验性功能在开发者菜单中启用。Apple 正在 W3C Immersive Web Working Group 推进标准化。
MaterialX 到 Metal 的编译链:MaterialX 节点图 -> Metal 着色器代码 -> GPU 执行。Apple 的贡献让这个链路完整打通。未来 macOS 上的 USD 也可能支持 MaterialX。
Display P3 vs sRGB 的视觉差异:Display P3 比 sRGB 多 25% 的颜色范围。在 Apple 的宽色域显示器上,正确使用 Display P3 标记的纹理能展现更鲜艳的颜色——尤其对于自然界的色彩(鹦鹉羽毛、深色衣物)效果明显。
Reality Composer Pro 的协作特性:利用 USD 的 composition 能力,不同人可以并行处理场景的不同方面(建模、材质、动画),修改会实时合并。
代码片段
<!-- Safari Model 元素 - 在网页中嵌入 3D 模型 -->
<model src="teapot.usdz" alt="3D 茶壶模型" interactive>
<fallback>
<p>您的浏览器不支持 3D 模型查看</p>
</fallback>
</model>
<!-- 启用方式:macOS Safari 开发者菜单 > Feature Flags -->
<!-- 或 iOS/iPadOS 设置 > Safari > 高级 > Experimental Features -->
// RealityKit - 使用 MaterialX 材质的模型
let entity = try Entity.load(named: "MyModel")
// 在 Reality Composer Pro 中创建的 MaterialX 材质
// 会自动编译为 Metal 着色器并在 RealityKit 中渲染
// 色彩空间管理 - 确保纹理使用正确的色彩空间
// 在资产目录中为纹理指定 Display P3 色彩空间
// RealityKit 会自动处理色彩空间转换
let texture = try TextureResource.load(named: "albedo_map")
// 如果源纹理标记为 Display P3,RealityKit 会在 P3 显示器上展现完整色域
最佳实践
- 纹理使用 Display P3 色彩空间:创建纹理时使用 Display P3 而非 sRGB,并正确标记色彩空间。这在 Apple 的宽色域显示器上效果显著。
- 用 USDZ 作为 3D 内容格式:USDZ 是 Apple 平台的标准 3D 格式,从 iOS 到 xrOS 都有原生支持。
- 用 Reality Composer Pro 准备 xrOS 内容:它是专门为 xrOS 内容创作设计的工具,支持 MaterialX 着色器和设备预览。
- 避免高频法线贴图:在空间计算中近距离查看时容易产生锯齿,用几何细节或低频法线代替。
- 网页 3D 内容用 Model 元素:比 WebGL 方案简单得多,且跨 Apple 平台自动获得一致的 3D 查看体验。
还有什么值得关注
- MaterialX 是开放标准,SideFX Houdini 和 Autodesk Maya 等第三方工具已经支持。
- Apple 为 MaterialX 项目贡献 Metal 着色器生成代码,这对整个开源社区都有价值。
- Freeform 的 USDZ 协作功能意味着 3D 内容可以像普通文档一样被团队共享和编辑。
- Safari Model 元素如果被 W3C 标准化,将成为 Web 3D 内容的新范式。
- 色彩空间管理是容易被忽略但视觉影响巨大的细节——Display P3 在自然场景中的优势尤为明显。