Expo
概要
Fusion Expoサンプルは、Fusionで最大100人参加できるソーシャルアプリケーションを開発するためのアプローチを示します。
各プレイヤーはアバターで表現され、Photon Voice SDKのおかげで同じチャットバブルにいる他のプレイヤーと会話することができます。
このサンプルの特徴は以下の通りです。
- 最初に、アバター選択画面でプレイヤーは自身のアバターをカスタマイズします。
- そして、プレイヤーはExpoシーンに参加できます。サンプルをPCかMACで起動しているなら、デスクトップモード(キーボードとマウス)かVRモード(Meta Questヘッドセット)を選択できます。
- 同じチャットバブルにいるプレイヤー同士は会話できます。各チャットバブルではロックボタンが使用可能で、新規プレイヤーの参加を止めることができます。
- また、互いに近くにいるプレイヤー2人の周りに、動的なチャットバブルが作成されます。
- 3Dペンによって3D描画が可能です。3D描画はアンカーを使用して動かせます。
- また、ホワイトボードも使用可能です。各描画はアンカーを使用して動かせます。
- プレイヤーは(新しいシーンをロードして)新しい場所へ移動できます。
技術的な詳細は、コードコメントで直接提供されています。
技術情報
- サンプルは共有モード(Shared Mode)を使用
- 対象プラットフォームは、PC・Mac・Meta Quest
- 開発環境は、Unity 2021.3、Fusion 2、Photon Voice 2.53
- 2つのアバターソリューションに対応(自作のシンプルなアバター・「Ready Player Me」アバター)
事前準備
サンプルを実行するには、
ダッシュボードからFusionのAppIdを作成して、Realtime Settings(Fusionメニューから選択可能)の
App Id Fusion
フィールドに貼り付けてください。ダッシュボードからVoiceのAppIdを作成して、Realtime Settingsの
App Id Voice
フィールドに貼り付けてください。それから、
AvatarSelection
シーンをロードして、Play
を押してください。
ダウンロード
バージョン | リリース日 | ダウンロード | |
---|---|---|---|
2.0.0 | Oct 16, 2024 | Fusion Expo 2.0.0 Build 691 |
実行ファイルのダウンロード
Expoのデモバージョンが、以下からダウンロードできます。
操作方法
デスクトップ
キーボード
- 移動: WASD or ZQSD で移動
- 回転: QE or AE で回転
- ペンの色: C でペンの色を変更
- メニュー: Esc でアプリケーションのメニュー開閉
- Botのスポーン: B でBotを1体スポーン、1秒長押しでBotを50体スポーン
マウス
- 移動: マウス左クリックでポインタ表示、対象にテレポート
- 回転: マウス右ボタン押下中にドラッグで視点の回転
- 移動 & 回転: マウス左右ボタン押下で前進、視点の回転も可能
- 掴む & 使う(3Dペン): マウス左ボタンを使用してオブジェクトを掴む、キーボードのSpaceキーで使う
Meta Quest
- テレポート: ABXYかスティック押下でポインタ表示、対象にテレポート
- 触る (チャットバブルのロックボタンなど): 単純にボタンに触れて動かす
- 掴む: グラブボタンを使用してオブジェクトを掴む
- Botのスポーン: 左コントローラーのメニューボタン押下でBotを1体スポーン、1秒長押しでBotを50体スポーン
- ペンの色: ジョイスティック上下でペンの色を変更
フォルダー構造
サンプルに関するファイルは、メインフォルダーの/Expo
以下にすべて含まれます。
/IndustriesComponents
には、他のIndustries Samples(Fusion Meetingサンプルなど)と共有されるコンポーネントが含まれます。
/Photon
フォルダーには、FusionとPhoton Voice SDKが含まれます。
/Photon/FusionXRShared
フォルダーには、リグとグラブのロジックが含まれます。これはVR Sharedサンプルを元にしており、その軽量なFusionXRShared SDKは他のプロジェクトでも共有されています。
/Photon/FusionAddons
フォルダーには、このサンプルで使用されるIndustriesアドオンが含まれます。
/XR
フォルダーには、VRの設定ファイルが含まれます。
アーキテクチャ概要
Expoサンプルは、VR Sharedと同じコードベースに依存しています(特にリグの同期)。
ここで使われるグラブシステムは、VR Shared - Local rig grabbingページの実装の改変版です。
このサンプルや他のIndustries Samplesには、レイの同期・ロコモーションの検証・タッチ・スムーズなテレポート・視線システムのような再利用可能な機能を制御するための、FusionXRSharedやIndustriesアドオンが含まれています。
Audio
VoiceConnection
とFusionVoiceBridge
コンポーネントは、Fusionのセッションと同時に、Photon Voice接続を開始します。Recorder
コンポーネントはマイク入力を受け取ります。
Meta Questビルドでは、追加のユーザー承認が必要で、リクエストはMicrophoneAuthorization
スクリプトで管理されます。
ユーザープレハブの頭にはSpeaker
とVoiceNetworkObject
が含まれ、受信した音声が空間音響で伝わります。
FutionとPhoton Voiceとのインテグレーションの詳細は、こちらのページをご覧ください。
Bots
大勢の人が参加するExpoにサンプルが対応していることを示すため、通常のユーザーに加えて、Botを作成できます。
Botは通常のネットワークオブジェクトのプレハブで、音声は無効、ユーザー入力のかわりにナビゲーションメッシュで動きます。
BotNetworkRig
クラスは、有効な位置のみに移動するため、ロコモーション検証システムを使用します。
使われているXRアドオンとIndustriesアドオン
3D/XRプロジェクトのプロトタイピングを誰でも簡単に始められるように、無料のアドオンを提供しています。
詳細はXR Addonsをご覧ください。
また、Industries Circleメンバー向けに、再利用可能な総合的なアドオンを提供しています。
詳細はIndustries Addonsをご覧ください。
このサンプルで使用したアドオンは以下の通りです。
XRShared
XRSharedアドオンは、XR体験を作成するための、Fusionと互換性がある基本コンポーネントを提供しています。
プレイヤーのリグパーツの同期や、グラブやテレポートなどのシンプルな機能を担当します。
詳細はXRSharedをご覧ください。
Spaces
シーン上にある橋を使用して、プレイヤーは新しいワールドに移動できます。橋はそれぞれ特定のシーンに繋がっています。
橋はSpaceLoader
クラスを持ち、プレイヤーがBoxCollider
に衝突した時に新しいシーンのロードを担当します。
例えば、ExpoRoomMainWithBridge
と呼ばれるメインシーンは2つの橋を持ちます。最初の橋はExpoRoomNorth
シーンをロードし、もう一つの橋はExpoRoomSecondScene
をロードします。
そのため、プレイヤーのスポーン位置の候補は3つあります。
- プレイヤーが最初にゲームへ参加した時は、ヤシの木近くのランダムな位置
- プレイヤーが
ExpoRoomNorth
シーンから戻った時は、最初の橋近くの位置 - プレイヤーが
ExpoRoomSecondScene
シーンから戻った時は、2つ目の橋近くの位置
正しいスポーン位置を決定するため、各シーンにはSpawnManager
が必要です。
RandomizeStartPosition
コンポーネントのデフォルトの振る舞いを変更して、他のシーンから戻った時(または再接続時)にプレイヤーがどこから現れるかを定義します。
また、ユーザーはパブリックグループか、特定のグループ番号のプライベートグループに参加できます。
これは、アバター選択画面か、アプリケーションメニューから選択することができます。
詳細はSpace Industriesアドオンをご覧ください。
Connection Manager
接続処理の起動とユーザーのスポーンを管理するために、ConnectionManager
アドオンを使用しています。
詳細はConnectionManagerアドオンをご覧ください。
Extended Rig Selection
サンプルで必要となる2つのリグを切り替えるために使用したアドオンです。
- Metaビルド用のVRリグ
- WindowsとMac用のデスクトップリグ
詳細はExtended Rig Selection Industriesアドオンをご覧ください。
Avatar
このアドオンは、シンプルなアバター一式を含むアバター機能に対応しています。
詳細はAvatar Industriesアドオンをご覧ください。
Ready Player Me Avatar
Ready Player Meアバターとのインテグレーションのアドオンです。
詳細はReady Player Me Avatar Industriesアドオンをご覧ください。
Social distancing
快適なパーソナルスペースを確保するため、Social distancingアドオンを使用しています。
詳細はSocial distancing Industriesアドオンをご覧ください。
Locomotion validation
プレイヤーの移動を(定義されたシーン境界にとどまるように)制限するため、Locomotion validationアドオンを使用しています。
詳細はLocomotion validation Industriesアドオンをご覧ください。
Dynamic Audio group
快適さと帯域消費を最適化するユーザー間の距離を考慮しながら、ユーザー同士のチャットを可能にするため、Dynamic Audio groupアドオンを使用しています。
詳細はDynamic Audio group Industriesアドオンをご覧ください。
Audio Room
AudioRoom
アドオンは、チャットバブルの防音に使用されています。
詳細はAudio Room Industriesアドオンをご覧ください。
Chat Bubble
Expoシーンに含まれる静的なチャットバブルを提供するアドオンです。加えて、プレイヤー2人が互いに近くにいる時に現れる動的なチャットバブルを処理します。
詳細はChat Bubble Industriesアドオンをご覧ください。
Drawing
Expoのメインシーンには、2Dペンのホワイトボードといくつかの3Dペンが含まれます。描画が完了する(ユーザーが「トリガー」ボタンを離す)と、ハンドルが表示されます。これによって、ユーザーは2D/3D描画されたものを動かすことができます。
詳細は3D & 2D drawing Industriesアドオンをご覧ください。
Data Sync Helpers
このアドオンは、2D/3D描画点を同期するために使用されます。
詳細はData Sync Helpers Industriesアドオンをご覧ください。
Blocking contact
ホワイトボードの表面に2Dペンと描画ピンを固定するために、このアドオンを使用しています。
詳細はBlocking contact Industriesアドオンをご覧ください。
Virtual Keyboard
プレイヤー名やルームIDを編集するために、バーチャルキーボードが必要です。
詳細はVirtual Keyboard Industriesアドオンをご覧ください。
Touch Hover
3DオブジェクトやUI要素とのプレイヤーのインタラクションを増やすために、このアドオンが使用されています。インタラクションは、仮想的な手や光線で表現できます。
詳細はTouch Hover Industriesアドオンをご覧ください。
Feedback
アプリケーションのサウンドと、触覚や音声のフィードバックを集中管理するために、Feedback
アドオンを使用しています。
詳細はFeedbackアドオンをご覧ください。
サードーパーティー製コンポーネント
- Oculus Integration
- Oculus Lipsync
- Oculus Sample Framework hands
- Ready player me
- Sounds
- 概要
- アーキテクチャ概要
- 使われているXRアドオンとIndustriesアドオン
- XRShared
- Spaces
- Connection Manager
- Extended Rig Selection
- Avatar
- Ready Player Me Avatar
- Social distancing
- Locomotion validation
- Dynamic Audio group
- Audio Room
- Chat Bubble
- Drawing
- Data Sync Helpers
- Blocking contact
- Virtual Keyboard
- Touch Hover
- Feedback
- サードーパーティー製コンポーネント