アバターのパーティクルで確認すべき設定がある場合、表題のWarningが表示されます。
このWarningが発生しても直ちに問題が発生することはありませんが、放置しているとパフォーマンスに悪影響を及ぼす恐れがあります。
この警告はどこに出力されますか?
VRChatのクライアントログに出力されます。
Warning - Particle System is trying to spawn on a mesh with zero surface area
ならびにアバターの改変作業のためにUnity Editorを使用している場合は、そのParticle Systemを選択していたり、実行状態にあったりするとConsoleにWarningが出力されます。
問題が発生している場合、該当のUnityアプリケーションがフリーズしたり、応答なしになったりするなどの症状を引き起こす恐れがあります。
なぜ、この問題が発生するのか?
Particle Systemで、辺または面が見つからない場合に問題が発生します。
なぜか、頂点が見つからない場合は問題が発生しないようです。
具体的には、次のすべての条件を満たすParticle Systemコンポーネントが存在するとこの問題を引き起こします。
- Particle SystemでShapeが有効になっている。
- ShapeがMesh/Mesh Renderer/Skinned Mesh Rendererのいずれかに設定されている。
- TypeがEdge/Triangleのいずれかに設定されている(Vertexは対象外)。
- Meshに何もメッシュが設定されておらず、”None”となっている。
- または、そのメッシュのfbxでRead/Write Enabledが無効になっている。
Unity EditorではRead/Write Enabledが常に有効であるとみなされて実行されるため、ビルド後に実機で動作させた場合に初めて問題が発覚することとなります。
Read/Write Enabledが有効になっている場合、メッシュデータがUnityから実行時にアクセスできるようになります。
ただし、CPUとGPU両方のメモリ(つまりメインメモリとVRAMの両方)にメッシュデータを保持するため、単純なメモリ使用量は2倍になります。
VRChatではRead/Write Enabledの設定は強制であるため、常にこの状態となります。
詳しくは、公式ドキュメントをご覧ください。
たとえば、次のようなParticle Systemの設定は問題があります。
このような設定のParticle Systemが存在する場合、Particle Systemの動作時にConsoleに次のようなWarningが大量に出力されます。
VRChatでアバターとして実行した場合、そのパーティクルを見ている全員のパソコンのクライアントログに出力されます。
点検して、修正するには?
アバター内のすべてのParticle Systemを、次の手順で点検してください。
アバターのプロジェクトとシーンを開いてください。
Hierarchyの上部に検索窓があります。次の文字列を一字一句間違えずに入力してください。
t:particlesystem
先頭のtは小文字にしてください。particlesystemは大文字小文字を問いませんが、間に空白や記号を入れないでください。
例えば”t:Particle System”や”T:particlesystem”では正しく検索できません(“t:ParticleSystem”は可能です)。
HierarchyにParticle Systemを含むGameObjectがすべて表示されます。
GameObjectをすべて選択し、Shapeの欄を展開してください(このとき、チェックを付けたり外したりはしないでください)。
Shapeの欄を展開したら、1つずつGameObjectを選択して問題のあるParticle Systemがないかを確認してください。
VRChatではアバターでRead/Write Enabledが無効となっているfbxのアップロードはVRChat SDKでエラーとして扱われるため、MeshがNoneとなっているGameObjectが無いかを点検してください。
もしあることを発見した場合は、適切なメッシュもしくはShapeを選択するか、Shapeのチェックを外してください。