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ユーザー

 

 

ankoro199.hatenablog.com