OpenUSD v26.11 正围绕更清晰的资产创作溯源、更紧凑的网格交付以及更高效处理复杂场景等特性逐步成型。即将发布的版本将引入多边形网格编码(Polygonal Mesh Coding),这是一种用于记录内容创作过程的数据模式,同时增强了对时间区间与变量默认值的表达能力。
Storm 获得了更完善的背景板支持,并预览了原生隐式曲面的功能。构建与运行时的优化、内存占用的降低,以及为支持 VFX2025 而更新的依赖项,共同支撑起将 USD 投入生产流程的管线。
以下是本次版本开发中的主要亮点。
更快的构建速度与更精简的场景
26.11 版本从编译到场景交互的全链路效率均得到提升。一项构建优化减少了识别 USD 值类型所需的模板实例化次数。Pixar 在 Visual Studio 和 Xcode 环境下测得构建时间缩短,而 GCC 的构建时间基本保持不变。
在运行时,组合操作会跳过复制后续将被丢弃的节点。Pixar 报告称,在多个生产场景中,组合速度提升了 10% 至 30%。Hydra 还进一步共享了关联图元之间的常量 primvar 数据,在一项基于生产环境的骨骼人群测试中,使 Hydra 的内存占用降低了 25%。上述数据针对特定工作负载得出,实际表现会随场景结构与构建配置的变化而有所不同。
并行选择遍历、批量点实例器更新,以及可选的场景索引缓存淘汰机制,进一步降低了处理大型场景的成本。
记录资产创作溯源
资产在最终进入场景前,通常会经过多位艺术家、多种应用程序以及自动化流程的处理。新的 UsdMediaAuthorshipAPI 模式提供了一种统一的方式来记录图元的创作者或来源,涵盖人工操作、应用导出以及生成式 AI 步骤等。
该模式允许单个图元包含多条记录,确保每个创作步骤都能保留其独立身份。记录内容可描述软件名称与版本、贡献者、来源类型、输入数据及创建时间。创作溯源信息还会从父级继承累积,因此一个图元既能携带自身记录,也能附带其层级上下文。
新增的 usdauthors 工具可协助检查这些记录,并提供针对整个 Stage 或独立 Layer 进行查询的 API。这为管线工具提供了一套统一的术语体系,便于完整记录资产的演变历史。
多边形网格编码
OpenUSD 新增了对多边形网格编码(PMC)的支持,该技术由开放媒体联盟(Alliance for Open Media)的 VVM 工作组开发。此次集成提供了一个用于压缩网格数据的文件格式插件,以及用于转换 USD Stage 中网格的 usdcrush 命令行工具。PMC 文件不仅可用于 USDZ 包中,也能应用于 USDZ 之外的其他工作流。
对于需要分发几何体密集型资产的制作团队而言,这提供了一种有效缩减网格存储体积与传输大小的方案。编码器开放了属性量化控制接口,使管线能够根据内容需求灵活选择精度。
PMC PMC 是一个可选组件,在构建脚本中默认处于禁用状态。可通过 build_usd.py –pmc 启用该组件,或在 CMake 构建中使用 PXR_BUILD_PMC_PLUGIN=TRUE 并配置所需的编解码器依赖项。当前的 usdcrush 工作流会在编码前将输入阶段(stage)扁平化,因此它最适合用于生成发行副本,同时保留分层源资产。
Durations 动画数据需要同时描述时间点与经过的时间间隔。将动画向后移动十帧时,应仅改变其起始时间,而保持持续时间不变。新增的 GfDuration 值类型已将这一区分纳入 USD 的类型系统中。
持续时间以时间码(time codes)为单位进行测量。当层偏移(layer offsets)或值剪辑(value clips)重新映射时间时,持续时间仅接收缩放分量而不包含平移分量。因此,在纯偏移情况下,24 个时间码的区间仍保持为 24;若时间缩放比例为二,则变为 48。
现在,从一个 GfTimeCode 减去另一个 GfTimeCode 会生成一个 GfDuration,而将持续时间加到时间码上则会生成新的时间码。相关支持涵盖 Python 绑定、数组、样条线、插值以及值剪辑。包含持续时间值的文件需要 USDC 0.16.0 或 USDA 1.4 版本的读取器。
Fallback Values in Variable Expressions 变量表达式现在可以在求值上下文中缺少某个变量时提供回退值。例如,当未定义 LOD 时,${LOD:0} 将解析为整数 0。
这使得资产能够提供有用的默认值,同时由下游管线提供覆盖值。回退值可以是布尔常量、整数、字符串或常量列表。但回退值中不支持嵌套的变量引用和函数调用。
Storm: Backplates and Native Implicit Surfaces 26.08 版本引入了背板(backplate)模式及初步的 Storm 渲染器支持。26.11 版本在此基础上进一步扩展,新增了按时间采样的材质、无光照材质以及亮度分级功能。这些新增特性将更多背板的原始外观带入视口显示中,包括随时间变化的材质效果。
This lets an asset provide a useful default while a consuming pipeline supplies overrides. Fallbacks can be literal booleans, integers, strings, or lists of literals. Nested variable references and function calls are not supported in fallback values.
Storm: Backplates and Native Implicit Surfaces
Version 26.08 introduced backplate schemas and initial Storm support. Version 26.11 extends that work with time-sampled materials, unlit materials, and luminance grading. These additions bring more of a plate’s authored appearance into the viewport, including material changes over time.
The grading attributes were updated to use more standardized names : luma:gain becomes luma:slope, luma:lift becomes luma:offset, and luma:gamma becomes luma:power. Assets using the earlier names need to be updated.
Storm also previews native rendering of implicit surfaces, extending the earlier sphere work to cones, cylinders, and capsules. Supported shapes can be rendered directly without first converting them to polygon meshes. This path remains behind the HDST_ENABLE_NATIVE_IMPLICITS feature flag, which is disabled by default.
HDST_ENABLE_NATIVE_IMPLICITS=1 usdview scene.usda
The new flag replaces HDST_ENABLE_NATIVE_SPHERES.
Additional Pipeline and Rendering Improvements
HydraPrimAPI gives pipelines more control over instancing. Setting hydra:expandInstance expands an instance’s Hydra representation so downstream scene indices can work with its hierarchy while USD retains its source instancing.
原文较长(约 6,077 字),完整内容请浏览更多。
