VRCSDKトラブルシューティング

ここはVRChatSDKを使ったアバターおよびワールドアップロードのトラブルシューティングページです。

特定のワードを検索したい場合はCtrl+Fでブラウザの検索機能を使用します。


共通エラー系

VRChat SDKタブに「Show Control Panel」が表示されない

殆どの場合「VRChatSDK」が壊れています。

一番最初に導入する「VRCSDK-xxxx.xx.xx.xx.xx_Public.unitypackage」をもう一度インポートすると直る場合があります。

VCC上でVRCSDKのアップデートを行うか(Unityを閉じた状態で)一度VRCSDKを削除して再インポートすると直る場合があります。


アップロード終了後に「Error saving blueprint.」と表示される

アップロードしようとしているアバターやワールドに設定されている「Blueprint ID」が、自身のアカウントに紐づけられているBlueprint IDと一致しない(存在しない)ために発生します。

購入したアバターにBlueprint IDが残っていたり(消し忘れ)、VRCSDKのContent Managerからアバターやワールドを消したにもかかわらずBlueprint IDがDetachされず存在しないIDのままアップロードしようとした際によく起こります。

新しくアバターをアップロードする際はこのBlueprint IDが空になっていることを確認してからアップロードするようにしましょう。

アバターの場合はPrefabに、ワールドの場合はVRC_Worldにそれぞれ「Pipeline Manager」コンポーネントがあります。


アバターアップロード

「This avatar has mipmapped textures without ‘Streaming Mip Maps’ enabled」と表示される

Unity2017時代にはテクスチャに「Streaming Mip Maps」という項目がなく、Unity2018にて新設されたため古いアバターをアップロードしようとするとほぼ必ず発生するエラーです。

臆することなく「Auto Fix」で大丈夫な場合もありますが、アバターの解説でAuto Fix以外の対処法が記載されていた場合はそちらに従いましょう。


「You are trying to replace or create a Prefab from the instance ‘***’ that references a missing script. This is not allowed. Please change the script or remove it from the GameObject.」とエラーが出てアップロード画面に移行しない

「Build & Publish」ボタンを押してもうんともすんとも言わない場合がありますが、画面下のConsoleに赤い文字でエラーが出ているとビルド画面(アップロード画面)に移行しません。

タイトルのように「missing script」と書かれていた場合、アップロードしようとしているアバターに、壊れたコンポーネントが“存在”しています。

良く起こるのは「Dynamic Bone」のインポートをせずアバターをインポートした場合にDynamic Boneのコンポーネントが「Missing (Mono Script)」となってしまいアップロードできなくなります。

アップロードするにはこの「Missing」となっているコンポーネントを「すべて」取り除く必要があります。が、何十個も手動で行うのは手間なので「Missing Remover」というワンタッチで「Missing」となっているコンポーネントを削除してくれるツールがありますので、そちらを使うと便利です。

Missing Remover」の使い方は「アバター導入方法 Step.4」にて解説していますのでそちらもご確認ください。


アバターがピンク色になる

アバターの導入で、アバターのUnitypackageをインポートする前に指定されたシェーダーをインポートしなかった(忘れた)場合に起こります。

VRChat対応アバターでよく使われる事前インポートが必要なシェーダー例

画像の場合、「ロポリこん」のUnitypackageをインポートする前に「ユニティちゃんトゥーンシェーダー2.0(UTS2)」のインポートが必要だがシェーダーをインポートする前に「ロポリこん」のUnitypackageをインポートしてしまったため、「UTS2」のシェーダーを参照しようとして存在しなかっためシェーダー(マテリアル)がエラーとなっています。

シェーダーエラーとなっている例。通称「マテリアルエラー」
「Hidden/InternalErrorShader」と表示され真っピンクになる。

この場合、事前にインポートが推奨されているシェーダーをインポートした後に再度アバターのUnitypackageをインポートすればほとんどの場合、治ります。


The following component types are found on the Avatar and will be removed by the client: XXX

VRChatにアップロード出来るものは「ホワイトリスト方式」で決まっています。
そのため、ホワイトリストに載っていないスクリプトやコンポーネントが入っているとアップロード出来ません。

ただし最後のコンポーネント名が「PipelineSaver」となっている場合は無視して構いません(アップロードに必要なコンポーネントのため)。

アップロードに成功したはずなのにVRChat上で表示されない

Unity上で「Update Complete!」と表示されアップロード出来ているにも関わらず、VRChatの「My Collections」タブが表示されない、または「My Collections」タブにアップロードしたアバター表示されない場合があります。

その殆どが「VRCSDKで指定されたUnityのバージョンを使用していない」場合に起きます。

アバターをアップロードしたUnityのバージョンと、VRChat公式ドキュメントの「Current Unity Virsion」で記載されているバージョンが一致しているか確認してみてください。


用語集

Blueprint ID (ブループリント ID)

アバターやワールドを識別するための一意の(ユニークな)ID。
これを管理しているのが「Pipeline Manager(パイプライン マネージャー)」。


テクスチャ(Texture)

ポリゴンの表面に描画する画像の名称。

肌や髪、服などの色やデザインの下地となる画像を指します。
テクスチャをベースにシェーダーの処理を介してアバターの見た目として描画されます。

その他、Normal MapやMatCapなどの特殊用途テクスチャもあります。
Normal Map:凹凸の有無や大きさを決める、ザラザラ感やデコボコ感を出すのに使います。
MatCap:光沢や偽の光源・影を疑似的に表現するのに使います。


シェーダー(Shader)

アバターや小物の見た目を決める描画プログラムの総称。

アバターのテクスチャはシェーダーの処理を介して表示されます。
テクスチャの色をベースにシェーダー側で光沢(Metalic)や凹凸(Normal Map)、MatCapなどの処理が追加され、アバターの肌や髪、服などの見た目として表示されます。


ベイク(Bake)

ワールドのライティングを焼く(Bakeする)こと。
VRChatではリアルタイムライトを同時に4つまでしか視界に表示できないためそれ以上表示される場合は消えてしまいます。
またドローコールを減らすために「オクルージョンカリング」と並んでワールドの軽量化に必要な技術の1つでもあります。


オクルージョンカリング(Occlusion Culling)

見えない部分は描画しないようにする/隠れている部分を事前に計算する設定のこと。
これを設定すると、遮蔽物等で奥が見えない部分は描画されないためドローコールの大量削減に一役買います。

類似する言葉で「アンビエントオクルージョン」がありますが、こちらは周囲の壁などに反射した光を元にオブジェクトの陰影を計算する仕組みで、オクルージョンカリングとは異なります。


ドローコール(Draw Call)/バッチ(Batch)

簡単に言えば「モノを画面上に描写する」ことです。
VRChatだけでなく他の3Dグラフィック系全般に言えることですが、このドローコールが増えるとGPUの負荷が増えるため画面の描画にラグが生じたりします。
VRChatで簡単に削減する方法は、「動かないアイテムは全てStaticにチェックを入れる」だけです。もっと厳密な削減方法もありますが、これを入れるか入れないかでかなり変わってきます。