-
探索 USDKit 以及 OpenUSD 的新进展
深入了解 Apple 平台上通用场景描述 (USD) 支持的最新进展,包括基于 Swift 的 USDKit、新的空间预览 API,以及增强的空间网页功能。探索如何利用 OpenUSD 标准的最新更新,添加对辅助功能、高斯泼溅点和压缩几何的支持。我们还将逐步介绍 Mac“预览”中扩展的 USD 编辑和渲染工具,演示如何在你的 App 中充分利用这些功能。
章节
- 0:07 - Introduction
- 0:53 - OpenUSD: Industry Foundation and New Standards
- 2:51 - Gaussian Splats and Particle Fields
- 3:47 - Introducing USDKit
- 4:06 - 3D Editing in Preview and New Renderers
- 5:42 - Spatial Preview: Live Collaboration Between Mac and Vision Pro
- 6:25 - USD on the Web: The Safari Model Tag
- 6:57 - USDKit: Key Concepts and Swift API Walkthrough
- 10:05 - Accessibility Metadata in USD
- 11:19 - Asset Compression: Mesh and Texture
- 12:36 - Integration Paths: USDKit, SwiftUSD, and OpenUSD
- 13:24 - Next steps
资源
相关视频
WWDC26
-
搜索此视频…
欢迎来到"探索 USDKit, 以及 OpenUSD 的新变化"。 我是 Lee,Apple 空间标准团队的工程师。 USD 是 Apple 打造空间体验的核心支柱, 也是我们呈现空间场景的方式。 从你创建的 App, 到你在我们各平台上看到的内容, 所有这些空间体验 都建立在 USD 之上。
USD 由 Pixar 创建, Apple 很早就认识到了它的潜力。 我们从那时起便一直与他们合作。 今天,我们将更进一步。 我将介绍 USD 在我们平台上的最新进展, 以及一个名为 USDKit 的强大新框架, 以及它如何连接 Mac 与 Vision Pro, 实现无缝的 3D 体验。
让我们先来了解 我们对 USD 的基础性更新, 这些更新已在我们的平台上落地。
USD 已成为许多行业通用的 3D 语言。 屡获殊荣的电影、AAA 级游戏、 工厂车间、手术室, 自动驾驶汽车、AI 驱动的仿真; 其影响范围还在持续扩大。 Apple 正在引领潮流, 推动 USD 成为 下一代空间体验的基础。 支撑 USD 的开源项目叫做 OpenUSD, 这是描述 3D 场景的行业标准库, 最初由 Pixar 开创。 但 USD 并非单独运作。 它与 MaterialX 集成, MaterialX 源自 Lucasfilm, 用于丰富的材质描述, 今年新增了 OpenVDB, 源自 DreamWorks, 将体积数据引入其中。 这些技术中的每一项都由 世界一流的视觉特效 和动画工作室构建, 合在一起,它们形成了强大且 可组合的 3D 基础架构。 今年,在我们所有平台上, 我们对三者都进行了更新, 让你能够充分利用各项最新改进。
Apple 是 学术软件基金会的成员, 该基金会是 MaterialX 和 OpenVDB 等开源项目的归属地。 通过该基金会,我们积极参与这些项目, 确保它们以有益于开发者 和创作者的方式演进, 不仅惠及我们的平台, 也惠及整个 3D 生态系统。 除了代码贡献之外, Apple 还是 OpenUSD 联盟的创始成员, 致力于推动 USD 成为真正的行业标准, 不仅是事实标准,更是正式标准。
今年,我们协助发布了 USD 核心的首个正式规范, 针对几何体、材质和物理的 领域规范也已在推进中。 这是一项开放性工作, 这些工作组正是 USD 未来走向的决策场所。 如果你希望在塑造行业 构建方式方面发声, 以及交换 3D 内容的方式, 我们鼓励你积极参与。 高斯泼溅(Gaussian Splats) 是最令人兴奋的 3D 表示技术近期突破之一。 它不使用传统几何体, 而是将场景捕捉为数百万个 模糊的、相互重叠的粒子, 每个粒子编码了位置、颜色和不透明度, 从而忠实地重建复杂的真实世界环境。 正如这个可视化画面所展示的, 泼溅能够捕捉 极其细腻的光照响应, 并能将真实世界场景栩栩如生地呈现出来。
我们与 OpenUSD 联盟的合作伙伴合作, 包括 NVIDIA、Adobe 和 Pixar, 正在引入一种新的 USD 原始类型:粒子场(Particle Fields), 它能够描述高斯泼溅, 以及这个快速发展研究领域中的 其他表示形式。
这使得高斯泼溅首次能与 网格、材质, 以及其他传统 3D 数据 出现在同一个场景中。 让我们来看看我们平台上强大的 全新体验, 以及为它们提供支持的 全新 USDKit 框架。
USDKit 负责繁重的工作, 让你专注于你的内容和应用程序。 这一切的实现, 都有赖于我们一直在推进的标准化工作。
Preview 长期以来一直是 Mac 上的首选, 用于查看图像、PDF 和 3D 内容, 对于图像和 PDF, 它始终提供一套强大的编辑工具, 开箱即用,无需额外软件。 今年,我们将同样的理念带入 3D 领域。
Preview 现在为你的 Mac 带来了 基本的 3D 编辑功能, 涵盖你最常用的操作。 你可以直接在场景中操作对象, 编辑属性和光照, 使用完整的场景层级, 以及转换和压缩资产, 所有这些都无需学习专门的 3D 应用程序。 虽然表面上看起来简单, 但背后有着生产级质量的 渲染和处理管线。
Mac 上的 Preview 和 Quick Look 现在提供渲染器选择。 RealityKit 在 Mac、iPhone、iPad 和 Vision Pro 之间带来一致性, Storm 仍可用于有现有 生产管线需求的用户。
对于最复杂的场景, Preview 新增了全新的光线追踪渲染器, 带来令人惊艳的高保真效果。
三者均支持 OpenPBR, 相较于 USDPreviewSurface 有了显著升级, 为你的工作流程带来更丰富、 更具物理精确性的材质。
Preview 中全新的光线追踪渲染器 专为需求更高的场景而生。 无论是可视化建筑空间, 还是制作产品图像, 它都能呈现精确的反射, 精准的阴影,以及物理正确的光照。 每台 Mac 上都有的 生产级真实感渲染器。
Preview 与 macOS 27 上的 全新 Spatial Preview 框架集成, 在你的 Mac 与 Vision Pro 上的 Quick Look 之间建立直接连接。 当你在 Preview 中编辑 USD 场景时, 更改会实时显示在 Vision Pro 的 Quick Look 中,就在你自己的空间里, 通过 SharePlay, 你可以同时让整个团队参与进来。 创意总监和艺术家可以一起 环游同一个场景, 实时审查光照、构图和空间比例。 现在,借助 Spatial Preview 框架, 这种协作式空间工作流 比以往更容易 集成到你自己的 Mac 应用程序中。 请参阅 Spatial Preview 专场来了解具体方法。
USD 现在也融入了网络。 Safari 引入了 Model 标签, 将 3D 内容带入网页, 就如图片或视频一样自然。
在页面中嵌入 USD 模型, 在 macOS 和 iOS 上, 用户可以直接在浏览器中 获得完全交互式的 3D 体验。 而在 visionOS 上,体验更进一步。 同一个模型会突破页面的限制, 以空间方式呈现, 就在用户的空间中。 今天我们向你展示的一切, 都由一个全新的系统框架驱动: USDKit。 让我们来了解一下。 USDKit 为你的 Swift 应用程序 带来一流的 USD 支持, 并内置了对 RealityKit 和 Spatial Preview 的深度集成。 我们将 USDKit 设计为适合所有人使用。 已经熟悉 USD 的开发者 会发现这些概念立刻感觉非常熟悉, 而对于第一次接触 USD 的 Swift 开发者, USDKit 会从你所在的位置出发, 使用你已经熟悉的模式和范式。 在深入示例之前, 让我先介绍几个关键的 USD 概念。 在 USD 中,Layer 是单个数据文件。 Layer 可以通过一个称为 Composition 的强大功能组合在一起。 Stage 是一个或多个 Layer 组合后的结果。 这是你查看完整场景的窗口。 场景中的所有内容都表示为 USD Prim。 每个 prim 都有一个 Schema, 用于定义其类型。 Prim 还包含 Attributes, 用于保存实际数据, 以及 Metadata,用于描述 prim 自身的相关信息。 现在我已经介绍了一些关键概念, 让我们通过一个示例来了解 如何在实践中使用 USDKit。 我将加载一个 Stage, 进行一些修改, 并导出结果。 使用 USDKit 从 Stage 开始入手。 我可以使用简单的 USDStage 初始化器在内存中创建一个新的 Stage。 不过对于这个演示, 我有一个现有的场景想要使用。 我可以通过向 USDStage.open 传入文件 URL 来打开它。 由于这涉及文件访问, 它可能会抛出错误, 所以我使用 try。 好,打开了。 我的场景加载完成, 看起来已经很不错了。 我以为工作台上应该 有一台示波器的。 让我看看它是否在场景中某个地方, 如果没有,我可以添加它。 首先,让我遍历 Stage 的层级结构, 查看示波器是否已经在里面。 没找到! 因此,我在我希望它存在的路径处 定义一个新的 transform prim。 接下来就是真正实用的部分了。 我不需要将资产的所有数据 直接复制到我的 Stage 中, 我可以添加一个轻量级的引用。 该资产保存在它自己的文件或 Layer 中, 完全由其他人创作, 我只是将它引入进来。 这就是 Composition 的强大之处。 每个人都在自己的场景部分上工作, USD 将所有内容汇聚在一起。 最棒的是什么? 他们做的任何更新 也会自动出现在我的 Stage 中, 因为我只是引用了他们的文件。 太棒了! 资产已经在场景中了, 但如你所见, 它的位置还不是我想要的。 让我来演示如何将它移到正确的位置。 要移动 prim,我首先调用 addTransformOperation, 它负责在 prim 上创建正确的 Attributes, 并自动更新 transform 顺序。 之后,我只需设置平移值, 资产就会移动到工作台上, 正是我想要的位置。
完美! 这看起来已经好多了, 但在我将其分享给全世界之前, 我想确保它已经准备好 面向尽可能广泛的受众。 出色的 3D 体验应该让所有人都能享受到。 在 Apple,无障碍是核心价值, 这也包括空间内容。 这就是为什么我们推动了 将无障碍元数据直接标准化在 USD 中, 建立了辅助标签 和描述在行业中 3D 对象上的定义方式。 我们在设计时内置了灵活性, 以便它未来可以演进。 由于它原生于 USD, 你可以通过任何 USD API 来编写它, 为了让它尽可能易于采用, 我们直接在 Blender 和 Maya 中 添加了内置支持。
要将无障碍数据添加到我的新资产中, 我首先将 AccessibilityAPI schema 应用于该 prim。 这会添加必要的元数据, 以表明该 schema 已存在。 由于 USDKit 并不提供 所有 schema 特定的 API, 我直接创建 label 和 description attributes, 确保使用正确的 attribute 名称, 如规范中所定义的。 有了这些,我就可以设置它们的值了: 一个简洁的标签和一段丰富的描述, 为辅助技术提供 理解对象在上下文中所需的一切信息。 资产现在已经准备好了, 但高质量的生产级 USD 场景 可能会增长到数十 GB 的大小。 我们今天一直使用的 ALab 场景 就是一个很好的例子。 分享这么大的文件并不总是切实可行的, 所以让我来展示如何将它缩小。
与开放媒体联盟合作, 我们添加了对最先进网格压缩编解码器的支持, 能够将网格大小缩减高达 90%。 结合我们现有的使用 AVIF 的 纹理压缩技术, 数字说明了一切。 平均资产现在缩小了七倍, 而不会影响视觉质量。 更小的资产意味着更快的传输、 更低的存储成本, 以及在每个平台上为用户带来更好的体验。 USDKit 对压缩的支持 直接内置于 exportPackage API 中。 我将输出 URL 传递给 Stage 的 exportPackage 方法, 然后通过导出选项 启用纹理和网格压缩。 只需几行代码,就大功告成了。 如果你不想编写代码, 可以直接在 Preview 中 获得相同的效果, 或者通过 usdcrush 命令行工具。 我们正在与 Pixar 合作, 将此压缩支持带入 OpenUSD 项目, 使整个生态系统都能从中受益。 由于集成 USD 可能比较复杂, 有多种不同的方式来 访问这项技术。 对于我们平台上的应用开发者, USDKit 是首选。 它由系统提供,深度集成, 我们今天展示的一切 都建立在它之上。 对于有更高级需求的用户, 或者需要超出 USDKit 覆盖范围 的跨平台工作流, 我们也为你考虑到了。 SwiftUSD 带来了开源 Swift 绑定,可直接通过 Swift Package Manager 获取, 对于跨平台 C++ 代码库, 我们让直接将 OpenUSD 以框架形式嵌入变得比以往更容易。 无论哪种路径适合你的工作流, 它们都建立在同一基础之上。 这意味着你的 USD 文件 可以在它们之间自由流转。 让我们回顾一下我们所讲的内容。 Apple 平台上的 USD 今年迈出了重要一步。 Preview 现在为你的 Mac 带来了基本的 3D 编辑 和强大的渲染选项。 Spatial Preview 让你可以轻松沉浸 在自己的内容中, 并与他人分享, Safari 中新的 Model 标签 让 USD 原生进入网络。 而这一切的核心是 USDKit, 这是一个新的系统框架, 让在 Swift 中使用 USD 成为一流的体验。 如果你希望在应用中 创作和使用 3D 内容, USDKit 是最佳起点。 今年还有更多值得探索的内容。 我们有深入介绍 Spatial Preview 的专场, 将 USD 带入网络, 以及使用 RealityKit 和 Reality Composer Pro 构建丰富空间体验。 无论你的工作流程如何, 这里总有适合你的内容。 请查看链接的资源了解更多信息。 USD 从未如此强大, 我们迫不及待地想看看 你用它创造出什么。 感谢观看!
-
-
8:12 - Opening a USD Stage
import USDKit // Create a new empty in-memory stage let stage = USDStage() // Open a stage from a file on disk let url = URL(fileURLWithPath: "/ALab/entry.usda") let stage = try USDStage.open(url) -
8:44 - Traversing the Stage Hierarchy
// Traverse all prims looking for the oscilloscope for prim in stage.descendants { if prim.name == "scope" { // There it is! 🔬 } } // It wasn't there — define a new Xform prim for it let scope = stage.definePrim(at: "/World/scope", type: “Xform")) // Add a file reference to the prim try scope.references.add(“/ALab/assets/scope.usda”) -
9:36 - Moving a Prim with a Transform Operation
// Creates xformOp:translate and updates xformOpOrder automatically scope.addTransformOperation(type: .translate) scope["xformOp:translate", as: USDValue.Vec3d.self] = [2.5, 0.0, -1.0] -
10:42 - Applying Accessibility Metadata
// Apply the multi-apply AccessibilityAPI schema with instance name "default" try scope.applyAPISchema("AccessibilityAPI", instanceName:"default") // Create the label and description attributes scope.makeAttribute(named: "accessibility:default:label", as: .string) scope.makeAttribute(named: "accessibility:default:description", as: .string) // Set their values scope["accessibility:default:label", as: String.self] = "Oscilloscope" scope["accessibility:default:description", as: String.self] = "Vintage signal analyzer with a 3D wireframe display, topped by a color bar test monitor" -
12:05 - Exporting with Mesh and Texture Compression
let output = URL(fileURLWithPath: "/ALab/alab_compressed.usdz") // Export the stage as a USDZ package try stage.exportPackage( to: output, options: [ .preferSmallTextureFiles(quality: .standard), // compress textures .preferSmallMeshFiles // compress mesh geometry ] )
-
-
- 0:07 - Introduction
Frames USD as the backbone of Apple's spatial experiences and outlines the topics covered: foundational USD updates, the new USDKit framework, and how they enable rich 3D experiences across Apple platforms.
- 0:53 - OpenUSD: Industry Foundation and New Standards
Apple's evolving role in the OpenUSD ecosystem: updates to OpenUSD, MaterialX, and OpenVDB across all platforms; Apple's membership in the Academy Software Foundation and Alliance for OpenUSD; and the release of the first formal USD core specification.
- 2:51 - Gaussian Splats and Particle Fields
Introduces a new USD primitive type — Particle Fields — co-developed with NVIDIA, Adobe, and Pixar through the Alliance for OpenUSD, enabling Gaussian Splats to be represented natively in USD and composited alongside traditional 3D data.
- 3:47 - Introducing USDKit
A high-level overview of USDKit, the new first-party Swift framework that brings USD support to Apple apps with built-in RealityKit and Spatial Preview integration, designed to be approachable for both USD veterans and Swift developers new to 3D.
- 4:06 - 3D Editing in Preview and New Renderers
Preview on Mac gains essential 3D editing capabilities: direct scene manipulation, property and lighting editing, hierarchy browsing, and asset conversion — all backed by a choice of three renderers: RealityKit, Storm, and a new high-fidelity Raytracer. All three support OpenPBR materials.
- 5:42 - Spatial Preview: Live Collaboration Between Mac and Vision Pro
The new Spatial Preview framework on macOS 27 creates a live link between Preview on Mac and Quick Look on Vision Pro, enabling real-time spatial review and SharePlay collaboration. Developers can integrate the same workflow into their own Mac apps.
- 6:25 - USD on the Web: The Safari Model Tag
Safari's new Model tag brings interactive 3D USD content to web pages on macOS and iOS, with full spatial breakout on visionOS — making USD as native to the web as images and video.
- 6:57 - USDKit: Key Concepts and Swift API Walkthrough
A walkthrough of core USD concepts — Layers, Composition, Stages, Prims, Schemas, Attributes, and Metadata — followed by a practical Swift code example: opening a stage, traversing the hierarchy, adding a referenced asset via composition, and repositioning it with transform operations.
- 10:05 - Accessibility Metadata in USD
Apple has driven standardization of accessibility metadata directly in USD, defining how assistive labels and descriptions are authored on 3D objects. The API is supported in Blender and Maya, and the USDKit walkthrough shows how to apply the AccessibilityAPI schema and set label and description attributes.
- 11:19 - Asset Compression: Mesh and Texture
Introduces state-of-the-art mesh compression (up to 90% reduction) developed with the Alliance for Open Media, combined with existing AVIF texture compression — achieving 7× smaller assets on average. Demonstrated via USDKit's exportPackage API, Preview's UI, and the usdcrush command-line tool.
- 12:36 - Integration Paths: USDKit, SwiftUSD, and OpenUSD
Outlines the three integration paths: USDKit for Apple platform app developers; SwiftUSD via Swift Package Manager for advanced or open-source Swift workflows; and OpenUSD as an embeddable C++ framework for cross-platform codebases. All share the same USD foundation, ensuring file interoperability.
- 13:24 - Next steps
Recap of the session's key announcements — 3D editing in Preview, Spatial Preview collaboration, the Safari Model tag, and USDKit — with pointers to related sessions on Spatial Preview, USD on the web, RealityKit and Reality Composer Pro.