← 所有文章

USDKit:Apple 平台上的 Swift 原生 OpenUSD

在 WWDC 2026 上,一位 Apple 工程師用 Swift 開啟了一個 3D 場景,發現工作檯上少了一台示波器,便將該素材以輕量引用的方式拉進來,移到定位,為輔助技術加上標籤,最後把整個成果以縮小七倍的體積匯出,而這一切只用了寥寥幾行程式碼。1 這段示範正是 USDKit 的核心主張:Apple 現在提供一套系統框架,讓 OpenUSD 成為一流的 Swift API,而不再是需要手動綁定的 C++ 函式庫。您載入 stage、將素材組合在一起、在 prim 上撰寫資料,再匯出壓縮過的 package,用的全是 Swift 開發者早已熟悉的模式。

本文以 WWDC 2026 第 285 場議程「Discover USDKit and what’s new in OpenUSD」為線索,講述 USDKit 的故事。以下內容皆直接出自該場議程。

TL;DR

  • USDKit 為 Swift app 帶來一流的 USD 支援,「內建對 RealityKit 與 Spatial Preview 的深度整合」,並能同時照顧既有的 USD 開發者與 Swift 新手。1
  • 核心流程是開啟、修改、匯出:用 USDStage 初始化器建立 stage,或用 USDStage.open 開啟既有 stage(它會丟出錯誤,所以要用 try),透過 Composition 引用素材,以 addTransformOperation 定位,最後寫出壓縮過的 exportPackage1
  • 一個誠實的限制:USDKit「並未提供所有 schema 專屬的 API」,因此撰寫無障礙資訊的做法是先套用 AccessibilityAPI schema,再依名稱建立標籤與描述屬性,並使用規格中所定義的名稱。1
  • 一種全新的 USD 基本型別 Particle Fields「能夠描述 Gaussian Splats 以及其他表示法」,首度讓 splat 與網格、材質置於同一個場景之中。1
  • 網格壓縮再加上 AVIF 材質壓縮,讓平均素材縮小七倍;您可透過 exportPackage API、在預覽程式中,或透過 usdcrush 命令列工具取得這項效果。1

OpenUSD 今年有哪些變化

Watch on Apple Developer ↗

Apple Spatial Standards 團隊的 Lee 在 7:00 處、緊接著 OpenUSD 基礎更新之後介紹 USDKit。

USD 是 Apple 所打造的空間體驗的骨幹,其背後的開源專案 OpenUSD 最初由 Pixar 開創。1 USD 並非單打獨鬥。它與最初由 Lucasfilm 用於材質描述的 MaterialX 整合,今年又新增了最初由 DreamWorks 開發、為其引入體積資料的 OpenVDB1 Apple 今年在旗下各平台上更新了這三者,並以 Academy Software Foundation 成員的身分直接為 MaterialX 與 OpenVDB 等專案做出貢獻。1

標準化工作的深度遠超程式碼本身。身為 Alliance for OpenUSD 的創始成員,Apple「協助發布了 USD 核心的首份正式規格,而幾何、材質與物理的領域規格也已在進行中」。1 這些工作小組是開放的,議程對開發者的呼籲是:若想對業界交換 3D 內容的方式擁有發言權,就請參與其中。

基本型別層面最引人注目的消息是 Particle Fields。Gaussian Splats 將場景捕捉「為數以百萬計、彼此重疊的模糊粒子,每一個都編碼了位置、顏色與不透明度,以忠實重建複雜的真實世界環境」。1 Apple 與包括 NVIDIA、Adobe 及 Pixar 在內的 Alliance for OpenUSD 夥伴合作,推出 Particle Fields 作為一種全新的 USD 基本型別,它「能夠描述 Gaussian Splats,以及這個快速演進的研究領域中的其他表示法」。1 實際效益在於:splat 如今「首度與您的網格、材質以及其他傳統 3D 資料置於同一個場景之中」。1 這樣的措辭刻意保持謙遜。Particle Fields 描述的是 splat 與類似的表示法;它是一個容納不斷演進之研究領域的容器,而非一份完成的 splat 算繪器規格。

USDKit 的心智模型

USDKit 為 Swift app 帶來一流的 USD 支援,內建對 RealityKit 與 Spatial Preview 的深度整合,而其設計目標兩面兼顧:早已熟悉 USD 的開發者會覺得這些概念似曾相識,初次接觸 USD 的 Swift 開發者則能拿到他們早已認得的模式與範式。1

有幾個 USD 概念是這套 API 的基石。Layer 是單一的資料檔案。Layer 透過一項名為 Composition 的功能組合在一起,而 stage 則是「由一個或多個 layer 組合而成的結果」,是您通往整個場景的窗口。1 場景中的一切都是 USD prim。每個 prim 都有一個定義其型別的 schema,再加上「保存實際資料」的屬性,以及「描述 prim 本身相關資訊」的中繼資料。1 layer、stage、prim、schema 這四個詞,撐起了後續的整套工作流程。

開啟、修改、匯出

議程示範了一個具體的流程:載入 stage、進行修改,再匯出結果。1

您可以用「一個簡單的 USDStage 初始化器」在記憶體中建立一個全新的 stage。1 若要處理既有場景,則透過把檔案 URL 傳給 USDStage.open 來開啟它。由於這涉及檔案存取,「它可能會丟出錯誤,所以我用 try」。1 場景載入後,工程師遍歷 stage 階層尋找那台缺少的示波器,結果一無所獲,於是「在我希望它所在的路徑上定義一個新的 transform prim」。1

Composition 正是這套設計展現價值之處。您不必把素材的資料複製進 stage,而是「為它加上一個輕量引用」。1 該素材存在於它自己的檔案(也就是 layer)裡,由他人撰寫,而您把它拉進來:「每個人各自處理場景中屬於自己的部分,USD 再把一切匯整起來」,而原作者所做的任何更新「也會自動出現在我的 stage 中,因為我只是引用他的檔案而已」。1

定位被引用的素材會用到 addTransformOperation,它會「自動負責在 prim 上建立正確的屬性並更新 transform 順序」。1 接著工程師設定平移值,素材便移到了工作檯上。這個模式之所以重要,是因為它把意圖(移動這個 prim)與底層的記帳工作(哪些 transform 屬性存在、以什麼順序排列)分了開來。

撰寫無障礙資訊,以及一個誠實的限制

Apple「直接在 USD 中推動了無障礙中繼資料的標準化」,確立了業界如何在 3D 物件上定義輔助標籤與描述,並以彈性為前提來打造它,使其得以持續演進。1 由於這些中繼資料原生於 USD,「您可以透過任何一種 USD API 來撰寫它」,而 Apple 也在 Blender 與 Maya 中加入了直接支援,以便於採用。1

這裡有個值得明說的但書。若要加入無障礙資料,您要先在 prim 上套用 AccessibilityAPI schema,這會加上用以表明該 schema 存在的中繼資料。接著,用議程裡的話來說:「由於 USDKit 並未提供所有 schema 專屬的 API,我直接建立標籤與描述屬性,並確保使用規格中所定義的正確屬性名稱。」1 因此,USDKit 給了您一條 Swift 原生的途徑去觸及 USD,但它並未為每一個 schema 都包上一層具型別的 API。對於它未涵蓋的 schema,您要依名稱撰寫屬性,並有責任對照規格把這些名稱寫對。請把 USDKit 視為通往 USD 的一流大門,而非對每一個 schema 都保證完整型別涵蓋的承諾。

隨匯出呼叫一併交付的壓縮

高品質的正式 USD 場景「可能膨脹到好幾 GB 之大」,示範中的 ALab 場景便是一個現成的例子。1 Apple 與 Alliance for Open Media 合作,加入了「一套最先進的網格壓縮編解碼器,能將網格大小縮減多達 90%」。1 與既有的 AVIF 材質壓縮相結合,「平均素材如今縮小了七倍,且不犧牲視覺品質」。1

這套編解碼器內嵌於工作流程之中,而非置於一旁。壓縮支援是「直接內建於 exportPackage API」:您把輸出 URL 傳給 stage 上的 exportPackage 方法,再透過匯出選項啟用材質與網格壓縮。1 若您不寫程式,「也能直接在預覽程式中,或透過 usdcrush 命令列工具取得相同的結果」。1 Apple 正與 Pixar 合作,要把這項壓縮技術帶入 OpenUSD 專案,讓整個生態系都能受益。1

USDKit 與平台其餘部分的交會之處

這套框架所驅動的體驗,影響範圍遠遠超過單一 app。Mac 上的預覽程式如今能進行基本的 3D 編輯,而預覽程式與 Quick Look「讓您可以選擇算繪器」:RealityKit「在 Mac、iPhone、iPad 與 Vision Pro 之間帶來一致性」,Storm「仍可供既有正式製作管線之需者使用」,而全新的 Raytracer 則以精準的反射、精確的陰影與物理上正確的光照,針對最複雜的場景。1 這三種算繪器都支援 OpenPBR,它「相較於 USDPreviewSurface 是一次重大升級,為您的工作流程帶來更豐富、物理上更精確的材質」。1

預覽程式與 macOS 27 上全新的 Spatial Preview 框架整合,在您的 Mac 與 Vision Pro 上的 Quick Look 之間建立起直接連結,讓編輯結果即時呈現在您的空間中,而 SharePlay 更能把整個團隊帶進同一個場景。1 在網頁端,Safari 推出了 Model 標籤,可嵌入一個 USD 模型,使其在 macOS 與 iOS 上能以互動方式算繪,而在 visionOS 上「則會掙脫頁面的束縛,以空間方式直接呈現在使用者的空間裡」。1

USDKit 是 Apple 平台 app 開發者的建議途徑,因為它由系統提供且深度整合,議程其餘的各項體驗也都建構於其上。1 對於超出 USDKit 所涵蓋範圍的進階或跨平台需求,SwiftUSD 透過 Swift Package Manager 提供開源的 Swift 綁定,而 C++ 程式碼庫則可將 OpenUSD 直接以框架的形式嵌入。這三者都立基於同一個基礎,因此「您的 USD 檔案可在它們之間自由流轉」。1

有一個值得謹記的區別:這是程式化的途徑。在視覺化工具中手動撰寫場景,是 Reality Composer Pro 的工作(參見 RealityKit 與 Reality Composer Pro 心智模型);而 USDKit 則是當執行工作的是程式碼、而非畫布時,您會伸手取用的 API。

如何開始

議程可以濃縮成一條今天就能依循的簡短路徑:

  1. 開啟一個 stage。USDStage 初始化器在記憶體中建立一個,或把檔案 URL 傳給 USDStage.open 並包在 try 裡來開啟既有場景,因為檔案存取可能會丟出錯誤。1
  2. 用組合,不要用複製。 在您想要的路徑上定義一個 transform prim,再為一個外部 layer 加上輕量引用,這樣原作者的更新便會自動流入您的 stage。1
  3. 帶著意圖去定位。 呼叫 addTransformOperation 來建立正確的屬性與 transform 順序,再設定平移值。1
  4. 誠實地撰寫無障礙資訊。 套用 AccessibilityAPI schema,再依規格所定義的名稱建立標籤與描述屬性,因為 USDKit 並未提供每一個 schema 專屬的 API。1
  5. 匯出得小巧。 在 stage 上呼叫 exportPackage 並啟用材質與網格壓縮,或者若您不寫程式,就執行 usdcrush1

FAQ

什麼是 USDKit?

USDKit 是 Apple 全新的系統框架,為 Swift app 帶來一流的 OpenUSD 支援,並內建對 RealityKit 與 Spatial Preview 的深度整合。它透過 Swift 模式呈現 USD 概念(layer、stage、prim、schema),讓您無需手動綁定 C++ 函式庫,就能開啟 stage、組合素材、撰寫資料並匯出。Apple 建議將它作為其平台上 app 開發者的起點。1

我要如何用 USDKit 載入並修改 USD 場景?

把檔案 URL 傳給 USDStage.open 並包在 try 裡來開啟場景(檔案存取可能會丟出錯誤),或用 USDStage 初始化器建立一個全新的 stage。若要加入外部素材,請定義一個 transform prim,並為它的 layer 加上輕量引用,而不要複製它的資料。透過呼叫 addTransformOperation 來定位它,這會設定好正確的屬性與 transform 順序,接著再設定平移值。1

USDKit 涵蓋每一個 USD schema 嗎?

並沒有。議程明白指出,USDKit「並未提供所有 schema 專屬的 API」。以無障礙為例,您要套用 AccessibilityAPI schema,再直接撰寫標籤與描述屬性,並使用規格中所定義的確切屬性名稱。USDKit 是通往 USD 的一流 Swift 大門,而非對每一個 schema 都包上一層型別的封裝。1

OpenUSD 中的 Particle Fields 與 Gaussian Splats 是什麼?

Particle Fields 是 Apple 與包括 NVIDIA、Adobe 及 Pixar 在內的 Alliance for OpenUSD 夥伴一同推出的全新 USD 基本型別。它「能夠描述 Gaussian Splats 以及」這個研究領域中的「其他表示法」。Gaussian Splats 將場景捕捉為數以百萬計、彼此重疊、編碼了位置、顏色與不透明度的粒子。Particle Fields 首度讓 splat 與網格、材質置於同一個場景之中。1

USDKit 能把 USD 素材縮到多小?

一套與 Alliance for Open Media 共同打造的網格壓縮編解碼器,能將網格大小縮減多達 90%,再結合 AVIF 材質壓縮,平均素材約可縮小七倍,且不犧牲視覺品質。請透過 exportPackage API、在預覽程式中,或以 usdcrush 命令列工具來啟用材質與網格壓縮。1


USDKit 是 RealityKit 與 Reality Composer Pro 心智模型 中視覺化撰寫故事的程式化對應,而它所餵養的,正是驅動 visionOS 27 的新功能 以及更廣泛的 RealityKit 空間心智模型 的那些場景。在網頁端,相同的 USD 素材則透過 Safari 今年推出的 原生 HTML <model> 元素 來算繪。整個系列的彙整中心是 Apple Ecosystem Series

參考資料


  1. Apple,WWDC 2026 第 285 場議程,Discover USDKit and what’s new in OpenUSD。本文以此為來源,內容涵蓋 OpenUSD 基礎更新(MaterialXOpenVDB、首份正式的核心 USD 規格,以及 Alliance for OpenUSD 成員身分)、描述 Gaussian Splats 與類似表示法的 Particle Fields 基本型別、USDKit 框架及其與 RealityKit 和 Spatial Preview 的整合、layer/stage/prim/schema 概念、開啟—修改—匯出流程(USDStage 初始化器、搭配 tryUSDStage.open、Composition 引用、addTransformOperationexportPackage)、無障礙工作流程(AccessibilityAPI schema、依名稱撰寫標籤與描述屬性,以及 USDKit「並未提供所有 schema 專屬的 API」這項陳述)、網格與 AVIF 材質壓縮(網格縮減多達 90%、平均素材縮小七倍,透過 exportPackage、預覽程式或 usdcrush)、預覽程式的算繪器選擇(RealityKit、Storm、Raytracer)以及 OpenPBR 相較於 USDPreviewSurface、macOS 27 上的 Spatial Preview 框架、Safari Model 標籤,以及 SwiftUSD 與 C++ 框架等替代方案。 

相關文章

Apple Swift 團隊在 WWDC26 實驗室裡說了什麼

Apple 的 WWDC26 Swift Group Lab 沒有字幕,我們在本機完成轉錄。工程師針對並行處理、~Sendable 與技術藍圖的坦率回答。

4 分鐘閱讀

2026 年的 RealityKit 與 Reality Composer Pro 3

WWDC26 讓 Apple 的空間流程趨於成熟:RealityKit 新增光照與布料模擬,並推出具備即時預覽與 Xcode 外掛的獨立版 Reality Composer Pro 3。

3 分鐘閱讀

The Robots Are Taking Exams in My Search Console

First-party GSC data: 91% of 3.8M impressions fail a human-query filter. Exam questions, pasted errors, and agent sweeps…

10 分鐘閱讀