キッシュちゃんの表情アニメーションをAvatars 3.0に時代に設定する
試した日:2022/6/15ごろ
筆者はこの時代のアバターをセットアップしたことがないので細部はわからない
Avatars 3.0の表情アニメーション設定の大雑把な手順
>Avatars3.0では左手右手それぞれに別のアニメーションを設定することができます。
> LeftHandレイヤーをクリックしてFistステートをクリックするとInspectorのMotionに
> orion_face_smileというアニメーションが設定されていることがわかります。
> 左手のコントローラーでFist(グー)のポーズをつけたときにsmileアニメーションが実行されます。これがAvatars2.0のAnimationOverrideでアニメーションを設定していた部分と思ってもらってOKです。
サンプルの手の動きに連動するモーションのAnimatorControllerコピペして
> 対応するAnimationがない場合はproxyのままにして差し支えないです
この通りにproxyを設定した
> (が、proxyにも表情が設定されていた気がするので意図しない顔になる可能性があります
> 応急処置はproxyのコピーを作り、顔関連のシェイプキー指定を外すことです(略)
これは未実施。最終的に使い心地を調整するときにやる必要があるだろう
これで、ハンドサインを行った際にAnimation clipを再生することができるようになった
気づくまで紆余曲折と混乱と迷走があった

「モーション割り当てを左手だけにしたら表情が壊れた。顔も半分だけ変。なんで?」

「Unityのデフォルトのvrc_AvatarV3HandLayer(デフォルトのproxyアニメーション&Write defaultなし)でも溶けた」

「Unity....なんもわからん...」
キッシュちゃんの場合、以下の問題があった
これらに対応していく
>Idleも含めたすべてのWrite Defaultsにチェックを入れます。
> これをしないと手を離したときに表情が元に戻りません。
>オンにするとバグがあるとの情報もありますが、アップロードしてみて特に困りませんでした。
どちらの方策でもいけるはずだが、問題2と問題1をごっちゃに考えていたので、方針1-1では問題2が解決しない!と思って方針2を無駄に試してしまった
1-2をした結果(1-1でも同じ結果になるはず)
Idleからproxyのアニメーションをとっても変わらない
プレイヤーが操作をどうしたいのかによって対応が大きく変わる
それによってこんな対応がありうる
>「左手は口だけ、右手は目だけを動かすと決めて干渉し合わないようにする」
> 「Right Handsレイヤーの一つ上に、右手表情表示中だけデフォルト顔アニメーションを出すレイヤーを置いておく」
> 「左右のハンドサインによる表情をひとつのレイヤーにまとめておく」
どちらかの手にだけ表情をつける
表情ですべてのパラメータを指定しておく(強制上書き)
有名アバターではどうなっているのかを確認するとよさそうだ
参考文献
VRCSDK > Examples3 > Animation > Controllers からvrc_AvatarV3HandsLayerをコピーして使う解説
参考にはしなかったが関連する記事
自動化ツールの使い方解説記事
>最初にコピーしたvrc_AvatarV3HandsLayerを編集します
>青色 表情変えるのはここにアニメーションを入れるだけです
>緑色 まばたきと表情変更が被らないようにtraking controlを追加し、緑線のように変更します
>
のスレッド
今回tracking controleは意識していなかったが(コピペしたので最初から設定されていた)、ここでマスクするんだな〜
Avatars 2.0→3.0移行記事
>もし以前のversionのアバターを残しておきたい場合は、アップロードするアバターのBlueprintIDをDetachしてからアップロードしましょう。
迷走の記録。整理したものが↑の記事なので読む必要はない
Left/Right hand両方にWrite Defaultを設定した
表情が戻ることが確認できた
困りごと
2. 目をつぶった顔のパターンが2つあり、両方のタイミングが重なると(?)奇妙な顔になってしまう
失敗1:Left handのOpenにWrite Defaultのチェックが漏れていた
左手を変更すると表情が崩れ、右手をOpen handにしなおすと上書きされて直るようになった
チェックをつけなおした
失敗2: IdleにWrite Defaultのチェックを入れ忘れた
両方の手を設定した場合にはうまくいくが、片方の手だけ形を変更させた場合にモーフ後に逆側の手の表情になってしまう
左手と右手で優先度がありそう
必ずあとの方のアニメになるわけではない
左手と右手で順番を対象的に操作した場合でも、結果が違う
Idleにもチェックを入れた
Q. 左右の手で表情をつけた時、どの手の順番でどういう表情になるのかわからない
参考:Left handだけWrite Defaultをいれる→最終的に表情が(ぐちゃぐちゃな状態で)それ以上変わらなくなった
左手を開くと顔が溶ける
他にも組み合わせによっては顔が溶けるパターンがある
なぜそうなるのか理解できていない。だから解決できない
WriteDefaultではこれ以上解決できないようにおもえたので違う方法を調べた
追記:これは勘違い
参考になりそうな記事を読む
Write defaultsを使わないなら、元に戻すアニメーションを作る必要がある
キッシュちゃんにはない
左右の表情が変に混ざる原因はたぶんこれ
追記: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は最低限のアニメーションのみが指定されている
つまり、他のアニメーションがついたときに合成される
なぜならアニメーションを発現したときには、こういう順番でパラメータが適用されるから
どちらかの手にだけつけるとか、表情ですべてのパラメータを指定するとかの工夫が必要
有名アバターではどうなっているのかを確認するとよさそうだ