This document is about: FUSION 2
SWITCH TO

Expo

Level 4
Available in the Industries Circle
Circle

概要

Fusion Expoサンプルは、Fusionで最大100人参加できるソーシャルアプリケーションを開発するためのアプローチを示します。

各プレイヤーはアバターで表現され、Photon Voice SDKのおかげで同じチャットバブルにいる他のプレイヤーと会話することができます。

このサンプルの特徴は以下の通りです。

  • 最初に、アバター選択画面でプレイヤーは自身のアバターをカスタマイズします。
  • そして、プレイヤーはExpoシーンに参加できます。サンプルをPCかMACで起動しているなら、デスクトップモード(キーボードとマウス)かVRモード(Meta Questヘッドセット)を選択できます。
  • 同じチャットバブルにいるプレイヤー同士は会話できます。各チャットバブルではロックボタンが使用可能で、新規プレイヤーの参加を止めることができます。
  • また、互いに近くにいるプレイヤー2人の周りに、動的なチャットバブルが作成されます。
  • 3Dペンによって3D描画が可能です。3D描画はアンカーを使用して動かせます。
  • また、ホワイトボードも使用可能です。各描画はアンカーを使用して動かせます。
  • プレイヤーは(新しいシーンをロードして)新しい場所へ移動できます。

技術的な詳細は、コードコメントで直接提供されています。

fusion expo

技術情報

  • サンプルは共有モード(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 Apr 18, 2024 Fusion Expo 2.0.0 Build 503

実行ファイルのダウンロード

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

VoiceConnectionFusionVoiceBridgeコンポーネントは、Fusionのセッションと同時に、Photon Voice接続を開始します。Recorderコンポーネントはマイク入力を受け取ります。 Meta Questビルドでは、追加のユーザー承認が必要で、リクエストはMicrophoneAuthorizationスクリプトで管理されます。 ユーザープレハブの頭にはSpeakerVoiceNetworkObjectが含まれ、受信した音声が空間音響で伝わります。 FutionとPhoton Voiceとのインテグレーションの詳細は、こちらのページをご覧ください。

Bots

大勢の人が参加するExpoにサンプルが対応していることを示すため、通常のユーザーに加えて、Botを作成できます。 Botは通常のネットワークオブジェクトのプレハブで、音声は無効、ユーザー入力のかわりにナビゲーションメッシュで動きます。 BotNetworkRigクラスは、有効な位置のみに移動するため、ロコモーション検証システムを使用します。

使われているXRアドオンとIndustriesアドオン

3D/XRプロジェクトのプロトタイピングを誰でも簡単に始められるように、無料のアドオンを提供しています。 詳細はXR Addonsをご覧ください。 また、Industries Circleメンバー向けに、再利用可能な総合的なアドオンを提供しています。 詳細はIndustries Addonsをご覧ください。

このサンプルで使用したアドオンは以下の通りです。

XRShared

XRSharedアドオンは、XR体験を作成するための、Fusionと互換性がある基本コンポーネントを提供しています。 プレイヤーのリグパーツの同期や、グラブやテレポートなどのシンプルな機能を担当します。

詳細はXRSharedをご覧ください。

Spaces

シーン上にある橋を使用して、プレイヤーは新しいワールドに移動できます。橋はそれぞれ特定のシーンに繋がっています。

expo map

橋はSpaceLoaderクラスを持ち、プレイヤーがBoxColliderに衝突した時に新しいシーンのロードを担当します。

例えば、ExpoRoomMainWithBridgeと呼ばれるメインシーンは2つの橋を持ちます。最初の橋はExpoRoomNorthシーンをロードし、もう一つの橋はExpoRoomSecondSceneをロードします。 そのため、プレイヤーのスポーン位置の候補は3つあります。

  • プレイヤーが最初にゲームへ参加した時は、ヤシの木近くのランダムな位置
  • プレイヤーがExpoRoomNorthシーンから戻った時は、最初の橋近くの位置
  • プレイヤーがExpoRoomSecondSceneシーンから戻った時は、2つ目の橋近くの位置

正しいスポーン位置を決定するため、各シーンにはSpawnManagerが必要です。 RandomizeStartPositionコンポーネントのデフォルトの振る舞いを変更して、他のシーンから戻った時(または再接続時)にプレイヤーがどこから現れるかを定義します。

expo bridge

また、ユーザーはパブリックグループか、特定のグループ番号のプライベートグループに参加できます。 これは、アバター選択画面か、アプリケーションメニューから選択することができます。

詳細は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アドオンをご覧ください。

サードーパーティー製コンポーネント

Back to top