CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】URPでの影の問題解決と設定方法について!
こんにちは。コチラの記事では、UnityのURPを使って影を描画する際によくある問題を解決しながら、影の設定方法を解説していこうと思います。
シェイド(陰)とシャドウ(影)の違い
まずは、シェイド(陰)とシャドウ(影)の違いについて簡単に説明します。
シェイド(陰)
シェイド(陰)は、オブジェクト自身にある陰です。
オブジェクトの「面」がライトに向いているかどうかで計算し、描画されています。
シェイド(陰)は、「シェーダー」によって設定されます。
シャドウ(影)
一方でシャドウ(影)はオブジェクトが落とす影のことです。
影は、ライトとの間に遮蔽物があるかどうかを計算して描画されています。
そのため影の設定では、メッシュ・ライト・URPアセットの3つの設定を変更することで、影に変更を加えることができます。
今回の記事では、後者「シャドウ(影)」について焦点をあてて、解説していきます。
上記のとおり、影の設定ではメッシュ・ライト・URPアセットの3つの設定が関係しているため、影の描画において何か問題が起きたときは、3つそれぞれの設定を問題に応じて確認する必要があります。
影を消すには?
特定のオブジェクトの影を消したいとき
まず影を消したいメッシュを選択します。
Inspector → Lighting →「Cast Shadows」のドロップダウンで「Off」を選択すると影が非表示になります。
影はライトとの間に遮蔽物があるかどうかを計算して描画されていると前述しましたが、その遮蔽物であるオブジェクトを無視できる設定にすることで、そのオブジェクトの影を描画しないようにしています。
シーン上全ての影を消したい場合
URPアセットを選択し、Inspector → Lighting →「Cast Shadows」のチェックを外すことによって、シーン上の影を全て消すことができます。
ライトがDirectional Light の場合は、Main Light →「Cast Shadows」のチェックを外し、
Point LightやSpot LightのようなAdditional Lightsの場合は、
Additional Lights → 「Cast Shadows」のチェックを外しましょう。
影が出ないときは?
影が出ないときに考えられる原因は、以下の6つです。
- Cast Shadowsの設定がOffになっている
- Shadow Typeの設定がNo Shadowになっている
- Strengthの設定が0になっている
- Near Planeに値が入っている
- Culling Maskでの設定とオブジェクトのレイヤーが異なる
- URPアセットのMax distanceが0になっているまたはカメラの距離が離れすぎている
影が出ないときに確認すべき事項である以上6項目について、順番に確認しながら、影の設定や調整についても併せて解説していきます。
Cast Shadowsの設定
影を表示させたいメッシュを選択します。
Inspector → Lighting →「Cast Shadows」のドロップダウンで「On」が選択されていることを確認しましょう。Offになっていると影が表示されません。
また、個別のライトの影だけでなくシーン上の全ての影が表示されていない場合には、
URPアセットを選択し、Inspector → Lighting →「Cast Shadows」のチェックが外れていないかどうかの確認もしましょう。
Shadow Typeの設定
ライトを選択します。
Inspector → Shadows → 「Shadow Type」を確認しましょう。
Hard ShadowsまたはSoft Shadowsに設定されていないと、影が表示されません。
Hard ShadowsとSoft Shadowsについて
Hard Shadowsで描画される影は以下のようになります。
真夏の炎天下のようなはっきりとした影になります。処理負荷は小さくなります。
一方、Soft Shadowsで描画される影は以下のようになります。
曇り空の天気の下の影のようにぼんやりとした影を描画することができます。処理負荷は大きくなります。
影の設定全般でも言えることですが、ゲーム内で影をどう表現したいかと、ゲームの処理負荷を考えて設定していく必要がありますね。
Strengthの設定
ライトを選択します。
Inspector → Shadows → Realtime Shadows → 「Strength」の値を確認しましょう。
この値が0になっていると、影の濃さ=0となり、影が表示されません。
Near Planeの設定
ライトを選択します。
Inspector → Shadows → Realtime Shadows → 「Near Plane」の値を確認しましょう。
値が入っていると、その数値より手前にある影が描画されません。
影が消えてしまったり、影が一部消えたりなどするので確認してください。
ライトのCulling Maskの設定とオブジェクトのレイヤーの設定
ライトを選択しInspector → Rendering → 「Culling Mask」のドロップダウンを確認しましょう。
Culling Maskでは、ライトの影響を受けるレイヤーを設定できます。
Nothingにチェックが入っている場合や、影を出したいオブジェクトのレイヤーが選択されていない場合は、ライトの影響を受けない設定となるため、影が表示されません。
そのため、Culling Maskの設定とオブジェクト自身のレイヤーの設定を確認する必要があります。
Max Distanceの設定
URPアセットを選択し、Inspector → Shadows →「 Max Distance」の値を確認しましょう。
この値が0になっていると影が表示されません。
また、0になっていない場合でもカメラの距離が離れすぎている場合は、影が表示されません。
影の濃さを変更したいときは?
影の濃さに変更を加えたい場合は、ライトのInspector → Shadows → Realtime Shadows → 「Strength」の値を変更することで、変更することができます。
距離に応じた影の描画設定がしたいときは?
URPアセットを選択し、Inspector → Shadows →「 Max Distance 」を調整すると、カメラとの距離に応じて描画する影を決定することができます。
カメラから離れた距離にあるオブジェクトの影を描画したくないときに設定します。
Max Distanceに入力した値よりカメラが離れると、影が描画されなくなります。
この値が0になっていたり、カメラの距離が離れすぎていたりすると、前述の通り、影が表示されないという事態を引き起こす場合があるので注意しましょう。
またMax Distanceの数値は、あげればあげるほど、影が薄く荒くなります。
その場合は、Shadow Resolutionを調整することで改善します。
Shadow Resolutionについては次項で説明します。
影の解像度(ギザギザ)を調整をしたいときは?
影の解像度(ギザギザ)を調整をしたいとき、Directional Lightの場合は、URPアセットの Inspector → Lighting → 「Shadow Resolution」を変更することによって、調整することができます。
Point LightやSpot LightのようなAdittional Ligthの場合は、URPアセットからだけではなく、
ライトのInspector → Shadows → Realtime Shadows → 「Resolution」からでも変更することが可能です。
- Directional Lightの場合は「Shadow Resolution」を変更
- Additional Ligthの場合は、「Shadow Resolution」または「Resolution」を変更
することで、影の解像度(ギザギザ)を軽減することが可能です。
影だけを描画したいときは?
オブジェクトを表示させず、その影だけを表示させたい場合は、
メッシュを選択し、Inspector → Lighting → 「Cast Shadows」のドロップダウンを
「Shadows Only」にします。
まとめ
- 影の設定ではメッシュ・ライト・URPアセットの3つの設定が関係しているため、何か問題が起きたときは、この3つの設定を確認する必要がある。
- 影を消したいときは、Cast ShadowsをOffにする
- 影が出ないとき確認すべき事項は以下6つ
- Cast Shadowsの設定
- Shadow Typeの設定
- strengthの設定
- Near Planeの設定
- Culling Maskの設定とオブジェクトのレイヤーの設定
- Max Distanceの設定
- 影の濃さを変更したいときは、Strengthを変更する。
- 距離に応じた影の描画設定がしたいときはMax Distanceを調整する。
- 解像度を変更したいときは、 Shadow Resolutionを変更する。
- 影だけを描画したいときは、Cast Shadowsの設定をShadows Onlyにする 。
Unity用アセット販売中!
当メディアで運営しているアセットショップ「NickNackHolic」にてUnity用のアセットを販売しております。
ゲーム制作やVRchat、Clusterなどで使用できる便利なアセットを販売しております。
一部無料のアセットもあるので、ぜひ覗いてみてください!
Nick Nack Holic
VRchatやゲームアセット、映像作品で使える「雑貨」を販売中