This document is about: FUSION 2
SWITCH TO

Avatar


Available in the Industries Circle
Circle
Fusion Industries プロトタイピングアドオン

Avatarアドオンは、アバターに共通する基本的な機能と、ユーザーが自身のアバターをカスタマイズできるアバターシステムの作成方法を示すようなシンプルなアバターシステムを提供します。

Avatar

AvatarRepresentationクラスは、以下のような機能を持ちます。

  • UserInfo(アバターの名前やURL)の変更の購読
  • 与えられたURLに対する適切なアバターシステムの選択
  • LODサポート(詳細は後述)
  • IAvatarインターフェースによるアバター共通の記述(色・髪など)の定義
  • NetworkRigゲームオブジェクトの子(RigInfoシステムがハードウェアリグの参照を追跡しているなら、HardwareRigの子も)が実装するIAvatarRepresentationListenerのアバターのロード完了イベントのブロードキャスト

LODサポート

AvatarRepresentationの兄弟にLODGroupが追加可能で、その場合、AvatarRepresentationは以下の機能を持ちます。

  • アバターシステムで動的に作成されたRendererLODGroupで追加/削除
  • アバターがロード中か、URLが間違っている場合、高レベルのLODを表示(loadingModeに基づき、デフォルトではリモートユーザーのみ)
  • IgnoreDistanceメソッドによる、LODGroupの有効/無効の制御

Avatar Representation listener

アドオンは、IAvatarRepresentationListenerを実装したコンポーネントを提供し、アバターのロードに反応します。

ローカルアバターカリング

ローカルアバターカリングシステムは、ローカルユーザーのアバターを隠します。ハードウェアリグが持つカメラは、レイヤーを隠すためのカリングマスクがあり、ローカルユーザーに関連付けられたアバターのゲームオブジェクトに適用されます。

ローカルアバターのカリングは、HardwareRigゲームオブジェクトにLocalAvatarCullingスクリプトを追加することで行われます。
これを機能させるには、HardwareRigLocalAvatarCullingを追加することに加えて、RigInfoシステムが必要なことに注意してください。

  • NetworkRunnerゲームオブジェクトにRigInfoを付ける
  • NetworkRigゲームオブジェクトとHardwareRigゲームオブジェクトにRigInfoRegisterを付ける

Hand representation manager

NetworkHandRepresentationManagerHardwareHandRepresentationManagerは、手のオンラインとオフライン表現を管理するオプションのコンポーネントです。

これらの主な目的は、アバターの肌の色に基づいて手の色を変更できるようにすることです。

また、オフラインとオンラインの手の表示ロジックを決定する様々なオプションを提供していて、接続状態やアバターシステムで手が利用可能かどうか等に基づきます。

ハードウェアの手はデコレーションシステムも持っていて、オンラインのデータに基づいてオフラインの手のパーツ(時計など)を動かすことができます。
これは、ネットワークの手が平面でブロックされるような特別なケースで便利です。これによって、ハードウェアの手の装飾がネットワークの手の補間対象に追従することが保証されます。(ネットワークの手の補間対象が、手がブロックされた時など、手動で変更される時に便利です)

Low poly simple avatar

LowPolySimpleAvatarは、プレイヤーが選択したアバター(シンプルなアバターモデルか、Ready Player Meモデル)に従って、ローポリのアバター(LODGroup)を調整します。

そのために、AvatarRepresentationOnRepresentationAvailableコールバックを使用します。
そして、ローポリのアバターの身体・髪・服の色マテリアルが、選択されたアバターに従って調整されます。
また、アバターモデルがシンプルなアバターなら、髪のメッシュはシンプルなアバターモデルに対応した髪LODメッシュで調整されます。

Simple Avatar

Fusion Industries Addon Simple avatar

このアドオンは、ユーザーが様々なパラメーター(肌の色・服・髪など)を選択して自身のアバターを作成できるアバターシステムの作成方法を示す、シンプルなアバターシステムを含んでいます。

SimpleAvatarには、以下のようなメソッドがあります。

  • 新しい「シンプルなアバター」URLからアバターを変更する
  • ランダムな「シンプルなアバター」モデルを生成する
  • 特定のアバターのパラメーターを調整する(髪・服・肌)
  • アバターと目と口を動かす

また、RepresentationAvailableによって、新しいシンプルなアバターがロードされたことをAvatarRepresentationに通知します。

デモシーンはAssets\Photon\FusionAddons\Avatar\Demo\Scenes\フォルダーにあります。
シンプルなアバターをテストするには、AvatarLODSimpleAvatarシーンを開きます。
ユーザーがスポーンしたら、SimpleAvatarNetworkRig(Clone)ゲームオブジェクトを選択して、UserInfoAvatarURLパラメーターを変更します。
例えば、以下のURLのアバターを使用できます:simpleavatar://?hairMesh=1&skinMat=2&clothMat=0&hairMat=0&clothMesh=1

目の動きのシミュレーション

アバターの視線が固定されて表示されることを避けるため、目の動きをシミュレーションするシステムを使用可能です。このシステムは、GazeTargetを持つ他のオブジェクトを追跡するように、オブジェクト(アバターの目)を動かすことができます。

  • シーンにはGazeInfoコンポーネント(追跡するターゲットを決定するため、一定間隔で動作するバックグラウンドのスレッド)を置く必要があります。
  • アバターオブジェクトにはGazerコンポーネントが必要で、gazingTransformsに目のゲームオブジェクトを提供します(gazingTransformOffsetsから回転のオフセットを提供することも可能)。
  • パフォーマンスを向上するオプションとして、GazerコンポーネントのeyeRendererVisibilityフィールドにRendererVisibleを提供可能です。RendererVisibleがアバターの非表示を検知すると、そのアバターの目のシミュレーションが停止します。

Oculus リップシンク

アバターシステムによっては、実践的なリップシンクが必要になるでしょう。そのため、AvatarアドオンはOculus Lipsyncライブラリを含んでいます。Oculus Audio SDK license(https://developer.oculus.com/licenses/audio-3.3/)と、Meta Platform Technologies SDK Licence Agreement(https://developer.oculus.com/licenses/oculussdk/)の下で、Oculus Integrationで利用可能です。

依存関係

  • Text Mesh Pro (only used to display the user name plate)
  • Photon Voice SDK

ダウンロード

このアドオンの最新バージョンは、Industries アドオンのプロジェクトに含まれています。

対応するトポロジー

  • 共有モード

更新履歴

  • Version 2.0.3: Add precise type random avatar
  • Version 2.0.2: Support loading random avatar
  • Version 2.0.1: remove Hand mesh animation (was moved to hardware hand)
  • Version 2.0.0: Fusion 2.0 support
  • Version 1.0.2: use NetworkString for UserName & AvatarURL
  • Version 1.0.1: fix namespace for LookAtCamera
  • Version 1.0.0: First release
Back to top