このセクションでは、Unity でライトを作成するさまざまな方法を説明します。
ポイントライト(Point Light) は空間のある一点(ポイント)に位置し、全方向に同等に光を放ちます。面に当たる光の方向は、その接地点とライトオブジェクトの中心点を結んだ直線です。光の強度は距離とともに減衰し、指定した距離で 0 になります。光の強度は、光源からの距離の 2乗に反比例します。これは「逆 2乗の法則」として知られ、実世界での光の性質に似ています。
ポイントライトは、シーン内のランプや他の局所的な光源をシミュレーションするのに役立ちます。リアリスティックに周囲を照らす火花や爆発を作ったりするのにも役立ちます。
ポイントライト同様、スポットライト(Spot Light) もその位置と光の当たる範囲が指定されています。ただし、スポットライトは限られた角度内の光になるため、照明領域が円錐形になります。円錐の中心は、ライトオブジェクトの前方(Z)方向を指しています。また、ライトはスポットライトの円錐の端で減衰します。角度を広げると円錐の幅が広くなり、それにより、‘penumbra’ と呼ばれるフェードのサイズが増加します。
一般的にスポットライトは、懐中電灯、車のヘッドライト、サーチライトなどといった人工的な光源として使用されます。スクリプトやアニメーションで方向を制御すれば、動きのあるスポットライトでシーン内のごく狭いエリアを照らし、印象的なライティング効果をつくり出すことができます。
ディレクショナルライト(Directional Light) はシーンで太陽光などの効果を作り出すのにとても役立ちます。太陽のようにさまざまな様子に変化するディレクショナルライトは、限りなく遠くに存在する光源から発する光と考えることができます。ディレクショナルライトは明確な光源の位置を持たないので、ライトオブジェクトはシーン内のどこにでも置くことができます。シーン内のすべてのオブジェクトが、あたかも光が常に同じ方向から差しているかのように照らされます。ターゲットオブジェクトからライトまでの距離が設定されていないので、光が減衰することもありません。
ディレクショナルライトは、ゲーム世界の範囲外にある位置から差す、大きな遠い光源を表します。写実的なシーンでは、太陽や月のシミュレーションに使うこともできます。また、アブストラクトなゲーム世界では、光がどこから差しているか特に明確にすることなく、説得力のある影をオブジェクトに付けることができます。シーンビューで(例えばメッシュやシェーダーやマテリアルを見るために)オブジェクトをチェックするときに、ディレクショナルライトを使用すれば、多くの場合、シェーディングの見え方をもっとも手早く掴むことができるでしょう。そのようなテストの時は大抵、光源の場所はどうでも良く、単純にオブジェクトが「はっきり」見えてモデルに問題がないかどうか確認できればよいからです。
デフォルトでは、新しい Unity のシーンにはすべてディレクショナルライトが含まれています。Unity 5 では、ディレクショナルライトは プロシージャルなスカイシステムに関連付けられています。Lighting ウィンドウ (Lighting>Scene>Skybox) の Environment Lighting セクションで決定されるスカイのシステムへ関連付けられます。デフォルトのディレクショナルライトを削除し新しいライトを作成したり、または、単に ‘Sun’ パラメーター (Lighting>Scene>Sun) から異なるゲームオブジェクトを指定することにより、この挙動を変更することができます。
デフォルトのディレクショナルライト (つまり「太陽」) を回転させると ‘Skybox’ が更新されます。ライトは横の角度、つまり地面に平行になると、日没のような効果になります。さらに、ライトを上に向けると、空が暗くなり、夜のようになります。上方からライトをあてると、空は日中の様子になります。
環境的な Source としてスカイボックスを選択すると、環境 Lighting もその色に対応して変化します。
エリアライト(Area Light) は空間内の長方形によって決定されます。光は全方向に放射されますが、片面のみからになります。エリアライトの範囲に関しては、手動の制御はできません。ただし、光源から遠くなるにつれ、光の強度は距離の逆 2乗で減少します。ライティングの計算がプロセッサーにかなりの負担をかけるため、エリアライトはランタイムでは使用できず、ライトマップにベイクされる方法によってのみ使うことができます。
エリアライトは複数の異なる方向から同時にオブジェクトを照らすので、他の種類のライトと比べてシェーディングが柔らかく繊細になります。写実的な街頭や、プレイヤーに近いところに複数並んだライトの表現などに使用できます。小さなエリアライトは小さな光源(家のインテリアのライトなど)をシミュレートでき、ポイントライトよりも写実的な効果を得られます。
エリアライトのように、発光 (Emissive) マテリアルは、その表面に発光します。発光マテリアルはシーンの反射光を作るのに効果的で、色や強度などの関連するプロパティーをゲームの間に変化させることができます。エリアライトは Precomputed Realtime GI にサポートされていませんが、発光マテリアルを使用すると、リアルタイムで類似のソフトライト効果が可能になります。
‘Emission’ はスタンダードシェーダーのプロパティーで、シーンの静的オブジェクトを発光させることができます。 デフォルトでは、‘Emission’ の値は 0 に設定されています。つまり、スタンダードシェーダーを使ってマテリアルを指定したオブジェクトはまったく発光しないということです。
発光マテリアルに範囲の値はありませんが、放射されるライトは、ここでも 2次レートで減衰します。放射された光を受けることができるのは、インスペクターで ‘Static’ か ‘Lightmap Static’ に設定されたオブジェクトだけです。同様に、キャラクターのような、静的でない、つまり、動的なジオメトリに適用された 発光マテリアルはシーンライトには影響を与えません。
ただし、0 以上の Emission を持つマテリアルは、たとえ、シーンライトに影響を与えなくとも、スクリーン上で明るく発光しているように見えます。この効果は、インスペクターで Standard シェーダーの ‘Global Illumination’ を ‘None’ にすることによっても作り出すことができます。このように自家発光するマテリアルは、ネオンなどの目に見える光源を表現するのに役立ちます。
発光マテリアルは、シーン上で静的ジオメトリに直接効果を与える場合にのみ有効です。 キャラクターのような動的、つまり、静的でないジオメトリに 発光マテリアルからライトを当てる必要がある場合は、ライトプローブを使用する必要があります。
アンビエントライトはシーン全体を取り巻き、特定のソースオブジェクトから照射されていない光です。シーン全体の見た目や明るさを左右する重要な効果を与えます。
アンビエントライトは、選択したアートスタイルによって、多くの場合に役に立ちます。暗い影が必要なかったり、ライトをテクスチャに手書きしている、明るい、アニメーションスタイルの描画がそのよい例です。アンビエントライトは、個々のライトを調節せずにシーン全体の明るさを上げる必要がある場合にも使用できます。
アンビエントライトの設定の詳細は ライティングウィンドウ を参照してください。