今回は、Unityで自己発光マテリアルを使ったオブジェクトだけで部屋のライティングをすると、どうなるのか?というのをいくつか試してみることにしました。
自己発光マテリアルを使って部屋のライティング
Standardマテリアルのパラメータ Emission のチェックボックスを入れることで自己発光マテリアルを作ることができますが、そのマテリアルを使ったオブジェクトで室内のライティングをしてみたいと思います。
部屋の3Dモデルをシーンに配置
まずは新規シーンに基本オブジェクトの Quad を組みあわせた部屋を作ります。部屋のサイズは幅6m、奥行6m、高さ3m にしました。オブジェクトはすべて Static 設定に変更しています。
部屋に使用するマテリアルはStandardマテリアルを使用してカラーはRGBの値が200のグレーにしました。
新規シーンのライティングのまま[Scene]ビューではこのように見えます。
環境ライティング設定
まずは環境光の影響を受けないようにするためにライティングの設定を変更します。
メニュー:Window > Lighting > Settings を選択。[Inspector]ウィンドウ > [Scene]タブ > Environment パネルの設定を変更します。
WebGL形式でシーンをビルドする予定なので グラフィックの制限にあわせて Realtime Global Illumination のチェックを外しておきます。
それから Lightmapping Settings でも同様にWebGLのグラフィック制限あわせて Directional Mode を Non Directional に変更します。
新規シーンに配置されている Directional Light を削除します。[Scene]ビューで見ると室内は真っ暗になりました。
エリアライトを使ってライティングしてみる
それでは最初に、エリアライトを部屋に配置してどのように見えるか確認してみます。エリアライトの設定はこのようにしました。
部屋の中には球体、円柱、カプセルを配置しました。オブジェクトはすべて [Inspector]ウィンドウ > Static にチェックを入れています。
平面オブジェクトに自己発光マテリアルを使用してライティングしてみる
それでは自己発光マテリアルの検証に入りましょう。まずは基本オブジェクトの Plane を使います。先ほどのエリアライトと同じ位置とサイズに設定。
壁の角部分と床に落ちる影がぼんやりしていますね。マテリアルの設定はエリアライトと同じような明るさに調整して Emission の値は 4 になりました。
立方体オブジェクトに自己発光マテリアルを使用してライティングしてみる
次に基本オブジェクトから Cube を使ってライティングしてみました。平面オブジェクトを使用した場合よりも角ははっきり見えますが、陰影が弱く、天井の角付近はライト漏れが発生しています。
自己発光マテリアルの Emission の値は 2.4 に調整しました。
球体オブジェクトに自己発光マテリアルを使用してライティングしてみる
次に基本オブジェクトから Sphere を使ってライティングしてみました。 Plane、Cube とひかくして部屋の角部分が一番はっきりしています。ただ、ライト漏れは発生しています。
自己発光マテリアルの Emission の値は 2.8 に調整しました。
ライト漏れを防ぐためにライトマップ設定を変更
ライトマッピングのライト漏れが発生しないように、ライトマップの解像度を高くしてみます。部屋のオブジェクトを選択して[Inspector]ウィンドウ > Mesh Renderer > Lightmap Settings > Scale In Lightmap の値を 2 に変更。
ライトマップの再計算が始まり、計算が終わるとライト漏れが無くなりました。
まだ色々試してみたいところですが、今回はここまでにしたいと思います。