VRChat Avatars3.0 公式ドキュメント 非公式翻訳 その2 (State Behaviors)
以下はVRChatのAvatars3.0に関する公式ドキュメント(https://docs.vrchat.com/docs/avatars-30)よりの非公式翻訳です。情報の正確性には留意しましたが、読みやすさを優先して逐語訳よりは意訳・超訳に近いものになっています。自己責任でご参照下さい。元のドキュメントは2021-4-24の状態のものとなっています。画像はVRCSDK3-AVATAR-2021.03.22.18.27_Publicでのものになっています。
State Behaviors
アニメータービューで特定のステートを選んで State Behavior というものを付与することが出来ます。State Behavior はステートにつけられるコンポーネントのようなもので色々な機能を持つものがあります。色々試してみると使い方が分かりますよ!
Animator Layer Controller
「Animator Layer Controller」を使うと任意のタイミングでPlayable Layer (= animator controller)内の特定のレイヤーのweight を変えることが出来ます。
変更した weight は、他のステートで再度「Animator Layer Controller」を使って戻すまでは同じ値のまま維持されます。
プロパティの名前 |
目的 |
Playable | どの Playable Layer に影響を与えるかを指定。 |
Layer | 上記の中のどのレイヤーに影響を与えるかを番号で指定(base レイヤー = 0番から数える。Baseレイヤー自体の weight は常に1.0 で変更出来ない。 |
Goal Weight | Weight の値を指定 |
Blend Duration | Weight の値を変えるのにどの位の移行時間(秒)をもうけるかを指定。0にすると即座に切り替わる。 |
Debug String | この State Behavior が動作している時にログに書き込まれる文字列を指定できる。デバッグに便利。 |
Animator Locomotion Control
あるステートになった時にコントローラー入力での移動を無効にできる。
他のステートで再度 Animator Locomotion Control を使って戻すまで無効になったままになる。
プロパティの名前 | 目的 |
Disable Locomotion | チェックを入れて True にするとコントローラー入力での移動が無効になる。ルームスケールを使った移動はできる。False にするとコントローラーでの移動が有効化される。(訳注:現在では画像のようにUIの見た目が変わり Disable (無効) か Enable(有効)を選ぶ形式になっているよう) |
Debug String | この State Behavior が動作している時にログに書き込まれる文字列を指定できる。デバッグに便利。 |
Animator Temporary Pose Space
あるステートのアニメーションで指定された head の位置にプレイヤーのビューポイントを移動させる。
他のステートで再度 Animator Temporary Pose Space を使って戻すまでそのままになる。
Animator Temporary Pose Spaceはアニメーションでアバターを座らせたり地面に横たわらせたりした時の「姿勢」の変化に対応してビューポイントを調整する目的のみで使うべきで、アバターの「大きさ」を変えるためは使えないし、そういう使い方をするとぶっ壊れる。
プロパティの名前 | 目的 |
Pose Space | Enter または Exit を選択。 Enter でビューポイント調整オン、 Exit でデフォルトに戻す。 |
Fixed Delay | 下の Delay Time の指定を秒で指定するか、ステートの長さに対するパーセンテージで指定するかの選択 |
Delay Time | ここで指定した値の分だけビューポイントの変更のスタートに遅延を入れられる。アニメーションの切り替えに移行時間を設定している時に使うと便利。 |
Debug String | この State Behavior が動作している時にログに書き込まれる文字列を指定できる。デバッグに便利。 |
Animator Tracking Control
Animator Tracking Control を使うとアバターの身体の様々な部分ごとに 「IKによる動きの有効化/無効化」を切り替えることが出来ます。”Tracking” のオプションを選ぶとIKによる動きとなり、”Animation” のオプションを選ぶとアバターの動きはアニメーター(アニメーション)で指定された動きに従うようになります。”No Change”オプションを選んだ場合は現在選ばれているオプションがそのまま継続されます。
全てのIKトラッキングのポイントで “Animation” のオプションを選んだ場合あなたのアバターの動きはネットワークIKを介して伝達されるのではなく、他のプレイヤーのPC上で単純なアニメーションとして再生されます。IKトラッキングのポイントは以下のようになっています。
シミュレーション計算で動いている目(Eye)とまぶた(Eyelid)、viseme によって動きが指定されている口(Mouth)と顎(Jaw)、以外の箇所は全てIK制御されています。
例えばAnimator Tracking Control を使って、右手(Right Hand)と左手(Left Hand)のオプションを”Animation”に切り替えた場合、IKトラッキングに基づく手の位置は無視され、代わりに(現在のステートの)アニメーションで指定された通りに手の位置が動くようになります。”Tracking” オプションに再度切り替えることでIKによる操作に戻すことが出来ます。
Eye と Eyelid のオプションを “Animation” にすると自動でのまばたきや他のプレイヤーを視線で追従する動きが無効化されます。”Tracking” オプションに再度切り替えることでこれらの動きが再度有効化されます。
Mouth と Jaw のオプションを”Animation” にするとリップシンクによる動きが無効化されます(viseme パラメータ自体は送信されています)。”Tracking” オプションに再度切り替えることでリップシンクが再度有効化されます。
上記の設定は他のステートで再度 Animator Tracking Control を使って戻すまでそのままになります。
Avatar Parameter Driver
Avatar Parameter Driver を使うとこれをつけたステートが属する Playable Layer (= animator controller)に登録されている任意のパラメータの値を好きに変更することが出来ます。このパラメータとしては Expression parameters として登録しているものを主な対象としています。
一応、Avatar Parameter Driver を使って Expression parameters として登録していないパラメータの値を変更することは出来ますが、それはローカルオンリーで同期しません。また、他の自分で定義したのではないパラメータについては変更できません。
プロパティの名前 | 目的 |
Add Parameter (ボタン) | この Avatar Parameter Driver で操作するパラメータの追加 |
Name | 値を操作するパラメータの名前を指定 |
Value | 上記のパラメータの値をここで指定したものに変える(このAvatar Parameter Driver をつけたステートが再生された時に値が変わる) |
*訳注:現在 Avatar Parameter Driver には上記のようなパラメータを特定の値に変える機能(Set)だけでなく、パラメータに特定の値を足したり引いたりする(Add)、あるいはパラメータの値としてランダムな値を生成する(Random)という機能が加わっている。Change Type のプルダウンから Set、Add、 あるいは Random を選択することでそれぞれの機能が使える。Set や Add では変えたい/足したり引いたりしたい数値を Value の欄に入力し、Random の場合にはランダムに出したい値の上限、下限をそれぞれ Min Value、 Max Value の欄で指定する。
Playable Layer Control
任意の Playable Layer(= animator controller)のweight を操作できる。Animator Layer Controller とよく似ているが、個別のレイヤーではなく Playable Layer 丸ごとが対象となるのが違う。
「Action」Playable Layer では通常時の weightは0で、エモートアニメーションを再生している間だけ weight を1にしてまた戻すということをしなければならないので、この Playable Layer Control を頻用することになる。
プロパティの名前 | 目的 |
Layer | どの Playable Layer に影響を与えるかを指定 |
Goal Weight | 最終的に上記のPlayable Layer にとらせたい weightの値 |
Blend Duration | 上記の weight の値になるまでにかかる時間。0に設置すると即座に切り替わる。 |
Debug String | この State Behavior が動作している時にログに書き込まれる文字列を指定できる。デバッグに便利。 |