プラナリアのメモ

BlenderとかVRChatとかVRoidとかの覚え書き

Avatars3.0で表情が戻らない現象の直し方 決定版

連絡・質問はhttps://twitter.com/InPlanaria

 

 

 

はじめに

VRChat SDK3(Avatars3.0)製VRCアバターの表情が変えたら戻らない/表情が混ざるバグ、およびデフォルトの表情が狂うバグ(3倍シェイプキー現象)を直す方法を

Unity初心者にもギリギリ分かるくらいに細かく書いたページ。

そのバグに悩んでるやつ見つけたらとりあえず投げとけばいい記事を目指す。

 

注意事項

デフォ表情アニメをLeft Handのidleに入れるのをやめろ………!!!!!!!!!!!

そういう手順で説明してるサイトあるけど基本的に間違い

2021/12/21追記:アニメーションの作りによっては効果的な場合もあるが、少なくとも「数種類の表情同士が混ざる」で困っている場合にこの対処するのはダメ

 

前提

  • 表情を導入したAvatars3.0のアバターを持っている
  • Avatars3.0製アバターのアップロードをしたことがある
  • 日本語が読める

 

 

 

とりあえず直す方法

全体の流れ

  1. デフォルト表情アニメーションを作る
  2. FXレイヤーのAnimator Controllerに新規レイヤー作成
  3. 1で作ったアニメーションを導入

デフォルト表情アニメーションを作る

f:id:InPlanaria:20211019151926p:plain

Hierarchyにある、VRC Avatar Descriptor (Script)のついたアバターをクリックする。

 

f:id:InPlanaria:20211019153017p:plain

Inspectorに表示されているAnimatorのController欄がNoneであることを確認する。

もしNoneでなければ、◎をクリックしてNoneを選択しておく。

 

f:id:InPlanaria:20211019152407p:plain

Unityのツールバーより、Animationウィンドウを開く。

 

f:id:InPlanaria:20211019153148p:plain

このようなウィンドウが出るので、Createを押す。

 

f:id:InPlanaria:20211019153242p:plain

animファイル(アニメーションファイル)を保存するウィンドウが出るので、適当な名前を付けて保存する。

 

f:id:InPlanaria:20211019153428p:plain

保存したら、Animationウィンドウの録画ボタン(赤い二重丸)を押す。

アバターがしゃがんだポーズになる。

 

f:id:InPlanaria:20211019153703p:plain

Hierarchyより、表情に関連するメッシュを選択する。大抵はFaceかBodyという名前。

Skinned Mesh Renderer のBlendShapesの左の三角をクリックする。

 

f:id:InPlanaria:20211019154704p:plain

BlendShapesの一覧が表示される。バーを動かすと数字とバーが赤くなり、数値がアニメーションファイルに記録されていく。

リップシンクとまばたきに関係のないブレンドシェイプ全てのバーを動かしたり数字を動かしたりして、デフォルトの表情をアニメーションファイルに入力する。

 

リップシンクとまばたきに関連するブレンドシェイプの名前の確認方法

Hierarchyのアバターを選択し、Inspectorに表示されるVRC Avatar DescriptorのLip Sync欄、Eye Look欄のEyelidsを確認する。f:id:InPlanaria:20211019155055p:plain

f:id:InPlanaria:20211019155118p:plain

 

もし誤ってアニメーションファイルに登録してしまった場合、Animationウィンドウから該当ブレンドシェイプ名を右クリックしてRemove propertyする。

f:id:InPlanaria:20211019155401p:plain

 

f:id:InPlanaria:20211019155539p:plain

「デフォルトの表情で常にジト目ブレンドシェイプを使用したい」といった場合はブレンドシェイプに0以外の数字を入力すればいい。

リップシンクとまばたきを除く全ブレンドシェイプの登録が完了し、デフォルト表情のアバターが表示された状態になったら

一旦Animationウィンドウを閉じる。(正常な場合はアバターがTポーズに戻る)

 

FXレイヤーのAnimator Controllerに新規レイヤー作成

f:id:InPlanaria:20211019151926p:plain

Hierarchyにある、VRC Avatar Descriptor (Script)のついたオブジェクトをクリックする。

f:id:InPlanaria:20211019152220p:plain

Inspectorを下にスクロールすると、Playable Layersの項目がある。

FXに割り当てられているもの(Animator Controller)をダブルクリックする。

 

f:id:InPlanaria:20211019155939p:plain

Animatorウィンドウが開き、Inspectorには先ほどダブルクリックした名前が表示されていることを確認する。

 

f:id:InPlanaria:20211019160410p:plain

レイヤー構成はアバターによって異なる場合がある。

Layerの右の+ボタンを押すと、New Layerが作られる。

New Layer右の歯車マークを押し、Weightを1にする

f:id:InPlanaria:20211019160949p:plain

忘れずにNew Layer右の歯車マークを押し、Weightを1にする。

Weightを1にしないとどんなアニメーションも動かない。

 

f:id:InPlanaria:20211019161909p:plain

ドラッグアンドドロップでNew Layerを一番上に移動する。

 

追記:このとき元から一番上にあったレイヤー(ここではAllParts)のWeightが0になる場合がある。必要があればWeightは1に戻しておく。

 

作ったアニメーションを導入

f:id:InPlanaria:20211019162920p:plain

Animationウィンドウ上部の表示がNew Layerになっていることを確認したら、先ほど作ったデフォルト表情アニメーションをドラッグアンドドロップする。

オレンジ色の四角が生成される。

 

f:id:InPlanaria:20211019163300p:plain

オレンジ色の四角をクリックし、Write Defaultsをオフにする。

以上で手順は完了である。

 

2022/01/07追記

Motionがnone(なにもアニメーションが入っていない)になっているステートがあるとき、表情が全く表示されなくなる場合がある。

その不具合を回避するため、新しく何も入っていないアニメーションを作成し、そのnoneになっているステート(idleなど)に割り当てる。

f:id:InPlanaria:20220117113122p:plain

f:id:InPlanaria:20220117113400p:plain

f:id:InPlanaria:20220117113408p:plain

備考

  • もし編集した後アバターが中腰状態から戻らなくなった場合は

    deux-hibi.hatenablog.com

    こちらの記事の手順で直す。
  • アップロードタイミングで中腰になるのが気に入らない場合、AnimatorのController欄を再度Noneにする。
  • Write Defaultsをブン殴れるワールドだれか作ってくれない?