アバター
VRChatでは、オリジナルのアバターを作成してアップロードすることができます!このカテゴリーでは、VRChatのAvatars 3.0 SDKの使い方を解説します。
アバターの作成
まずは、初めてのアバター作成をご確認ください。
サイドバーには「Avatars(アバター)」カテゴリ全体が用意されています。その中でも特に重要で影響の大きいページをいくつか紹介します。
- リグの要件:VRChat向けにカスタム3Dモデルの階層を設定する方法を解説しています。
- アバターのパフォーマンスランクシステム:なぜ一部のアバターが「Excellent(優良)」と評価され、その他が「Very Poor(非常に悪い)」と評価されるのかを解説しています。
- アバター最適化のヒント:理由を理解した上で、このページを参照してフレームレートを回復させる方法を学びましょう。
- このページの続きを読んで、Avatars 3.0 SDKの重要なコンセプトについて理解を深めてください。
Avatars 3.0とは?
Avatars 3.0とは、VRChatのアバターで利用可能なすべての機能を指す名称です。AV3の機能は、VRChatにおけるアバターの表現力、パフォーマンス、および能力の向上に重点を置いています。
Avatars 3.0は、装着しているアバターを操作・制御するためのAction Menuと密接に統合されています。AV3アバターを作成する前に、まずは実際にVRChatにログインしてAction Menuを体験してみることをお勧めします。
前提条件
コンセプトの理解
Avatars 3.0を理解し利用するためには、いくつかの概念を知っておく必要があります。これらの概念は、アバターの構成や最適な組み立て方、そして各種システムの意図された使用方法を理解するのに役立ちます。
Unityシステム
本ドキュメントは、Unity Animatorsについてある程度の知識があることを前提として書かれています。特に、以下の項目について基本的な操作知識があることを確認してください。
- Animators および animations
- Animator layers、layer weights、および blending
- States および transitions
- Animator parameters
- State behaviors
- Avatar masks
また、以下のような項目についても理解しておくと役立ちます。
- State exit time
- アニメーションの Loop Time
- (上級編) レイヤー間の Time Sync
- (上級編) Blend trees
基本
Avatars 3.0では、シミュレートされた目の動きやViseme(口形)を持つ基本的なアバターを非常に素早く作成できます。
- アバターをインポートし、Humanoidとしてリグを設定します。マテリアルなどをセットアップしてください。
- Avatar Descriptorコンポーネントを追加します。
- シミュレートされた目の動きが必要な場合は、目のボーンを定義します。
- Viseme(口形)が必要な場合は、Visemeタイプを定義します。Rigging Configuration Screenで顎の動き(jaw-flap)に対応するボーンを指定するか、ブレンドシェイプによるVisemeを定義してください。これはAvatar 2.0と同じです。
- 視点(viewpoint)を設定します。
- ビルドしてアップロードしましょう!
ヒューマノイドではないアバターを作成する場合は、以下の「Generic Avatars」セクションをお読みください。
これで完了です!これにより、デフォルトのジェスチャーとアクションを備えた基本的なアバターが作成されます。組み込み済みの機能がいくつか用意されているため、特定の名前のブレンドシェイプやボーンを持つアバターであれば、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」セクションから消去されます。
シミュレートされた目の動き
シミュレートされた目の動きとは、周囲にある対象物へ視線を向ける機能です。これは_アイトラッキング_ではありませんが、アバターをより「生き生きと」見せるための非常に優れた方法です。
エディタ内でセットアップをプレビューでき、アバターの目の見た目を調整できます。これらは、目のボーンがどのように設定されているかを決定するために使用されます。
まばたきはブレンドシェイプまたはボーンのどちらでも処理可能です。通常はブレンドシェイプが使われますが、より多様なセットアップに対応できるようボーンも利用可能にしています。
まばたき用のブレンドシェイプは、以下のように3種類定義されています。
- Blink - 両目のまばたき
- Looking Up - 上を見る際に使用されるブレンドシェイプ。目/虹彩/まぶた/眉毛の位置を微調整するために使用します。
- Looking Down - 下を見る際に使用されるブレンドシェイプ。「Looking Up」と同様に使用します。
これらを使用しない場合は、-none- に設定してください。
さらに、2つのスライダーがあることに気づくでしょう。一方は「Calm(穏やか)」から「Excited(興奮)」まで、もう一方は「Shy(シャイ)」から「Confident(自信あり)」までとなっています。「Calm / Excited」はまばたきの頻度に影響します。「Shy / Confident」は他のプレイヤーを見る頻度や、視線をそらすまでに相手の顔を注視し続ける時間に影響します。
詳細については「State behaviors」の項目で説明しますが、Animator内のステートを設定することで、そのステートに到達した際に目のアニメーションを無効化することができます。これにより、「Happy」な気分のせいで目を閉じてしまい、その上からまばたきのアニメーションが重なってブレンドシェイプが過剰に駆動してしまう、といった心配をせずに設定を行うことが可能です。
ブレンドシェイプ / ボーンによるViseme(口形)
標準的な顎の動き(jaw-flap)ボーンや、ブレンドシェイプベースのViseme(口形)をそのまま使い続けたい場合も安心してください。どちらも引き続きサポートされており、問題なく動作します。
さらに、顎のフラップボーンのViseme(口形)の角度を設定して、カスタマイズの幅をさらに広げることも可能です!
Avatars 3.0では、現在どのViseme(口形)が再生されるべきかを示すAnimator Parameterにアクセスすることもできます!つまり、アニメーション化さえできれば、それを使ってViseme(口形)を作成できるということです。2Dの口やロボットなど、もう工夫を凝らす必要はありません。好きなアニメーションをViseme(口形)として設定できます。
Viseme Animator Parameterは、すべてのVisemeモードで更新されます。
Proxy Animations
SDKに proxy_animationName という名前のアニメーションが多数含まれていることにお気づきかもしれません。これらアニメーションは、VRChatの様々なデフォルトアニメーションの「プレースホルダー」です。proxy_ で始まるアニメーションを使用すると、VRChatはそれを組み込みのアニメーションで置き換えようとします。これは、すべてのPlayable Layerで行うことができます。
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
これはAV3 Avatar Descriptorにあるオプションで、デフォルトでオンになっています。 "Force Locomotion Animations" はデフォルトでオンになっています。これは6点トラッキング(フルトラッキング)にのみ適用されます。Locomotion Animationsがオンの場合、FBTでの移動(ジョイスティックによる移動など)を行うと、Base Playable Layerで決定された歩行/走行アニメーションが再生されます。 Locomotion Animationsがオフの場合、FBTで移動しても歩行/走行アニメーションは再生されません。これは、フルトラッキングの動きで歩行を「パントマイム」のように表現したい場合に便利です。"Locomotion Animations" をオフにする場合は、デフォルトのBaseレイヤーおよびAdditiveレイヤーを使用しないでください。 独自に作成する必要があります。
Write Defaults on States
Write Defaults は、Animator Controller内の各ステートで使用できるオプションです。 Write Defaultsを「オフ」にすると、アニメーション化されたプロパティ値のみが設定され、再度アニメーション化されない限りその値は変更されません。これにより、特定のレイヤーを通じてどのプロパティがアニメーション化されているかを把握しやすくなります。 Write Defaultsを「オン」にすると、アニメーション化されていないプロパティにデフォルト値が設定されます。つまり、プロパティ値を「0」から「1」にアニメーション化している場合、ステートを抜けると値はデフォルトの「0」に戻ります(次のステートで「1」へのアニメーションが継続されている場合を除く)。 どちらのオプションを選択する場合でも、アバター全体でWrite Defaultsの使用方法を統一することを推奨します。つまり、すべてのステートでWrite Defaultsを「オフ」にするか、すべて「オン」にするかのどちらかにしてください。「オフ」と「オン」のステートが混在すると、予期しないプロパティ値が設定されることが知られています。これは一般的に「Mixed Write Defaults」と呼ばれます。混在が検出されると、SDKから警告が表示されます。 VRChatは、組み込みおよびサンプルアニメーターにおいてWrite Defaultsを「オフ」に設定しています。
Write Defaultsを「オフ」に設定する場合は、以下に従ってください:
- 新しく作成したステートではWrite Defaultsは オン に設定されるため、作成するたびにこの値を変更する必要があります。
- プロパティを特定の値で初期化またはリセットするためのアニメーションを追加する必要がある場合があります。
- レイヤー内のすべてのステートについて、そのレイヤーが影響を与えるすべてのプロパティを明示的にアニメーション化することを推奨します。
- 各ステートには、少なくとも1つのプロパティをアニメーション化するAnimation Clip(ステートオプションの「Motion」)が必要です。有効なプロパティ参照である必要はありません。「None」のMotionや完全に空のクリップを持つステートは、Write Defaultsが「オン」であるかのように動作します。
VRChatのアバター制作コミュニティでは、以下のケースにおいてWrite Defaultsを「オン」に設定することを推奨しています:
- Additiveブレンディングを使用するレイヤー
- ダイレクトブレンディングを使用するブレンドツリー
アバターの他の部分で「オフ」を使用している場合でも、これらについては「オン」にしてください。SDKは、これらのケースにおいてMixed Write Defaults設定に関する警告を生成しないようにします。
Generic Avatars
Avatar 3.0は、HumanoidではないGenericアバターもサポートしています。AV3 Humanoidが利用できる機能と同様のものを使用したい場合は、いくつかのガイドラインに従う必要があります:
- 汎用モデルをFBXとしてインポートし、リグタイプに 'Generic' を割り当てて、"avatar" オブジェクトが作成されるようにします。
- このavatarオブジェクトが、アバターのルートにあるAnimatorコンポーネント(VRCAvatarDescriptorと同じGameObject)のavatarフィールドで参照されていることを確認してください。
- Animator Controllerは空のままにしておきます(実行時に削除されます)。カスタムのアニメーションコントローラーを定義するには、Playable Layersを使用してください。Genericアバターには、Base、Action、FXの3つのPlayable Layersがあります。他のレイヤーはHumanoid専用のためです。
これらの手順に従わない場合、GenericアバターはExpression ParametersやState Behavioursといった多くのAvatars 3.0機能を利用できなくなります。もしそれでも構わないのであれば、avatarフィールドを空のまま、ルートのAnimatorに直接アニメーションコントローラーを追加することも可能です。この方法は、Unityで静的なオブジェクトの階層を構築しており、単純なアニメーションのみを行いたい場合に役立ちます。
最終更新: