[VRC]MMDワールドで表情が動かない問題

ワールドの表情アニメーションよりもFXレイヤーの値が優先されてしまうのが原因なようです。*1

Baseコントローラーを書き換え、ダンス中(InStation状態)の間のみFXレイヤーを全て無効化することで表情が動くように設定します。
また、メニューからオンにした時のみ機構が動くようにすることで、椅子などではFXレイヤーが無効化されないようにします。

画像8

5/5追記
FXレイヤーを無効化する関係で、ラジアルメニューによる着替えが反映されないようです…!
回避策ありましたら教えて下さい…

2022/08/25追記
WriteDefaultsをONで構成しても表情が崩れない仕様に変更されるようです。
上記の着替えられない問題があるためWriteDefaultsONで運用するのが良いかもしれません。


前提条件として、アバターにはMMDのモーフ名と同じBlendShapesを設定済みであるものとします。
https://note.com/yosidanue/n/n246547256460

Baseコントローラーの設定

アバターのVRC Avatar Descriptor > Playable LayersのBaseを開きます。
設定されていない場合は VRCSDK > Examples3 > Animation > Controllers > vrc_AvatarV3LocomotionLayer.controller をコピーしてから割り当てます。

ParametersにBoolパラメーターを2つ追加、名前を InStation MMDMode に変更します。

画像5

LocomotionレイヤーにEmptyステートを2つ作り、
それぞれ名前を MMD_Mode_ONMMD_Mode_OFF にします。


MMD_Mode_ONステートの設定

画像2

・Write Defaultsを外す
・VRC Animator Tracking Controlを追加、Tracking ControlのAllをAnimationにチェック入れる
・VRC Animator Locomotion Controlを追加、Disableに設定

・VRC Animator Layer ControlをFXレイヤーの個数分追加
 PlayableをFXに変更、Layerを0から順にそれぞれ指定
 Goal Weightに0を指定

MMD_Mode_OFFステートの設定

画像3

・Write Defaultsを外す
・VRC Animator Tracking Controlを追加、Tracking ControlのAllをTrackingにチェック入れる
・VRC Animator Locomotion Controlを追加、Enableに設定

・VRC Animator Layer ControlをFXレイヤーの個数分追加
 PlayableをFXに変更、Layerを0から順にそれぞれ指定
 Goal Weightに1を指定


画像5

Any StateからMMD_Mode_ONにMakeTransition、
Conditionsに InStation true および MMDMode true を指定


画像5


MMD_Mode_ONからMMD_Mode_OFFへMakeTransition、
Conditionsに InStation false および MMDMode true を指定


MMD_Mode_OFFからExitへMakeTransition


VRCExpressionParametersの設定

画像7

MMDModeを追加、TypeはBoolでDefaultのチェックを外しておきます。
Savedはお好みで。

VRCExpressionsMenuの設定

画像6

MMDModeコントロールを追加、Toggleに設定してMMDModeパラメータを割り当てます。


問題点
・ダンス中の着せ替えができなくなります

脚注
*1 一部ワールドではレイヤー1と2(左手、右手のFXレイヤー)を無効化してくれるようですが、自分で増やしたものがあると全体が動かなくなるようです

参考
(v3.0) To fully support MMD Dance World on VRChat with Avatar 3.0.(VRChatのMMDダンスワールドにAvatar 3.0でも完全対応させる方法)
https://slord.booth.pm/items/3341221

この記事が気に入ったらサポートをしてみませんか?