ハイライト
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 方式
- ローカルインポート: PC から既存 3D モデル、オーディオなどをインポート。
- Content Library: Reality Composer Pro 内蔵の厳選素材ライブラリ(マテリアル、モデルなど)。
- 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 方式:
- Xcode > Open Developer Tool から開く。独立プロジェクト向け。
- 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 方式:
- 階層パネル下部のプラスボタン
- インスペクタの Add Component から Particle Emitter Component を選択
雲作成の中核パラメータ調整:
| パラメータ | 元の値 | 調整後 | 作用 |
|---|---|---|---|
| Emitter Shape | Cylinder | Sphere | 雲は円柱ではなく球形 |
| Birth Location | Surface | Volume | 体積内で粒子生成 |
| X/Z Scale | 1.0 | 2.0 | 雲を扁平化 |
| Y Scale | 1.0 | 0.5 | 高さを低減 |
| isLocalSpace | false | true | 親変換が粒子に影響 |
| Birth Rate | 2000 | 500 | 粒子数を減らして性能確保 |
| Life Span | 2s | 5s | 粒子寿命を延長 |
キーポイント:
- 高い粒子数は性能に影響。ターゲットプラットフォームに合わせて調整
- isLocalSpace 有効時、親の移動・回転・スケールがエミッターにも影響
- Impact などのプリセットを起点に微調整
空間オーディオ設定
(13:22)
空間オーディオソース追加の 2 方式:
- 階層パネル下部のプラスボタン
- インスペクタの Add Component から Spatial Audio を選択
オーディオファイルグループの手順:
- 階層パネルのプラスから Audio File Group を選択
- 複数オーディオファイルをグループへドラッグ
- Spatial Audio コンポーネントの Focus でそのグループを選択
- 再生ごとにグループ内の 1 ファイルをランダム選択
オーディオソースの選択場面:
- Spatial: 鳥の嘴から鳴き声。近づくと大きく聞こえる
- Ambient: 森の環境音が四方から。固定位置なし
- Channel: BGM。ユーザー位置の影響なし
パフォーマンス最適化の実践
(17:42)
Statistics の Geometry カテゴリ:
- シーン総三角形数: 約 464,000
- Diorama_Base 占有: 256,000(過半)
最適化手順:
- 3D モデリングソフトで Diorama_Base のジオメトリを簡略化
- Project Browser の Import で簡略モデルをインポート
- 元モデルを置換
- Statistics を再確認し Diorama_Base が 2,500 三角形に低下したことを確認
- シーン総三角形数が 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 のコードから再生をトリガー。
関連セッション
- Explore materials in Reality Composer Pro — Reality Composer Pro の Shader Graph マテリアルシステムを深掘り
- Work with Reality Composer Pro content in Xcode — Xcode で Reality Composer Pro コンテンツを読み込み制御するコード実践
- Meet ARKit for spatial computing — visionOS 向け新 ARKit API。Reality Composer Pro コンテンツと併用
- Create 3D models for Quick Look spatial experiences — visionOS Quick Look 向け 3D モデル作成のベストプラクティス
コメント
GitHub Issues · utterances