このセクションでは、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) から異なるゲームオブジェクトを指定することにより、この動作を変更することができます。
デフォルトのディレクショナルライト (つまり ‘Sun’) を回転させると ‘Skybox’ が更新されます。ライトは横の角度、つまり地面に平行になると、日没のような効果になります。さらに、ライトを上に向けると、空が暗くなり、夜のようになります。上方からライトをあてると、空は日中の様子になります。
環境的な Source としてスカイボックスを選択すると、環境 Lighting もその色に対応して変化します。
エリアライト(Area Light) は空間内の長方形によって決定されます。光は表面エリア全方向に均一に放射されますが、長方形の片側のみからになります。エリアライトの範囲に関しては、手動の制御はできません。ただし、光源から遠くなるにつれ、光の強度は距離の逆 2乗で減少します。ライティングの計算がプロセッサーにかなりの負担をかけるため、エリアライトはランタイムでは使用できず、ライトマップにベイクされる方法によってのみ使うことができます。
エリアライトは複数の異なる方向から同時にオブジェクトを照らすので、他の種類のライトと比べてシェーディングが柔らかく繊細になります。写実的な街頭や、プレイヤーに近いところに複数並んだライトの表現などに使用できます。小さなエリアライトは小さな光源(家のインテリアのライトなど)をシミュレートでき、ポイントライトよりも写実的な効果を得られます。
エリアライトのように、発光 (Emissive) マテリアルは、その表面に発光します。発光マテリアルはシーンの反射光を作るのに効果的で、色や強度などの関連するプロパティーをゲームの間に変化させることができます。エリアライトは Precomputed Realtime GI にサポートされていませんが、発光マテリアルを使用すると、リアルタイムで類似のソフトライト効果が可能になります。
‘Emission’ はスタンダードシェーダーのプロパティーで、シーンの静的オブジェクトを発光させることができます。 デフォルトでは、‘Emission’ の値は 0 に設定されています。つまり、スタンダードシェーダーを使ってマテリアルを指定したオブジェクトはまったく発光しないということです。
エミッシブマテリアルに範囲の値はありませんが、放射されるライトは、ここでも 2 次的割合で減衰します。放射された光を受けることができるのは、インスペクターで ‘Static’ か ‘Lightmap Static’ に設定されたオブジェクトだけです。同様に、キャラクターのような、静的でない、つまり、動的なジオメトリに適用された エミッシブマテリアルはシーンライトには影響を与えません。
ただし、0 以上の Emission を持つマテリアルは、たとえ、シーンライトに影響を与えなくとも、スクリーン上で明るく発光しているように見えます。この効果は、インスペクターでスタンダードシェーダーの ‘Global Illumination’ を ‘None’ にすることによっても作り出すことができます。このように自家発光するマテリアルは、ネオンなどの目に見える光源を表現するのに役立ちます。
発光マテリアルは、シーン上で静的ジオメトリに直接効果を与える場合にのみ有効です。 キャラクターのような動的、つまり、静的でないジオメトリに 発光マテリアルからライトを当てる必要がある場合は、ライトプローブを使用する必要があります。
アンビエントライトはシーン全体を取り巻き、特定のソースオブジェクトから照射されていない光です。シーン全体の見た目や明るさを左右する重要な効果を与えます。
アンビエントライトは、選択したアートスタイルによって、多くの場合に役に立ちます。暗い影が必要なかったり、ライトをテクスチャに手書きしている、明るい、アニメーションスタイルの描画がそのよい例です。アンビエントライトは、個々のライトを調節せずにシーン全体の明るさを上げる必要がある場合にも使用できます。
アンビエントライトの設定の詳細は ライティングウィンドウ を参照してください。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.