generated at
キッシュちゃんの表情アニメーションをAvatars 3.0に時代に設定する
試した日:2022/6/15ごろ

Avatars 3.0には2.0時代のCustomOverrideEmptyがないのでアニメーションオーバーライドで表情を設定できない
筆者はこの時代のアバターをセットアップしたことがないので細部はわからない

Avatars 3.0の表情アニメーション設定の大雑把な手順
1. AnimatorControllerをのstateに表情アニメーションを割り当てる
アバターの表情混ざって溶けるのでアニメーションの修正等をする
2. Playable LayersのFXにAnimatorControllerを登録する

>Avatars3.0では左手右手それぞれに別のアニメーションを設定することができます。
> LeftHandレイヤーをクリックしてFistステートをクリックするとInspectorのMotionに
> orion_face_smileというアニメーションが設定されていることがわかります。
> 左手のコントローラーでFist(グー)のポーズをつけたときにsmileアニメーションが実行されます。これがAvatars2.0のAnimationOverrideでアニメーションを設定していた部分と思ってもらってOKです。

「1. AnimatorControllerでstateに表情アニメーションを割り当てる」と「2. Playable LayersのFXにAnimatorControllerを登録する」は簡単なので一度にやってしまう
サンプルの手の動きに連動するモーションのAnimatorControllerコピペして
VRChatのハンドサインは7種類ある。Left Hand/Right Handのそれぞれ(7x2=14 states)にモーション(Animation clip)を割り当ててる
> 対応するAnimationがない場合はproxyのままにして差し支えないです
この通りにproxyを設定した
> (が、proxyにも表情が設定されていた気がするので意図しない顔になる可能性があります
> 応急処置はproxyのコピーを作り、顔関連のシェイプキー指定を外すことです(略)
これは未実施。最終的に使い心地を調整するときにやる必要があるだろう
出来上がったAnimatorControllerをVRC Avatar Descriptorにattachする
これで、ハンドサインを行った際にAnimation clipを再生することができるようになった
VRChat向けアバターの動作確認をすればできることがわかるだろう

大きな課題が残されている。このままではアバターの表情混ざって溶ける問題が発生してしまう。
気づくまで紆余曲折と混乱と迷走があった
基素「モーション割り当てを左手だけにしたら表情が壊れた。顔も半分だけ変。なんで?」
基素「Unityのデフォルトのvrc_AvatarV3HandLayer(デフォルトのproxyアニメーション&Write defaultなし)でも溶けた」
基素「Unity....なんもわからん...」
キッシュちゃんの場合、以下の問題があった
これらに対応していく

方針1-1.Write Defaultをつかって、Animation clip再生後に初期位置に戻す
>Idleも含めたすべてのWrite Defaultsにチェックを入れます。
> これをしないと手を離したときに表情が元に戻りません。
>オンにするとバグがあるとの情報もありますが、アップロードしてみて特に困りませんでした。
どちらの方策でもいけるはずだが、問題2と問題1をごっちゃに考えていたので、方針1-1では問題2が解決しない!と思って方針2を無駄に試してしまった
どちらの方針でも良いだろうが、VRChat公式はWrite Defaults非推奨なので方針1-2をするといいと思う
1-2をした結果(1-1でも同じ結果になるはず)
Idleからproxyのアニメーションをとっても変わらない

(未解決、というかプレイヤー次第)問題2. Animation clipが最低限の設定なので左右のハンドサインに対応する表情パラメーターが混ざって表情が溶けるに対応する
プレイヤーが操作をどうしたいのかによって対応が大きく変わる
それによってこんな対応がありうる
>「左手は口だけ、右手は目だけを動かすと決めて干渉し合わないようにする」
> 「Right Handsレイヤーの一つ上に、右手表情表示中だけデフォルト顔アニメーションを出すレイヤーを置いておく」
> 「左右のハンドサインによる表情をひとつのレイヤーにまとめておく」
どちらかの手にだけ表情をつける
表情ですべてのパラメータを指定しておく(強制上書き)
有名アバターではどうなっているのかを確認するとよさそうだ
桔梗とかはどうなっているのだろう?

参考文献
VRCSDK > Examples3 > Animation > Controllers からvrc_AvatarV3HandsLayerをコピーして使う解説

参考にはしなかったが関連する記事
自動化ツールの使い方解説記事
VRCAvatarEditorを使うという方法もある
>@MERU_0001_: 表情の設定 Idleの設定
>最初にコピーしたvrc_AvatarV3HandsLayerを編集します
>赤色 右と左で別々の表情を入れれます
>青色 表情変えるのはここにアニメーションを入れるだけです
>緑色 まばたきと表情変更が被らないようにtraking controlを追加し、緑線のように変更します
>
のスレッド
今回tracking controleは意識していなかったが(コピペしたので最初から設定されていた)、ここでマスクするんだな〜
Avatars 2.0→3.0移行記事
アニメーションオーバーライドと似たような形で設定できるため、ComboGestureExpressionsを使っている
>もし以前のversionのアバターを残しておきたい場合は、アップロードするアバターのBlueprintIDをDetachしてからアップロードしましょう。

--
迷走の記録。整理したものが↑の記事なので読む必要はない

方針1-1 Write Defaultでの対応はうまくいかなかった
Left/Right hand両方にWrite Defaultを設定した
表情が戻ることが確認できた
困りごと
2. 目をつぶった顔のパターンが2つあり、両方のタイミングが重なると(?)奇妙な顔になってしまう
失敗1:Left handのOpenにWrite Defaultのチェックが漏れていた
左手を変更すると表情が崩れ、右手をOpen handにしなおすと上書きされて直るようになった
原因はおそらくOpenした場合に、パラメータがもとに戻らないので、アバターの表情混ざって溶ける
チェックをつけなおした
失敗2: IdleにWrite Defaultのチェックを入れ忘れた
両方の手を設定した場合にはうまくいくが、片方の手だけ形を変更させた場合にモーフ後に逆側の手の表情になってしまう
左手と右手で優先度がありそう
必ずあとの方のアニメになるわけではない
左手と右手で順番を対象的に操作した場合でも、結果が違う
Idleにもチェックを入れた
Q. 左右の手で表情をつけた時、どの手の順番でどういう表情になるのかわからない
参考:Left handだけWrite Defaultをいれる→最終的に表情が(ぐちゃぐちゃな状態で)それ以上変わらなくなった
左手を開くと顔が溶ける
他にも組み合わせによっては顔が溶けるパターンがある
なぜそうなるのか理解できていない。だから解決できない
追記:左右のハンドサインに対応する表情パラメーターが混ざって表情が溶けるからであり、これはWrite defautでは直らないし、元のアニメーションを作っても直らない
WriteDefaultではこれ以上解決できないようにおもえたので違う方法を調べた
追記:これは勘違い

参考になりそうな記事を読む
Write defaultsを使わないなら、元に戻すアニメーションを作る必要がある
キッシュちゃんにはない
AnimatorControllerは上位レイヤーから順に処理される
左右の表情が変に混ざる原因はたぶんこれ
追記:Yes
対策は人の好みが出そう
>「左手は口だけ、右手は目だけを動かすと決めて干渉し合わないようにする」
> 「Right Handsレイヤーの一つ上に、右手表情表示中だけデフォルト顔アニメーションを出すレイヤーを置いておく」
> 「左右のハンドサインによる表情をひとつのレイヤーにまとめておく」
> といった対策も考えられる。
>デフォ表情アニメをLeft Handのidleに入れるのをやめろ………!!!!!!!!!!!

初期表情に戻すアニメーションを作る
(余談)option_heart 1
こうした
するとこうなる
Idleからproxyのアニメーションをとっても変わらない
プレイヤーの両手や右手(動画で言うアバターの左手)をvictoryにしたとき、正常に表情は動く
しかし、左手victoryにすると別の表情がブレンドされているようにみえる
注意:VRChat内で鏡を見ているので、プレイヤーの左手は映像で言うアバターの右手のこと
もし右手のパラメータが後から上書きされているのだとすると、LeftHandのレイヤーを一番下にしたら挙動が変わるはずだ
やってみたが、かわらなかった
追記:多分Open hand扱いになっていて合成されてしまっている
右手と左手で別のポーズになるものがあった
追記:何を書いているのかわからない。組み合わせによっては正常にいくが(パラメーターが同じケース)、それ以外では別になる
ついてるアニメーションは一緒なので、対象になって欲しい
Right Handの重みを0にしてみる→期待した動作になった
わかった。Left Handの表情とRight Handの表情がBlendされてるんだ
作成したデフォルトはこうした
QuicheのVictoryは最低限のアニメーションのみが指定されている
つまり、他のアニメーションがついたときに合成される
なぜならアニメーションを発現したときには、こういう順番でパラメータが適用されるから
アバターの表情混ざって溶けるメカニズムはが理解できた
VRChatのアバターの表情操作はどういう操作形態がいいのかを考えて対策する必要があることがわかった
どちらかの手にだけつけるとか、表情ですべてのパラメータを指定するとかの工夫が必要
有名アバターではどうなっているのかを確認するとよさそうだ
桔梗とかはどうなっているのだろう?