WWDC Quick Look 💓 By SwiftGGTeam
What’s new in USD and MaterialX

What’s new in USD and MaterialX

观看原视频

Highlight

OpenUSD 和 MaterialX 两个开放标准去年在 visionOS 上首次引入 RealityKit,今年扩展到 iOS、iPadOS 和 macOS;同时 QuickLook 支持 USD Variants 交互式切换,Preview 的 Storm 渲染器支持 MaterialX。


核心内容

做 3D 内容的开发者长期面临一个痛点:创作工具、运行时渲染器、文件格式各成体系,资产在不同平台之间搬运时总要丢信息、改材质、重新调效果。visionOS 去年引入了 MaterialX ShaderGraph,但只有 visionOS 能用——同一个 shader,iOS 版本就得重写。

Apple 的做法是:把 Pixar 的 OpenUSD 和 ILM 的 MaterialX 这两个行业标准作为平台底层,让所有 Apple 平台共享同一套资产格式和材质描述。今年 RealityKit 的 ShaderGraph 节点从 visionOS 扩展到了 iOS、iPadOS 和 macOS,一份材质定义在所有平台上表现一致。同时新增了 blend shapes(表情动画)和 subdivision surfaces(运行时平滑曲面),以及 USD Variants 在 QuickLook 和 RealityKit API 中的交互式切换。macOS 端的 Preview 也补上了 Storm 渲染器对 MaterialX 的支持,加上 Finder 的 USDZ 转换和缩略图预览,整个 3D 工作流从创作到预览到分发都在系统工具链内闭环。


详细内容

RealityKit 的 ShaderGraph 跨平台扩展01:00

去年 MaterialX ShaderGraph 仅在 visionOS 上可用。今年这些节点(包括 Apple 定制的 bespoke nodes)全面扩展到 iOS、iPadOS 和 macOS。Apple 还把节点定义发布到了在线文档,方便第三方 DCC 工具集成。不同应用的渲染器能力不同,节点行为可能有差异,但定义本身是统一的。

Blend Shapes 与 Subdivision Surfaces03:37

Blend Shapes 让角色做出预设的表情(类似 Animoji 的机制)。Subdivision Surfaces 让你在编辑器中保持低多边形模型,运行时自动细分出平滑曲面,避免高面数资产占用内存。两者的性能注意事项详见开发者文档。

USD Variants 交互式切换04:07

USD 原生支持 Variants——同一个 prim 上定义多个外观变体。今年 QuickLook 可以交互式切换这些变体。一个关键约束:Variants 必须声明在 USD 场景的 default prim 上。RealityKit API 也支持在加载 USD 文件时指定 variant。

下面是一个 USD Variants 的典型声明方式,来自 “What’s new in Quick Look for visionOS” 的代码示例:

#usda 1.0
(
    defaultPrim = "iPhone"
)

def Xform "iPhone" (
    variants = {
        string Color = "Black_Titanium"
    }
    prepend variantSets = ["Color"]
)
{
    variantSet "Color" = {
        "Black_Titanium" { }
        "Blue_Titanium" { }
        "Natural_Titanium" { }
        "White_Titanium" { }
    }
}

关键点:

  • defaultPrim = "iPhone" 声明场景的默认 prim,Variants 必须定义在这个 prim 上,QuickLook 才能识别和切换
  • variants = { string Color = "Black_Titanium" } 指定默认选中的 variant 是 Black_Titanium
  • prepend variantSets = ["Color"] 声明这个 prim 有一个名为 Color 的 variant set
  • variantSet "Color" = { ... } 列出所有可选的颜色变体,每个变体内部可以包含不同的材质或子层级定义

macOS 工具链更新04:53

Preview 新增 Adjust Size 工具,无需打开 3D 编辑器就能调整模型尺寸和朝向。导出时可选择压缩纹理以减小文件体积。Storm 渲染器的光照更新为更接近 RealityKit 的效果,并且开始支持 MaterialX(包括多个 ShaderGraph 节点)。

Finder 方面:右键菜单新增 Convert to USDZ(通过 Shortcuts app),Archive Utility 可以解压 USDZ。大文件现在支持预渲染缩略图,浏览包含大型 USD 文件的目录时不再卡顿。

系统库与命令行工具06:38

OpenUSD 升级后支持 Unicode prim 名称(印地语、中文等),NVIDIA 和 Pixar 共同贡献。macOS 内置了多个 USD 命令行工具:usdcat(格式转换)、usdchecker(验证文件)、usdzip(创建 USDZ 包)、usdcrush(压缩 USDZ)。


核心启发

  • 做什么:为商品展示类 app 引入 USD Variants,让用户交互式切换颜色/款式。为什么值得做:QuickLook 原生支持 variant 切换,无需自建 UI 组件,且 USD 格式让同一个资产文件包含所有变体,减少打包体积。怎么开始:在 USD 文件的 default prim 上声明 variantSet,用 RealityKit 的 Entity.loadModel 或 QuickLook 打开,用户即可在预览中切换。

  • 做什么:用 MaterialX ShaderGraph 替代手写自定义 shader。为什么值得做:ShaderGraph 在 Reality Composer Pro 中可视化编辑,无需编程,且跨 visionOS / iOS / iPadOS / macOS 表现一致,省去平台适配成本。怎么开始:在 Reality Composer Pro 中创建 ShaderGraph 材质,使用 Apple 提供的 bespoke nodes,导出后直接在各平台 RealityKit 中加载。

  • 做什么:在角色动画中使用 blend shapes + subdivision surfaces 的组合。为什么值得做:编辑器中保持低多边形便于操作,运行时自动细分保证画面质量;blend shapes 让面部表情可控且可复用。怎么开始:在 DCC 工具中为角色制作 blend shape 目标和低模,导出为 USD 格式,RealityKit 会自动处理细分和表情混合。

  • 做什么:用 macOS 命令行工具自动化 USD 资产管线。为什么值得做:usdchecker 可以在 CI 中验证资产合法性,usdzip / usdcrush 可以批量打包和压缩 USDZ,避免人工操作出错。怎么开始:在构建脚本中加入 usdchecker 验证步骤,打包阶段用 usdzip 生成 USDZ,再用 usdcrush 压缩纹理。


关联 Session

评论

GitHub Issues · utterances