ハイライト
Unity は Apple と 2 年間協力し、PolySpatial 技術で Unity コンテンツを RealityKit がレンダリング可能な形式に変換します。開発者は慣れた Unity ツールチェーンで visionOS の Shared Space 向け没入型アプリを作成でき、Shader Graph、物理シミュレーション、キャラクターアニメーション、新しい Volume Camera 概念に対応します。
主要内容
Unity から visionOS への架け橋
Unity は数万个のアプリで採用されています。Apple と Unity は 2 年間協力し、明確な目標を掲げました:Unity 開発者が慣れたツールで visionOS 向けコンテンツを構築できるようにすること。
(00:15)2 つの主要なパスがあります。1 つは Shared Space で仮想コンテンツと現実世界をパススルーで混合する方法、もう 1 つは完全没入型体験を作成する方法です。本セッションは前者に焦点を当てます。
PolySpatial:Unity から RealityKit への変換レイヤー
(02:56)Shared Space のすべてのコンテンツは RealityKit でレンダリングされます。Unity は PolySpatial を作成してこの変換を処理します。
PolySpatial が変換する内容:
- マテリアル
- 通常メッシュとスキンメッシュのレンダリング
- パーティクル効果とスプライト
- Unity シミュレーション機能:物理、アニメーション、タイムライン、経路探索、NavMesh、カスタム MonoBehaviours
マテリアル変換の 3 カテゴリ
(03:31)
物理ベースマテリアルは RealityKit の PhysicallyBasedMaterial に直接マッピングされます。URP の Lit、Simple Lit、Complex Lit Shader、またはビルトインパイプラインの Standard Shader はすべて変換されます。
カスタムマテリアルは Unity Shader Graph でサポートされます。Shader Graph は MaterialX 標準形式に変換され、RealityKit の ShaderGraphMaterial になります。ほとんどの Shader Graph ノードがサポートされています。
手書き Shader は RealityKit 経由で直接レンダリングできませんが、RenderTexture 経由で間接的に使用できます。
特殊効果マテリアルには以下が含まれます:
- Unlit Shader:ライティングの影響を受けない単色またはテクスチャオブジェクトを作成
- Occlusion Shader:パススルーがオブジェクトを通過して表示。ワールドメッシュデータと組み合わせて使用可能
Volume Camera:シーンが現実世界に入る方法を制御
(07:50)Volume Camera は visionOS の新概念で、Unity シーンコンテンツが現実世界にどう持ち込まれるかを制御します。2 種類の Volume を作成します:
Bounded Volume:Shared Space で Volume として存在し、明確なサイズと変換を持ちます。ユーザーは再配置できますがサイズ変更はできません。Volume Camera のサイズと変換が Volume 内に表示されるシーン領域を定義します。
Unbounded Volume:Full Space で表示され、シーン全体を選択するサイズ制限がありません。変換がシーン単位を現実単位にどうマッピングするかを指定します。同時にアクティブにできる Unbounded Volume Camera は 1 つのみです。
入力システム
(09:57)visionOS は複数の入力タイプをサポートします:
- Look and Tap:コンテンツを凝視し、指でタップして選択。オブジェクトはイベント受信のために input colliders の設定が必要。最大 2 つの同時タップアクションをサポート。Unity では完全な 3D 位置を含む
WorldTouchイベントとして提供 - Hand and Head Tracking:Unity Hands パッケージで手部関節データ、Input System で頭部姿勢を取得。Unbounded Volume でのみ利用可能、権限が必要
- ARKit データ:平面検出、ワールドメッシュ、画像マーカーなど、AR Foundation 経由でアクセス。Unbounded Volume でのみ利用可能
- Bluetooth デバイス:キーボード、ゲームコントローラーなど、Unity Input System 経由でアクセス
Play to Device:リアルタイムプレビュー
(06:15)PolySpatial は「Play to device」機能をサポートします。完全なビルドフローなしでシミュレーターまたは実機で即座にシーンをプレビューできます。コンテンツの位置とサイズをリアルタイムで調整し、マテリアル、テクスチャ、Shader Graph を変更し、インタラクションイベントをテストできます。イベントはエディタに戻り、デバッグが容易です。
詳細
visionOS 向け Unity プロジェクトの準備
(13:48)PolySpatial が正式リリースされる前でも、今から準備を始められます:
- 新規プロジェクトは Unity 2022 以降を使用
- 既存プロジェクトを Unity 2022 にアップグレード
- 手書き Shader を Shader Graph に変換
- Universal Render Pipeline の採用を検討(ビルトインパイプラインもサポートされるが、将来の改善は URP 側)
- Input System パッケージを使用(混合入力モードはサポートされるが、プラットフォームイベントは Input System 経由のみ)
Volume Camera 設定例
Unity シーンで Volume Camera を設定する主な手順:
- シーンに Volume Camera コンポーネントを追加
- Bounded または Unbounded モードを選択
- Bounded モードでは Dimensions と Transform を設定
- Scene View に緑色の Volume プレビューボックスが表示される
- Volume Camera の位置、回転、スケールを調整して表示されるシーンコンテンツを制御
キーポイント:
- Volume Camera のサイズと変換が表示領域を定義
- Volume Camera を移動または回転すると表示コンテンツが変わる
- Volume Camera のサイズをスケールするとより多くのシーンコンテンツがビューに入る
- Volume 自体の物理サイズは変わらず、内部の表示コンテンツのみ変化
- コンテンツが Volume エッジと交差する場合、クリップされた部分を裏面マテリアルで埋めることを検討
入力イベント処理
WorldTouch イベントの処理ロジック:
// Objects need input colliders to receive events
// Can gaze from a distance and tap to select
// Can also reach out and touch objects directly with a finger
// Up to two simultaneous taps supported
// In Unity, taps are provided as WorldTouch events
// Similar to 2D tap events but with full 3D position
キーポイント:
input collidersがイベント受信の前提条件WorldTouchイベントには 3D 位置情報が含まれる- 遠距離の凝視選択と近距離の直接タッチの両方をサポート
- 最大 2 つの同時タップアクション
マテリアル互換性チェックリスト
| マテリアルタイプ | サポート状況 | 説明 |
|---|---|---|
| URP Lit/Simple Lit/Complex Lit | サポート | PhysicallyBasedMaterial に変換 |
| ビルトイン Standard Shader | サポート | PhysicallyBasedMaterial に変換 |
| Shader Graph | サポート | MaterialX -> ShaderGraphMaterial に変換 |
| 手書き Shader | 直接レンダリング非対応 | RenderTexture 経由で間接使用可能 |
| Unlit Shader | サポート | 単色またはテクスチャ、ライティングの影響なし |
| Occlusion Shader | サポート | パススルー効果用 |
重要ポイント
1. 既存 Unity ゲームを visionOS Shared Space に移植
- やること:既存の Unity モバイルまたはインディーゲームを visionOS に移植し、Shared Space で他のアプリと共存させる
- 価値:PolySpatial がほとんどの Unity 機能を自動変換し、既存プロジェクトの変更量は最小限。Shared Space ではゲーム中に攻略情報を調べたりチャットしたりできる
- 始め方:Unity 2022 にアップグレードし、手書き Shader を Shader Graph に変換、インタラクティブオブジェクトに input colliders を追加、Volume Camera を Bounded モードで設定
2. 空間コラボレーションツールを構築
- やること:複数人で協力する 3D ホワイトボードまたはデザインレビューツールを開発
- 価値:Bounded Volume で他のアプリと並存でき、ユーザーは任意の角度から 3D コンテンツを閲覧可能。Play to Device で反復速度が極めて速い
- 始め方:Volume Camera の Bounded モードを使用し、Unity の物理システムとキャラクターナビゲーションを活用、WorldTouch イベントでユーザーインタラクションを処理
3. ジェスチャー駆動の AR アート制作アプリを作成
- やること:ユーザーがジェスチャーで現実環境に 3D コンテンツを「描画」
- 価値:Unbounded Volume + ARKit 平面検出 + 手部トラッキングで実際の表面に直接創作可能。Unity のパーティクルシステムと物理シミュレーションで効果がより生き生きと
- 始め方:Unbounded Volume に切り替え、手部トラッキングと ARKit の権限を申請、AR Foundation で平面データを取得、Unity Hands パッケージで関節位置を取得
4. 教育向け没入型学習体験を構築
- やること:抽象的概念(分子構造、歴史シーンなど)をインタラクティブな 3D モデルにする
- 価値:ユーザーは任意の角度から近くでコンテンツを観察でき、Shader Graph で魅力的な視覚効果を作成、Bounded Volume は教室環境で他の学習ツールと並べて使用に適している
- 始め方:Reality Composer Pro で USD モデルを準備し Unity にインポート、Shader Graph で視覚効果を作成、Bounded Volume Camera を設定
関連セッション
- Bring your Unity VR app to a fully immersive space — 既存 Unity VR アプリを visionOS 完全没入空間に移行
- Build great games for spatial computing — 空間コンピューティングゲーム開発技術の概要
- Go beyond the window with SwiftUI — SwiftUI 空間シーンタイプの詳細
コメント
GitHub Issues · utterances