[VRC]MMDワールドで表情が動かない問題
ワールドの表情アニメーションよりもFXレイヤーの値が優先されてしまうのが原因なようです。*1
Baseコントローラーを書き換え、ダンス中(InStation状態)の間のみFXレイヤーを全て無効化することで表情が動くように設定します。
また、メニューからオンにした時のみ機構が動くようにすることで、椅子などではFXレイヤーが無効化されないようにします。
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 に変更します。
LocomotionレイヤーにEmptyステートを2つ作り、
それぞれ名前を MMD_Mode_ON、MMD_Mode_OFF にします。
MMD_Mode_ONステートの設定
・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ステートの設定
・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を指定
Any StateからMMD_Mode_ONにMakeTransition、
Conditionsに InStation true および MMDMode true を指定
MMD_Mode_ONからMMD_Mode_OFFへMakeTransition、
Conditionsに InStation false および MMDMode true を指定
MMD_Mode_OFFからExitへMakeTransition
VRCExpressionParametersの設定
MMDModeを追加、TypeはBoolでDefaultのチェックを外しておきます。
Savedはお好みで。
VRCExpressionsMenuの設定
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
この記事が気に入ったらサポートをしてみませんか?