テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Unityのゲーム画面を綺麗にするライティング

Unity5向けはこちら


Unity5 で画面を綺麗にするライティングに挑戦してみるメモ - テラシュールブログ

 モバイル向け最適化はこちら

tsubakit1.hateblo.jp

本編

今回は画面を綺麗にする…というか、3D画面を古臭い3Dっぽくなくす方法を紹介します。と言っても、以前紹介してるのでその焼き直しです。

 


Ambient Lightとか使って絵作り - テラシュールブログ

 

今回用意した画像はこちら。とりあえずポリゴンを幾つか配置してライティングをかけただけです。割とこんな感じの絵作りをしているゲームは多いです。

 

f:id:tsubaki_t1:20140914162453j:plain

 

これを、下のような感じの絵にします。勿論好みの問題で上の方が良いと思う人も多いかもしれません。

f:id:tsubaki_t1:20140914154501j:plain

 

ライティングの調整

 

まずは、やはり影が濃すぎるのでこれを何とかします。影や全体的な明るさの調整は、Ambient Lightを使用します。

 

メニュー>Edit>RenderSettingsからAmbient Lightを選択して、もっと明るくします。この項目が全体的な明るさとなります。空がある場合、空の色を参考に決定すると、かなり良い感じになります。

 

f:id:tsubaki_t1:20140914155203j:plain f:id:tsubaki_t1:20140914155350j:plain

これと、Directional Lightの明るさも少し調整します。どちらかと言えば、Directional Lightは添えるだけレベルで明るさを調整した方が良いです。上の画像ですと、大体Intensity(輝度)が0.21とか、そのくらいのレベルで調整されています(もっと弱くても良いです)。

 

とりあえずココまで調整すると、絵はこんな感じになります。

f:id:tsubaki_t1:20140914162306j:plain

 

ライトマップを焼く

 

もう一弾綺麗にするには、ライトマップを焼きます。ライトマップを焼く事で、通常では難しいAmbient Oculusionを使用することが出来ます。Pro版を持つ場合、Light Probeで擬似GIを付与する事も可能ですが、今回は割愛します。

本来、影はとても負荷が高い処理なので、テクスチャを置くだけで表示してくれるライトマップはとりあえずオススメです。

 

最終的にはこんな感じになります。

f:id:tsubaki_t1:20140914161711j:plain

 

ライトマップを焼くには、以下の手順を行います。

  1. 焼く対象及びライトのStaticにチェックを入れる*1
  2. メニュー>Window>Lightmappingを選択し、Lightmappingウィンドウを開く
  3. Ambient Occlusionを0.3くらいに設定
  4. Bake Sceneを選択

f:id:tsubaki_t1:20140914160201j:plain

 

Ambient Occlusionを設定することで、オブジェクトの暗くなるべき所がより暗くなり、接地面が上手い感じに表現出来ます。

f:id:tsubaki_t1:20140914160809j:plain f:id:tsubaki_t1:20140914160801j:plain

 

ちなみに、ライトマップは焼くのに非常に時間がかかります。これを短縮するのは、ライトマップのテクスチャ解像度を下げるのが割と手っ取り早いです。

 

テクスチャの解像度は、LightmapingウィンドウのResolutionで設定します(それ以外にもオブジェクト毎に設定できます)この値が小さければ小さいほど、高速でベイク出来ます。最終的には40程度でベイクする形になりますが、焼き状態を見るには10~20くらいでも十分と言えば十分です。

 

f:id:tsubaki_t1:20140914161316j:plain

 

ちなみに、解像度についてはLightMappingウィンドウを開いた状態で Show Resolutionにチェックボックスを入れると、シーンビューから確認する事ができます。

この模様が大きければ大きい程雑にライトマップが焼かれ、小さければ小さいほど細かく焼かれるという寸法です。

f:id:tsubaki_t1:20140914161555j:plain

Lightmap焼きの進行状況は、右下に表示されます。焼き中でも作業は出来るので、時々焼くくらいの感じで作業しても良いかもしれません。

f:id:tsubaki_t1:20140914162758j:plain

真ん中の光ってる物体は、Self Illminateなシェーダーを設定したマテリアルを設定しています。これ後で気づいたのですがSelf Illminateの発光はPro専用機能らしく、Free版ではPoint Light等で代用する事になりそうです。

 

色合いを調整したり

 

最後に絵作りの一環として色合いを調整したりbloomをかけたりDepth of fieldをかけたりします。この辺りはImage Effectを使用します。今回は色合いの調整のみを行いました。

  1. CameraにColor Correction Curvesコンポーネントを追加
  2. 何か綺麗になるように、カーブを調整する

 

これで全体的に色調を落としてレトロな感じにしたり、適当にアセット突っ込むとバラバラになりがちな色彩を調整したりします。ここのバランスは凄く難しいですね…

f:id:tsubaki_t1:20140914170739j:plain

その他

 

Unityで作られたゲームを見ると、割と「ライティングが初期状態のまま」作られているゲームを多く見ます。Free版でもライトマップ焼くまで出来るので、是非ともお試しあれ。

ちなみに動くもの(人等)に関しては、足元(足裏)にProjection Shadow*2置くと、何か良くなる気がします。

 

f:id:tsubaki_t1:20140914165418j:plain f:id:tsubaki_t1:20140914165434j:plain

 

追記’ 凄い良い資料

マシな画面を作る

*1:正しくはLightmap Staticにチェックを入れる

*2:常時下を向かせるスクリプトが必要