イマシブ記事

【WWDC 2025レポート】USD、Reality Composer Pro、そしてSwiftUI連携で没入世界を構築する

Vision Pro向け空間体験の作り方:RealityKitを活用した開発の基礎

Apple Vision Proは、空間体験を実現するための最も高性能なプラットフォームです。では、あなたの思い描いた3Dの物語を、実際にVision OS上で動かすにはどうすれば良いでしょうか?

本記事では、Apple Developerセッション「Build spatial experiences with RealityKit」の内容に基づき、RealityKit、USD、および周辺ツールを活用して、没入感のあるストーリーテリング体験を構築するための、技術的な基礎と実践的なワークフローを解説します。


1. Vision OS開発を始めるための選択肢

既存のコンテンツをVision OSに持ち込む方法はいくつかあります。

  1. ネイティブAppleフレームワーク(RealityKit): [01:32] iOS/iPadOS向けにRealityKitで構築された既存のARアプリは、Vision OSへの移行が最も容易です。また、Encounter Dinosaursのような新しい体験も、RealityKitでゼロから構築できます。

  2. サードパーティゲームエンジン: [01:48] Unity、Unreal、GodotといったゲームエンジンもVision OSをターゲットに設定できます。Targoの『D-Day: The Camera Soldier』のように、Unity PolySpatialを使用してカスタムの没入型プレイヤーを設計した事例もあります。

RealityKitを選ぶ理由

  • Appleプラットフォームとの連携: [02:46] RealityKitは、iOS、iPadOS、そして新しくtvOSにも対応しており、コードをプラットフォーム間で共有しやすいです。

  • フレームワークの統合: [03:05] SwiftUI(空間インターフェース)やAVKit(空間ビデオ/オーディオ再生)など、他のAppleフレームワークとシームレスに連携し、高度な機能を実現できます。

  • 最新技術へのアクセス: [04:00] AppleのファーストパーティAPIを使用することで、常に最新のVision OSテクノロジー(例: Nearby Sharing)にアクセスできます。


2. 3DアセットとScene Authoringのワークフロー

空間体験の構築は、3Dアセットの準備から始まります。

(1) ユニバーサル・シーン・ディスクリプション(USD)

[07:12] USD(Universal Scene Description)は、Pixarが開発したオープンスタンダードで、Vision OS開発の基礎となるファイル形式です。

  • 特徴: スケーラビリティが高く、多数のオブジェクトを表現でき、多くのアーティストが単一のシーンで共同作業しやすいよう設計されています。

  • ファイル形式: usdzusdcusdaなどがあります。

  • 作成ツール: Blender、Maya、Houdini、ZBrushなどのDCC(Digital Content Creation)アプリで3Dコンテンツを作成し、USD形式でエクスポートします [07:45]。

(2) Reality Composer Pro (RCP)

[08:23] Reality Composer Proは、USDアセットを組み合わせて空間シーンを構築するための、Appleのコード不要なシーンオーサリングツールです。Xcodeプロジェクトの一部として提供されます。

RCPでのシーン構築

  1. USD参照(Reference): [17:24] DCCアプリからインポートしたUSDアセット(ソースアセット)を直接編集するのではなく、USD参照を使用してRCPシーンに取り込みます。

  2. マテリアルとShader Graph: [17:48] アセットにマテリアルを適用することで、モデルに質感を与えます。

    • [18:20] Shader Graph(シェーダーグラフ)を使用して、マテリアルのプロパティを視覚的に操作し、レンダリングロジックを設計します。例えば、影を本物のライトではなくカスタムのシェーダーで描画したり、キャラクターに「スクワッシュ&ストレッチ」効果を適用したりできます。

    • [19:32] Shader Graphは、右から左(アウトプットからインプット)に読むことで、ロジックを理解しやすいです。

没入型環境の構築

[13:17] RCPでは、Skydome(スカイドーム)アセットから始めることで、観客を完全に包み込む没入型の環境を素早く作成できます。複数のUSDアセットを配置し、パズルのように組み合わせて、コードなしで複雑なシーンを構築できます [15:38]。


3. インタラクティブ要素の追加:ECSとTimeline

RealityKitは、**ECS(Entity-Component-System:エンティティ・コンポーネント・システム)**アーキテクチャを採用しており、これによってインタラクティブな動作が実現されます [27:12]。

(1) エンティティ(Entity)とコンポーネント(Component)

機能や振る舞いは、コンポーネントの組み合わせによってエンティティに追加されます [24:17]。

  • Entity: シーン内のオブジェクト。最低限Transformコンポーネント(位置、回転、スケール)を持つ。

  • Component: エンティティの機能やデータ(例: ModelComponentCollisionComponentCharacterControllerComponentPortalComponent)。

  • System: [27:32] Swiftで記述されるカスタムロジック。毎フレーム更新関数が呼ばれ、特定のコンポーネントを持つエンティティを検索して(クエリ)、時間と共に修正します。

Portalの構築

[25:20] 『Petite Asteroids』で使用されているようなポータル(異世界への入り口)も、コンポーネントの組み合わせで作成します。

  1. Portal Entity: ポータル形状を持つメッシュにPortal ComponentPortal Materialを追加します。

  2. World Entity: シーン全体のルートとなるエンティティにWorld Componentを追加します。

  3. Target設定: Portal EntityのターゲットをWorld Entityに設定します。

  4. クリッピング防止: ポータルの手前に表示させたいエンティティには、PortalCrossing Componentを追加します [26:46]。

(2) Timelineによるシーケンス制御

[21:07] Timeline(タイムライン)は、コードを使わずに、シーン内のアクションや振る舞いを時間軸に沿ってシーケンス化する機能です。

  • アニメーション: [34:01] エンティティの移動(Transform Toアクション)や表示/非表示(Disable Entity/Enable Entityアクション)といった動きを、開始時間や再生時間を設定して配置します。

  • コード連携: [22:14] Timelineから**通知(Notification)**アクションを送信し、これにコードベースで応答することで、手続き型アニメーション(例: 黒からフェードイン [37:04])などのカスタムロジックをトリガーできます。

(3) SwiftUIジェスチャーとの統合

[28:20] RealityKitのエンティティにインタラクティブな動作を加えるには、SwiftUIのジェスチャーを使用します。

  • Spatial Tap Gesture: [28:50] 『Petite Asteroids』では、タップジェスチャーを使用して、キャラクターにジャンプの動作をさせています。

  • インストール: RealityViewに.gesture()モディファイアを適用することで、SwiftUIのジェスチャーをRealityKitのシーンに簡単に組み込むことができます [32:17]。


まとめ:RealityKitで空間体験を始めよう

Vision OS向けの没入型体験の構築は、USD、Reality Composer Pro、そしてRealityKitの強力な連携によって、効率的かつ柔軟に行うことができます。

ツール/概念 役割
USD 3Dアセットの標準形式。複数のアセット参照や複雑なシーンを構成する。
Reality Composer Pro コード不要のシーンオーサリング。TimelineとShader Graphで動きや質感を設定。
RealityKit ECSアーキテクチャ。コンポーネントの組み合わせでエンティティに機能を持たせる。
SwiftUI Gestures 空間タップなどで、エンティティに直感的なインタラクティブ操作を加える。

サンプルプロジェクト: [00:46] 本記事で解説した『Petite Asteroids』の完全なXcodeプロジェクトは、Apple Developerウェブサイトからダウンロードし、ご自身のVision ProまたはXcodeシミュレーターで体験できます。


元動画情報:


(この記事は、上記のYouTube動画のトランスクリプトを基に作成・翻訳されたものです。)

-イマシブ記事