【VRChat】Gesture Layerについて

VRChat
スポンサーリンク

はじめに

今回はGestureについて解説します。
この記事を見る事でGesture Layerが闇の深さが深い事が分かります。
ぜひご覧ください。

Gestureの機能について

現状、手の形を変えるためだけの物と思ってください。
色々な説明がありますがその裏にはかなり複雑な黒い歴史があります。

Gestureがなぜ分からないのか

それは、公式に書かれてる説明と実際の内容が違うからです。
こちらの公式ドキュメントを要約すると下記のようになります。

・FxレイヤーはTrancformが設定できない 
・Transformは『位置、回転、スケール』を意味する。 
・ボーン変形はTransformによるもの(ボーンの位置、回転、スケールの操作) 
・なので、Fxレイヤーではボーンの動作は設定できない。
・そこで、尻尾、翼、耳などの非HumanoidボーンのアニメはGestureを使う

しかし、まさかのこれが偽情報です。
正確な挙動はこのようになります。

・FxレイヤーでHumanoidボーンは動かない
・しかし、Fxレイヤーで非Humanoidボーンの動作は動く
・逆に、Gestureでは非Humanoidボーンの動作は記録できない
・Gestureは現状ハンドサインの表情変化ぐらいにしか使え無い。
・なので尻尾、翼、耳などの非HumanoidボーンのアニメはFxを使う

どうしてこうなった(推測)

端的に言うと公式やらかし案件です。(多分)

Avatars 3.0が実装された当初はWrite Defaultsがオンの状態を想定してリリースされました。
Write Defaultsがオンの時はGesture Layerは正しく動作してました。

しかしリリース後、様々な不具合が発覚したようです。
そして現在ではWrite Defaultsはオフが推奨になりました。

Write DefaultsがオフになるとGestureが正しく動かなくなりました。
その応急処置として色々試した結果、Write DefaultsがオフならFxで非Humanoidボーンが動く事が分かったのだと思います。

詳細はこちらに書かれています。

公式ドキュメントについてはWrite Defaultsがオンの時に書かれたまま更新されてないのだと思います。更新されてない理由としては下記の2つが考えられます。

・忘れられてる
・現在もバグと戦っていてオフを標準の仕様にしたくない

いずれにしてもGestureに関しては、理解しようとすると上手く行きません。
分からなくても、動いてる物が正しい世界です。

よく分からないけど動いたからヨシ!的なスタンスで向き合ってください。

レイヤーの使い分け

使い分けとしては下記のようなイメージです。

・Humanoid以外の動きははFX Layer
・Humanoidの手以外の動きはAdditive Layer
・Humanoidの手の動きはGesture Layer

・Humanoidを含めた完全なポーズの上書きはAction Layer

非Humanoidボーンの使い方(Fx)

尻尾、羽、耳などのボーンの動作はFx Layerで設定してください。
設定方法はこちらで解説。

【VRChat】尻尾にIdleアニメを追加する方法(Fx-Float)
非HumanoidボーンIdleアニメーションをRadialで設定する方法について解説。Floatを使うので徐々に再生速度を変えるなどの動作が設定できます。

公式の説明を見るとFxはトランスフォームは記録できない。
ボーン変形はトランスフォーム。
なのでボーン記録できないと思いますが…何故か動きます。
…動いたものが正しい。Avatar3.0はそんな世界です。

Humanoidボーンの動かし方(Additive)

HumanoidのボーンはFxでは動かないのでAdditiveLayerを使います。
使い方はこちらで解説。

【VRChat】アバターに呼吸を追加する方法(Additive)
SDK3のAdditive Layer使い方紹介としてアバターに呼吸を設定する方法を解説。 この記事を見る事でAdditive LayerとメニューのRadial Puppetでの%入力の方法が学べます。 メタバース生活にぜひご活用ください。

手の動かし方(Gesture)

手はHumanoidボーンの1つです。
そして、手はハンドサイン機能があります。
これはVRChat公式側で設定した形で配布しています。

Additiveで設定するとGestureの設定と干渉する問題起ります。
2つのレイヤーを使った干渉設定は分かりにくく手間です。

なので手の形のみGestureを使うメリットがあります。
使い方はこちらで解説。

【VRChat】パイメニューでピースサインを出す方法(Gesture)
Avatar3.0のGesture Layerを使って手の形のアニメーションを再生する方法を解説。 これを見る事でGesture Layerの使い方、パイメニューのToggle入力の設定方法が学べます。

完全なポーズの上書き(Action )

特定の動きを再生する場合はAction Layerを使います。
Humanoidや手などの違いに関係なくActionを使います。

使い方はこちらで解説。

【VRChat】8個以上のエモートとAFKの設定方法(Action)
Action Layerを使ってエモートを8個以上設定+AFKアニメーションを設定する方法を解説。 EmoteBoxを使います。 ツールの使い方やエモートを設定したい方はぜひご覧ください。

どうしてもGestureでアバターを動かしたい場合

HumanoidボーンをGestureで動かしたい場合はAvatar Maskをかける必要があります。
Right Handの歯車マークを押します。
アバターマスクが入ってる事が確認できます。

Inspectorを確認。Humanoidの▶ボタンをクリック。
すると動かすパーツのみが有効になってる事が確認できます。
何故か分かりませんがこの設定が必要です。

関連情報はこちらに書かれています。

Avatars 3.0の導入

新しいアバターマスクはProjectを右クリック。
Create → Avatar Maskより作成できます。

まとめ

今回はGesture Layerの闇について紹介しました。
またハンドサイン関係の知識についてはこちらで解説。

【VRChat】ハンドサインで表情を変える方法(Gesture+Fx)
表情固定メニューテンプレートを使ってハンドサインで表情を変化させる方法を解説。 この記事を見る事で表情を変える方法とその注意点、パイメニューの表情変化の干渉対策が学べます。
【VRChat】ハンドサイン処理の優先順位について
一般的なハンドサインの処理の流れ、アニメーションがNoneの場合の挙動、右手左手の優先順位について解説。 この記事を見る事でハンドサインの動作が学べます。

ぜひこちらもご覧ください。

【VRChat】Avatar3.0の使い方(まとめ)
Avatar3.0を使うために必要な記事のリンクをまとめました。 UnityにVRChatアバターを読み込み設定するところから解説。 各種レイヤーの使い方、Typeの使い分けを学べます。

コメント

タイトルとURLをコピーしました