ばーちゃるなれっじ Unityのエラー、アバター改変、イベントを検索 アプリで開く
‹ 戻る#ワールド

ミラーはなぜ重いのか 設置のベストプラクティス

VRChatのワールドに欠かせないミラー(鏡)。アバター文化のVRChatでは需要が高い一方、ワールドで最も重いオブジェクトの代表でもあります。この記事では、なぜ重いのかという仕組みと、快適さを保つ設置のしかた、そしてVRC Mirror Reflectionコンポーネントの各設定が負荷にどう効くかをまとめます。設定項目の説明は VRChat Creators Docs「VRC Mirror Reflection」(2024年7月31日更新、2026年9月16日確認)を元にしています。

ミラーはなぜ重いのか 設置のベストプラクティスの本文画像

重さの理由

ミラーは「鏡に映る世界」をもう一度描画しています。つまりミラーがオンの間、ワールドとアバターの描画負荷が単純計算で約2倍になります。VRでは左右の目それぞれに鏡の中を描くので、さらに負担が増えます。

そして人が多いインスタンスほど、アバターの描画コストが全体を支配します。ミラーはそのアバターをもう一度描くので、人が集まる場所ほどミラーの影響は大きくなるという関係です。「一人でテストしたときは平気だったのに、イベント当日に重くなった」の典型的な原因のひとつがこれです。

もうひとつ見落としがちなのが、ミラーが複数点いている状態です。鏡が2枚見えていれば描画は3回分、鏡の中に別の鏡が映っていればさらに増えます。ミラー同士が向かい合う配置は避けるのが基本です。

ミラーはなぜ重いのか 設置のベストプラクティスの本文画像

定番の設置方法

常時オンにせず、スイッチ式にするのが鉄則です。公式ドキュメントでも「ミラーは既定でオフにし、近づいたときや手動でオンにする」「映すレイヤーを絞るか画質プリセットを用意する」「解像度を下げる」の3つが推奨されています。多くのワールドでは次の3段階を切り替えられるようにしています。

・高画質ミラー — ワールドもアバターも映す。撮影や衣装確認向け
・軽量ミラー — アバターだけを映し、ワールドの映り込みを省略して負荷を抑える
・オフ — 使わないときは切っておく(既定はここ)

アバターの見た目を確認したいだけなら軽量ミラーで十分なことが多く、この選択肢があるだけで実際の負荷はかなり下がります。

ミラーはなぜ重いのか 設置のベストプラクティスの本文画像

VRC Mirror Reflectionの設定項目

ミラーの実体はVRC Mirror Reflectionコンポーネントです。SDKのサンプルプレハブをそのまま置いても動きますが、各項目の意味を知っておくと負荷を細かく調整できます。

・Reflect Layers — 鏡に映すレイヤーを選ぶ。Player系のレイヤーだけに絞ったものが「軽量ミラー」の正体。なおWaterレイヤーは選んでも映らない
・Mirror Resolution — 鏡の描画解像度。Autoにすると画面解像度に合わせて最大2048×2048で描く。数値を下げるほど軽くなる
・Maximum Antialiasing — 鏡内のギザギザ低減。上げると滑らかになる代わりに負荷が増える。プレイヤー自身の設定より高くはならない
・Disable Pixel Lights — 鏡の中でピクセルライトを無効にする。ライトの多いワールドではオンにすると軽くなる
・Turn Off Mirror Occlusion — 鏡内のオクルージョンカリングを切る。通常はオフのままでよく、鏡に映るべきものが消えるときだけ検討する
・Custom Shader — 鏡用のシェーダーを差し替える
・Camera Clear Flags / Custom Skybox / Custom Clear Color — 鏡内の背景の描き方。Skyboxを別のものにしたり単色にしたりできる

この中で負荷への効きが大きいのは、Reflect Layers、Mirror Resolution、Maximum Antialiasingの3つです。まずこの3つを見直してください。

解像度は「必要な分だけ」

Autoは便利ですが、高解像度モニターや高解像度のVRヘッドセットではそれだけ大きな鏡を描くことになります。撮影用の高画質ミラー以外は1024程度まで下げても、実際の見た目はあまり変わりません。逆に2048pxを超える大きさで映したい場合は、閲覧者側でミラー解像度を「Unlimited」に設定しないと上限で頭打ちになります。

映す対象を絞る

Reflect Layersは「何を映すか」であり、同時に「何を描画しないで済むか」でもあります。アバター確認用のミラーなら、Player・PlayerLocal・MirrorReflectionといったプレイヤー関係のレイヤーだけを選べば、ワールドの建物やギミックを鏡の中で描かなくて済みます。これが軽量ミラーの作り方です。

ミラーはなぜ重いのか 設置のベストプラクティスの本文画像

3段階ミラーの作り方

1. VRC Mirror Reflectionを3枚用意し、同じ位置に重ねて置く
2. 1枚目は高画質(Reflect Layersに環境とPlayer系、Resolution AutoまたはMaximum Antialiasing高め)
3. 2枚目は軽量(Reflect LayersをPlayer系のみ、Resolutionを1024以下、Disable Pixel Lightsをオン)
4. 3枚とも初期状態では非アクティブにする
5. UdonのボタンやToggleで「どれか1枚だけアクティブにする」切り替えを作る

切り替えはローカル動作(自分にだけ効く)にするのが定石です。同期させると、誰かがオフにした瞬間に全員の鏡が消えてしまい、かえって不便になります。

置き場所の工夫

ミラーの前は人が集まる社交スペースになりがちです。次の配慮をすると、ワールド全体が使いやすくなります。

・動線を塞がない壁際に置く — 通路の正面に置くと人だかりで通れなくなります
・複数の部屋に分散させる — 人の集中も負荷の集中も避けられます
・スイッチを分かりやすい位置に — 見つからないと結局「常時オン」にせざるを得なくなります
・広さに余裕を持たせる — 数人が並んで映れるスペースがあると使いやすくなります
・鏡同士を向かい合わせにしない — 鏡の中の鏡は描画回数が増えるだけで得はありません

訪問者としてできること

ワールド制作者側だけでなく、遊ぶ側にもできることがあります。ワールドが重いと感じたら、まずミラーが点いていないか見てみてください。誰も使っていないミラーが点きっぱなしになっていることは珍しくありません。切ってよい雰囲気なら消す、あるいは軽量ミラーに切り替えるだけで、その場の全員が快適になります。

また、VRChat自体の設定にもミラー解像度の項目があります。自分の環境が重いと感じるなら、ここを下げるだけでも効果があります。

つまずきやすいポイント

鏡に自分が映らない
Reflect LayersにPlayerLocalまたはMirrorReflectionが入っていない可能性があります。自分自身の見た目はこれらのレイヤーで鏡に描かれます。

鏡の中で一部のオブジェクトが消える
オクルージョンカリングの影響です。Turn Off Mirror Occlusionをオンにすると解決しますが、負荷は上がります。

鏡の中の空が変
Camera Clear Flagsの設定を確認してください。Custom Skyboxを使う場合は、Custom Skyboxに正しいマテリアルが入っているかも見ます。

軽量ミラーにしたのに重い
解像度がAutoのままになっていないか、アンチエイリアスが高すぎないかを確認します。レイヤーを絞っても解像度が高ければ効果は限定的です。

よくある質問

Q. ミラーを置かないほうがいい?
A. そんなことはありません。アバターを見せ合う文化があるVRChatでは、ミラーは重要な設備です。「常時オンにしない」が要点です。

Q. 自分のワールドが重い原因がミラーか分からない
A. ミラーをオフにした状態と点けた状態でフレームレートを比べれば、影響の大きさがすぐ分かります。Unity上ではなく、実際に人がいるインスタンスで比べるのが確実です。

Q. Quest対応ワールドではどうする?
A. 制限がより厳しいため、ミラーの扱いはPC版以上に慎重にする必要があります。既定オフ・軽量優先で設計し、解像度も低めに固定しておくと安全です。

Q. サンプルのプレハブをそのまま使ってもいい?
A. 問題ありません。ただし初期状態でアクティブになっていることが多いので、置いたら必ず非アクティブにしてスイッチを付けてください。

Q. 他に重くなる要素は?
A. 別記事「ワールド軽量化の基本 どこから手を付けると効くか」で、効果の大きい順にまとめています。

引用記事ワールド軽量化の基本 どこから手を付けると効くかワールド

「ミラーはスイッチ式・複数画質・壁際に」。この3点を押さえておけば、快適さと利便性を両立できます。