以下の内容はhttps://kxn4t.hatenablog.com/entry/2025/09/27/230128より取得しました。


【VRChat】アバターと衣装や髪の明るさが違うときの対処法

VRChatにおいて、アバターや衣装/髪の毛などで一部だけ明るさや色味が違ってしまって困ったことがある人は多いと思います。

いまどきの方法についてまとまった記事が見当たらなかったので、アバターと衣装の明るさを合わせる方法について、令和最新版として現在おすすめの手法を紹介しておきたいと思います。

lilToonのFix Lightingは現在では避けましょう

記事更新日:2025/9/27

その前に…。
Prefab Variantって何?って方はいったんこっちに目を通してから戻ってきてください。

kxn4t.hatenablog.com

おすすめの設定方法

アバターや衣装の明るさを合わせるには、今時点では以下のように設定するのがおすすめです。

  1. マテリアルの明るさを揃える
    Light Limit Changer for MAで揃える
  2. 明るさの基準点を揃える
    MA Mesh Settingsで揃える

一度設定してしまえば明るさで悩むことはほぼなくなります。

1. マテリアルの明るさを合わせる

アバターと衣装のマテリアルで明るさの設定を揃えます。

liltoonの場合は[ライティング・明るさ設定]のところを素体側と合わせましょう。
該当のマテリアルの明るさの下限と上限を揃えるとよいです。

lilToonの初期値と同様に明るさの下限は0.05に、明るさの上限は1に揃えましょう。

⚠️下限値の設定

下限値を変更することをおすすめするような情報がたまに流れますが、変更すると自分一人だけ周囲から明るさが浮きます。

lilToon初期値で揃えることを強くおすすめします。

アバターに使用されているマテリアルすべての明るさ設定を揃える必要があるため、毎回確認して手動で設定し回るのは現実的ではありません。

Light Limit Changer for MAを使うのがおすすめです。

mochis-factory.booth.pm

Light Limit Changer for MA(以下LLC)はアバターの明るさをその場で変更できることで有名なギミックですが、それだけでなく非破壊でビルド時に明るさを揃えてくれるため、素体のPrefab Variantに適用しておけば明るさのチェックを毎回する必要がなくなります。

azukimochi.github.io

V1の場合

無料版のV1を使用する場合、以下のように設定します。
※V1はサポートが終了しています

  • 「初期状態で適用する」にチェック
  • 「明るさの上限と下限を別々に設定する」にチェック
    • 上限:1
    • 下限:0
  • 個別の初期設定
    • 明るさの上限の初期値:1
    • 明るさの下限の初期値:0.05
  • オプションの「初期の上限と下限を上書きする」にチェック

この設定により、マテリアルの明るさの上限が1に、下限が0に統一され、LLCのアニメーションにより初期値として明るさの上限が1、下限が0.05にセットされます。

azukimochi.github.io

V2の場合

V2を使用する場合、デフォルトで設定済みなため導入するだけでOKです。

※明るさに影響するものとして頂点ライトの強度もあるのですが、LLC V2はこちらもデフォルトで統一してくれます。

azukimochi.github.io

一般設定 > ライティング設定
通常の利用範囲において、パラメーター保存のチェックと、「詳細な光源の向きの操作を有効にする」のチェック以外はいじる必要ありません。

ちなみに私は保存のチェックは外し、「詳細な光源の向きの操作を有効にする」のチェックは入れています。

保存のチェックを外しておくとワールド移動したときやアバターを変更した際に初期値に戻ってくれるので便利です。

2. 明るさの基準点を揃える

アバターと衣装で明るさの基準点を揃えます。

原理について知りたい場合は後述の説明を読んでもらうとして、ここではサクッと設定方法だけ。

基準点を揃えるにはModular AvatarのMA Mesh Settingsを使うのがおすすめです。

modular-avatar.nadena.dev

MA Mesh Settingsは明るさの基準点となるAnchor Overrideだけでなく、オブジェクトが見えるかどうかを判定する境界であるBoundsおよびRoot Boneについても同時に設定できます。

こちらもLLC同様に非破壊でビルド時に設定してくれるため、素体のPrefab Variantに適用しておけば毎回設定する必要がなくなります。

こんな感じにルートに設定しちゃえばOKです。

  1. アバターのルートオブジェクトを選択
  2. Add Component → MA Mesh Settingsを追加
  3. 以下のように設定:
    設定モード:「設定」
    Anchor Override: アバターのメッシュに設定されているものと同じボーン
    Root Bone: アバターのメッシュに設定されているものと同じボーン
    Bounds: Center (0, 0, 0), Extent (1, 1, 1)

画像の例の場合Anchor OverrideはChestに設定されていますが、これは胸の位置の明るさで全体の明るさが決まるということになります。
Hipsの場合はお尻の位置の明るさになりますね。

アバターに何が設定されているかは適当にアバターのメッシュを選択して、Skinned Mesh Rendererコンポーネントの「Probes > Anchor Override」と「Root Bone」で確認できます。

使ってるアバターに設定されてないっぽいんだけど…って場合は両方ともHipsに設定しちゃいましょう。

稀にアバターにAnchor Override用のオブジェクトがあって、それに設定されているっぽいんだけどそもそもそのAnchor Override用オブジェクトが地面に埋まってる…みたいなアバターがあるみたいですが、その場合もHipsにしちゃいましょう。

まぁ、個人的にはAnchor OverrideはChestが好みなのでChestにしてます。胸付近の明るさが基準になる方が体感に合ってる気がしてるので。

Boundsの大きさは基本的に1,1,1のサイズで問題ないかと思いますが、アバターや衣装を囲いきれていない場合は大きさを調整してください。
アバターを囲いきるように大きすぎないよう適度な値を設定します。

衣装側の設定について

衣装を着せるときにSetup Outfitを実行すると自動的にMA Mesh Settingsが衣装側にも追加されます。

衣装側では「親で指定されている時は継承、それ以外では設定」モードにすることをおすすめします。

これにより:

  • アバター側にMA Mesh Settingsがある → その設定を使用
  • アバター側にない → 自身の設定を使用

ワールド固定するオブジェクトなど、自身から離れることがあるオブジェクトがある場合はそのオブジェクトに個別で設定してあげる必要があります。

その際、設定モードは「設定」にして親の設定を上書きするようにします。

設定のポイント

アバターと衣装の明るさを合わせるにはマテリアルの明るさ設定と明るさの基準点を合わせる必要があることが理解いただけたかと思います。

Light Limit Changer for MAとModular AvatarのMA Mesh Settingsを使うことで簡単に揃えることができ、一度Prefab Variantに適用するだけで常に揃うようになります。

  1. Light Limit Changer → すべてのマテリアルの明るさ設定を統一
  2. MA Mesh Settings → すべてのメッシュの基準点(Anchor OverrideとBounds)を統一

※あと、これらを行えるものとしてlilycalInventoryがあったりしますが、メンテナンスを考えるとLLCとMAでやるのがいいかなと思ってます。

lilxyzw.github.io

余談

設定するだけなら上記の内容だけで十分なのですが、知っておいたほうがいいことなので簡単に書いておきます。

Light ProbeとAnchor Override

Light Probeは、Unityにおいて3D空間の特定の位置における光の情報を記録したものです。
アバターのメッシュはこのLight Probeの情報を使って明るさを決定します。

明るさや色の情報がこの黄色い球の地点毎に記録されています。

リアルタイムでのライティングは負荷が高いため、VRChatのワールドではあらかじめ光の情報を計算し記録していることが多いです(ライトベイク)。

Light Probeはこのベイク時に作成される光情報の記録点で、動的なオブジェクト(アバターやPickupオブジェクト等)がこの情報を参照して明るさを決定します。

Anchor Override は、メッシュがどの位置のLight Probeを参照するかを指定する設定です。

デフォルトではBoundsの中心点が使用されますが、Anchor Overrideを設定することで任意のオブジェクトの位置を基準にできます。

docs.unity3d.com

つまり、BoundsとAnchor Overrideの両方が明るさに影響を与えることになります。

  • Boundsが異なる → デフォルトの基準点が変わる → 明るさが変わる
  • Anchor Overrideが異なる → 基準点が変わる → 明るさが変わる

この辺はしぐにゃもさんのブログにてもっと詳しく説明されているため、詳細を知りたい場合は参照してください。

signyamo.blog

Bounds

Boundsは、オブジェクトが画面に表示されるかどうかを判定する境界ボックスです。

この箱がカメラ(視点)に映るかどうかでそのオブジェクトを画面に表示するかしないかが決まります。
さらに、Anchor Overrideが未設定の場合は、このBoundsの中心がライトプローブの基準点としても使われます

docs.unity3d.com

Boundsが適切に設定されていないと以下のような事象が発生します。

  • 視界の端でオブジェクトが消える
  • カリング(表示/非表示の判定)が正しく動作しない
  • 明るさの基準点がずれる(Anchor Override未設定時)

衣装だけでなく、ワールドのオブジェクトとかでも時々見えたり見えなかったりすることがありますが、Boundsが適切に設定されていないことに起因することが多いです。
※厳密に言えばワールドのオクルージョンカリングの設定も影響しますが

明るさがずれる

いままで説明してきた要素のいずれかが身体と衣装で異なっていると、明るさに差が出てしまいます。

1. マテリアル/シェーダーの設定の不一致

同じシェーダーでも設定が違う場合:
lilToonを例にすると、「明るさの下限」「明るさの上限」という設定があります。 これらの値が身体と衣装で異なっていると、同じ光源下でも明るさに差が出ます。

よくある例:

  • 身体:明るさの下限0.05、上限1.0
  • 衣装:明るさの下限0.2、上限1.0
    → 暗いところで衣装の方が明るく見える

異なるシェーダーを使用している場合:

  • 身体:lilToon
  • 衣装:Standard
    → シェーダー間でライティングの計算方法が違ったりして、明るさが合わないかも
2. メッシュのAnchor OverrideとBoundsの不一致

身体と衣装で以下が異なると、参照するLight Probeの位置が変わり、明るさに差が出ます。

Anchor Overrideが設定されている場合:

  • 身体がHipsを基準にしているのに、衣装がChestを基準にしている
  • 髪の毛だけHeadに設定されている

Anchor Overrideが未設定の場合:

  • Boundsの中心位置が異なると、基準点がずれる
  • Root Boneの設定が異なると、Boundsの計算も変わる

特に問題になるケース:

  • 髪の毛だけが暗い → HeadにAnchor Overrideが設定、またはBoundsが頭中心

MA設定済みの衣装でも稀に設定が間違っているものがあったりするので、Setup Outfitをし直すようにしたほうがいいかもしれません。

※アニメーションが設定されているような衣装の場合、Setup Outfitをし直すことでArmatureの名前がArmature.1に変わりアニメーションが動かなくなることもあるため注意が必要ですが…。
(正直衣装製作者側も最初からArmature.1でアニメーションを組んでほしいものですが…。)

lilToonのFix Lightingについて

lilToonのFix Lightingは避けましょう

アバタールート右クリック→[liltoon]→[Fix lighting]は一見便利ですが、Bounds、Root Bone、Anchor Overrideがすべて変更されてしまい、かつ破壊的な変更となってしまいます。
マテリアルの明るさの上限下限の設定もそうですね。

別にFix lightingを毎回やるんだ、でいいならいいんですが、一回ちゃんと設定してその後忘れられるほうがよくないですか…?って感じです。

さらに言えば、MAセットアップ済みの衣装の場合、大抵MA Mesh Settingsが設定されています。
Fix lightingでアバター本体の設定を変えてしまっていると衣装側はMA Mesh Settingsの設定で上書きされるので結局ずれちゃいます。
これを避けるには毎回衣装側のMA Mesh Settingsを剥がしたうえでFix lightingを実行するか、Setup Outfitをし直すかする必要があり手間です。

Modular Avatar等NDMFの非破壊ワークフローが一般的な今、元に戻せない変更は避け、ビルド時にアバター全体で設定してくれるようなLLCやMA Mesh Settingsを利用するようにしましょう。

素直にNDMFやMAに乗っかって楽になりましょう。

まとめ

今どきの明るさの合わせ方がまるっと説明された記事がぱっと見で見当たらなかったためサクッと書いてみました。

まとめるとこんな感じです。

  • lilToonのFix Lightingは使わない(重要)
  • Light Limit ChangerとMA Mesh Settingsの組み合わせが最強
    • 一度設定してPrefab Variantで適用してしまえばOK

アバターの明るさがちぐはぐになっていると、集合写真で自分一人だけ浮いてしまったり、チルワールドで自分だけ髪の毛だけ明るいとかになって悲しい感じになるので、しっかり設定しておきましょう。

また、LLCを使うことでワールドのライティングがあまりよくない時にアバターの明るさをその場で変えたりもできるようになるので、そういった意味でもLLCはおすすめです。

この記事で明るさに悩む人が減れば幸いです!


VRChat向けUnityエディタ拡張

アバター改変の「ちょっと面倒」を解消するエディタ拡張を公開しています。
Kanameliser Editor Plus:カラバリPrefabからMAで色変更メニューを自動生成、選択中のポリゴンやマテリアル数をシーンビューに表示など
Color Variant Prefab Generator:マテリアルをD&Dで差し替えてカラバリPrefabを簡単作成、カラバリを別アバターへも一括展開
どちらも無料です!

ワールドアセット「ヌックのある家」

大きすぎず小さすぎず、ほどよいサイズ感。木の温かみを感じられる、こぢんまり居心地のいい空間。
ミラーで仕切ればオープンな空間からプライベートな空間に早変わりするヌックスペース付きです。


関連記事

kxn4t.hatenablog.com

kxn4t.hatenablog.com

kxn4t.hatenablog.com

kxn4t.hatenablog.com

kxn4t.hatenablog.com

kxn4t.hatenablog.com




以上の内容はhttps://kxn4t.hatenablog.com/entry/2025/09/27/230128より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14