WWDC Quick Look 💓 By SwiftGGTeam
Meet Reality Composer Pro

Meet Reality Composer Pro

元の動画を見る

ハイライト

Apple は USD ベースの 3D シーンエディタ Reality Composer Pro を発表しました。開発者はビジュアル UI でシーンを組み立て、パーティクル効果と空間オーディオを追加し、visionOS デバイス上で直接プレビューでき、空間アプリ向け 3D コンテンツ制作のハードルを大きく下げます。

主要内容

Reality Composer から Reality Composer Pro へ

2019 年 Apple は Reality Composer を発表し、iOS 上の AR 入門を支援しました。4 年後、visionOS は Reality Composer Pro をもたらし、プロ向け 3D コンテンツ開発ツールとして位置づけられます。

中核的な違い: Reality Composer は軽量 AR シーン向け、Reality Composer Pro は没入型空間計算体験向けで、より複雑なシーン構造、パーティクルシステム、空間オーディオ、パフォーマンス分析をサポートします。

プロジェクト構造: Swift Package + USD

Reality Composer Pro プロジェクトは本質的に Swift Package です。Xcode で xrOS App テンプレートを作成すると、Reality Composer Pro プロジェクトが自動生成・関連付けされます。

ビルド時、.rkassets フォルダ内の USD(Universal Scene Description)ファイルがフレームワークにコンパイルされ、Xcode プロジェクトから直接参照できます。USD は Apple 推奨の 3D 形式で、階層参照と増分更新をサポートします。

UI の 4 パネル

  • ビューポート(Viewport): 中央の 3D プレビュー。WASD、方向キー、ゲームパッドでナビゲート。
  • 階層パネル(Hierarchy): 左側。シーン内 3D オブジェクトの検索、選択、整理。
  • インスペクタ(Inspector): 右側。選択オブジェクトの位置、回転、スケールなどを編集。下部の Add Component で RealityKit コンポーネント追加。
  • エディタパネル(Editor): 下部。Project Browser、Shader Graph、Audio Mixer、Statistics の 4 タブ。

アセットインポートの 3 方式

  1. ローカルインポート: PC から既存 3D モデル、オーディオなどをインポート。
  2. Content Library: Reality Composer Pro 内蔵の厳選素材ライブラリ(マテリアル、モデルなど)。
  3. Object Capture: 実物の写真から 3D モデルへ変換。

シーン組み立てと USD 参照

Reality Composer Pro はマルチシーン設計をサポート。シーンは完成品(Xcode App で直接使用)または再利用コンポーネントにできます。

Session では Dioramas App の階層設計をデモ: まず再利用可能な雲ユニット Cloud_Chunk を作成し、Cloud_A で 3 つの Cloud_Chunk を参照して位置調整、最後にメインシーンで Cloud_A、Cloud_B、Cloud_C を参照。

USD の参照機構で「一度変更、全体更新」が可能。すべての location pin は同じ Location_Pin ファイルを参照し、置換すると全インスタンスが自動更新されます。

パーティクルシステム

パーティクルエミッターは 2 部構成:

  • Particle: 個々の粒子の見た目(色、属性、力場、レンダリング)を制御。
  • Emitter: 発射挙動(タイミング、形状、生成)を制御。

Session では Impact プリセットで雲を作成: エミッター形状を Sphere、出生位置を Volume に変更、XYZ スケールで雲を扁平化、isLocalSpace を有効にして親変換の影響を反映、birth rate を 2000 から 500 に下げて性能とバランス、life span を 2 秒から 5 秒に延長。

空間オーディオ

3 種類のオーディオソース:

  • Spatial: 位置と方向を持つ 3D オーディオ。机上のラジオなどに適する。
  • Ambient: 方向はあるが位置がないオーディオ。特定方向からの風など。
  • Channel: 位置も方向もないオーディオ。BGM など。

オーディオファイルグループ(Audio File Group)は複数ファイルを含み、再生ごとにランダム選択。Session では 2 つの鳥の鳴き声で Bird_Calls グループを作り、鳥ごとに鳴き声を変化させます。

パフォーマンス統計

Statistics パネルは General、Physics、Animation、Particle Emitters、Audio、Materials、Geometry、Textures の 8 カテゴリ。各カテゴリ右上の展開ボタンで詳細データを表示。

Session では diorama base が 256,000 三角形を使用し地形より多いことが判明。簡略モデルに置換後 2,500 三角形に、シーン全体は 464,000 から 210,000 へ半減以上、見た目は変わらず。

デバイスプレビュー

visionOS デバイス接続後、ツールバーのドロップダウンでデバイスを選び on-device preview をクリックすると、シーンが AR として目の前に表示されます。ピンチドラッグで回転、ピンチでスケール調整。

詳細

プロジェクト設定とナビゲーション

01:14

Reality Composer Pro プロジェクト作成は 2 方式:

  1. Xcode > Open Developer Tool から開く。独立プロジェクト向け。
  2. Xcode で xrOS App テンプレートを作成。関連 Reality Composer Pro プロジェクトが自動生成。

Xcode App で Reality Composer Pro コンテンツを使うなら 2 番目を推奨。生成された Swift Package はビルド時に自動でフレームワーク化されます。

プロジェクトの USD ファイルは .rkassets に置き、ビルド後 Xcode から参照可能:

// Xcode で Reality Composer Pro コンテンツをよみこむ
import RealityKit

// Swift Package からシーンをよみこむ
let scene = try! await Entity(named: "SceneName", in: realityKitContentBundle)

キーポイント:

  • realityKitContentBundle は Reality Composer Pro プロジェクトコンパイル後のリソースバンドル
  • Entity(named:in:) で指定名の USD シーンを非同期読み込み
  • シーン名は Reality Composer Pro のシーンファイル名に対応

パーティクルエミッター設定

07:11

パーティクルエミッター追加の 2 方式:

  1. 階層パネル下部のプラスボタン
  2. インスペクタの Add Component から Particle Emitter Component を選択

雲作成の中核パラメータ調整:

パラメータ元の値調整後作用
Emitter ShapeCylinderSphere雲は円柱ではなく球形
Birth LocationSurfaceVolume体積内で粒子生成
X/Z Scale1.02.0雲を扁平化
Y Scale1.00.5高さを低減
isLocalSpacefalsetrue親変換が粒子に影響
Birth Rate2000500粒子数を減らして性能確保
Life Span2s5s粒子寿命を延長

キーポイント:

  • 高い粒子数は性能に影響。ターゲットプラットフォームに合わせて調整
  • isLocalSpace 有効時、親の移動・回転・スケールがエミッターにも影響
  • Impact などのプリセットを起点に微調整

空間オーディオ設定

13:22

空間オーディオソース追加の 2 方式:

  1. 階層パネル下部のプラスボタン
  2. インスペクタの Add Component から Spatial Audio を選択

オーディオファイルグループの手順:

  1. 階層パネルのプラスから Audio File Group を選択
  2. 複数オーディオファイルをグループへドラッグ
  3. Spatial Audio コンポーネントの Focus でそのグループを選択
  4. 再生ごとにグループ内の 1 ファイルをランダム選択

オーディオソースの選択場面:

  • Spatial: 鳥の嘴から鳴き声。近づくと大きく聞こえる
  • Ambient: 森の環境音が四方から。固定位置なし
  • Channel: BGM。ユーザー位置の影響なし

パフォーマンス最適化の実践

17:42

Statistics の Geometry カテゴリ:

  • シーン総三角形数: 約 464,000
  • Diorama_Base 占有: 256,000(過半)

最適化手順:

  1. 3D モデリングソフトで Diorama_Base のジオメトリを簡略化
  2. Project Browser の Import で簡略モデルをインポート
  3. 元モデルを置換
  4. Statistics を再確認し Diorama_Base が 2,500 三角形に低下したことを確認
  5. シーン総三角形数が 210,000 に

キーポイント:

  • Statistics は開発段階でボトルネックを発見できる
  • ジオメトリ簡略化はランタイムではなくモデリング段階で行う
  • 視覚的複雑さと幾何的複雑さは必ずしも比例しない。個別分析が必要

重要ポイント

  • やること: Reality Composer Pro で空間内に商品 3D モデルを見せる仮想製品展示 App を作る。

  • 価値: 3D レンダリングコード不要。ビジュアルエディタでシーン構築。USD 参照でモデル更新が全展示シーンに自動同期。

  • 始め方: Xcode で xrOS App テンプレートを作成し、関連 Reality Composer Pro で商品 USDZ をインポート、位置とスケールを調整、環境光と空間オーディオを追加、Xcode で Entity(named:in:) 読み込み。

  • やること: パーティクルシステムで動的な自然環境を作る没入型瞑想 App を作成する。

  • 価値: 降る雪、ホタル、流れる霧などを作れ、空間オーディオと組み合わせて没入感を演出。Statistics で粒子数を性能予算内に保てる。

  • 始め方: Reality Composer Pro でパーティクルシーンを作り、Impact/Smoke/Fire などのプリセットから調整、birth rate は 500 以下、単一の複雑エミッターではなく複数の小さなシーンを組み合わせる。

  • やること: 3D シーンで歴史建築や生物構造を示す教育向け空間 App を開発する。

  • 価値: 階層パネルで複雑な構造(建物の階、生物の器官)を整理し、インスペクタで各部品の位置と回転を精密制御、デバイスプレビューで実空間のスケール感を確認。

  • 始め方: モデルを論理グループ(Building_Floor1 など)に分け、階層パネルで構造化、Command-D で繰り返し要素を複製、デバイス接続後ピンチドラッグで空間スケールを検証。

  • やること: 各シーンに独自の空間オーディオ環境を持つインタラクティブ絵本を作る。

  • 価値: オーディオファイルグループで環境音をランダム再生し単調さを回避。Spatial Audio でキャラクター声が対応位置から聞こえ没入感を高める。

  • 始め方: 各シーンに Ambient を背景音として配置し、キャラクターと物体に Spatial を追加、類似効果音をオーディオファイルグループで整理、Xcode のコードから再生をトリガー。

関連セッション

コメント

GitHub Issues · utterances