プラナリアのメモ

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

VRChat Avatars3.0のトラブルシューティング

VRChat SDK3でのアバター作りにある罠と対処法を、思いついたそばから書き連ねたページです。SDK3関係ない罠も一部あり。

 

間違いを見つけた・掲載してほしいものがある・読んでも調べてもわからない質問がある場合はhttps://twitter.com/InPlanariaまでご連絡ください。気が向いたら答えます。

最終更新 2023/12/08

 

使い方

起きている問題を辿りながら、説明を見て対処を行ってください。

自作したギミックやアニメーションが動かない場合、まずはDebugを確認して原因を探ってください

Debugの確認方法

f:id:InPlanaria:20211004145546p:plainf:id:InPlanaria:20211004145557p:plainf:id:InPlanaria:20211004145643p:plain

f:id:InPlanaria:20211004145732p:plain

左 Parameters : Expression Menuやハンドサインや移動で変わるパラメータの一覧。ここの値が動かなかったり意図しない値になっている場合、だいたいメニューの設定を間違えているかスペルミスがある。

中 Tracking Control : 瞬きやリップシンクを止めたり、エモートを使うときにトラッキング優先状態からアニメーションの動きを優先する状態に変更した場合、TrackingAnimationになる。だいたいまともに動いていない。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公式ガイド。多くの人が知りもしない機能や仕様がしれっと書いてあったりするので、翻訳でもいいので一度は目を通しておくことをお勧めする。

    docs.vrchat.com

  • Avatars3.0の導入/Ruban
    Avatars3.0についておそらく一番情報が多い日本語記事。アバターギミックに手を出すなら一度は読んでおきたい。

    docs.google.com


注意事項

  • 細かな操作方法は書いてないので各自キーワードでググって
    • ただし、webページの最終更新日に注意。
      VRChatの世界の変化は急激であり、ありとあらゆる知見が時が経つにつれどんどん使えなくなっていきます。この記事の内容も含め。
  • Avatar 3.0ではなくAvatars 3.0
  • Write Defaultsを許すな
  • Debugを見ろ
  • 他の人にできたなら大体お前にもできる
  • Back up ★ Your Projects!*1
  • ここを読んでググっても分からなかったときは遠慮せず人に聞く
    • ただし聞き方には気を付ける
    • 何がしたいのか、どういう問題が起きたのか、何を試してダメだったのかを全部言うこと
    • 質問している側が全く関係ないと思っている事象が、答える側にとっては大きなヒントになることも多い
    • 文章<スクショ<動画<画面共有の順で状況が伝わりやすい
  • うまくできなかったからといってすぐに落ち込まない
    • いくら経験があってもアバターを一発で不具合無しに作るのは非常に難しい。大切なのは不具合の原因を見つけて修正する能力であり、決してノーミスで遂行する能力ではない
    • できない自分はダメなんだと決めつけてはいけない。ダメなのはお前ではなくAvatars3.0を取り巻く環境である。証拠はこの記事の分量が示している。

アバター以外のノウハウ

当記事はAvatars3.0関連のノウハウをまとめたものです。
VRChatの生活やゲーム設定などのノウハウについては、以下の記事もご活用ください。

narazaka.hatenablog.jp

 

 

Blender上でおかしい

Blenderで編集したらブレンドシェイプが爆発した

Blenderで頂点編集を行うと、ときどきシェイプキーが損傷して爆発する。少し編集するたびにシェイプキーが壊れていないか確認するとよい。
シェイプキーのあるメッシュの一部分を編集したい場合、その部分のメッシュを分離してから編集すると事故防止になる。

 

 

Unity上でおかしい

VRChat SDKのControl Panelが開かない/表示が異常 

  1. Unityのバージョンは合っているか?
    UnityCurrently Supported Unity Versionを見てバージョンが正しいか確認

  2. 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配布終了のため文削除

  3. SDK3-Avatarsと同時にSDK2, SDK3-Worldsを入れていないか?
    VCCで導入したSDK3-Avatarsと、他の種類のSDK( UnityPackage版のSDK3、SDK2, SDK3-Worldsとか )を混ぜないこと。

  4. Unity、PCの再起動はしたか?
    何はともあれ再起動

  5. プロジェクトの立て直し
    新規プロジェクトを作り、おかしくなったプロジェクト内AssetsフォルダにあるアバターのモデルデータやSceneなどを新規プロジェクトに移し替える。

  6. consoleに出ているエラーの文面でググったりスクショして人に聞く

    f:id:InPlanaria:20211004222319p:plain

    consoleウィンドウのClearを押してから残っている赤いエラーの全文をスクショしてUnityに強そうなVRChatterに聞く
    VRCUnity勉強会や、アバター改変なんもわからん集会のDiscordに加入して聞くのもよい。

VRChat SDK Control Panelは開いたがアップロードできない

Build&Publishが押せない
赤い8角形に!のエラーがたくさんある

f:id:InPlanaria:20211004222635p:plain←こんなん

  • 導入したアバターはSDK3対応か確認
    Boothで購入したアバターで、特に古く、対応SDKバージョンが書いてないものは大抵SDK3非対応である。SDK2のアバターがとーしょこらさんのツールでSDK3に簡単に変換可能である。

  • (赤いエラーに)Auto Fixボタンがあったら押す

  • Missing Scriptと書いてあるエラーがあるか?
    Missing Scriptは、必要なツールやプログラムを導入できていないときに発生する。もし不要であれば手動でRemove Componentすればよいが、必要なギミックを消してしまう可能性もある。

     

  • Unsupported Shaderと書いてあるエラーか?
    Android Buildになっている(Questアバターを上げる状態になっている)が、アバターにQuest非対応のシェーダーが使用されている。
    Quest対応シェーダーを使ったマテリアルを新しく作り、アバターに割り当てる。

  • Genericアバターの場合、アバタールートにAnimatorコンポーネントを追加する
  • 音声ファイルが含まれる場合、"Load In Background"にチェックを入れる。

     

  • Expression Menuのボタンに使っている画像のサイズが大きい場合、Max Sizeを小さくする。

  • Unity、PCの再起動はしたか?

  • プロジェクトの立て直し

  • エラーの文面でググったりスクショして人に聞く

それ以外のエラーがたくさんある

f:id:InPlanaria:20211004222635p:plain以外のアイコンのエラーは本来無視しても良い。
それでもBuild&Publishが押せない場合はUnity再起動などをする。

f:id:InPlanaria:20211004222635p:plain以外のAuto Fixは必須ではない。特にshader keywords utilityの警告でAuto Fixすると表示バグることがあるので注意

 

アバターの中に別のアバターを組み込んたがうまく動かない

VRC Avatar Descriptorが1アバター中に2つあるとよくないので、組み込んだ側のVRC Avatar Descriptorを消す

 

Quest向けアップロードをしたいがBuild&Publishが押せない

ヒエラルキーにPC向けアバターがあればそれをinspectorから非アクティブにする。(Hierarchyの方の目のマークではない)

f:id:InPlanaria:20211005235200p:plain

 

Build&Publishは押せるが、アップロード画面が出ない。
  1. Sceneの背景が濃い紺色をしている場合、prefab編集画面に入っている。
    ここの矢印を押して元の画面に戻ること。

    f:id:InPlanaria:20220123161517p:plain

    基本的にアバター改変でprefabの編集はしないほうがいいので、この画面に入ってしまったらすぐ戻るといい。
  2. 何かしらのスクリプトファイルがエラーを吐いている可能性がある。Unityのconsoleの内容を確認し、問題のあるスクリプトを探して対処する。
    編集中は使ってもよいがビルドに含めてはいけないタイプのスクリプトが、[Editor]という名前のフォルダに入っていないときにも発生しうる。
    最近入れた編集ツールを中心に原因を探すとよい
    f:id:InPlanaria:20220122164135p:plain
    ↑でたらめに書いた.csファイルをAssetsに入れてみた例。

 

Builder画面に何も出ない

アバターにAnimatorコンポーネントが存在しないかもしれない。VRC Avatar Descriptorと一緒にAnimatorも追加してみる。

 

Blenderで出力したFBXモデルのブレンドシェイプがガタガタになっている、Scaleがおかしい、やたらとアウトラインが太い

画像

出力時に「スケールを適用>すべてFBX」を使う。

 

疑似アイトラッキング(Eye Movoment)がうまく設定できない、(目が動きすぎたり、ずっと白目になる)

f:id:InPlanaria:20220122164655p:plain

目が大きく動きすぎる場合は、ここの数字を減らして動きの量を減らせばよい。

 

X:0 Y:0 Z:0と入力されているLoocking StraightのPreviewを押すと白目になるケースの場合は、「正面を向いているときの目の角度」がX:0 Y:0 Z:0ではないことが原因である。

f:id:InPlanaria:20211004230520p:plain

斜めの8みたいなマークをクリックすると左右別々の回転を指定できるようになる。初期状態(前を向いているとき)のEyeのボーンのTransformのRotationの値を調べ、そのままコピペするとよい。

f:id:InPlanaria:20220120143410p:plain

根本治療にはBlenderでHeadやEyeのボーン向きやロールを修正し、初期状態でX:0 Y:0 Z:0になるようにする。


View Positionの設定ができない、灰色の球がない

f:id:InPlanaria:20211004230908p:plain

Gizmosを押す

 

Quest対応ツールを使ったら、顔面などに黒い板・変な板が出た

Quest対応シェーダーでは透明なメッシュを使うことができず、透明部分は真っ黒や真ピンクなどになる。特にVRoidの顔面は透明な板だらけなので、三角黒海苔まみれの目元を見ることになるだろう。

f:id:InPlanaria:20220122171601p:plain

↑哀れにも顔面をToonlitにされてしまったVRoid Studio製のアバター

目のハイライトやVRoidの顔面など、メッシュより細かな形状を透過テクスチャで表現しているモデルの場合、主に3つの対処法がある。

  1. 不透明な部分(例えば目のハイライトなら虹彩部分、VRoidの眉なら顔面)に透過を使っている部分のテクスチャを書き写して誤魔化す。
    VRoidの場合は自動ツールがある。

    VRoidでない場合は、テクスチャ編集の後、いらなくなったメッシュを消すためにBlenderMeshDeleterWithTextureにゃんにゃんメッシュエディターを使う。

  2. Blenderのナイフツールでテクスチャに沿ってメッシュを切り抜く。至難の業。刑罰。
    ブレンドシェイプはとても壊れやすい。切り抜きの1操作ごとにブレンドシェイプ(シェイプキー)が壊れていないか確認すること。ナイフツール使用中にクリックするのは辺または頂点の上にする(面の真ん中をクリックしない)ようにするとブレンドシェイプが壊れる確率が下がる。
  3. 諦めて顔面をお面などで隠す。

 

f:id:InPlanaria:20220122172430p:plain f:id:InPlanaria:20220122170813p:plain

アバター左がUTS、右がToonLit。頬染めが真ピンクに、青ざめエフェクトの板は真っ黒になってしまっている

頬染めや青ざめエフェクトなど半透明の画像を重ねている部分の場合、2種類の対処法がある。

  1. 画像編集ソフト(無料ならGIMPやFireAlpaca)を使い、エフェクトのテクスチャの背景を肌色で塗りつぶす。エフェクトの板の下に目などがない場合はこれで目立たなくなるが、ある場合は…
    f:id:InPlanaria:20220122172608p:plain f:id:InPlanaria:20220122172718p:plain
  2. 頬染めや青ざめの色を塗った顔肌テクスチャとマテリアルを作り、アニメーションでマテリアルの切り替えを行って表現する。違和感は減るが、テクスチャが増える分容量が増えるので注意。

Quest対応シェーダーに変えたら、変な色になった。

頂点カラーがモデルに設定されているので、以下ツールなどを用いて消す。

booth.pm

 

 

もらったモデルが全く表示されない、配布したblendモデルが別環境で表示されない

.blend形式は環境によってはUnityで使えないことがあるのでまずFBX化すること

コンポーネントの移植は以下ツールがおすすめ

 

 

左右別々の色に改変したいのに左右対称になってしまう

BlenderなどでUVを編集する(詳しくはググるか人に聞く)
あるいはマテリアルを新規作成し、左半分だけに新規マテリアルを割り当て、Unity上で別の色のマテリアルを割り当てる

 

アバターアバターやアイテムを組み込んだが、アニメーションの編集がうまくいかない

組み込んだ側のアイテムにAnimatorコンポーネントが入っていれば消す。

アニメーションに黄色い文字でMissingがあって動かない/手持ちアイテム等をアバターに導入したが付属のアニメーションが動かない

Animatorコンポーネントに入るアニメーションのデータは「Animatorコンポーネントのあるオブジェクトからの相対パス」で記録されているので
オブジェクトの名前を変更したり、オブジェクトの階層構造が変わったりするとパスが通らなくなりMissingエラーになる。
別のAnimatorコンポーネント向けのアニメーションを別のAnimatorに入れる(例えば、動く武器のアニメーションをアバターのFXに入れるなど)ことでもMissingエラーになる。
(このあたりを自動でどうにかしてくれるからModularAvatarは凄いのである)

f:id:InPlanaria:20220120140427p:plain

AnimationウィンドウでMissingになっている名前を選択しF2を押すとパスの編集が可能。
数が多い場合は、.animファイルをMery等フリーの高機能テキストエディタに読み込ませ、オブジェクト階層と名前を指定する部分を新しいものに合うようにすべて置換するとよい。

forest.watch.impress.co.jp

 

アバターが中腰になってしまう(編集画面でずっと)

アニメーション編集中にボーンの回転情報が失われたためである。
以下の記事を参考に

deux-hibi.hatenablog.com

以下のツールの機能HumanoidPoseResetterで修正するのを推奨。

gatosyocora.booth.pm

 

Unity上では問題ないがVRC上でのみ中腰になる場合、当記事「アバターが中腰になってしまう(Unity上では正常)」を参照のこと。

 

データが消えてしまった(ように見える)

アニメーションがAnimationウィンドウから選べなくなった

f:id:InPlanaria:20220202025707p:plain
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が異なることが原因である。

f:id:InPlanaria:20211004223755p:plain

まずここからCopy IDをする。
次にVRC Avatar Descriptorの隣に追加されているはずのPipeline Managerを探す。

f:id:InPlanaria:20220121131058p:plain

こうなっていたらDeatachをすると入力欄が現れるので、

f:id:InPlanaria:20211004223809p:plain

先ほどコピーした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をつけ、その子にメッシュを入れる

 

特定の角度で髪だけ・顔だけ・服だけ見えなくなると言われた

f:id:InPlanaria:20220120140736p:plain

アバターのメッシュを選択したときに出る白い薄い直方体はBounds、すなわち「そのメッシュがおおむね存在すると思われる場所」を示す。このBoundsはRootBoneに追従して動く。
Boundsがカメラから外れるとメッシュが描画されなくなるが、メッシュは必ずしもRootBoneに完全に追従して動いているわけではないので「不自然に消えた」ように見える。
対策は「すべてのメッシュを選択し、RootBoneを一致させ、Boundsにアバターを取り囲むくらい十分大きな数値を(全部同じ値で)入れる」こと。

f:id:InPlanaria:20220120141032p:plain

顔と体の明るさが違う

f:id:InPlanaria:20220120141134p:plain

すべてのメッシュを選択し、Anchor Overrideに適当な体のボーンを入れる。
Anchor Overrideは「このオブジェクトの位置の明るさや光の色合いを取得し、メッシュのマテリアルに影響させる」という設定である。ここが未設定であると、各々のメッシュの位置が明るさ取得の基準になってしまい明るさがバラバラになる。

備考:BoundsやAnchor OverrideはVRCDeveloperToolで簡単に設定できる。

gatosyocora.booth.pm

 

ボーンの動作がおかしい

Tポーズから動かない
  1. アバターのモデルデータ(FBX)のImport SettingsでRigがHumanoidになっていなければ、Humanoidにする。
  2. フルトラッキングにしたら急にTポーズになった場合、それはただのキャリブレーションである。トラッカーの白丸をアバターの腰と両足に合わせ、両手コントローラーのトリガーを引く。
ハンドサイン、ハンドジェスチャーが動かない

ジェスチャー無効モードになっていたら有効にする。(Rキー長押しで出るメニュー)

f:id:InPlanaria:20211004145546p:plainf:id:InPlanaria:20211004224025p:plain

 

VCC以降のSDK3では、FXレイヤーにAvatar MaskがあるとGestureの動きを阻害するのでハンドサインが動かなくなる。Avatar Maskを消そう。

 

 

フルトラ移動時の足踏みを消したが、移動時につま先や肩がピクピク動く

f:id:InPlanaria:20211004231510p:plain

ここのチェックを外した場合スケート移動ができるようになるが、歩行モーションが残ったままであると足踏みモーションが微妙に再生されてしまう。
VRChat内の設定で「FBT Locomotion Animation」をオフにすると、フルトラ中に歩行モーションが出なくなるので使うとよい。

以下はまだその設定がなかったころのAnimator設定方法↓

  1. vrc_AvatarV3LocomotionLayerを複製し、アバターのPlayable LayersのBaseに割り当てる。

    f:id:InPlanaria:20211004231803p:plain

  2. Animator Controllerを開く。Parametersの中に、intの{TrackingType}があることを確認する。なければ追加する。

    f:id:InPlanaria:20211004232026p:plain

  3. Animation Clipのproxy_stand_stillをAnimator内にD&Dする。
    [Any State]から[proxy_stand_still]へ遷移Aを、[proxy_stand_still]からStandingへ遷移Bを作成。

    f:id:InPlanaria:20211004232927p:plain

  4. 遷移Aの遷移条件(Conditions)を『TrackingType Equals 6』
    遷移Bの遷移条件(Conditions)を『TrackingType NotEquals 6』にする。

 

つま先、靴底が埋まる

f:id:InPlanaria:20211004233537p:plain

Avatar ConfigurationでHipsを少し上げる。

参考:

または以下のツールを使う。

 

Head以下のオブジェクトに対してParent Constraintなどをしているオブジェクトの位置がおかしくなる

「ローカル視点ではHeadのボーンスケールが0になる」というVRChatの仕様上、Head以下のオブジェクトの位置を取得するのには不具合が出やすい。
対策は「Neckの子に、Headと同じ位置で、HeadにRotationConstraintで回転追従するオブジェクトを作り、それに対してParent Constraintする」

f:id:InPlanaria:20220120142107p:plain

↑Neckの子に作成した空オブジェクトHeadDummyの設定例。Transformの値はHeadと同じ値にすること。

 

 

 

追加したアクセサリーや衣装の表示がおかしい

アクセサリーなどが体に追従しない、そもそも表示されない

アクセサリーのメッシュやボーンがアバターのボーンの子になっていない。アクセサリーが適切なボーンの子になるようにHierarchyを編集する。メッシュもアバターの子になるようにする。

 

アバターからトゲのようなものが伸びて地面の一点に集まっている

メッシュの一部頂点に対応するボーンが存在しなくなっている。着せ替えなどでメッシュを追加する場合は必要なボーンを消さないように気を付ける。

 

デフォルトの表情がおかしい

ジト目や細目にしたら顔が破綻する。デフォルトの顔に設定したBlendShapesの値が、VRChat上では過剰になっている。(3倍シェイプキー現象)

inplanaria.hatenablog.com

 

BlendShapesを変えてデフォルトの顔を変更したはずなのに、VRChat上では変化がない。

上記「デフォルトの顔のアニメーション」に類するものが表示され、上書きされている。該当アニメーションを探し編集する。

 

リップシンクが動かない

  1. aa,E,ih,oh,ouに使用しているブレンドシェイプの種類に重複があるとバグって動かない(筆者未確認)
  2. リップシンクに使うブレンドシェイプの入ったアニメーションが一つ以上存在する。リップシンクブレンドシェイプは表情アニメーションに使ってはいけない。

アバターが中腰になってしまう(Unity上では正常)

BaseあるいはGestureに不備がある可能性が高い。
特に、Gestureでの「アバターマスク」設定し忘れに注意。
Avatar Maskについては以下を参照のこと。

docs.google.com

Unity上でも中腰になっている場合は当ページ「アバターが中腰になってしまう(アップロード画面でのみ)」「アバターが中腰になってしまう(編集画面でずっと)」を参照。

そもそも表情も何もかも動かない

もしかして自分でVRC Avatar DescriptorをAdd Componentで追加しましたか?

f:id:InPlanaria:20220207203850p:plain

f:id:InPlanaria:20220207203915p:plain f:id:InPlanaria:20220207203928p:plain

 

 

 

自分で設定したアニメーション/ギミックなどが動かない

アニメーションが再生されるはずなのに動きがない/別のアニメーションが表示される

Debugを見ると、Parametersの動きがおかしい
AFK=Trueにならない、AFKできない

f:id:InPlanaria:20211004145546p:plainf:id:InPlanaria:20211004145557p:plainf:id:InPlanaria:20220120150128p:plain

GestureRight, GestureLeftが0のまま動かない、ハンドサインが出ない

f:id:InPlanaria:20211004145546p:plainf:id:InPlanaria:20220120150217p:plain

GestureRightWeight, GestureLeftWeightが0.0, 1.0のどちらかにしかならない

VRコントローラー使用時のFistを除けば、それが仕様

Expressions Menuを操作しても何もパラメータに変化がない

Menuの中にスペルミスや設定漏れがないか確認。

Expressions Menuを操作したとき、押している間だけ値が変わるが離すと戻ってしまう

f:id:InPlanaria:20220120150439p:plain

あなたが欲しいのはBottonではなくToggleではありませんか

FloatをRadial Puppetで変更したいのに、1.00にしかならない

f:id:InPlanaria:20220120150529p:plain

上のParameterはboolを入れるところ。floatは下のParamater Rotationに入れる

 

Debugを見ると、Animator Controllerの動きがおかしい
Weight = 0.0のレイヤーがある

Weightを1にする

意図したStateに遷移していない
  1. 単純に遷移条件やつなぎ方に設定ミスがある
  2. Paramatersにスペルミスがある
  3. AnyStateの仕様を理解していない。
    AnyStateは文字通り「どのステートからも、この条件が満たされればここに遷移する」を設定するためのもの。

    f:id:InPlanaria:20220121041858p:plain

    例えば、[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は簡単に言えば「アニメーションの再生位置を変数によって制御する」機能なので、ループさせたいアニメーションなどに使うものではない。

    f:id:InPlanaria:20220121030412p:plain

  • そもそもアニメーションを正しく作れているか?
  • 別のレイヤーがアニメーションの動作を上書きして消してしまってはいないか?

 

 

動きはするが、見た目がおかしい

表情を変えると元に戻らなくなり破綻する、アニメーションで変えたものが元に戻らなくなる

inplanaria.hatenablog.com

Write Defaultsを許すな(アニメーションで何かを変化させるなら、元に戻すアニメーションも作っておきましょう)

ずっと回転する物のループアニメーションを作ったが、等速回転運動をしてくれない

アニメーションのCurvesを編集する。詳しくはUnity Animation Curvesでググる

表情をループアニメーションにしたはずだが、最後のフレームしか表示されない

StateのMotionTimeを消す
f:id:InPlanaria:20220120144046p:plain

デフォルト立ちポーズを変えたのに、ポーズがすぐに戻ってしまう

f:id:InPlanaria:20211005235738p:plain

Lower Bodyのチェックを外す

Tracking Controlがおかしい

注意:以下はVRC Animator Tracking Controlを取り扱った上で出た不具合についての記述です。
もしVRC Animator Tracking Controlを使ったことがない場合、まずは別のものを読んで触ってみてください。
その後困ったことが起きたらこのページに戻ってきてください。

Tracking Controlを設定したのに、瞬き・リップシンクと表情が干渉する。片手で表情を変えているときにもう片方をidleにするとTracking状態に戻ってしまい破綻する

簡易的に設定する場合、上記ツイートのツリーを参照。

 

f:id:InPlanaria:20220120144905p:plain

非常によく勘違いされがちなことだが、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にする」のキーを登録すると緩和される。

喋りながら表情を切り替えると口が破綻する

同じくクソ仕様です。瞬きと同様の方法では避けられない。
対策は「リップシンク表示中は口元の表情を消す」

note.com

または「リップシンクを自作アニメーションで行う」。パラメータ[Viseme]が各リップシンク状態に対応しているので、それでどうにか。

mimyquality.booth.pm

vrheel.com

docs.vrchat.com

実装例(14種のanimationをVisemeによって切り替える)

f:id:InPlanaria:20220121040205p:plain

椅子に座るとTracking Controlがおかしくなる

あまり早く乗り降りするとうまくいかないみたいなのでゆっくりする。

vrc_AvatarV3SittingLayer2にはトラッキング周りのバグが入っているので使わず、vrc_AvatarV3SittingLayerのほうを使う。

ジャンプするとTracking Controlがおかしくなる

気になる場合はBaseのControllerをいじってジャンプモーション部分を削除しましょう

立ちやしゃがみポーズを自作したが、変に足が曲がったり体の形がおかしくなったりする

アニメーションのこのあたりの設定を確認する。

f:id:InPlanaria:20220121041725p:plain
また、アニメーションでのHeadの位置が原点の真上になるように位置を調整するとよい。

f:id:InPlanaria:20220121041312p:plain

 

 

同期がおかしい、他人視点からだと正しく見えていない

Expression Paramatorを使ったギミックが全く同期しない

Syncedにチェックを入れないとパラメータは同期しない。

 

Contactや、PhysBoneで動くパラメータを使ったギミックの同期が安定しない。

まずは以下の図を理解してほしい。

画像

ContactやPhysBoneの処理、パラメータの変更などは、 アバターを見る人それぞれのPCで行われる(ネットワークを介して同期されていない)。
そのため、見る人それぞれでパラメータの取る値が違い、そのせいで表示されるアニメーションが違うということも発生する。
もしContactやPhysBoneで制御するアニメーションを厳密に同期したい場合は、以下のように作ること。

  1. (LocalOnlyの)Contactが動いてParamatorが変化することで(LocalOnlyの)ParamatorDriverが起動する感じのレイヤーをControllerに作る。
  2. そのParamatorDriverでSyncedオンのExpressionParamatorsを動かすようにする。
  3. そのExpressionParamatorsが動いたらアニメーションが動くようなレイヤーを作る。

 

途中からワールドに入った/アバターを読み込んだ人に正しく見えていない

f:id:InPlanaria:20220121031436p:plain

例えばこのように、AというParameterをメニューで操作すると順々にアニメーションが再生されるようなギミックを組んだとする。この遷移は[アニメーション1]のステートから始まっており、Aを1,2と変化させると[アニメーション2][アニメーション3]が順々に再生される。
ただし、ここで注意すべきなのは「遅れてワールドに入ってきたりアバターを読み込んだ人に対して同期されるのはアバターの同期可能Parametersのみであり、いまどのステートにいるかは同期されない」ということである。
アバターの使用者がAを1,2と変化させ、使用者や周りの人から[アニメーション3]が見えている状態で、後からjoinしてきた人がいたとする。この場合、後からjoinしてきた人視点では”現在のステートが[アニメーション1]でA=2"という状態になっているため、[アニメーション2]への遷移条件A=1を満たさず遷移することはできない。

以下は対策例。

f:id:InPlanaria:20220121032912p:plain

他人から見たら服が脱げている

Safetyでアニメーションを切った相手に見えるのは、「アバター選択画面に見える姿」=「なにもアニメーションが再生されていない状態でUnityのSceneに見えているアバターの姿」(未検証ですがたぶんそう)
デフォルト状態で服、着ましょう。というか脱げて困るときに脱げる機能あるアバター使うのやめましょう

あと、パラメーターがboolならFalse、Intなら0のときに脱げる設定になってると、同期ズレしたときに相手の視点でパラメーターがオール0の状態になって脱げる。 ←VRChatアプデにより修正済

他人から見たら服が透けている

Safetyでシェーダーがブロックされたとき、代わりに表示されるFallback Shaderが透明系だとスケスケになってしまうことがある。(Vketちゃんとかそう)
Fallback Shaderを好きなものに設定するには、基本的にはシェーダーの中身をいじる必要がある。ただしliltoonならマテリアル設定からすぐいじることもできる。

例えばRendering ModeがTransparentだと透ける。Opaqueだと不透明。
他人から全然違うアバターに見えている

それがFallBackアバターです

Questアバター、FallBackアバターがおかしな挙動をしているらしい

自分視点で見えているアバターに対してExpression Parametersが完全一致していないアバターがQuestアバターやFallBackアバターになっている場合意図しないParameterの変化が起きる可能性がある
Expression Parametersが一致していないアバターをQuest版やFallBackに使用したい場合、暴発すると困るアニメーションを入れないようにすることを推奨。

Quest向けビルドで画像をクランチ圧縮するとQuestユーザーが落ちる

らしい。圧縮方法の変更は以下サイト参照

omega.hatenadiary.jp

 

 

いまはほぼ必要ない古い仕様の話

DynamicBoneの動きがおかしい

Unity上では揺れているのにVRChatに上げたら全く動かない

f:id:InPlanaria:20211004233919p:plain

Safety の Performance Optionsの Limit Dynamic Bone Usageにチェックが入っていたら外す。

ただしこのチェックを外すと、Collision Checksが1000とか入ってる激重アバターのDynamic Boneを無効化できずにCPU負荷が激増する可能性がある。

おすすめはVRChatConfigEditorで制限基準を好きな数字に変更してしまうこと。

f:id:InPlanaria:20220122201533p:plain

↑Very Poor基準の256以下に設定した図

booth.pm



 

 

歩き始め、歩き終わりで揺れがビクッと荒ぶる

DynamicBoneComponentをつけるオブジェクトと、DynamicBoneで揺らす対象(Root)のオブジェクトを一緒にする。そうしないとInertの計算が狂うらしい。

 

DynamicBoneで揺れる部分につけたアクセサリーの動きがおかしい

揺れるボーンに対し、アクセサリーをParent Constraintで追従させるようにする。
DynamicBoneはオブジェクトが枝分かれするようについていると挙動が変わる。

 

DynamicBoneの設定をコピペするのが面倒

GitHub - Taremin/CopyComponentsByRegex

ダイナミックボーンの入った尻尾や耳を動かすアニメーションが動かない

ダイナミックボーンの制御下にあるボーンをアニメーションで動かすことはできないので、ダイナミックボーンの制御下にない根本ボーンなどを作るなどしてそれを回す。

 

Build&Publishは押せるしアップロード画面は出たが、アップロードボタンが押せない

上部にある一時停止ボタンが有効になっていたら無効にする。

f:id:InPlanaria:20211004223632p:plain

 

UnityのAnimatorのステートを選択してもInspectorに何も表示されない

一時期SDKにあったバグ。最新SDKにすると直る

 

アバターが中腰になってしまう(PlayModeのみ)

特に直さなくても問題はない。

f:id:InPlanaria:20220202025707p:plain

上記個所のAnimatorに設定されているControllerに入っているアニメーションが、PlayMode中に再生されることが原因である。
Controllerの割り当てを外しnoneにすることでTポーズのままPlayModeに入ることができるがこれは非推奨。この位置に入っているControllerは多くの場合「Animationウィンドウで編集できるアニメーションのリスト」の役割を担うため、初心者がうっかりnoneにすると「アニメーションが編集できない、消えた」と勘違いするケースがある。

なお、Controllerの中のDefault State(オレンジ色のステート)を変更すると好きなアニメーションをアップロード画面表示中に再生できる。サムネイル用のポーズと表情を作ってDefault Stateに設定すれば、アップロード時に好きなポーズでサムネイルを撮れる。

ラッキング系(IK更新が重なったのでもうなさそう)

フルトラで腰がねじれる

HipsのボーンがUpperLegの根本より下にあることが多くの原因である。Blenderなどでどうにか修正する。

フルトラで腰が横に少し曲がる

Chestが下にありすぎたり、UpperChestが存在するとなるらしい。
正直トラッキング系の仕様はコロコロ変わるし正解がその時々で変わるのでよくわからない。うまく有識者からTwitterで情報収集してください…

 

一部のアバター(VRoidなど)でデフォルトの伏せモーションを取ると他人視点からだけガタガタして見える

バグです。アニメーション変更で修正可能。
詳細は以下ツイートスレッド参照のこと

よければバグ修正要望の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モデルになって配布されることとなった。なぜ?