【Unity】3Dゲームをより綺麗に見せるための「ライティング」のコツ

Unityのライティングの改善前後の様子 Unity

Unityで3Dゲームを開発しているとき、皆さんはご自身が作っているゲームの見た目が「なんかダサいなぁ」と思ったことはありませんか。いやもっと言うとUnity臭い画面だなぁと思ったことはないでしょうか。私はあります。

さてゲームの見た目がUnity臭くなってしまう原因は色々あると思うのですが、最大の原因は「シーンのライティング」にあるようです。つまりライティングがデフォルト設定のままだから、いかにも「Unityで作りました!」というようなダサい見た目になってしまうというわけですね。

ただライティングに関して言うと、私がUnity初心者の頃は「ライティングが大事なのは何となくわかるけど…どうすれば綺麗な見た目になるのかよく分からん!」という感じでした。そこでこの記事では初心者の方向けに「簡単にできるライティングのコツ」を紹介していきますね。

  • この記事で使用しているUnityのバージョン:Unity2021.2
  • テンプレート:URP

Unityのデフォルトのライティングの問題点

では、まずは問題となっている「Unity臭いライティング」(つまりデフォルト設定)のシーンをご覧ください。

Unityのデフォルトのライティング

う~ん、Unity臭いニオイがプンプンしますね。まあ最近のUnityではデフォルトの設定が多少改善されたので、「大至急ゲームを作らないと間に合わない」といった状況ならこれでもアリかもしれません。しかしこれを見ると次のような問題があることが分かります。

  1. 空がデフォルトのスカイボックスである
  2. 影が濃すぎる
  3. 環境光が弱すぎる
  4. アンビエントオクルージョンがない
  5. 鏡面反射が正確ではない

問題点1:空がデフォルトのスカイボックスである

まず一つ目の問題点は、空がデフォルトのスカイボックスのままなことです。

当然ですが空がデフォルトのままだと「あ、これUnityで作ったんだな」って一発でバレます。最低限スカイボックスくらいは変更したほうが良いでしょう。

問題点2:影が濃すぎる

二つ目の問題点は影が濃すぎることです。

皆さん影というと「黒い」イメージがあると思いますが、現実世界で実際に青空の下でできた影を見てみるとそこまで黒くないのが分かると思います。つまり、今回のように青空(デフォルトの空ですが…)の下では影は濃すぎないほうが自然に見えるというわけです。

問題点3:環境光が弱すぎる

次に三つ目の問題点は環境光が弱すぎることです。

Unityで新しいシーンを作るとディレクショナルライトが一つ配置されていますが、実はシーンの光源はそれだけではありません。試しにディレクショナルライトを消してみてください。真っ暗にはならないはずです。これはなぜかというと、デフォルトだとスカイボックスの色調からシーン全体を照らす環境光が出ているからです。

しかしデフォルトではこの環境光が弱いため、ディレクショナルライトにかき消されて空の色がシーンに反映されにくくなってしまっています。この点は改善する必要があるでしょう。

問題点4:アンビエントオクルージョンがない

四つ目はアンビエントオクルージョンがないことです。

アンビエントオクルージョンとは簡単に言えば「溝や隅を暗く描画する」技法のことで、物体の立体感を増してよりリアルに見せることができます。

まあこれに関しては必ずしも「あれば良い」というわけではないのですが、リアルな絵作りをしたいなら可能であれば取り入れたい技法だといえます。

問題点5:鏡面反射が正確ではない

最後に五つ目は鏡面反射が正確ではないことです。

先ほどの画像の色付きのゲームオブジェクトをよく見てみると、光沢があるように見えますが映りこんでいるのは空だけで隣のオブジェクト等は映り込んでいません。

この点に関しても「映り込みがあるから良い」と言うつもりはありませんが、やはりリアルなグラフィックにする場合は無視できない問題でしょう。

Unityのライティングで意識すべきコツ

さて問題点が分かったところで、次はそれを改善するためのコツを見ていきましょう。やり方は色々あると思いますが、今回は簡単に設定できる次のコツを紹介しますね。

  1. スカイボックスを変更する
  2. 環境光を強くする
  3. ディレクショナルライトの影の強さを弱くする
  4. アンビエントオクルージョンをONにする
  5. リフレクションプローブを活用する

改善後のシーンは次の画像のとおりです。

改善後のライティング

だいぶ良くなったと思いませんか?それでは設定方法を見ていきましょう。

コツ1:スカイボックスを変更する

まず、何はともあれスカイボックスを変更しましょう。スカイボックスはライディング設定ウィンドウ(メニューバーの「ウィンドウ」→「レンダリング」→「ライティング設定」)の「環境」タブから変更することができます(下図)。

スカイボックスの変更

コツ2:環境光を強くする

次は環境光の強さを少し強めにします。先ほどと同じライティング設定ウィンドウの「環境ライティング」の「強さ乗数」から環境光の強さを変更できます。値は、スカイボックスの明るさにもよりますがだいたい「1.2」~「1.8」くらいの値にすると見栄えが良くなると思います。

環境光の設定

もし環境光を強くしたことによってシーンが明るくなりすぎるような場合は、ディレクショナルライトの強さが少し弱くなるように設定してください。

コツ3:ディレクショナルライトの影の強さを弱くする

そうしたら次はディレクショナルライトの影の強さを弱くします。下の図のように「リアルタイムシャドウ」の「強さ」を「0.7」くらいにしましょう。

ライトの影の強さの設定

コツ4:アンビエントオクルージョンをONにする

それから味付けとしてアンビエントオクルージョンをONにします。アンビエントオクルージョンの適用方法は次の2通りがあります。

  1. ライティングをベイクする際に一緒に焼き付ける方法
  2. Renderer Featuresを使う方法

ここでは簡単にできる1番目の方法をご紹介します。やり方はライティング設定ウィンドウの「シーン」タブ→「ライトマップ設定」の「アンビエントオクルージョン」にチェックを入れるだけです(下図)。

アンビエントオクルージョンの設定

これでシーンのライティングをベイクするとアンビエントオクルージョンが適用され、シーンに立体感が出るようになります。

コツ5:リフレクションプローブを活用する

最後に、鏡面反射を上手く適用するためにリフレクションプローブを使います。ヒエラルキーで右クリック→「ライト」→「リフレクションプローブ」から新しいリフレクションプローブを作成し、適当な位置に配置して「Bake」ボタンをクリックしましょう。

リフレクションプローブのベイク

すると鏡面反射がそれっぽく表示されるようになります。なおリフレクションプローブについては公式マニュアルをご覧ください。

リフレクションプローブ - Unity マニュアル
リフレクションプローブ (Reflection Probe) は、全方向に向かってその周囲の球状のビューをキャプチャするカメラのようなものです。キャプチャしたイメージはその後、反射マテリアルを持つオブジェクトに使用される キューブマップ として保存されます。リフレクションプローブの中には、指定したシーンで使用し、オブジ...

おわりに

以上、「3Dゲームの見た目を綺麗にするライティングのコツ」をご紹介しました。何かしら参考になれば幸いです。

繰り返しになりますが、自作3Dゲームがショボい見た目になってしまう原因は「ライティング」によるところが大きいです。しかしライティングは少し工夫するだけで改善できるので、ひと手間かければ見た目をかなり良くすることができると思います。ぜひ今回の内容を参考にして3Dゲームを綺麗な見た目に仕上げてみてください。