アバター
VRChatでは、オリジナルのアバターを作成してアップロードすることができます!このカテゴリーでは、VRChatのAvatars 3.0 SDKの使い方を解説します。
アバターの作成
まずは Creating your first avatar を確認してください。
サイドバーには「アバター」に関するカテゴリが丸ごと用意されています。その中でも特に重要で影響の大きいページをいくつか紹介します:
- Rig Requirementsでは、VRChat向けにカスタム3Dモデルの階層をどのように設定すべきかを解説しています。
- Avatar Performance Ranking Systemでは、アバターのパフォーマンスがどのように「Excellent」になったり「Very Poor」になったりするのかを解説しています。
- Avatar Optimization Tips - なぜ最適化が必要なのかを理解したら、このページでフレームレートを取り戻す方法を学びましょう。
- このページの続きを読んで、Avatars 3.0 SDKの重要な概念についてさらに理解を深めましょう。
Avatars 3.0とは?
Avatars 3.0とは、VRChatのアバターで利用可能なすべての機能を指す名称です。AV3の機能は、VRChatにおけるアバターの表現力、パフォーマンス、そして能力を向上させることに重点を置いています。
Avatars 3.0は、着用しているアバターを操作・制御するためのAction Menuと密接に統合されています。AV3アバターを作成する前に、実際にワールドに入ってAction Menuを試してみることをお勧めします。
前提条件
概念の理解
Avatars 3.0を理解し活用するには、いくつかの概念を知っておく必要があります。これらの概念は、アバターの構造や最適な組み立て方、また各システムの意図された用途を理解する助けとなります。
Unityのシステム
本書は、Animatorに関するある程度の知識があることを前提としています。特に、以下の基本的な操作知識を身につけておくようにしてください。
AnimatorとアニメーションAnimatorレイヤー、レイヤーウェイト、およびブレンド- StateとTransition
Animator Parameter- State behavior
Avatar mask
また、以下のような知識があるとさらに役立ちます。
State exit time- Loop Time
- (応用)レイヤー間のタイム同期(
Time Sync between layers) - (応用)ブレンドツリー(
Blend trees)
基本事項
Avatars 3.0を使用すると、Simulated Eye Movement(擬似的な目線の動き)やViseme(口形)を備えた基本的なアバターを非常に素早く作成できます。
- アバターをインポートし、Humanoidとしてリグを設定します。マテリアルなども設定してください。
Avatar Descriptorコンポーネントを追加します。Simulated Eye Movement(擬似的な目線の動き)を使用したい場合は、目のボーン(eye bones)を指定します。- Viseme(口形)が必要な場合は、Visemeのタイプを指定します。Rigging Configuration画面で顎のボーン(jaw-flap bone)を割り当てるか、ブレンドシェイプ(blendshapes)でVisemeを定義してください。これはAvatar 2.0と同じです。
- 視点(viewpoint)を設定します。
- ビルドしてアップロードしましょう!
Humanoid以外のアバターを作成する場合は、以下の「Genericアバター」のセクションを読んでください。
これで完了です!これにより、デフォルトのジェスチャーやアクションを備えた基本的なアバターが作成されます。組み込みの機能がいくつか用意されているため、特定の命名規則に従ったブレンドシェイプやボーンを持つアバターであれば、Avatar 3.0の基本的な機能をすぐに利用できます。
ただし、こうした基本的なアップグレード済みシステムであっても、いくつかの新しい機能があります。
ローカルアバターテスト
この機能を使うと、VRChatにアップロードすることなく、アバターの反復的なテストを行うことができます。
VRChat SDKコントロールパネルの「Builder」タブにある「Offline Testing」セクションで、「Build & Test」を選択できるようになりました。これをクリックすると、アバターがビルドされ、以下のフォルダにコピーされます。
- Windows:
%LocalAppdata%Low\VRChat\VRChat\Avatars - Linux:
$HOME/.local/share/VRChat/VRChat/Avatars/
VRChatを起動すると、アバターメニューの「SDK Test Avatars」セクションから、このアバターにローカルでアクセスできるようになります。アバターに変更を加えて再度ビルドすると、アバターが更新されます。メニューでそのアバターを再選択して「Apply」を再度クリックするだけで、新しいテスト用アバターに切り替わります。
あるいは、起動オプションで --watch-avatars を指定してVRChatを起動すると、VRChatが新しくビルドされたローカルアバターを監視し、自動的にそのアバターへ切り替えてくれます。
ローカルでビルドしたアバターは、あなた自身にしか見えません!他のユーザーからは、ローカルテスト用アバターに切り替える直前に着ていたアバターを着ているように見えます。これにより、アバター制作の反復作業が非常に高速になります。ぜひ活用してください!
コピーされたローカルテスト用アバターを削除するには、VRChat SDKコントロールパネルの「Content Manager」タブを開きます。画面下部の「Test Avatars」セクションにアバターが表示されているので、「Delete」をクリックしてください。これで、アバターメニューを再度開いたときに「SDK Test Avatars」セクションからアバターが消去されます。
Simulated Eye Movement(擬似的な目の動き)
Simulated Eye Movementとは、アバターの目が周囲を見回すように動く機能です。これはeye tracking(視線追跡)ではありませんが、アバターをより「生き生きと」見せるための非常に優れた方法です。
エディタ上で設定をプレビューし、目のボーンがどのように設定されているかを決定するステートの組み合わせによって、アバターの目の見え方を調整することができます。
まばたきはブレンドシェイプまたはボーンを使用して処理できます。一般的にはブレンドシェイプを使用しますが、より多様な設定に対応できるようボーンもサポートしています。
まばたきのブレンドシェイプは、以下で説明する3つのブレンドシェイプによって定義されます。
Blink- 両目を閉じるLooking Up- 上を見るときに使用するブレンドシェイプ。目、虹彩、まぶた、眉の位置調整に使用します。Looking Down- 下を見るときに使用するブレンドシェイプ。Looking Upと同様に使用します。
使用しない場合は、これらのブレンドシェイプを -none- に設定できます。
さらに、2つのスライダーがあることにお気づきでしょう。1つはCalmからExcitedまで、もう1つはShyからConfidentまで変化します。Calm / Excitedはまばたきの頻度に影響します。Shy / Confidentは他のプレイヤーを見る頻度や、相手の顔から視線をそらすまでの時間に影響します。
これについては後のステートビヘイビアの項目で詳しく説明しますが、Animatorでステートを設定する際、そのステートに到達したときにdisable eye animationsする設定を行うことができます。こうすることで、「happy」なムードで目を閉じている最中にまばたきの処理が実行され、ブレンドシェイプが二重に適用されて意図しない挙動になることを防ぐことができます。
Blendshape / Bone-based Viseme(口形)
標準的なjaw-flapボーンやブレンドシェイプベースのViseme(口形)をそのまま使いたい場合もご安心ください。どちらも引き続き利用可能で、問題なく動作します。
さらに、jaw-flapボーンベースのViseme(口形)については、その角度を設定してカスタマイズすることも可能になりました!
しかし、Avatars 3.0では、現在どのViseme(口形)を再生すべきかを示すAnimator Parameterにアクセスすることも可能です!つまり、アニメーション化さえできれば、Viseme(口形)として使用できるということです。2Dの口やロボットなど、もう小細工は必要ありません。Viseme(口形)として好きなようにアニメーションさせるだけでいいのです。
VisemeのAnimator Parameterは、すべてのViseme(口形)モードで更新されます。
Proxy Animations
SDKにproxy_animationNameという名前のアニメーションが多数含まれていることに気づくでしょう。これらのアニメーションは、VRChatの様々なデフォルトアニメーションの「プレースホルダー」です。proxy_で始まるアニメーションを使用すると、VRChatはそれを組み込みのアニメーションに置き換えようと試みます。これはどのPlayable Layerでも実行可能です。
接尾辞がVRChatの組み込みアニメーションと一致しない場合、proxy_という接頭辞を持つアニメーションは置き換えられませんが、ご自身で作成するアニメーションの命名にproxy_という接頭辞を使用することは避けるのがベストプラクティスです。
Use Auto Footstep
これはAV3 Avatar Descriptorにあるオプションで、デフォルトで有効になっています。
"Use Auto Footstep"は、3点または4点トラッキングの際にのみ適用されます。これをオフにすると、ルームスケール移動時のプロシージャルな下半身アニメーションが無効化されます。このプロシージャルアニメーションは、3点または4点トラッキング中にルームスペース内で移動する際に再生されるものです。
"Use Auto Footstep"をオン(デフォルトの状態)のままにしておけば、Tracking Controlステートビヘイビアを使用してトラッキングの有効化・無効化を行うことができます。
Use Auto Footstepがオフの場合、脚や腰のトラッキングを有効化・無効化しても何も起こらず、常にアニメーションによって下半身を動かすことになります。
Force Locomotion Animations
これはAvatar Descriptor内のオプションであり、デフォルトでオンになっています。
"Force Locomotion Animations"はデフォルトでオンになっています。これは6点トラッキング(フルトラッキング)にのみ適用されます。「Locomotion Animations」をオンにする場合は、デフォルトの Base レイヤーと Additive レイヤーを使用しないでください。Force Locomotion Animationsがオンの場合、FBTで移動(ジョイスティックを使用した移動など)を行うと、Baseプレイアブルレイヤーで設定された歩行・走行アニメーションが再生されます。
「Locomotion Animations」をオフにすると、FBT(フルボディトラッキング)で移動する際に歩行や走行のアニメーションが再生されなくなります。これは、自身のフルボディトラッキングの動きで歩行を「模倣(マイム)」したい場合に便利です。「Locomotion Animations」をオフにする場合は、デフォルトの Base レイヤーと Additive レイヤーを使用しないでください。それらは自分で作成してください!
ステートのWrite Defaults
Write Defaultsは、Animator Controller内の各ステートで利用可能なオプションです。
Write Defaultsを「オフ」にしたステートは、アニメーション化されたプロパティ値のみを設定し、再度アニメーション化されない限りその値は変更されません。これにより、特定のレイヤーを通じてどのプロパティがアニメーション化されているかを把握しやすくなります。
Write Defaultsを「オン」にしたステートは、アニメーション化されていないプロパティに対してデフォルト値を設定します。つまり、プロパティ値を「0」から「1」へアニメーションさせている場合、次のステートで継続して「1」にアニメーションさせない限り、ステートを抜けた時点で値はデフォルトの「0」に戻ります。
どのオプションを選択する場合でも、アバター全体でWrite Defaultsの使用方法を統一することを強く推奨します。つまり、すべてのステートでWrite Defaultsを「オフ」にするか、すべて「オン」にするかのどちらかにしてください。「オフ」と「オン」のステートが混在すると、予期しないプロパティ値が設定されることが知られています。これは一般的に「Mixed Write Defaults(Write Defaultsの混在)」と呼ばれます。この状態が検知されると、SDKから警告が表示されます。
VRChatのビルトインおよびサンプル用Animatorでは、Write Defaultsは「オフ」に設定されています。
Write Defaultsを「オフ」に設定する手順:
- 新しく作成されたステートではWrite Defaultsがオンに設定されているため、作成するステートごとにこの値を変更する必要があります。
- プロパティを特定の値に初期化またはリセットするために、アニメーションを追加する必要がある場合があります。
- レイヤー内のすべてのステートについて、そのレイヤーの影響を受けるすべてのプロパティを明示的にアニメーション化することを推奨します。
- 各ステートには、少なくとも1つのプロパティをアニメーション化するアニメーションクリップ(ステートオプションの「motion」)が必要です。有効なプロパティ参照である必要はありません。「None」のモーションや完全に空のクリップを持つステートは、Write Defaultsが「オン」であるかのように動作します。
VRChatのアバター制作コミュニティでは、以下の設定においてWrite Defaultsを「On」にすることを推奨しています:
- 加算合成(Additive blending)を使用するレイヤー
- ダイレクトブレンディング(Direct blending)を使用するブレンドツリー
アバターのその他の部分で「Off」を使用している場合でも、これらについては「On」に設定してください。SDKはこれらのケースにおいて、Write Defaultsの設定が混在しているという警告を生成しません。
Generic Avatars
Avatar 3.0は、ヒューマノイドではないGenericアバターもサポートしています。AV3ヒューマノイドが利用できるのと同様の機能にアクセスしたい場合は、いくつかのガイドラインに従う必要があります:
- GenericモデルをFBXとしてインポートし、リグタイプ(rig type)を「Generic」に設定して「avatar」オブジェクトが作成されるようにします。
- このアバターオブジェクトが、アバターのルート(
VRChat Avatar Descriptorと同じゲームオブジェクト)にあるAnimatorコンポーネントのavatarフィールドで参照されていることを確認してください。 AnimatorControllerは空のままにしてください(実行時に削除されます)。カスタムアニメーションコントローラーを定義するにはPlayable Layersを使用します。GenericアバターにはBase、Action、FXの3つのPlayable Layersがあります。他のレイヤーはヒューマノイド専用であるためです。
これらの手順に従わない場合、GenericアバターはExpression ParametersやState BehavioursといったAvatars 3.0の多くの機能を利用できなくなります。もしそれでも問題ない場合は、アバター欄を空欄のままにして、アニメーションコントローラーをルートのAnimatorに直接追加することも可能です。この方法は、Unityで静的なオブジェクトの階層を作成するだけで、単純なアニメーションをさせたい場合に役立ちます。
最終更新: