VRChat Avatars3.0 公式ドキュメント 非公式翻訳 その1 (Animator Parameters)
以下はVRChatのAvatars3.0に関する公式ドキュメント(https://docs.vrchat.com/docs/avatars-30)よりの非公式翻訳です。情報の正確性には留意しましたが、読みやすさを優先して逐語訳よりは意訳・超訳に近いものになっています。自己責任でご参照下さい。元のドキュメントは2021-4-24の状態のものとなっています。
Animator Parameters
以下はどのPlayable Layer (すなわち animator controller) にも追加することが出来るパラメータ(Parameters)のリストです。これらのパラメータはその値が変化した時、そのパラメータが登録されているPlayable Layers 全てに影響を与えます。各パラメータの名前は大文字・小文字を区別します (訳注: 例えば Param1 と param1 は別々のパラメータとして扱われる) 。
リスト内のパラメータを使うためには Playable Layer の animator に登録する必要があります。パラメータの名前は大文字・小文字を区別します!
Parameters (パラメータのリスト)
名前 | 説明 | 型 | 同期の種類 |
IsLocal | アバターを着ているプレイヤー自身の環境(ローカル)では True、それ以外では false (訳注: 他者視点では false になるのでこのパラメータを使って自分視点だけで再生されるアニメーションが作れる) | Bool | しない |
Viseme | Oculus viseme index (0-14)準拠 リップシンクでJawbone/Jawflap を指定している時は声のボリュームに応じた0-100 の範囲の値になる。 |
Int | Speech |
GestureLeft | 左手で出しているハンドサイン (0-7) | Int | IK |
GestureRight | 右手で出しているハンドサイン (0-7) | Int | IK |
GestureLeftWeight | 左のトリガーの値 (0.0-1.0)† | Float | IK |
GestureRightWeight | 右のトリガーの値 (0.0-1.0)† | Float | IK |
AngularY | Y軸周りの回転速度(角速度) | Float | IK |
VelocityX | 左右方向の移動速度(m/s単位) | Float | IK |
VelocityY | 上下方向の移動速度(m/s単位) | Float | IK |
VelocityZ | 前後方向の移動速度(m/s単位) | Float | IK |
Upright | アバターがどの位直立しているか(0 がうつ伏せの状態, 1 が直立の状態を表す) | Float | IK |
Grounded | アバターが地面に接していればTrue の値をとる | Bool | IK |
Seated | アバターがイスに座っていればTrue の値をとる | Bool | IK |
AFK | AFK状態かどうか | Bool | IK |
Expression1 - Expression16 | ユーザーが独自に定義したパラメータ。Int 型(0-255)、 Float 型(-1.0-1.0)、Bool型(True, False) が使える | Int / Float / Bool | IK or Playable |
TrackingType | 以下の説明を参照 | Int | Playable |
VRMode | ユーザーがVRモードなら1 、そうでない時は0 の値をとる | Int | IK |
MuteSelf | 自分自身をミュートしてる時は True 、そうでない時はFalse の値をとる | Bool | Playable |
InStation | アバターがイスに座っていればTrue の値をとりそうでなければ False の値をとる | Bool | IK |
デバッグ画面では”Supine” や “GroundProximity” というパラメータも表示されていますが、これらはまだ実装されておらず現状では何にも影響しません。
† GestureLeftWeight と GestureRightWeight は様々なハンドサインでトリガーの押し込み具合に応じて 0.0から1.0の間の値をとります。例えば、ハンドサインは fist にしてトリガーは押さないでおいた場合には GestureLeft は 1の値をとる一方でGestureLeftWeight は 0.0 の値のままになります。ここでトリガーの押し込みを始めると GestureLeftWeight の値は 0.0 から 1.0に向かって徐々に上昇していきます。これはアナログ的なアニメーション操作に利用することが出来ます。
Parameter Types (様々なパラメータの型の紹介)
自分独自のパラメータを作成・登録する時に、そのパラメータを以下の3種類のうちどのタイプ(型)にするかを選べます。
合計で128bits分までの数のパラメータが使えます (訳注: 使えるMPの最大値が128。使う呪文の種類=パラメータの型によって消費MPが下の表のように異なるようなイメージ)
パラメータの型 | 値の範囲 | どの位bitを使うか | 注釈 |
int | 0~255 | 8 bits | プラスマイナスの符号なしの整数 |
Float | -1.0 ~ 1.0 | 8 bits | プラスマイナスの符号ありの浮動小数点値 |
bool | True または False | 1 bit | 真(True)か偽(False)の値をとるブール値 |
GestureLeft と GestureRight の値とハンドサインの対応表
数値 | ハンドサイン |
0 | Neutral |
1 | Fist |
2 | HandOpen |
3 | fingerpoint |
4 | Victory |
5 | RockNRoll |
6 | HandGun |
7 | ThumbsUp |
Viseme パラメータの値と対応する Viseme の表
Viseme パラメータの値 | Viseme |
0 | sil |
1 | pp |
2 | ff |
3 | th |
4 | dd |
5 | `kk |
6 | ch |
7 | ss |
8 | nn |
9 | rr |
10 | aa |
11 | e |
12 | i |
13 | o |
14 | u |
同期の種類
- Speech – visemeだけに使われる。喋った言葉に応じて生成される Occlus Lipsync parameters による。音声が基になっているので直接同期はせずローカルで処理される。(訳注:要は自分の発した言葉が音声信号のままで他のプレイヤーのPCまで送信され、相手側のPC上で音声から viseme パラメータへと変換されるものと思われる)
- Playable – 長めに再生されるアニメーション(ステート)用の遅めの同期方法。0.2秒から1秒に1回値が更新され、素早い同期が必要な場合は使えない。
- IK – もっと素早く同期する方式(ネットワークIK と同じ頻度で更新される)。パラメータの種類によっては、(変数がネットワークを介して伝達されるのではなく)他のプレイヤーのPC側で計算されたIKの状態を基に計算される場合もある。
パペットメニュー (Puppet menu) でパラメータを操作している時には同期方式が自動的にPlayableからIKに変わるのでより素早い同期がなされる。
パラメータ値の State Behavior を用いた変更
各パラメータの値は、アニメーター内のステートにつけた「Avatar Parameter Driver」 というState Behavior を通じて変更することも出来る。
AFK状態
AFK状態は以下の条件でオンになる。
- プレイヤーがHMDを外している時(センサーで感知)
- システムメニューを開いている時。ただしプラットフォーム依存で Oculus Dash を開いていてもAFKとはみなされないが、SteamVRのメニューを開いているとAFKとみなされる。これは偶発的なもので開発側が特に意図してそうしているわけではない。
- キーボードで End キーを押した場合
トラッキングの種類を示すパラメータ
TrackingType というパラメータは下の表のように現在プレイヤーがどういう状態のトラッキングをしているかを数値で表す。
値 | 意味 |
0 | 未初期化状態。 通常、プレイヤーがアバターを変更している途中のためIKの信号が送られていない時に出る。 |
1 | Generic アバターを使用している時にVR/デスクトップ関係なくこの値になる。同時にVRModeパラメータの値が0 であるなら多分デスクトップユーザーかもしれない。 |
2 | Avatar2でのみ起きる。指のリギングがきちんとされていなくて手のみのトラッキング(指無効)になっている時。 |
3 | 頭と手のトラッキング。同時にもしVRModeパラメータの値が1 なら3点トラッキングのVRユーザーであり、VRModeパラメータが0なら humanoid アバターを使用しているデスクトップユーザーである。 |
4 | 4点トラッキング(腰トラ)のVRユーザー |
6 | フルトラのVRユーザー |