ハイライト
Apple は visionOS で USD を 3D コンテンツの中核フォーマットとして全面採用し、MaterialX シェーダーサポート、Display P3 カラー管理を導入し、業界と協力して OpenUSD エコシステムを推進しています。開発者は業界標準のツールチェーンで空間コンピューティングコンテンツを作成できます。
主要内容
USD:3D コンテンツの共通言語
USD(Universal Scene Description)は Pixar が作成し、現在は OpenUSD と呼ばれます。個人クリエイターから大規模スタジオまで使用される 3D コンテンツの業界標準フォーマットです。Apple は 2017 年からプラットフォームで USD をサポートし、現在は visionOS の 3D コンテンツの中核フォーマットとなっています。
USD の中核的な強みはコンポジション(合成)能力です。複雑な階層関係でアセットデータを表現し、複数人が異なる部分を並行して作業し、最終的に完全なシーンに合成できます。Reality Composer Pro はこのFeatureを活用し、チームメンバーがシーンの異なる側面を担当できます。
MaterialX:移植可能なシェーダー標準
MaterialX は Industrial Light & Magic が『スター・ウォーズ』プロジェクトのために作成し、現在は Academy Software Foundation が管理しています。アーティストはコードを書かずにノードグラフでシェーダーロジックを組み合わせられます。MaterialX グラフは USD ファイルに埋め込み、シーンデータと一緒に転送できます。
visionOS の RealityKit は MaterialX シェーダーのレンダリングをサポートします。Reality Composer Pro の Shader Graph は MaterialX ノードをベースに、visionOS 専用ノードを追加しています:
- RealityKit PBR:物理ベースレンダリングシェーダーでリアルな 3D コンテンツを実現
- RealityKit Unlit:ライティングなしシェーダーでスタイライズドレンダリング
- Geometry Modifiers:表面のジオメトリ変形を変更するシェーダーノード
Apple は MaterialX プロジェクトに Metal シェーダーコード生成サポートを貢献し、MaterialX 1.38.7 でリリースしました。macOS のサードパーティツール(Houdini、Maya など)で MaterialX マテリアルを作成し、visionOS の RealityKit でレンダリングできます。
アプリケーション層の 3D サポート
Quick Look:visionOS の Quick Look は USDZ ファイルの空間プレビューをサポートし、ユーザーがモデルの周りを歩き、周囲の環境と組み合わせて表示できます。
Freeform:Apple のホワイトボードアプリは USDZ コンテンツの埋め込みに対応し、macOS、iOS、iPadOS、visionOS でコラボレーションできます。
Safari Model 要素:新しい HTML <model> 要素(開発者メニューで有効化)により、Web ページにインタラクティブな USDZ モデルを埋め込み、ページ内で回転表示できます。Apple は W3C Immersive Web Working Group と協力して標準化を推進しています。
カラー管理:sRGB から Display P3 へ
Apple ディスプレイは主に Display P3 色空間を使用し、従来の sRGB より約 25% 多くの色を表示できます。RealityKit は色空間管理を拡張し、Display P3 ワイドガムットをサポートします。
色空間が正しくタグ付けされたテクスチャは、より深く鮮やかな色調を表現できます。オウムの羽や鮮やかな衣類などの実世界の色で特に重要です。色空間タグ付けはデバイス間での一貫した表示を保証し、予期しない色のずれを防ぎます。
USD エコシステムの業界協力
Hydra Storm + Metal:Apple は Pixar と協力して Hydra Storm レンダラーに Metal サポートを追加しました。Apple Silicon のユニファイドメモリアーキテクチャにより、MacBook Pro は元々 26GB VRAM が必要だったワークステーション級のシーン(Animal Logic ALab など)をスムーズに処理できます。
Blender:Apple は Blender Foundation と協力し、Blender 3.5 で USD のインポート/エクスポートを大幅に改善し、初めて USDZ フォーマットをサポートしました。Metal バックエンドも導入され、Eevee と Cycles の最終レンダリングは Metal で最大 2 倍高速化、一部シーンではビューポートレンダリングが OpenGL より最大 4 倍高速です。
Autodesk Maya:Apple は Maya USD プラグインへの貢献を継続し、ジオメトリとマテリアルのエクスポート、アニメーションのインポートなどを改善しています。
DaVinci Resolve:Blackmagic Design は Storm レンダラーを利用して Fusion に高速な USD ビューポートレンダリングを追加しました。
RealityKit の USD スキーマ拡張
RealityKit は visionOS で ECS(Entity Component System)をサポートする新しい USD スキーマを導入しています:
- RealityKitComponent:組み込みコンポーネント用
- RealityKitCustomComponent:カスタム Swift コンポーネント用
Swift の構造体と辞書は、同等の RealityKit USD スキーマで表現できます。カスタムコンポーネントデータを他の USD Prim とシーン階層に共存させ、USD 作成ツールで直接編集できます。
RealityKit は USD の spatialAudio を拡張し、Audio File、Audio File Group、MixGroup でより没入感のあるオーディオ体験を作成します。
詳細
Safari Model 要素
(03:24)
Safari の新しい <model> 要素により、Web ページへの 3D コンテンツ埋め込みが画像と同じくらい簡単になります:
<model src="path/to/model.usdz" alt="A 3D teapot">
<img src="fallback.jpg" alt="Teapot photo">
</model>
キーポイント:
<audio>、<video>、<img>要素と同様の使い方- インタラクティブな 3D ビューを提供し、ユーザーがオブジェクトを回転して確認できる
- Safari をサポートするすべての Apple プラットフォームで利用可能
- macOS の開発者メニューまたは他プラットフォームの設定で有効化が必要
- Apple は W3C と協力して標準化を推進中
Reality Composer Pro での MaterialX
(04:51)
Reality Composer Pro の Shader Graph は MaterialX ノードを USD ファイルに埋め込みます。ワークフロー:
- Reality Composer Pro で Shader Graph エディタを開く
- MaterialX ノードをドラッグしてシェーダーロジックを組み合わせる
- RealityKit PBR ノードで物理ベースレンダリングを実現
- Geometry Modifiers ノードで表面変形を変更
- シェーダー効果をプレビュー
- USD ファイルに MaterialX ノードグラフが自動的に含まれる
キーポイント:
- MaterialX ノードグラフは USD シーンと一緒に転送される
- サードパーティツール(Houdini、Maya の LookdevX)も MaterialX をサポート
- Apple は MaterialX から Metal へのコードジェネレータを貢献
- 将来 macOS の USD でも MaterialX をサポート予定
Display P3 色空間の利点
(06:42)
Display P3 と sRGB の比較:
| Feature | sRGB | Display P3 |
|---|---|---|
| 色域範囲 | 標準 | 25% 広い |
| 赤の表現 | やや淡い | より深く鮮やか |
| 緑の表現 | やや淡い | より豊か |
| 適用場面 | 汎用ディスプレイ | Apple ディスプレイ |
キーポイント:
- テクスチャ作成時に Display P3 カラープロファイルを使用
- テクスチャファイルに色空間が正しくタグ付けされていることを確認
- RealityKit は visionOS で Display P3 レンダリングをサポート
- 色空間タグ付けでデバイス間の一貫した表示を保証
RealityKit カスタムコンポーネントの USD 表現
(09:26)
Swift カスタムコンポーネント:
struct EngagementComponent: Component {
var engagementPoints: [String: SIMD3<Float>]
var defaultEngagement: String
}
対応する USD 表現:
#usda 1.0
def Xform "Entity"
{
def RealityKitCustomComponent "EngagementComponent"
{
uniform token info:id = "MyApp.EngagementComponent"
string defaultEngagement = "main"
dictionary engagementPoints = {
string main = "(0, 1, 0)"
string secondary = "(1, 0, 0)"
}
}
}
キーポイント:
RealityKitCustomComponentは USD スキーマタイプinfo:idで対応する Swift コンポーネントタイプを識別- 辞書や配列などの Swift タイプには対応する USD 表現がある
- カスタムコンポーネントデータはジオメトリなど他の Prim と USD 階層に共存
- USD 作成ツールで直接編集可能
重要ポイント
-
やること:EC サイトに 3D 商品プレビューを追加し、ユーザーが空間で商品を閲覧できるようにする
-
価値:Safari の
<model>要素で WebGL 開発なしに Web ページへ 3D コンテンツを簡単に埋め込める。USDZ フォーマットは Apple プラットフォーム全体で一貫してサポート -
始め方:商品モデルを USDZ 形式でエクスポートし、Web ページで
<model src="product.usdz">で埋め込み、フォールバック画像を提供 -
やること:3D コンテンツ作成ワークフローで Display P3 色空間を採用
-
価値:Apple ディスプレイは Display P3 をサポートし、正しくタグ付けされたテクスチャはより鮮やかでリアルな色を表現。デバイス間の色のずれを回避
-
始め方:Blender、Maya などのツールでプロジェクト色空間を Display P3 に設定し、テクスチャエクスポート時にカラープロファイルを保持し、Reality Composer Pro で最終効果を確認
-
やること:USD のコンポジションFeatureで大規模 3D プロジェクトのコラボレーションワークフローを整理
-
価値:USD の参照とコンポジションで複数人がシーンの異なる部分を並行作業でき、変更は参照先に自動同期。Reality Composer Pro がこのワークフローを直接サポート
-
始め方:シーンを再利用可能なコンポーネント(キャラクター、小道具、環境)に分割し、各コンポーネントを個別の USD ファイルとして保存し、メインシーンで参照して合成。チームメンバーが異なるコンポーネントを担当
-
やること:RealityKit アプリ用のカスタムコンポーネントを作成し、コンポーネントデータを USD に保存
-
価値:RealityKitCustomComponent スキーマでコンポーネントデータを USD シーンと一緒に編集・転送でき、コードにハードコードする必要がない
-
始め方:
Componentプロトコルに準拠する Swift 構造体を定義し、USD ファイルでRealityKitCustomComponentスキーマを使ってデータを保存し、アプリ起動時に USD から読み込んでエンティティにバインド
関連セッション
- Meet Reality Composer Pro — Reality Composer Pro の入門、USD コンポジションで 3D シーンを共同作成
- Explore materials in Reality Composer Pro — Reality Composer Pro の Shader Graph と MaterialX マテリアルシステム
- Discover Quick Look for spatial computing — visionOS の Quick Look による USDZ ファイルプレビュー
- Create 3D models for Quick Look spatial experiences — visionOS Quick Look 向け 3D モデル作成のベストプラクティス
コメント
GitHub Issues · utterances