目次
対象バージョン:Unity 2019.4.1f1(LTS)
その色で大丈夫?
Default Materialの色
SceneビューにCubeを配置すると、下記の様な土色の物が配置されます。
最初は「元々の色がこの色なのかな?」と思いましたが、Cubeに割り当てられている「Default Material」の色は「白」です。
白いCubeが土色…、これで本当に正しい色の設定が出来るのか気がかりになってしまいます。
IMPORTしたデータが暗い
他のツールで作成したメッシュデータ(テクスチャ付き)をIMPORTしたデータも何か暗いです。
上のキャラクタの白目の部分や、手、胸の「Q」の字はもっと白く表示されてほしいのですが…
Directional Light設定の見直し
照明の色
まずは、疑うべきは照明(Directional Light)の設定です。
Directional Lightを選択し、Inspectorビューで項目を確認してみます。
[Color](照明の色)が若干クリーム色になっていますね。
まずはこれを「白」にしてみます。
Sceneビューを確認してみます。
Cubeは土色ではなくなりましたが、グレーになってしまいました。
外部からIMPORTしたキャラクタもまだ、暗いです。
明るさが足りない?
「暗いのは、オブジェクトのMaterialの設定の問題?」とも思いましたが、CubeのDefault MaterialのAlbedoは白(0xFFFFFF)なので問題ないはずです。
では、「Directional Lightの明るさが足りない?」と思って、Intensity(輝度)を「1」から「2」に変更してみます。
画面全体が明るくなりました。
が、光が当たっている所は明るいですが、当たっていない陰の部分と、影の部分が真っ黒です。
まぁ、照明の明るさを強くしたので、そうなりますね…。これは、根本的な解決策にはならないので、Intensityは「1」に戻しておきます。
CGの基本に立ち返る
Unityの設定をやたらと変更したりする前に、CGで色の決まる仕組みについて、見直してみます。
面の明るさは何で決まる?
メッシュデータの各面の明るさは照明の光線ベクトルと、各面の法線のなす角度で決まります。
照明が1つしかない場合、オブジェクト本来の色が表示されるのは、面の法線方向から照明が当たっている時だけで、それ以外の場合は、法線と光線ベクトルのなす角に応じて暗くなっていき、照明が当たらない(法線が照明と逆方向になる)と真っ暗になります。
環境光が必要
実世界では、光が複雑に反射しているので、照明が直接当たらない場所でも真っ暗にはなりません。
CGでは、それを環境光として、一定の明るさを全体に追加して表現します。
さて、そうなるとUnityでの環境光設定はどうなっているんでしょうか?
Lighting Settings
Ambient Color(環境光)の設定
環境光はSceneごとの照明設定で行います。
[Windows]メニューで[Rendering]の中の[Lighting Settings]を選択します。
表示される[Lighting]ダイアログの[Environment Lighting]の[Source]を“Color”に変更します。
次に[Ambient Color](環境光)をR=128, G=128, B=128となる様に変更します。
Sceneビューを確認してみると…
自分が思っている自然な感じになりました。
まとめ
オブジェクトを自分の思った様な(シーンにあった)発色にしたい場合は、
- オブジェクト自体の色
- 照明の色・強さ
- 環境光の色と強さ
の設定が大切ですね。
以前のバージョンでは、あまり気にした記憶がないですが、忘れているだけなのか、気にしてなかっただけなのか、最近のバージョンで変わったのか…。