USD 和 MaterialX 的新变化
What's new in USD and MaterialX
2024年6月10日
一句话判断
RealityKit 今年把 MaterialX shader 和 blend shapes、subdivision surfaces 带到了全平台(iOS/iPadOS/macOS),加上 macOS 上 Preview 的 USD 工具链增强,3D 内容创作的工作流统一性向前迈了一大步。
这场 Session 讲了什么
Session 围绕 Apple 平台上的 3D 内容创作工作流展开。核心是两个开放标准:OpenUSD(Pixar 开发的 3D 资产交换格式)和 MaterialX(Industrial Light and Magic 开发的 shader 描述格式)。这两个技术去年在 visionOS 上首次引入 RealityKit,今年扩展到了 iOS、iPadOS 和 macOS。
RealityKit 的更新包括:MaterialX ShaderGraph 节点从 visionOS 扩展到所有 Apple 平台、新增 blend shapes(表情动画)和 subdivision surfaces(平滑曲面)支持、USD Variants 在 QuickLook 和 RealityKit API 中的交互式切换。macOS 端的工具有大量更新:Preview 的 Storm 渲染器现在支持 MaterialX、新增调整 3D 模型尺寸的工具、Finder 支持 USD 文件的预览缩略图和一键转 USDZ。底层系统库也做了升级,包括 Unicode prim 名称支持和更多命令行工具。
值得深挖的点
MaterialX ShaderGraph 跨平台统一
去年 MaterialX ShaderGraph 只在 visionOS 的 RealityKit 上可用,今年它扩展到了 iOS、iPadOS 和 macOS。这意味着你用 Reality Composer Pro 设计的 shader 可以在所有 Apple 平台上以相同的视觉效果渲染。
更重要的是,Apple 把 ShaderGraph 中的自定义节点定义公开发布了,让第三方内容创作工具(如 DaVinci Resolve)可以集成这些节点。不过 Session 也坦诚地指出:由于不同应用使用不同的渲染引擎,这些节点在不同应用中的表现可能会有差异。这是一个务实的定位——Apple 提供标准和基础实现,具体效果取决于各应用的渲染能力。
Blend Shapes 和 Subdivision Surfaces
Blend shapes 允许你在 3D 角色上定义表情动画——微笑、皱眉等。这是 Animoji 背后的技术,现在作为 USD 功能在 RealityKit 中可用。Subdivision surfaces 让你用低多边形模型在编辑器中工作(加载快、文件小),运行时自动细分产生平滑曲面。
这两个功能的组合意味着你可以在 Apple 平台上创建有表情动画的角色,而不需要高多边形资产。不过 Session 也提到需要注意性能考量——subdivision surfaces 的运行时计算开销取决于细分级别,需要在视觉质量和性能之间找到平衡点。
代码片段
在 RealityKit 中使用 USD Variants
场景:加载 USD 文件时指定特定的 variant。
import RealityKit
// USD 文件中定义了不同行星的 variants
// 在加载时指定想要的 variant
let entity = try await Entity(
named: "planet",
in: RealityKit.ContentBundle,
options: .init(
semantics: .default,
// 指定 variant 选择
preferredVariants: ["planet": "mars"]
)
)
坑:variants 必须在 USD 场景的 default prim 上声明,否则 RealityKit 无法识别。
QuickLook 中交互式切换 Variants
场景:在 QuickLook 预览中让用户切换不同 variant。
// QuickLook 现在自动支持 variants 交互式切换
// 前提:variants 必须声明在 USD 场景的 default prim 上
// 代码层面无需额外配置
// QuickLook 会自动检测可用的 variants 并提供切换 UI
// 参见 "What's new in QuickLook for visionOS" session
坑:如果 variants 不在 default prim 上,QuickLook 不会显示切换选项。
macOS Finder 中转换 USDZ
场景:用 Finder 的 Shortcuts 快速转换文件格式。
// 1. 右键点击 USD 文件
// 2. 选择 Quick Actions -> Convert to USDZ
// (通过 Shortcuts app 中的新 action)
// 或者用命令行工具:
// usdzip -a input.usd output.usdz // 创建 USDZ
// usdcrush input.usdz // 压缩 USDZ
坑:Archive Utility 也可以直接解压 USDZ 文件了——右键菜单中选择即可。
最佳实践
已有项目:如果你已经在 visionOS 上使用 RealityKit 的 ShaderGraph,现在可以把同样的 shader 应用到 iOS 和 iPadOS 版本中。检查你现有的 USD 资产是否在 default prim 上定义了 variants——如果没有,现在是重构的好时机,因为 QuickLook 已经支持 variants 交互式切换。
新项目:从一开始就使用 MaterialX ShaderGraph 来设计 shader,而不是写自定义 shader 代码。ShaderGraph 在 Reality Composer Pro 中可视化编辑,无需编程,而且跨平台表现一致。对于需要角色动画的项目,使用 blend shapes + subdivision surfaces 的组合,在编辑器中保持低多边形,运行时自动平滑。macOS 上用 Preview 替代重量级 3D 编辑器做快速检查和调整。
还有什么值得关注
- Pixar 的 OpenUSD 团队获得了奥斯卡科技奖,进一步确认了 USD 作为 3D 内容基础技术的地位。
- Apple 与 Pixar、Adobe、Autodesk、NVIDIA 共同创立了 Alliance for OpenUSD(AOUSD)联盟。
- macOS 上的 USD 命令行工具集(usdcat、usdchecker、usdzip、usdcrush)可以直接使用,方便自动化工作流。
- Finder 现在支持预渲染的 USD 文件缩略图,浏览大文件夹时速度更快。