はじめに
今回はVRChatで8個以上のエモートを実装する方法を紹介します。
この記事を見る事でVRChatアバターにエモートを入れる事ができます。

この方法では下記の2つが上手く設定できません。
・立ちと座りの状態でのエモートの変更
・AFKの終わりモーション
この2つを設定したい方は既存のVRChatのAction Layerを使用してください。
Action Layerについて
Action Layerは特定の”1つの決まったポーズ、アニメーション”を再生したい時に使うレイヤーです。
全てのボーンの動作に影響を与え、ポーズを上書きします。
なのでトラッキング処理などは完全に無効化されます。
=腕が動いたり移動の際歩いたりすることが無くなります。
前提条件
また、下記の3つを使えることを前提に進めます。
・VRC Avator Descriptor
・Playable Layers
・パイメニュー(Expressions Menu)
使い方はこちらをご覧ください。
下記のようなVRC Avator Descriptorとパイメニューが設定された状態で始めます。
VRC Avator Descriptorの設定はこちら

パイメニューの作り方はこちら。

用意するもの
事前に2つの物を用意する必要があります。
・エモート素材(アニメーション)
・EmoteBox(動かすための仕組み)
エモート素材の入手
こちらよりアニメーション素材をダウンロードします。

DLした.unitypacckageをPtojectにドラッグ&ドロップ。

Importを押します。

これでエモート素材の入手が完了です。
自分で作りたい猛者はこちらを見ながら作ってください。
EmoteBoxの入手
エモートはAction Layerで動かします。
Action Layerを使うには複雑な条件分岐が必要になります。
そこでEmoteBoxというツールを使う事をおすすめします。
こちらよりダウンロードします。

DLした.unitypacckageをPtojectにドラッグ&ドロップ。

Importを押します。

Necocoyaというファイルを使いやすい位置(ここではText_Exに移動)

中を開くとEmoteBoxとEmoteSetが入ってます。
※作者が同じ方なので。

Hierarchyでアバターを選択。

VRC Avatar Descriptor → Playable Layersを開きます。
割り当てたMenuをクリック。

Projectで強調表示されたメニューを選択。

Inspectorを見ます。
下の方のActionを開きます。(無い場合はAdd Controlで作ってください)
TypeをSub Menuに変更。

Project → Assets → Test_Ex → Necocoya → EmoteBoxにアクセス。

EmoteBox_Main…をSub Menuの所にドラッグ&ドロップ。

Hierarchyでアバターを選択。

Project → Assets → Test_Ex → Necocoya → EmoteBoxにアクセス。

Actionの所にEmoteBox_ActionLayerを入れます。

ProjectでEmoteBoxのコントローラーをダブルクリック。

Animatorを見るとエモートを再生する機構が出てきます。

右上の島が立ちポーズです。(※座りはありません)
左下の島がAFKポーズです。

EmoteBox_01-08をダブルクリック。

開くと1~8のエモートを割り当てる仕組みが出てきます。
Emote_1を選択。

Inspectorを見ます。
1~16までは既にアニメーションが割り当てられてます。
必要な方はMotionで割り当てるアニメーションを変更してください。

Action-EmoteBoxを押します。

元の階層に戻りました。
EmoteBox_17-24をダブルクリック。

Emote_17を押します。
17~32のMotionはすべて20_APoseが割り当てられてます。

もしアニメーションがあればMotionに割り当てます。

この状態でVRChatにアップロード。

これでSub Menuで8個以上のメニューが再生されるようになりました。

これでエモートの実装が完了です。
AFKモーションの設定
こちらよりポーズアニメーションをDL。
※素材は何でも大丈夫です。

DLした.unitypackageをProjectにドラッグ&ドロップ。

Importを押します。

ProjectでEmoteBoxのコントローラーをダブルクリック。

コントローラーでAFKを選択。

Inspectorを見ます。
MotionにAFKに使いたいアニメーションを入れます。
これでAFKのアニメーション置き換えが完了です。

AFKに入る前のアニメーションはAfk lnitで設定できます。
・Motionでアニメーションを置き換え
・Goal Weightを1に変更
・Blend Durationを1に設定

間の線を選択。

先に上の所で幅を調整。

次に下のAFKブロックを移動して切り替わりのタイミングを調整。

Previewの再生ボタンを押すと切り替わりが確認できます。
※出てない方はバーを上の方に引き上げてください。

これでAFKの入りとAFKアニメーションが設定できました。

※AFKの終わりモーションは設定できない
AFKの終わりはBlendOutで設定出来そうですが上手く行きません。

入り → AFK中 → 解除までは再生されます。

しかし最後にこの状態になり全ての動作が無効になります。

既存のVRChatのアクションレイヤーの移植やVRC Animator Layer Controlの追加なども試しましたが治りませんでした。
AFKの終了アニメーションを設定したい場合は既存のVRChatのAction Layerを使ってください。
AFKの終了を設定したい方は少ないと思うので今回は省きます。
治り方が分かりましたら再度追記します。
まとめ
今回はAction Layerを使ってアバターにエモートを追加する方法を紹介しました。
他にも呼吸アニメーションの追加などを解説しています。
ぜひこちらもご覧ください。
コメント