VRChat Avatars3.0のトラブルシューティング
VRChat SDK3でのアバター作りにある罠と対処法を、思いついたそばから書き連ねたページです。SDK3関係ない罠も一部あり。
間違いを見つけた・掲載してほしいものがある・読んでも調べてもわからない質問がある場合はhttps://twitter.com/InPlanariaまでご連絡ください。気が向いたら答えます。
最終更新 2023/12/08
使い方
起きている問題を辿りながら、説明を見て対処を行ってください。
自作したギミックやアニメーションが動かない場合、まずはDebugを確認して原因を探ってください。
Debugの確認方法
→→
左 Parameters : Expression Menuやハンドサインや移動で変わるパラメータの一覧。ここの値が動かなかったり意図しない値になっている場合、だいたいメニューの設定を間違えているかスペルミスがある。
中 Tracking Control : 瞬きやリップシンクを止めたり、エモートを使うときにトラッキング優先状態からアニメーションの動きを優先する状態に変更した場合、TrackingがAnimationになる。だいたいまともに動いていない。SDK付属のControllerでさえ意図通りに動かせていない感がある。
中 Animation Controllers : 各Playable Layersの有効/無効状態。有効の時はWeight=1.00。Actionにエモート追加するときWeight変更処理が必要なことを知らず全く表示されないケースが多発する。
中 Miscellaneous : Locomotion(移動)無効にしたりPose Space変えたりしたときの表示。凝ったギミックを作らない限り見ることはない。
右 Playable Layers一覧 : 最重要。各Playable Layersに登録されたAnimator Controllerの各レイヤーのStateとWeight値を見れる。ここの表示がおかしければAnimator Controllerの遷移設定が悪い。おかしくなければStateの設定かAnimation Clipの中身が悪い。
参考文献
(とりあえずこれ読めば網羅的にわかる。情報量が多い。)
- VRChat公式ガイド。多くの人が知りもしない機能や仕様がしれっと書いてあったりするので、翻訳でもいいので一度は目を通しておくことをお勧めする。
- Avatars3.0の導入/Ruban
Avatars3.0についておそらく一番情報が多い日本語記事。アバターギミックに手を出すなら一度は読んでおきたい。
注意事項
- 細かな操作方法は書いてないので各自キーワードでググって
- ただし、webページの最終更新日に注意。
VRChatの世界の変化は急激であり、ありとあらゆる知見が時が経つにつれどんどん使えなくなっていきます。この記事の内容も含め。
- ただし、webページの最終更新日に注意。
- Avatar 3.0ではなくAvatars 3.0
- Write Defaultsを許すな
- Debugを見ろ
- 他の人にできたなら大体お前にもできる
- Back up ★ Your Projects!*1
- ここを読んでググっても分からなかったときは遠慮せず人に聞く
- ただし聞き方には気を付ける
- 何がしたいのか、どういう問題が起きたのか、何を試してダメだったのかを全部言うこと
- 質問している側が全く関係ないと思っている事象が、答える側にとっては大きなヒントになることも多い
- 文章<スクショ<動画<画面共有の順で状況が伝わりやすい
- うまくできなかったからといってすぐに落ち込まない
- いくら経験があってもアバターを一発で不具合無しに作るのは非常に難しい。大切なのは不具合の原因を見つけて修正する能力であり、決してノーミスで遂行する能力ではない
- できない自分はダメなんだと決めつけてはいけない。ダメなのはお前ではなくAvatars3.0を取り巻く環境である。証拠はこの記事の分量が示している。
アバター以外のノウハウ
当記事はAvatars3.0関連のノウハウをまとめたものです。
VRChatの生活やゲーム設定などのノウハウについては、以下の記事もご活用ください。
- Blender上でおかしい
- Unity上でおかしい
- VRChat SDKのControl Panelが開かない/表示が異常
- VRChat SDK Control Panelは開いたがアップロードできない
- Blenderで出力したFBXモデルのブレンドシェイプがガタガタになっている、Scaleがおかしい、やたらとアウトラインが太い
- 疑似アイトラッキング(Eye Movoment)がうまく設定できない、(目が動きすぎたり、ずっと白目になる)
- View Positionの設定ができない、灰色の球がない
- Quest対応ツールを使ったら、顔面などに黒い板・変な板が出た
- Quest対応シェーダーに変えたら、変な色になった。
- もらったモデルが全く表示されない、配布したblendモデルが別環境で表示されない
- 左右別々の色に改変したいのに左右対称になってしまう
- アバターにアバターやアイテムを組み込んだが、アニメーションの編集がうまくいかない
- アニメーションに黄色い文字でMissingがあって動かない/手持ちアイテム等をアバターに導入したが付属のアニメーションが動かない
- アバターが中腰になってしまう(編集画面でずっと)
- データが消えてしまった(ように見える)
- VRChat上で正しく見えない(Avatars3.0ギミック以外の問題)
- 自分で設定したアニメーション/ギミックなどが動かない
- アニメーションが再生されるはずなのに動きがない/別のアニメーションが表示される
- Debugを見ると、Parametersの動きがおかしい
- Debugを見ると、Animator Controllerの動きがおかしい
- Debugを見ても、Animator ControllerのState名は正しいのに動かない
- Animation Clipを確認したら黄色い文字でMissingとある
- AFKのAnimation Clipに入れた表情や物の出し入れが反映されない
- 表情のAnimation Clip内に一緒に入れているはずの手の形が反映されない
- FXに入れたHumanoidボーンの回転・移動のアニメーションが見えない
- FX以外に入れた、Humanoidボーン以外のボーンやオブジェクトの回転・移動のアニメーションが見えない
- PhysBoneの入った尻尾や耳を動かすアニメーションが動かない
- デフォルト(proxy_○○)のAnimation Clipを編集したのに反映されない、proxy_と頭につくアニメーションがデフォルトのままになってしまう
- 右手の表情しか見えない。左手に設定した表情が見えない
- Actionレイヤーに追加したエモートが表示されない
- その他、考えられる要因
- 動きはするが、見た目がおかしい
- Tracking Controlがおかしい
- 同期がおかしい、他人視点からだと正しく見えていない
- アニメーションが再生されるはずなのに動きがない/別のアニメーションが表示される
- いまはほぼ必要ない古い仕様の話
Blender上でおかしい
Blenderで編集したらブレンドシェイプが爆発した
Blenderで頂点編集を行うと、ときどきシェイプキーが損傷して爆発する。少し編集するたびにシェイプキーが壊れていないか確認するとよい。
シェイプキーのあるメッシュの一部分を編集したい場合、その部分のメッシュを分離してから編集すると事故防止になる。
Unity上でおかしい
VRChat SDKのControl Panelが開かない/表示が異常
-
Unityのバージョンは合っているか?
UnityCurrently Supported Unity Versionを見てバージョンが正しいか確認 -
VCC,SDKは最新にしたか?
https://vrchat.com/home/download から、最新のCreator Companion(VCC)を導入する。VCC内にUpdateボタンが現れていたら押す。VCCの"Manage Project"からSDKをアップデートしてみる。
https://vrchat.com/home/downloadから最新SDKダウンロードして入れる。(ただし、間違えてSDK3のプロジェクトにSDK2、SDK2のプロジェクトにSDK3を入れたりしないように注意)←非VCCのSDK配布終了のため文削除 -
SDK3-Avatarsと同時にSDK2, SDK3-Worldsを入れていないか?
VCCで導入したSDK3-Avatarsと、他の種類のSDK( UnityPackage版のSDK3、SDK2, SDK3-Worldsとか )を混ぜないこと。 -
Unity、PCの再起動はしたか?
何はともあれ再起動 -
プロジェクトの立て直し
新規プロジェクトを作り、おかしくなったプロジェクト内AssetsフォルダにあるアバターのモデルデータやSceneなどを新規プロジェクトに移し替える。 -
consoleに出ているエラーの文面でググったりスクショして人に聞く
consoleウィンドウのClearを押してから残っている赤いエラーの全文をスクショしてUnityに強そうなVRChatterに聞く
VRCUnity勉強会や、アバター改変なんもわからん集会のDiscordに加入して聞くのもよい。
VRChat SDK Control Panelは開いたがアップロードできない
Build&Publishが押せない
赤い8角形に!のエラーがたくさんある
←こんなん
-
導入したアバターはSDK3対応か確認
Boothで購入したアバターで、特に古く、対応SDKバージョンが書いてないものは大抵SDK3非対応である。SDK2のアバターはがとーしょこらさんのツールでSDK3に簡単に変換可能である。 -
(赤いエラーに)Auto Fixボタンがあったら押す
-
Missing Scriptと書いてあるエラーがあるか?
Missing Scriptは、必要なツールやプログラムを導入できていないときに発生する。もし不要であれば手動でRemove Componentすればよいが、必要なギミックを消してしまう可能性もある。- 導入物の配布ページに「MA対応」とある場合、ModularAvatarを導入すること。
- DynamicBoneの入れ忘れの場合、DynamicBoneを入れてから導入アバターの再インポートを行う。
DynamicBoneを持っていない場合は購入せずともツール
PhysBone Salvage Converter V2.1 - Hearty Laboratory - BOOTH
でPhysBoneに変換することが可能。 - SDK2のアバターをSDK3プロジェクトに誤って入れた際にもMissing Scriptが現れる。VRCAvatars3ToolsでSDK3アバターに変換したり、SDK3向けの設定を手動で作成すること。
-
Unsupported Shaderと書いてあるエラーか?
Android Buildになっている(Questアバターを上げる状態になっている)が、アバターにQuest非対応のシェーダーが使用されている。
Quest対応シェーダーを使ったマテリアルを新しく作り、アバターに割り当てる。 - Genericアバターの場合、アバタールートにAnimatorコンポーネントを追加する
-
音声ファイルが含まれる場合、"Load In Background"にチェックを入れる。
-
Expression Menuのボタンに使っている画像のサイズが大きい場合、Max Sizeを小さくする。
-
Unity、PCの再起動はしたか?
-
プロジェクトの立て直し
-
エラーの文面でググったりスクショして人に聞く
それ以外のエラーがたくさんある
以外のアイコンのエラーは本来無視しても良い。
それでもBuild&Publishが押せない場合はUnity再起動などをする。
以外のAuto Fixは必須ではない。特にshader keywords utilityの警告でAuto Fixすると表示バグることがあるので注意
アバターの中に別のアバターを組み込んたがうまく動かない
VRC Avatar Descriptorが1アバター中に2つあるとよくないので、組み込んだ側のVRC Avatar Descriptorを消す
Quest向けアップロードをしたいがBuild&Publishが押せない
ヒエラルキーにPC向けアバターがあればそれをinspectorから非アクティブにする。(Hierarchyの方の目のマークではない)
Build&Publishは押せるが、アップロード画面が出ない。
- Sceneの背景が濃い紺色をしている場合、prefab編集画面に入っている。
ここの矢印を押して元の画面に戻ること。
基本的にアバター改変でprefabの編集はしないほうがいいので、この画面に入ってしまったらすぐ戻るといい。 - 何かしらのスクリプトファイルがエラーを吐いている可能性がある。Unityのconsoleの内容を確認し、問題のあるスクリプトを探して対処する。
編集中は使ってもよいがビルドに含めてはいけないタイプのスクリプトが、[Editor]という名前のフォルダに入っていないときにも発生しうる。
最近入れた編集ツールを中心に原因を探すとよい
↑でたらめに書いた.csファイルをAssetsに入れてみた例。
Builder画面に何も出ない
アバターにAnimatorコンポーネントが存在しないかもしれない。VRC Avatar Descriptorと一緒にAnimatorも追加してみる。
Blenderで出力したFBXモデルのブレンドシェイプがガタガタになっている、Scaleがおかしい、やたらとアウトラインが太い
出力時に「スケールを適用>すべてFBX」を使う。
疑似アイトラッキング(Eye Movoment)がうまく設定できない、(目が動きすぎたり、ずっと白目になる)
目が大きく動きすぎる場合は、ここの数字を減らして動きの量を減らせばよい。
X:0 Y:0 Z:0と入力されているLoocking StraightのPreviewを押すと白目になるケースの場合は、「正面を向いているときの目の角度」がX:0 Y:0 Z:0ではないことが原因である。
斜めの8みたいなマークをクリックすると左右別々の回転を指定できるようになる。初期状態(前を向いているとき)のEyeのボーンのTransformのRotationの値を調べ、そのままコピペするとよい。
根本治療にはBlenderでHeadやEyeのボーン向きやロールを修正し、初期状態でX:0 Y:0 Z:0になるようにする。
View Positionの設定ができない、灰色の球がない
Gizmosを押す
Quest対応ツールを使ったら、顔面などに黒い板・変な板が出た
Quest対応シェーダーでは透明なメッシュを使うことができず、透明部分は真っ黒や真ピンクなどになる。特にVRoidの顔面は透明な板だらけなので、三角黒海苔まみれの目元を見ることになるだろう。
↑哀れにも顔面をToonlitにされてしまったVRoid Studio製のアバター
目のハイライトやVRoidの顔面など、メッシュより細かな形状を透過テクスチャで表現しているモデルの場合、主に3つの対処法がある。
- 不透明な部分(例えば目のハイライトなら虹彩部分、VRoidの眉なら顔面)に透過を使っている部分のテクスチャを書き写して誤魔化す。
VRoidの場合は自動ツールがある。VRoidでない場合は、テクスチャ編集の後、いらなくなったメッシュを消すためにBlenderやMeshDeleterWithTextureやにゃんにゃんメッシュエディターを使う。
- Blenderのナイフツールでテクスチャに沿ってメッシュを切り抜く。至難の業。刑罰。
ブレンドシェイプはとても壊れやすい。切り抜きの1操作ごとにブレンドシェイプ(シェイプキー)が壊れていないか確認すること。ナイフツール使用中にクリックするのは辺または頂点の上にする(面の真ん中をクリックしない)ようにするとブレンドシェイプが壊れる確率が下がる。 - 諦めて顔面をお面などで隠す。
↑アバター左がUTS、右がToonLit。頬染めが真ピンクに、青ざめエフェクトの板は真っ黒になってしまっている
頬染めや青ざめエフェクトなど半透明の画像を重ねている部分の場合、2種類の対処法がある。
- 画像編集ソフト(無料ならGIMPやFireAlpaca)を使い、エフェクトのテクスチャの背景を肌色で塗りつぶす。エフェクトの板の下に目などがない場合はこれで目立たなくなるが、ある場合は…
- 頬染めや青ざめの色を塗った顔肌テクスチャとマテリアルを作り、アニメーションでマテリアルの切り替えを行って表現する。違和感は減るが、テクスチャが増える分容量が増えるので注意。
Quest対応シェーダーに変えたら、変な色になった。
頂点カラーがモデルに設定されているので、以下ツールなどを用いて消す。
もらったモデルが全く表示されない、配布したblendモデルが別環境で表示されない
.blend形式は環境によってはUnityで使えないことがあるのでまずFBX化すること
コンポーネントの移植は以下ツールがおすすめ
https://t.co/atPHCuIJVy
— プラナリア🔄やや多忙 (@InPlanaria) 2021年12月28日
CopyComponentsByRegex
構造が同じ場所にあるコンポーネントを一括でコピーするUnityエディタ拡張
すなわち、ボーン名さえ同じならアバターのDynamicBoneをすべて一括で移行できる
神
左右別々の色に改変したいのに左右対称になってしまう
BlenderなどでUVを編集する(詳しくはググるか人に聞く)
あるいはマテリアルを新規作成し、左半分だけに新規マテリアルを割り当て、Unity上で別の色のマテリアルを割り当てる
アバターにアバターやアイテムを組み込んだが、アニメーションの編集がうまくいかない
組み込んだ側のアイテムにAnimatorコンポーネントが入っていれば消す。
アニメーションに黄色い文字でMissingがあって動かない/手持ちアイテム等をアバターに導入したが付属のアニメーションが動かない
Animatorコンポーネントに入るアニメーションのデータは「Animatorコンポーネントのあるオブジェクトからの相対パス」で記録されているので
オブジェクトの名前を変更したり、オブジェクトの階層構造が変わったりするとパスが通らなくなりMissingエラーになる。
別のAnimatorコンポーネント向けのアニメーションを別のAnimatorに入れる(例えば、動く武器のアニメーションをアバターのFXに入れるなど)ことでもMissingエラーになる。
(このあたりを自動でどうにかしてくれるからModularAvatarは凄いのである)
AnimationウィンドウでMissingになっている名前を選択しF2を押すとパスの編集が可能。
数が多い場合は、.animファイルをMery等フリーの高機能テキストエディタに読み込ませ、オブジェクト階層と名前を指定する部分を新しいものに合うようにすべて置換するとよい。
アバターが中腰になってしまう(編集画面でずっと)
アニメーション編集中にボーンの回転情報が失われたためである。
以下の記事を参考に
以下のツールの機能HumanoidPoseResetterで修正するのを推奨。
Unity上では問題ないがVRC上でのみ中腰になる場合、当記事「アバターが中腰になってしまう(Unity上では正常)」を参照のこと。
データが消えてしまった(ように見える)
アニメーションがAnimationウィンドウから選べなくなった
Animatorコンポーネントに入っているAnimator Controllerは「Animationウィンドウから編集可能なアニメーションのリスト」の役割を担っている。
AnimatorコンポーネントのAnimator Controllerの割り当てを元に戻すことで元の状態に戻る。
または、Animator Controllerを新しく作ってAnimatorコンポーネントに割り当て、アニメーションファイルをアバターに向けてドラッグアンドドロップするなどして登録し直してもよい。
いきなりHierarchyになにもなくなった
今まで編集していたSceneとは別のSceneを開いてしまった可能性が高い。
元のSceneファイルをAssetsの中から検索を使って探し、ダブルクリックで開くとよい。
間違えてAssetsから必要なデータを消してしまった
UnityのProjectウィンドウで消したものはゴミ箱に入っている。
ゴミ箱から復元するときは復元したいファイルと同名の拡張子.metaのファイルも一緒に復元すること。
VRChat上で正しく見えない(Avatars3.0ギミック以外の問題)
Quest対応したアバターをアップロードしたが、PCから見えない/使えない
2アバター間でBlueprint IDが異なることが原因である。
まずここからCopy IDをする。
次にVRC Avatar Descriptorの隣に追加されているはずのPipeline Managerを探す。
こうなっていたらDeatachをすると入力欄が現れるので、
先ほどコピーしたIDをCtrl+Vで貼り付けてAttachすることで「同一のアバター」としてアップロードできる。
Blueprint IDさえ一致していれば、全く見た目が異なるアバターを同一アバターのPC版・Quest版として取り扱うことも可能である。ただし挙動不安定になる可能性がある(参照:Questアバター、FallBackアバターがおかしな挙動をしているらしい)
アバターを改変してアップロードしたら、改変前のアバターが上書きされてしまった
Pipeline ManagerにあるBlueprint IDが一致しているので同一アバターとして扱われている。Pipeline ManagerからIDをDetachする。
Genericアバター・板ポリアバターがアップロードすると埋まる
VRC Avatar Descriptorのついたオブジェクトの回転・移動のTransformはアップロード後無効になる。
対策として、hierarchyの空白を右クリックしCreate Emptyし空オブジェクトを作成、それにVRC Avatar Descriptorをつけ、その子にメッシュを入れる
特定の角度で髪だけ・顔だけ・服だけ見えなくなると言われた
アバターのメッシュを選択したときに出る白い薄い直方体はBounds、すなわち「そのメッシュがおおむね存在すると思われる場所」を示す。このBoundsはRootBoneに追従して動く。
Boundsがカメラから外れるとメッシュが描画されなくなるが、メッシュは必ずしもRootBoneに完全に追従して動いているわけではないので「不自然に消えた」ように見える。
対策は「すべてのメッシュを選択し、RootBoneを一致させ、Boundsにアバターを取り囲むくらい十分大きな数値を(全部同じ値で)入れる」こと。
顔と体の明るさが違う
すべてのメッシュを選択し、Anchor Overrideに適当な体のボーンを入れる。
Anchor Overrideは「このオブジェクトの位置の明るさや光の色合いを取得し、メッシュのマテリアルに影響させる」という設定である。ここが未設定であると、各々のメッシュの位置が明るさ取得の基準になってしまい明るさがバラバラになる。
備考:BoundsやAnchor OverrideはVRCDeveloperToolで簡単に設定できる。
ボーンの動作がおかしい
Tポーズから動かない
- アバターのモデルデータ(FBX)のImport SettingsでRigがHumanoidになっていなければ、Humanoidにする。
- フルトラッキングにしたら急にTポーズになった場合、それはただのキャリブレーションである。トラッカーの白丸をアバターの腰と両足に合わせ、両手コントローラーのトリガーを引く。
ハンドサイン、ハンドジェスチャーが動かない
ジェスチャー無効モードになっていたら有効にする。(Rキー長押しで出るメニュー)
→
こいつね pic.twitter.com/sXvBpJ2Nbs
— みみー (@mimyquality) 2022年9月1日
VCC以降のSDK3では、FXレイヤーにAvatar MaskがあるとGestureの動きを阻害するのでハンドサインが動かなくなる。Avatar Maskを消そう。
フルトラ移動時の足踏みを消したが、移動時につま先や肩がピクピク動く
ここのチェックを外した場合スケート移動ができるようになるが、歩行モーションが残ったままであると足踏みモーションが微妙に再生されてしまう。
VRChat内の設定で「FBT Locomotion Animation」をオフにすると、フルトラ中に歩行モーションが出なくなるので使うとよい。
以下はまだその設定がなかったころのAnimator設定方法↓
- vrc_AvatarV3LocomotionLayerを複製し、アバターのPlayable LayersのBaseに割り当てる。
- Animator Controllerを開く。Parametersの中に、intの{TrackingType}があることを確認する。なければ追加する。
- Animation Clipのproxy_stand_stillをAnimator内にD&Dする。
[Any State]から[proxy_stand_still]へ遷移Aを、[proxy_stand_still]からStandingへ遷移Bを作成。
- 遷移Aの遷移条件(Conditions)を『TrackingType Equals 6』
遷移Bの遷移条件(Conditions)を『TrackingType NotEquals 6』にする。
つま先、靴底が埋まる
Avatar ConfigurationでHipsを少し上げる。
参考:
VRC内で足が埋まる時の対策。
— RYU (@beam_trident) 2019年10月13日
・Unityのボーンを割り当てる画面でHipsのボーンを選択して上に移動させる。
・Since内には移動した高さは反映されてないの視点を同じくらい移動させて調整(armatureを同じくらい移動させれば調整が楽か?)
・完了
・持込前のBlender内の画面。 pic.twitter.com/XKSh8gdRXV
または以下のツールを使う。
VRChatでアバターの足が埋まる事象(衣装の靴底厚かったりするやつ)に対してアバターの上下位置を変更するMA対応ツールを作りました。
— 奈良阪某 (@narazaka) 2023年11月10日
アバターによっては若干ViewPointの前後位置がずれる問題を修正しました。
VCCからアップデートしてアバター再アップロードで修正されますhttps://t.co/GTt4yoxfeo https://t.co/XQWt39IfzT
Head以下のオブジェクトに対してParent Constraintなどをしているオブジェクトの位置がおかしくなる
「ローカル視点ではHeadのボーンスケールが0になる」というVRChatの仕様上、Head以下のオブジェクトの位置を取得するのには不具合が出やすい。
対策は「Neckの子に、Headと同じ位置で、HeadにRotationConstraintで回転追従するオブジェクトを作り、それに対してParent Constraintする」
↑Neckの子に作成した空オブジェクトHeadDummyの設定例。Transformの値はHeadと同じ値にすること。
追加したアクセサリーや衣装の表示がおかしい
アクセサリーなどが体に追従しない、そもそも表示されない
アクセサリーのメッシュやボーンがアバターのボーンの子になっていない。アクセサリーが適切なボーンの子になるようにHierarchyを編集する。メッシュもアバターの子になるようにする。
アバターからトゲのようなものが伸びて地面の一点に集まっている
メッシュの一部頂点に対応するボーンが存在しなくなっている。着せ替えなどでメッシュを追加する場合は必要なボーンを消さないように気を付ける。
デフォルトの表情がおかしい
ジト目や細目にしたら顔が破綻する。デフォルトの顔に設定したBlendShapesの値が、VRChat上では過剰になっている。(3倍シェイプキー現象)
BlendShapesを変えてデフォルトの顔を変更したはずなのに、VRChat上では変化がない。
上記「デフォルトの顔のアニメーション」に類するものが表示され、上書きされている。該当アニメーションを探し編集する。
リップシンクが動かない
- aa,E,ih,oh,ouに使用しているブレンドシェイプの種類に重複があるとバグって動かない(筆者未確認)
- リップシンクに使うブレンドシェイプの入ったアニメーションが一つ以上存在する。リップシンク用ブレンドシェイプは表情アニメーションに使ってはいけない。
アバターが中腰になってしまう(Unity上では正常)
BaseあるいはGestureに不備がある可能性が高い。
特に、Gestureでの「アバターマスク」設定し忘れに注意。
Avatar Maskについては以下を参照のこと。
Unity上でも中腰になっている場合は当ページ「アバターが中腰になってしまう(アップロード画面でのみ)」「アバターが中腰になってしまう(編集画面でずっと)」を参照。
そもそも表情も何もかも動かない
もしかして自分でVRC Avatar DescriptorをAdd Componentで追加しましたか?
自分で設定したアニメーション/ギミックなどが動かない
アニメーションが再生されるはずなのに動きがない/別のアニメーションが表示される
Debugを見ると、Parametersの動きがおかしい
AFK=Trueにならない、AFKできない
→→
GestureRight, GestureLeftが0のまま動かない、ハンドサインが出ない
→
GestureRightWeight, GestureLeftWeightが0.0, 1.0のどちらかにしかならない
VRコントローラー使用時のFistを除けば、それが仕様
Expressions Menuを操作しても何もパラメータに変化がない
Menuの中にスペルミスや設定漏れがないか確認。
Expressions Menuを操作したとき、押している間だけ値が変わるが離すと戻ってしまう
あなたが欲しいのはBottonではなくToggleではありませんか
FloatをRadial Puppetで変更したいのに、1.00にしかならない
上のParameterはboolを入れるところ。floatは下のParamater Rotationに入れる
Debugを見ると、Animator Controllerの動きがおかしい
Weight = 0.0のレイヤーがある
Weightを1にする
意図したStateに遷移していない
- 単純に遷移条件やつなぎ方に設定ミスがある
- Paramatersにスペルミスがある
- AnyStateの仕様を理解していない。
AnyStateは文字通り「どのステートからも、この条件が満たされればここに遷移する」を設定するためのもの。
例えば、[Fist]の表情にイントロ(表情遷移直後だけの動き)を設定するためにこのような繋ぎ方をしていませんか?
よくある失敗で、「Fistを再生し終わったらFist 0に遷移し、Fist 0 のアニメーションをループし続ける」をこの図のように作ってしまうことがある。
これでは[Fist 0]に遷移した直後AnyState→Fistの遷移条件が成立しているので[Fist]に遷移してしまうので、AnyStateを使わない形で(Idleから他表情へ、他表情からIdleへ遷移するように)作り直す。
Debugを見ても、Animator ControllerのState名は正しいのに動かない
Animation Clipを確認したら黄色い文字でMissingとある
当ページ”アニメーションに黄色い文字でMissingがあって動かない/手持ちアイテム等をアバターに導入したが付属のアニメーションが動かない”の項で述べたとおり。
AFKのAnimation Clipに入れた表情や物の出し入れが反映されない
Humanoidアバターの場合、表情や物の出し入れ、Humanoid外ボーンのTransformの動きなどはFXレイヤーに入れないと動かない。
AFKアニメーションだからといってActionレイヤーに入れていませんか?
FXレイヤーにboolパラメータ[AFK]を作り、新規レイヤーを作り、物の出し入れの要領でAFK時にそれらがオンになるように設定するとよい。
表情のAnimation Clip内に一緒に入れているはずの手の形が反映されない
FXレイヤーでHumanoidボーンを動かすことはできないのでGestureを使う。
FXに入れたHumanoidボーンの回転・移動のアニメーションが見えない
FXレイヤーでHumanoidボーンを動かすことはできないのでGesture等他レイヤーを用途に合わせて使う。
FX以外に入れた、Humanoidボーン以外のボーンやオブジェクトの回転・移動のアニメーションが見えない
Humanoidアバターの場合、FXレイヤー以外でHumanoid外ボーン等オブジェクトの回転移動ができないバグがあるので、FXを使う。
PhysBoneの入った尻尾や耳を動かすアニメーションが動かない
PhysBoneコンポーネントの設定「Is Animated」をオンにすること。
また、PhysBone設定値自体の変更をする場合、変更後にPhysBoneコンポーネントをオフ,オンさせること。
デフォルト(proxy_○○)のAnimation Clipを編集したのに反映されない、proxy_と頭につくアニメーションがデフォルトのままになってしまう
proxy_と名前の付くアニメーションはアップロード時に別のものに置き換わる仕様。名前を変えること。
右手の表情しか見えない。左手に設定した表情が見えない
右手に入れた表情が左手に入れた表情を上書きしている。右手idleに「なにもキーのない空白のアニメーション」を作って入れる。noneではダメ。
Actionレイヤーに追加したエモートが表示されない
Actionレイヤーはデフォルトではweight=0(非表示)。VRC Playable Layer Controlを使って制御する必要がある。詳しくはvrc_AvatarV3ActionLayer内の実装状態を参考に。
その他、考えられる要因
- Motion Timeの設定は適切か?
Motion Timeは簡単に言えば「アニメーションの再生位置を変数によって制御する」機能なので、ループさせたいアニメーションなどに使うものではない。
- そもそもアニメーションを正しく作れているか?
- 別のレイヤーがアニメーションの動作を上書きして消してしまってはいないか?
動きはするが、見た目がおかしい
表情を変えると元に戻らなくなり破綻する、アニメーションで変えたものが元に戻らなくなる
Write Defaultsを許すな(アニメーションで何かを変化させるなら、元に戻すアニメーションも作っておきましょう)
ずっと回転する物のループアニメーションを作ったが、等速回転運動をしてくれない
アニメーションのCurvesを編集する。詳しくはUnity Animation Curvesでググる
表情をループアニメーションにしたはずだが、最後のフレームしか表示されない
StateのMotionTimeを消す
デフォルト立ちポーズを変えたのに、ポーズがすぐに戻ってしまう
Lower Bodyのチェックを外す
Tracking Controlがおかしい
注意:以下はVRC Animator Tracking Controlを取り扱った上で出た不具合についての記述です。
もしVRC Animator Tracking Controlを使ったことがない場合、まずは別のものを読んで触ってみてください。
その後困ったことが起きたらこのページに戻ってきてください。
Tracking Controlを設定したのに、瞬き・リップシンクと表情が干渉する。片手で表情を変えているときにもう片方をidleにするとTracking状態に戻ってしまい破綻する
TrackingControlのあるステート同時に出すと後から表示した方に上書きされるから…
— プラナリア (@InPlanaria) 2021年8月26日
だからGestureRight、Leftの制御のところにTrackingControl入れるのはお勧めしない
TrackingControl用の別のレイヤーを作って、そこで制御するのがいいと思う https://t.co/gX8UttyTTE
簡易的に設定する場合、上記ツイートのツリーを参照。
非常によく勘違いされがちなことだが、Tracking Controlは
「Tracking Controlのついたステートに入ったとき、その設定に合わせてトラッキング状態を変更する。Trackingにチェックが入っていればトラッキング優先に、Animationにチェックが入っていればアニメーション優先に変える。NoChangeなら何も変えない」
という挙動をするのであって、決して
「Tracking Controlのついたステートにいる間、トラッキング状態を設定されている通りにする」
というものではない。
例えば、右手レイヤーにある目閉じ表情の入ったステートに、瞬きとの干渉を防止するため上記画像のように「Eyeのトラッキング状態をAnimationにする」のTracking Controlが入っていたとする。また、左手のidleレイヤーには「Eyeのトラッキング状態をTrackingにする」のTracking Controlがあるとする。
右手レイヤーが目閉じ表情のステートに入りTracking Controlが作動してEyeがAnimation優先にされたとしても、もしその直後左手レイヤーがidleステートに遷移しTracking Controlが作動したのなら、例え右手がまだ目閉じ表情のステートにいたとしてもEyeはTracking優先状態になって破綻してしまう。
瞬きの瞬間に表情を切り替えると目が破綻する
バグ仕様。
Tracking ControlでAnimation優先にする設定をした上で、表情のアニメーションに「瞬き用ブレンドシェイプを0にする」のキーを登録すると緩和される。
喋りながら表情を切り替えると口が破綻する
同じくクソ仕様です。瞬きと同様の方法では避けられない。
対策は「リップシンク表示中は口元の表情を消す」
または「リップシンクを自作アニメーションで行う」。パラメータ[Viseme]が各リップシンク状態に対応しているので、それでどうにか。
実装例(14種のanimationをVisemeによって切り替える)
椅子に座るとTracking Controlがおかしくなる
あまり早く乗り降りするとうまくいかないみたいなのでゆっくりする。
vrc_AvatarV3SittingLayer2にはトラッキング周りのバグが入っているので使わず、vrc_AvatarV3SittingLayerのほうを使う。
ジャンプするとTracking Controlがおかしくなる
気になる場合はBaseのControllerをいじってジャンプモーション部分を削除しましょう
立ちやしゃがみポーズを自作したが、変に足が曲がったり体の形がおかしくなったりする
アニメーションのこのあたりの設定を確認する。
また、アニメーションでのHeadの位置が原点の真上になるように位置を調整するとよい。
例
同期がおかしい、他人視点からだと正しく見えていない
Expression Paramatorを使ったギミックが全く同期しない
Syncedにチェックを入れないとパラメータは同期しない。
Contactや、PhysBoneで動くパラメータを使ったギミックの同期が安定しない。
まずは以下の図を理解してほしい。
ContactやPhysBoneの処理、パラメータの変更などは、 アバターを見る人それぞれのPCで行われる(ネットワークを介して同期されていない)。
そのため、見る人それぞれでパラメータの取る値が違い、そのせいで表示されるアニメーションが違うということも発生する。
もしContactやPhysBoneで制御するアニメーションを厳密に同期したい場合は、以下のように作ること。
- (LocalOnlyの)Contactが動いてParamatorが変化することで(LocalOnlyの)ParamatorDriverが起動する感じのレイヤーをControllerに作る。
- そのParamatorDriverでSyncedオンのExpressionParamatorsを動かすようにする。
- そのExpressionParamatorsが動いたらアニメーションが動くようなレイヤーを作る。
途中からワールドに入った/アバターを読み込んだ人に正しく見えていない
例えばこのように、AというParameterをメニューで操作すると順々にアニメーションが再生されるようなギミックを組んだとする。この遷移は[アニメーション1]のステートから始まっており、Aを1,2と変化させると[アニメーション2][アニメーション3]が順々に再生される。
ただし、ここで注意すべきなのは「遅れてワールドに入ってきたりアバターを読み込んだ人に対して同期されるのはアバターの同期可能Parametersのみであり、いまどのステートにいるかは同期されない」ということである。
アバターの使用者がAを1,2と変化させ、使用者や周りの人から[アニメーション3]が見えている状態で、後からjoinしてきた人がいたとする。この場合、後からjoinしてきた人視点では”現在のステートが[アニメーション1]でA=2"という状態になっているため、[アニメーション2]への遷移条件A=1を満たさず遷移することはできない。
以下は対策例。
他人から見たら服が脱げている
Safetyでアニメーションを切った相手に見えるのは、「アバター選択画面に見える姿」=「なにもアニメーションが再生されていない状態でUnityのSceneに見えているアバターの姿」(未検証ですがたぶんそう)
デフォルト状態で服、着ましょう。というか脱げて困るときに脱げる機能あるアバター使うのやめましょう
あと、パラメーターがboolならFalse、Intなら0のときに脱げる設定になってると、同期ズレしたときに相手の視点でパラメーターがオール0の状態になって脱げる。 ←VRChatアプデにより修正済
他人から見たら服が透けている
Safetyでシェーダーがブロックされたとき、代わりに表示されるFallback Shaderが透明系だとスケスケになってしまうことがある。(Vketちゃんとかそう)
Fallback Shaderを好きなものに設定するには、基本的にはシェーダーの中身をいじる必要がある。ただしliltoonならマテリアル設定からすぐいじることもできる。
他人から全然違うアバターに見えている
それがFallBackアバターです
Questアバター、FallBackアバターがおかしな挙動をしているらしい
自分視点で見えているアバターに対してExpression Parametersが完全一致していないアバターがQuestアバターやFallBackアバターになっている場合意図しないParameterの変化が起きる可能性がある。
Expression Parametersが一致していないアバターをQuest版やFallBackに使用したい場合、暴発すると困るアニメーションを入れないようにすることを推奨。
Quest向けビルドで画像をクランチ圧縮するとQuestユーザーが落ちる
こちら原因が分かって、テクスチャをRGB Crunched DTX1で圧縮すると発生しました
— 100の人 (@esperecyan) 2021年8月10日
らしい。圧縮方法の変更は以下サイト参照
いまはほぼ必要ない古い仕様の話
DynamicBoneの動きがおかしい
Unity上では揺れているのにVRChatに上げたら全く動かない
Safety の Performance Optionsの Limit Dynamic Bone Usageにチェックが入っていたら外す。
ただしこのチェックを外すと、Collision Checksが1000とか入ってる激重アバターのDynamic Boneを無効化できずにCPU負荷が激増する可能性がある。
おすすめはVRChatConfigEditorで制限基準を好きな数字に変更してしまうこと。
↑Very Poor基準の256以下に設定した図
歩き始め、歩き終わりで揺れがビクッと荒ぶる
DynamicBoneComponentをつけるオブジェクトと、DynamicBoneで揺らす対象(Root)のオブジェクトを一緒にする。そうしないとInertの計算が狂うらしい。
DynamicBoneで揺れる部分につけたアクセサリーの動きがおかしい
揺れるボーンに対し、アクセサリーをParent Constraintで追従させるようにする。
DynamicBoneはオブジェクトが枝分かれするようについていると挙動が変わる。
DynamicBoneの設定をコピペするのが面倒
BlenderでFBX弄った後UNITYで簡単にコンポーネントを移植出来るやつ~、いつもお世話になってます👍https://t.co/7ZJoVglmHs
— Mofuge (@Mofuge_VRC) 2021年8月12日
使い方はヒエラルキーからコピー元を右クリックしてcopy components by ragex押してウィンドウ開いて
COPYしたら次にコピー先選択してPasteするだけ!簡単!#アバ改 pic.twitter.com/9ns4wX8wQ8
GitHub - Taremin/CopyComponentsByRegex
ダイナミックボーンの入った尻尾や耳を動かすアニメーションが動かない
ダイナミックボーンの制御下にあるボーンをアニメーションで動かすことはできないので、ダイナミックボーンの制御下にない根本ボーンなどを作るなどしてそれを回す。
Build&Publishは押せるしアップロード画面は出たが、アップロードボタンが押せない
上部にある一時停止ボタンが有効になっていたら無効にする。
UnityのAnimatorのステートを選択してもInspectorに何も表示されない
アバターが中腰になってしまう(PlayModeのみ)
特に直さなくても問題はない。
上記個所のAnimatorに設定されているControllerに入っているアニメーションが、PlayMode中に再生されることが原因である。
Controllerの割り当てを外しnoneにすることでTポーズのままPlayModeに入ることができるがこれは非推奨。この位置に入っているControllerは多くの場合「Animationウィンドウで編集できるアニメーションのリスト」の役割を担うため、初心者がうっかりnoneにすると「アニメーションが編集できない、消えた」と勘違いするケースがある。
なお、Controllerの中のDefault State(オレンジ色のステート)を変更すると好きなアニメーションをアップロード画面表示中に再生できる。サムネイル用のポーズと表情を作ってDefault Stateに設定すれば、アップロード時に好きなポーズでサムネイルを撮れる。
トラッキング系(IK更新が重なったのでもうなさそう)
フルトラで腰がねじれる
HipsのボーンがUpperLegの根本より下にあることが多くの原因である。Blenderなどでどうにか修正する。
フルトラで腰が横に少し曲がる
Chestが下にありすぎたり、UpperChestが存在するとなるらしい。
正直トラッキング系の仕様はコロコロ変わるし正解がその時々で変わるのでよくわからない。うまく有識者からTwitterで情報収集してください…
一部のアバター(VRoidなど)でデフォルトの伏せモーションを取ると他人視点からだけガタガタして見える
バグです。アニメーション変更で修正可能。
詳細は以下ツイートスレッド参照のこと
#VRChat #VRoid
— プラナリア🔄やや多忙 (@InPlanaria) 2022年1月17日
あまり知られていないことですが、VRoid製のアバターには「他人視点でのみデフォルトのProneモーションがガタガタして見える」という問題があります。
ローカルでは見えないので気づかない、厄介な問題です。
対処法を以下に記述します。 pic.twitter.com/sNgKuNUIIG
よければバグ修正要望のCannyに投票をお願いします。
https://feedback.vrchat.com/avatar-30/p/the-default-prone-motion-is-shaking-only-when-viewed-by-others
*1:この元ネタはVRC公式の動画。この記事公開から24時間近く、当クソデカ文字をBuck upと誤字していた。この生き恥は私の知らない間になぜか3Dモデルになって配布されることとなった。なぜ?