← すべての記事

USDKit:AppleプラットフォームのSwiftネイティブなOpenUSD

WWDC 2026で、AppleのエンジニアがSwiftで3Dシーンを開き、作業台にオシロスコープが足りないことに気づき、そのアセットを軽量な参照として取り込み、所定の位置に移動し、支援技術向けにラベルを付け、シーン全体を7分の1のサイズでエクスポートしてみせました。しかもそのすべてが、わずか数行のコードで完結したのです。1 このデモこそがUSDKitの主題です。Appleは、OpenUSDを第一級のSwift APIにするシステムフレームワークを提供するようになりました。もはや手作業でバインドするC++ライブラリではありません。ステージを読み込み、アセットを合成し、prim上にデータをオーサリングし、圧縮されたパッケージとしてエクスポートする。これらすべてを、Swift開発者がすでに知っているパターンで実現できます。

この記事では、WWDC 2026のセッション285「Discover USDKit and what’s new in OpenUSD」をもとに、USDKitの全体像をたどります。以下の内容はすべて、このセッションから直接得たものです。

TL;DR

  • USDKitはSwiftアプリに第一級のUSDサポートをもたらし、「RealityKitとSpatial Previewとの深い統合が標準で組み込まれて」おり、既存のUSD開発者にもSwift初心者にも、それぞれの立ち位置に寄り添います。1
  • 中心となるループは「開く・変更する・エクスポートする」です。USDStageのイニシャライザでステージを作成するか、USDStage.openで既存のステージを開き(throwするのでtryを使います)、Compositionを通じてアセットを参照し、addTransformOperationで配置し、圧縮されたexportPackageを書き出します。1
  • 正直に語られた1つの制限があります。USDKitは「スキーマ固有のAPIをすべて提供しているわけではない」ため、アクセシビリティをオーサリングするには、AccessibilityAPIスキーマを適用したうえで、仕様書で定義された名前を使い、ラベルと説明の属性を名前で作成することになります。1
  • 新しいUSDのプリミティブ型であるParticle Fieldsは「Gaussian Splatsをはじめ、その他の表現も記述できる」もので、スプラットをメッシュやマテリアルと同じシーンに初めて持ち込みます。1
  • メッシュ圧縮にAVIFテクスチャ圧縮を組み合わせることで、平均的なアセットのサイズは7分の1になります。これはexportPackage API、Preview、またはusdcrushコマンドラインツールから利用できます。1

今年のOpenUSDで何が変わったのか

Watch on Apple Developer ↗

AppleのSpatial Standardsチームに所属するLeeが、OpenUSDの基盤に関するアップデートのあと、7:00からUSDKitを紹介します。

USDはAppleが構築する空間体験の屋台骨であり、その背後にあるオープンソースプロジェクトのOpenUSDは、もともとPixarが切り拓いたものです。1 USDは単独で機能するわけではありません。マテリアル記述のためにLucasfilm発のMaterialXと統合され、今年新たに、DreamWorks発でボリュームデータを扱えるOpenVDBとも統合されました。1 Appleは今年、この3つすべてを各プラットフォームでアップデートし、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のパートナーと協力し、新しいUSDのプリミティブ型としてParticle Fieldsを導入しました。これは「Gaussian Splatsをはじめ、急速に進化するこの研究領域の他の表現も記述できる」ものです。1 実用上の恩恵はこうです。スプラットは「メッシュ、マテリアル、その他の従来型3Dデータと同じシーンの中に、初めて」存在できるようになりました。1 この位置づけは意図的に控えめです。Particle Fieldsはスプラットや類似の表現を記述するもので、進化し続ける研究領域のためのコンテナであって、完成されたスプラットレンダラーの仕様ではありません。

USDKitのメンタルモデル

USDKitはSwiftアプリに第一級のUSDサポートをもたらし、RealityKitとSpatial Previewとの深い統合が標準で組み込まれています。設計のねらいは双方向に働きます。すでにUSDを知っている開発者にとっては概念がなじみ深く、USDが初めてのSwift開発者にとっては、すでに見慣れたパターンやパラダイムが用意されているのです。1

このAPIを支えるUSDの概念はいくつかあります。Layerは1つのデータファイルです。レイヤーはCompositionという機能を通じて組み合わされ、Stageは「1つ以上のレイヤーが合成された結果」であり、シーン全体をのぞき込む窓となります。1 シーンの中にあるものはすべてUSD Primです。各primには、その型を定義するSchemaに加えて、「実際のデータを保持する」Attributesと、「primそのものに関する情報を記述する」Metadataがあります。1 このlayer、stage、prim、schemaという4語が、以降のワークフローの全体を支えます。

開く・変更する・エクスポートする

セッションでは、1つの具体的なループをたどります。ステージを読み込み、変更を加え、結果をエクスポートする、という流れです。1

「シンプルなUSDStageのイニシャライザ」を使えば、メモリ上に新しいステージを作成できます。1 既存のシーンを扱うには、ファイルURLをUSDStage.openに渡して開きます。これはファイルアクセスを伴うため、「throwする可能性があるので、私はtryを使います」とのことです。1 シーンを読み込んだエンジニアは、足りないオシロスコープを探してステージの階層をたどりますが、何も見つかりません。そこで「それを配置したいパスに、新しいtransform primを定義」します。1

設計の真価が発揮されるのがCompositionです。アセットのデータをステージにコピーするのではなく、「それへの軽量な参照を追加」します。1 アセットは、別の誰かがオーサリングした独自のファイル、つまりレイヤーの中に存在し、それを取り込みます。「全員がシーンの自分の担当部分を作業し、USDがそれらすべてをまとめ上げる」のであり、元の作者が加えた更新は「私はただ相手のファイルを参照しているだけなので、私のステージにも自動的に反映される」のです。1

参照したアセットの配置にはaddTransformOperationを使います。これは「prim上に正しい属性を作成し、transformの順序を自動的に更新する処理を引き受けて」くれます。1 そのあとエンジニアがtranslationの値を設定すると、アセットが作業台の上に移動します。このパターンが重要なのは、意図(このprimを動かす)を、どのtransform属性がどの順序で存在するかという裏方の管理から切り離してくれるからです。

アクセシビリティのオーサリングと、正直な制限

Appleは「USDの中で直接アクセシビリティメタデータを標準化することを推進」してきました。3Dオブジェクトに対して支援用のラベルや説明をどう定義するかを業界全体で確立し、進化できるよう柔軟性をもって構築したのです。1 このメタデータはUSDにネイティブなものなので、「あらゆるUSD APIを通じてオーサリングでき」、Appleは普及を後押しするためにBlenderとMayaへの直接サポートも追加しました。1

ここで率直に述べておくべき注意点があります。アクセシビリティデータを追加するには、まずprimにAccessibilityAPIスキーマを適用します。これにより、スキーマが存在することを示すメタデータが追加されます。次に、セッションの言葉を借りれば、「USDKitはスキーマ固有のAPIをすべて提供しているわけではないので、私はラベルと説明の属性を直接作成し、仕様書で定義された正しい属性名を必ず使うようにしています」となります。1 つまりUSDKitはUSDにアクセスするためのSwiftネイティブな手段を与えてくれますが、すべてのスキーマを型付きAPIでラップしているわけではありません。カバーされていないスキーマについては、属性を名前でオーサリングすることになり、その名前を仕様どおりに正しく合わせる責任はあなたにあります。USDKitはUSDへの第一級の入り口だと捉えるべきであって、すべてのスキーマに対する完全な型付きカバレッジを保証するものではないのです。

エクスポートの呼び出しに組み込まれた圧縮

高品質なプロダクションのUSDシーンは「サイズが数ギガバイトにまで膨れ上がることがあり」、デモのALabシーンはその実例です。1 AppleはAlliance for Open Mediaと協力し、「メッシュサイズを最大90%削減できる最先端のメッシュ圧縮コーデック」を追加しました。1 既存のAVIFテクスチャ圧縮と組み合わせることで、「平均的なアセットは視覚的な品質を損なうことなく、7分の1のサイズになりました」。1

このコーデックはワークフローの傍らではなく、その内側に収まっています。圧縮のサポートは「exportPackage APIに直接組み込まれて」います。出力URLをステージのexportPackageメソッドに渡し、エクスポートオプションを通じてテクスチャとメッシュの圧縮を有効にするだけです。1 コードを書かない場合でも、「Previewで直接、あるいはusdcrushコマンドラインツールを通じて同じ結果を得られます」。1 Appleはこの圧縮をOpenUSDプロジェクトにもたらすべくPixarと協力しており、エコシステム全体が恩恵を受けられるようにしています。1

USDKitがプラットフォームの他の部分と出会う場所

このフレームワークは、単一のアプリの枠をはるかに超えて広がる体験を支えます。Mac上のPreviewでは基本的な3D編集ができるようになり、PreviewとQuick Lookは「レンダラーを選べる」ようになりました。RealityKitは「Mac、iPhone、iPad、Vision Proにわたる一貫性」をもたらし、Stormは「既存のプロダクションパイプラインのニーズを抱える人々のために引き続き利用可能」で、新登場のRaytracerは、正確な反射、精緻な影、物理的に正しいライティングで、最も複雑なシーンに照準を合わせます。1 この3つのレンダラーはいずれもOpenPBRをサポートしており、これは「USDPreviewSurfaceからの大幅な進化であり、よりリッチで、より物理的に正確なマテリアルをワークフローにもたらす」ものです。1

PreviewはmacOS 27の新しいSpatial Previewフレームワークと統合され、あなたのMacとVision Pro上のQuick Lookを直接つなぎます。編集内容が自分の空間にライブで反映され、SharePlayを使えばチーム全員を同じシーンに招き入れられます。1 Web側では、SafariがModelタグを導入しました。これはUSDモデルを埋め込み、macOSとiOSではインタラクティブにレンダリングし、visionOSでは「ページの枠を飛び出して、ユーザーの空間の中に、空間的に提示される」ものです。1

USDKitは、システムが提供し、深く統合されていることから、Appleプラットフォームのアプリ開発者にとって推奨される道筋であり、セッションで紹介された残りの体験はその上に築かれています。1 USDKitがカバーする範囲を超える、より高度な、あるいはクロスプラットフォームのニーズに対しては、SwiftUSDがSwift Package Managerを通じてオープンソースのSwiftバインディングを提供し、C++のコードベースはOpenUSDをフレームワークとして直接組み込めます。この3つはいずれも同じ基盤の上にあるため、「USDファイルはそれらすべての間を自由に行き来できます」。1

押さえておきたい区別があります。これはプログラムによる道筋です。ビジュアルツールでシーンを手作業でオーサリングするのはReality Composer Proの役割であり(RealityKitとReality Composer Proのメンタルモデルを参照)、USDKitは、キャンバスではなくコードが作業を担うときに手を伸ばすAPIなのです。

どう始めるか

このセッションは、今日からたどれる短い道筋へと凝縮できます。

  1. ステージを開く。 USDStageのイニシャライザでメモリ上にステージを作成するか、ファイルアクセスがthrowする可能性があるためファイルURLをUSDStage.openに渡してtryの中で既存のシーンを開きます。1
  2. コピーせず、合成する。 配置したいパスにtransform primを定義し、外部レイヤーへの軽量な参照を追加します。これにより、元の作者の更新が自動的に自分のステージへ流れ込みます。1
  3. 意図をもって配置する。 addTransformOperationを呼び出して正しい属性とtransformの順序を作成し、translationの値を設定します。1
  4. アクセシビリティを正直にオーサリングする。 AccessibilityAPIスキーマを適用し、USDKitがすべてのスキーマ固有のAPIを提供しているわけではないため、仕様書が定義する名前でラベルと説明の属性を作成します。1
  5. 小さくエクスポートする。 テクスチャとメッシュの圧縮を有効にしてステージのexportPackageを呼び出すか、コードを書かない場合はusdcrushを実行します。1

FAQ

USDKitとは何ですか?

USDKitはAppleの新しいシステムフレームワークで、Swiftアプリに第一級のOpenUSDサポートをもたらし、RealityKitとSpatial Previewとの深い統合が標準で組み込まれています。USDの概念(レイヤー、ステージ、prim、スキーマ)をSwiftのパターンを通じて公開するため、手作業でC++ライブラリにバインドすることなく、ステージを開き、アセットを合成し、データをオーサリングし、エクスポートできます。Appleは、自社プラットフォームのアプリ開発者にとっての出発点としてこれを推奨しています。1

USDKitでUSDシーンを読み込んで変更するにはどうすればよいですか?

ファイルURLをUSDStage.openに渡してtryの中でシーンを開くか(ファイルアクセスはthrowする可能性があります)、USDStageのイニシャライザで新しいステージを作成します。外部アセットを追加するには、そのデータをコピーするのではなく、transform primを定義してそのレイヤーへの軽量な参照を追加します。配置するにはaddTransformOperationを呼び出します。これが正しい属性とtransformの順序を設定してくれるので、あとはtranslationの値を設定します。1

USDKitはすべてのUSDスキーマをカバーしていますか?

いいえ。セッションは、USDKitが「スキーマ固有のAPIをすべて提供しているわけではない」と率直に述べています。たとえばアクセシビリティの場合、AccessibilityAPIスキーマを適用したうえで、仕様書で定義された正確な属性名を使い、ラベルと説明の属性を直接オーサリングします。USDKitはUSDへの第一級のSwiftの入り口であって、すべてのスキーマをラップする型付きラッパーではありません。1

OpenUSDにおけるParticle FieldsとGaussian Splatsとは何ですか?

Particle Fieldsは、AppleがNVIDIA、Adobe、PixarをはじめとするAlliance for OpenUSDのパートナーとともに導入した、新しいUSDのプリミティブ型です。これは、この研究領域における「Gaussian Splatsをはじめ、その他の表現も記述できる」ものです。Gaussian Splatsは、位置・色・不透明度をエンコードした数百万もの重なり合う粒子として、シーンを捉えます。Particle Fieldsによって、スプラットはメッシュやマテリアルと同じシーンの中に初めて存在できるようになります。1

USDKitはUSDアセットをどこまで小さくできますか?

Alliance for Open Mediaと共同で構築されたメッシュ圧縮コーデックは、メッシュサイズを最大90パーセント削減できます。AVIFテクスチャ圧縮と組み合わせれば、平均的なアセットは視覚的な品質を損なうことなく、およそ7分の1のサイズになります。テクスチャとメッシュの圧縮は、exportPackage API、Preview、またはusdcrushコマンドラインツールから有効にできます。1


USDKitは、RealityKitとReality Composer Proのメンタルモデルで描かれたビジュアルオーサリングの物語に対する、プログラム的な対の存在です。そして、visionOS 27の新機能やより広いRealityKitの空間メンタルモデルを動かすのと同じシーンに、それは素材を供給します。Web側では、同じUSDアセットが、Safariが今年導入したネイティブなHTML <model>要素を通じてレンダリングされます。シリーズ全体のハブはApple Ecosystem Seriesです。

References


  1. Apple, WWDC 2026 session 285, Discover USDKit and what’s new in OpenUSD. Source for the OpenUSD foundation updates (MaterialX, OpenVDB, the first formal core USD specification and Alliance for OpenUSD membership), the Particle Fields primitive type describing Gaussian Splats and similar representations, the USDKit framework and its RealityKit and Spatial Preview integration, the layer/stage/prim/schema concepts, the open-modify-export loop (USDStage initializer, USDStage.open with try, Composition references, addTransformOperation, exportPackage), the accessibility workflow (AccessibilityAPI schema, authoring label and description attributes by name, and the statement that USDKit “does not provide all the schema-specific APIs”), mesh and AVIF texture compression (up to 90 percent mesh reduction, average asset seven times smaller, via exportPackage, Preview, or usdcrush), the Preview renderer choices (RealityKit, Storm, Raytracer) and OpenPBR over USDPreviewSurface, the Spatial Preview framework on macOS 27, the Safari Model tag, and the SwiftUSD and C++ framework alternatives. 

関連記事

AppleのSwiftチームがWWDC26のラボで語ったこと

AppleのWWDC26 Swift Group Labは字幕なしで公開されました。ローカルで文字起こしし、並行処理、~Sendable、ロードマップについてのエンジニアの率直な回答を読み解きます。

2 分で読める

2026年のRealityKitとReality Composer Pro 3

WWDC26でAppleの空間パイプラインが成熟しました。RealityKitのライティングとクロス、そしてライブプレビューとXcodeプラグインを備えた独立アプリのReality Composer Pro 3を紹介します。

1 分で読める

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 分で読める