WWDC Quick Look 💓 By SwiftGGTeam
Reality Composer Pro 3で空間ワークフローを強化する

Reality Composer Pro 3で空間ワークフローを強化する

元の動画を見る

ハイライト

Reality Composer Pro 3には、Animation Graph、Behavior Tree、Script Graph、Compute Graph、Navigation Meshという5つの主要なビジュアルツールが追加されました。これにより、キャラクターアニメーションのブレンド、自律的な振る舞いの定義、インタラクションロジック、パーティクルエフェクト、シーン内ナビゲーションをエディタ内で完結でき、コードを書かずに完全な空間シーンを構築できます。

概要

visionOS開発の初期には、NPCにシーン内を自律的に巡回させ、インタラクションに反応させるのは手間のかかる作業でした。開発者はXcodeで大量のSwiftコードを書く必要がありました。RealityKit APIでアニメーション遷移を手動制御し、経路探索ロジックを自前で実装し、パーティクルシステムのコードを書き、パラメータを変更するたびにデバイスへ再ビルドして再デプロイする必要がありました。アーティストやデザイナーは要望を出すことはできても、反復作業に直接参加することはできませんでした。

Reality Composer Pro 3は、これらの能力をすべてビジュアルエディタに移します。Animation Graphはコードの代わりにノード接続でアニメーションをブレンドし、Behavior Treeはキャラクターの複数ステップの振る舞いを定義し、Script Graphはインタラクションイベントを処理し、Compute GraphはGPU上でパーティクルシミュレーションを実行し、Navigation Meshは歩行可能な経路を自動計算します。これらはすべてMac上でリアルタイムにプレビューでき、Vision Proを装着すればLive Previewで空間内から直接テストできます。

このワークフローの変化により、プログラマー以外も空間シーン構築に参加できます。プランナーはNPCの巡回ルートを直接調整でき、アーティストはデータや雰囲気を表すパーティクル効果を調整でき、反復全体で毎回プログラマーの介入を必要としなくなります。

詳細

Animation Graph: アニメーションブレンドのビジュアル制御

02:10

Animation Graphは、キャラクターのランタイムアニメーションを制御するノードベースのアニメーションエディタです。モーションリターゲティング、ブレンドスペース、逆運動学などの高度な機能をサポートします。

錬金術師キャラクターは、idleとwalkの2つのアニメーションを切り替える必要があります。Animation Graphでこのステートマシンを構築するには、いくつかの手順があります。

  1. State Machineノードを作成し、Final Poseノードに接続します
  2. ステートマシン内部に2つのAnimation Stateノードを追加し、それぞれIdleとWalkという名前にします
  3. IdleからWalk、WalkからIdleへの遷移を作成し、それぞれの遷移に条件を追加します
  4. Inputs InspectorにisWalkingというBooleanパラメータを追加し、遷移条件として使います
  5. 2つのアニメーション状態にAnimation Clipノードを接続し、対応するアニメーションクリップを指定します

テスト時には、エディタ内でisWalkingパラメータを直接切り替えることができ、キャラクターは2つのアニメーション間を滑らかに遷移します。このビジュアルなデバッグ方法は、コードにブレークポイントを設定してアニメーション状態を観察するよりもはるかに直感的です。

Behavior Tree: 自律的な振る舞いを定義する

06:28

Behavior Treeは、Reality Composer Pro 3に追加された振る舞いエディタで、複数ステップの自律的な振る舞いを構築するために使います。ノードは2種類に分かれます。Compositeノードはフローを制御し、Actionノードは具体的なタスクを実行します。

Compositeノードには3つの種類があります。

  • Sequence: 子ノードを順番に実行し、いずれかが失敗すると停止します
  • Selector: 子ノードを順番に実行し、いずれかが成功すると停止します
  • Parallel: すべての子ノードを同時に実行します

よく使うActionノードには次があります。

  • Move To: 指定した位置へ移動します
  • Rotate To Face: 目標方向へ向きを変えます
  • Wait: 指定時間待機します
  • Parameter Setter: エンティティのパラメータを変更します

錬金術師の巡回ルートは、次のように構築できます。Rotate To Face、Move To、Waitの3つのアクションを含むSequenceノードを使い、Move Toの前後にParameter Setterを追加してisWalkingパラメータを制御します。これにより、アニメーションと振る舞いを同期できます。

Script Graph: インタラクションロジックを追加する

11:14

Script Graphは、イベント駆動のビジュアルスクリプトシステムです。シーンレベルまたはエンティティレベルのイベントに反応し、エンティティ間のインタラクションを定義します。

錬金術師がタップ操作に反応するようにするには、Behavior Treeを変更します。cauldronサブシーケンスにPreconditionを追加し、readyToBrewというBooleanパラメータにバインドします。これにより、そのパラメータがtrueになるまで、キャラクターはテーブルのそばで待機します。

次に、Script Graphで次を行います。

  1. On Tapノードを追加してタップジェスチャを監視します
  2. Set Entity Parameterノードを追加します
  3. パラメータ名をreadyToBrewに、値をtrueに設定します
  4. On Tapのイベント出力をSet Entity Parameterに接続します

Reality Composer Pro 3のLive Preview機能を使えば、このインタラクションをApple Vision Pro上で直接テストできます。キャラクターをタップすると、すぐに大釜の方向を向き、薬を作り始めます。

14:52

Navigation Meshコンポーネントは、シーン内の歩行可能な表面を定義します。Navigation Controllerはこのメッシュを使い、キャラクターがある地点から別の地点へ移動する経路を計算し、木や水たまりなどの障害物を自動的に避けます。

Navigation Meshの設定は3つの部分に分かれます。

  • Shapes: メッシュ生成に使う境界ボックスを定義します
  • Off-Mesh Connections: はしごで屋根に上る場合など、つながっていない領域を手動で接続します
  • Generation Parameters: ジオメトリのサンプリング精度を制御します。たとえばcell sizeを小さくすると、より細部を捉えられます

設定後は、Behavior Tree、Animation Graph、または独自のSwiftシステムからNavigation Componentを使い、キャラクターにシーン内を自律的に移動させることができます。

Compute Graph: GPUパーティクルシミュレーション

17:13

Compute GraphはMetalベースのビジュアルパーティクルエディタです。GPU上でパーティクルシミュレーションを実行し、パーティクルの生成、変化、レンダリングを完全に制御できます。

Compute Graphは4つのステージに分かれます。

  • Emitter: パーティクルをいつ生成するかを制御します。継続、バースト、単発を選べます
  • Initialize: 速度、寿命、サイズなど、パーティクルの初期値を設定します
  • Simulate: 各フレームで重力や乱流などの力を適用し、パーティクル状態を変化させます
  • Output: 色や透明度など、視覚的な表現を制御します

大釜の煙のエフェクトは次のように実装します。

  1. EmitterステージでContinuous Emitノードを使い、継続的に発生させます
  2. Initializeステージでサイズと寿命をランダム化し、Spawn in Sphereで球状の体積内にパーティクルを配置します
  3. Simulateステージで負の重力を適用し、煙が上に漂うようにします
  4. Outputステージで、寿命に応じてパーティクルをフェードイン、フェードアウトさせ、高さに応じて色を変えます

レンダリングにはShader Graphマテリアルを使い、円形のビルボードを描画して丸みのある煙の外観を作ります。

Shader Graphの強化

19:43

Reality Composer Pro 3のShader Graphには、いくつかの機能が追加されています。

  • Subsurface Scattering: 半透明マテリアルのリアリティを高めます
  • RealityKit PBR Surface 2: sheenやsubsurface scatteringなどの表面属性を追加し、拡散反射と遮蔽のシェーディングを改善します
  • Hair Surface: 髪や毛皮専用のシェーダです
  • Portal SurfaceとPortal Geometry Modifier: ポータル表面のピクセル単位の透明度を変更し、頂点アニメーションを駆動します

実践アイデア

インタラクティブなシーンガイドを作る

何を作るか: ユーザーが展示物をタップすると、バーチャルガイドが自動的に展示物の前まで歩いて説明を始めます。

なぜ作る価値があるか: Navigation Meshは複雑なシーン内の障害物をキャラクターに避けさせ、Behavior Treeは複数段階の巡回ルートを管理し、Script Graphはユーザーのタップに反応します。

始め方: 展示ホール全体を覆うNavigation Meshを作成し、Behavior TreeでMove Toノードのシーケンスを定義し、Script GraphのOn Tapノードで振る舞いをトリガします。

動的な天候システムを構築する

何を作るか: 雨や雪が時間とともに変化し、パーティクルの強度や風向きも動的に調整されます。

なぜ作る価値があるか: Compute GraphはGPU上で数万個のパーティクルをシミュレーションでき、Script Graphは時間パラメータに応じて発生率や風力を動的に調整できます。

始め方: Compute Graphで雨や雪のパーティクルシステムを作成し、Emitterステージでemission rateパラメータを公開し、Script Graphでゲーム内時間に応じてそのパラメータを変更します。

バーチャルペットの伴侶を開発する

何を作るか: ユーザーについて歩き、なでる操作に反応し、感情を表現するバーチャルキャラクターです。

なぜ作る価値があるか: Animation Graphは複数の感情アニメーションをブレンドし、Behavior Treeは追従、待機、遊びなどの状態遷移を定義し、Script Graphはジェスチャ操作を処理します。

始め方: idle、walk、happyの3種類のアニメーションを用意し、Animation Graphのステートマシンで切り替え、Behavior TreeのSelectorノードで距離に応じて追従するか待機するかを選びます。

インタラクティブなゲームプロトタイプを実装する

何を作るか: コードを書かずに、RCP3内で完成させるプレイ可能なミニゲームのプロトタイプです。

なぜ作る価値があるか: Script Graphのイベントシステムと組み込みゲームノードは、衝突、得点、状態保存などのゲームロジックを処理できます。

始め方: セッション「Reality Composer Pro 3でノーコードゲームを設計する」を参考に、Script Graphで完全なゲームループを構築します。

没入型パフォーマンスを作る

何を作るか: 複数のキャラクターが脚本に沿って複雑な動作シーケンスを実行し、照明やパーティクルエフェクトが同期して連動します。

なぜ作る価値があるか: Sequencerはシーンイベントを調整でき、Animation Graphはキャラクターの演技を制御し、Compute Graphはステージエフェクトを提供します。

始め方: 各キャラクターに独立したAnimation GraphとBehavior Treeを作成し、Script Graphでパフォーマンス開始を一括トリガし、Sequencerで照明とパーティクルを同期します。

関連セッション

コメント

GitHub Issues · utterances