「VRChat」のワールドの最適化
代表的な方法
オブジェクトの静的(static)化
- ゲーム中に絶対に動かないゲームオブジェクトを「Hierarchy」ウィンドウから選択し、「Inspector」ウィンドウの右上の「Static」にチェックを入れる

メッシュの圧縮
- 「Assets」内の3Dモデル(.fbx)を選択し、「Inspector」ウィンドウの「Model>Meshes>Mesh Compression」を「Off」から変更する

テクスチャの圧縮
- 「Assets」内のテクスチャを選択し、「Max Size」を「512」辺りに変更する

ライトベイク(影の計算・描写の軽減)
- 全てのゲーム中に絶対に動かないゲームオブジェクトを静的(static)化した後に、高千穂マサキ様のこちらの記事を参考にして各設定を行い、「Window>Rendering>Lighting Settings」から「Lighting」を開き、「Generate Lighting」を押す


オクルージョンカリング(視界の外を描写しない)
- 下の記事を参考にして各値を設定後、「Bake」を押す


不要なマテリアルの削除
- 「Hierarchy」ウィンドウから「VRCWorld」を選択し、「Inspector」ウィンドウの「VRC Scene Descriptor」コンポーネントの「Dynamic Materials」からゲーム中に絶対に変わる事の無いマテリアルを削除する

メッシュベイク(複数のメッシュを1つにまとめる)
- 「Mesh Baker」を購入し、メッシュベイクするか、下の記事を参考にして「Blender」等でメッシュを結合する

小技
鏡
- 「Layer」を利用して鏡に映り込むゲームオブジェクトを減らす
- 「VRC_MirrorRiflection」の「MaxAntiAliasing」を1~4程に下げる
- なるべくオブジェクトが映り込まない位置に鏡を置く
- 鏡の初期値をオフにしておきローカルで「ON/OFF」を切り替えられるようにする
- 鏡を「Camera」と「RenderTexture」で代替する
ライト
- 変化しない限りはライトを「Realtime」に設定しない
- 動くオブジェクトへのライトの反映には「LightProbe」を使う
- 解像度(Lightmap resolution)を下げる
- 「Lightmap Size」を調整する
その他
- 「VRC_Trigger」ではなく、「Unity」の「Animator」の遷移で状態を作るようにする
- 複雑な3Dモデルには「LOD(Level Of Detail)」を設定する
- 同じ構成のオブジェクトはプレファブ化する
- メッシュコライダーを使わずに基本図形(「BoxCollider」等)の組み合わせで代替する
その他
参考記事
- 【VRChat】自作ワールド作りました! いろいろメモ(作業手順、UdonSharp、軽量化など)
- ワールド最適化
- オクルージョンカリングを設定して、ワールドの軽量化をする
- ライトベイクの基本を学ぼう
コメント