ライトの種類
Tutorial
·
Beginner
·
+10XP
·
30 mins
·
(22)
Unity Technologies
暗くてジメジメした街のネオン街から、広々とした野原に輝く夕日まで、Unity 内の様々なライトを使ってドラマチックな効果を得ることができます。本チュートリアルでは、それぞれのライトがユニークな照明とコントロールを提供することから、利用可能なすべての種類のライトについて理解を深めることができます。
Languages available:
1. ライトの種類とは?
本チュートリアルは、Unity 2019 LTS を使用して検証されています。
ライトは Unity プロジェクトの重要な要素です。シーンに照明を与え、動的なライティングや特定のライティング条件を作り出すことで、思い通りの表現を可能にします。暗くてジメジメした街のネオンライトの通りから、広大なフィールドに輝く夕日まで、Unity 内の様々なライトを使ってドラマチックな効果を得ることができます (画像 01)。それぞれのライトはユニークな照明とコントロールを提供してくれるので、あらゆる種類のライトに慣れ親しんでおくと良いでしょう。

画像 01:ライティングが完成したサンプルシーン
2. ポイントライトとシャドウの追加
ポイントライト (Point Light) は、空間の一点に位置し、すべての方向に均等に光を放出します。ランプなどの局所的な光源をシミュレートするのに適しており、パーティクルシステムと組み合わせて使用されることが多いです。
シーン内にポイントライトを作成するには:
1. ゲームオブジェクトのドロップダウンから、Light > Point Light の順に選択します。また、既存のゲームオブジェクトを選択して Add Component をクリックし、Light コンポーネントを追加することもできます。
2. ポイントライトがシーンに追加されました。これを選択すると、オブジェクトの位置を操作することができます (画像 02)。

画像 02:シーンに追加されたポイントライト
3. ライトが選択されている状態で、Inspector ウィンドウに調整可能な設定が表示されているはずです (画像 03)。

画像 03:Light の設定
ライトの種類をより細かくコントロールできる Light コンポーネントが 1 つだけあります。
- Type:現在使用されているライトの種類が表示されます。設定できるライトは、Spot、Directional、Point、Area (面光源、これはベイクのみ) のいずれかを選択できます。
- Range:オブジェクトの中心から放射された光がどのくらいの距離を移動するかを決定します。これはポイントライトとスポットライトにのみ適用されます。
- Color:放射される光の色を設定します。
- Mode:これにより、ライトのベイクの有無や方法を決定する Light モードを指定することができます。指定できるモードは、Realtime、Mixed、Baked の 3 種類です。
- Realtime はランタイム中にプロパティを変更する必要があるライトに使用されます。
- Mixed はランタイム中に Transform や visual のプロパティを変えることができるが、きつい制限があるライトに使用されます。
- Baked はローカルな雰囲気を出すために使用され、ランタイム中に変更する必要はありません。
- Intensity:この値は、ライトの明るさを設定します。
- Indirect Multiplier:この値は、間接光の強度を変化させるために使用します。間接光とは、あるオブジェクトから別のオブジェクトに跳ね返ってくる光のことです。値が 1 より小さいと、跳ね返るたびに光が弱くなります。1 より大きい値では、跳ね返るたびに光が明るくなります。1 のままにしておくと、跳ね返るたびに光の量が変わらないことを意味します。
- Shadow Type:ライトによって投影されるシャドウ (影) の種類を、No Shadows、Hard Shadows、Soft Shadows のいずれかを設定することができます。
- Cookie:この設定では、影を落とす Texture マスクを指定します。例えば、シルエットを作成したり、窓から差し込む光やシャドウを投影する十字の梁などのようなパターン化された照明を作成するのに便利です。
- Draw Halo:この設定では Range の値と同じ直径の、球状のライトの Halo を描画します。
- Flare:ライトの位置でレンズフレアをレンダリングしたい場合に使用します。このフィールドには、レンズフレアのソースとして使用するアセットを指定する必要があります。
- Render Mode:この設定では、選択したライトのレンダリングの優先順位を指定します。Auto、Important、Not Important のいずれかを選択できます。
- Auto は、ランタイム時にメソッドを決定するために使用されます。
- Important は、常にピクセル単位の品質でライトをレンダリングします。これは最も目立つライトに使用します。
- Not Important は、ライトを頂点/オブジェクトライトモードの高速な方法でレンダリングするように設定するために使用します。
- Culling Mask:この設定では特定のオブジェクト一式をライトの影響を受けないように選択的に除外します。
では、ライトの追加設定を説明していきます。
1. Light モードを Realtime に設定します。
2. Light Shadow Type を Hard Shadows または Soft Shadows のいずれかに設定します。
3. Inspector ウィンドウの Shadow Type の下に追加の設定が表示されます (画像 04)。

画像 04:シャドウ (Shadow) の追加設定
Shadow に新しく追加されるプロパティは:
- Strength:このスライダーは、このライトによって投影される影の暗さを決定します。
- Resolution:この設定は、影の解像度を制御します。画質については、Use Quality Settings、Low Resolution、Medium Resolution、High Resolution、Very High Resolution のいずれかを設定できます。影の質が高ければ高いほど忠実に再現されますが、GPU の時間とメモリ使用量という高いコストがかかります。
- Bias:影が光から遠ざかる距離を制御します。この値を高くしすぎると、影がオブジェクトから離れているように見えるので、この値をあまり高く設定しないでください。
- Normal Bias:これは影を落す面が、面の法線に沿って縮小されるようになる距離を設定できます。この値を高くしすぎると、影を投影しているゲームオブジェクトに対して幅が狭すぎる影が作成される可能性があるので注意が必要です。
- Near Plane:シャドウをレンダリングするときのニアクリップ面を制御します。この設定は、穴があるように見える影を修正します。影の穴が完全に埋まるまで値を上げてください。
3. スポットライトの追加
スポットライトは、一定の範囲と角度でエリアを照らし、最大範囲に向かって徐々に光が弱まっていきます。あらゆる方向に光を放つポイントライトとは異なり、スポットライトは一定の角度に限定されます。このタイプのライトは通常、懐中電灯、工事用ライト、サーチライトなどの人工的な光源として使用されます。
スポットライトを作成しよう:
1. ゲームオブジェクトのドロップダウンから、Light > Point Light と選択します。または、既存のゲームオブジェクトを選択して Add Component をクリックし、Light コンポーネントを追加します。
2. Light Inspector で、Type を Spot に変更します (画像 03)。
3. Spot Angle と呼ばれる新しいプロパティが利用できるようになります (画像 05)。

画像 05:Spot Angle プロパティ
4. 角度の値を大きくしたり小さくしたりして、画面に追加されたスポットライトへの影響を確認します (画像 06)。
これで、シーンにスポットライトが追加されました。スポットライトは、ネオンや建築物の照明のような人工的なタイプの照明を作るのに適しています。スポットライトは幅広い用途に対応し、雰囲気作りにとても役立ちます。

画像 06:Range と Intensity を 5 に設定し、Spot Angle を 65 に設定したスポットライト
4. ディレクショナルライトの追加
ディレクショナルライト (Directional Light ) は、シーン全体を均一に照らすライティングです。このライトは、太陽光や、遠くに存在する光源をシミュレートするためによく使われます。ディレクショナルライトからの光は減衰しないため、シーン内のすべてのオブジェクトが均等に照らされます。
1. それでは、ディレクショナルライトを作成しよう
2. ゲームオブジェクトのドロップダウンから、Light > Point Light と選択するか、既存のゲームオブジェクトを選択して Add Component をクリックし、Light コンポーネントを追加します。
3. light インスペクタで、Type を Direction に変更します (画像 03)。
4. Cookie Size と呼ばれる新しいプロパティが利用可能になりました (画像 07)。スポットライトとポイントライトは、ライトの円錐形または球形のサイズに基づいてクッキーを自動的にスケーリングしますが、Cookie Size を使用するとクッキー(投影されるシャドウを決定するテクスチャマスク)を自分でスケーリングできます。

画像 07:Cookie Size プロパティ
4. このライトでは、ゲームオブジェクトがどこにあるかは重要ではなく、回転だけが重要であることがわかります。ディレクショナルライトを選択し、E ボタンを押すと、回転ギズモが表示されます。ディレクショナルライトを回転させ、ライトの角度がどのように更新されるかを確認してください (画像 08)。

画像 08:シーン内で回転するディレクショナルライト
デフォルトでは、すべての新しい Unity のシーンにディレクショナルライトが含まれています。Unity 5 では、ディレクショナルライトはプロシージャルなスカイシステム(Lighting > Scene > Skybox)にリンクされています。この動作を変更するには、デフォルトのディレクショナルライトを削除して、新しいものに置き換える必要があります。
ディレクショナルライトは、シーン全体を均一に照らすので、近くの星など、遠く離れた大きな光源を表現するのに適しています。
5. エリアライトの追加
エリアライト (Area Light) は、空間内に長方形で定義されるユニークなライティングタイプです。光は、その表面積にわたってすべての方向に均一に放出されます。このタイプのライティングには手動での制御はできませんが、光源から離れるにつれて光が減衰します。この減衰方法は演算器に大きな負担をかけるため、エリアライトはライトマップにバックアップする必要があり、ランタイムには利用できません。
それではエリアライトを作成しよう:
1. ゲームオブジェクトのドロップダウンから、Light > Point Light と選択するか、既存のゲームオブジェクトを選択して Add コンポーネントをクリックし、Light コンポーネントを追加します。
2. Light インスペクターで Type を Area (baked only) に変更します(画像 03)。
3. いくつかのプロパティが消え、新たに 2 つのプロパティ(Width と Height)が表示されることが分かります (画像 09)。この 2 つのオプションは、光を放射するエリアを調整するものです。

画像 09:Area Light プロパティ
4. 前述したように、エリアライトはランタイムでは機能せずベイクする必要があります (画像 10)。

画像 10:シーンに追加されたエリアライト(ベイクなし)
5. Area Light を設定したら、Window ドロップダウンから Rendering > Lighting Settings と選択して、Lighting ウィンドウを開きます。これで Lighting ウィンドウが表示されます (画像 11)。

画像 11:Lighting ウィンドウ
6. とりあえず、設定はそのままにして、Generate Lighting をクリックして、ベイクしたライティングを作成します。ライトマップがベイクされると、シーンがエリアライトが表示された状態に更新されます (画像 12)。

画像 12:ベイクしたライティングによるエリアライト
エリアライトは、ソフトで繊細な光なので、街灯やプレイヤーの近くに存在するいくつも並んでいるライトを表すのに最適です。建物の内部など、小さな光源をシミュレートしたい場合にも最適です。
6. エミッシブマテリアルの作成
エミッシブマテリアル (Emissive Materials、発光マテリアル) は、表面積にわたって光を放出します。これらのタイプのライトは、シーン内のバウンス光に貢献し、ランタイム中に色や強度のプロパティを変更することができます。エミッシブマテリアルから放射される光には、範囲のプロパティはありませんが、光は減衰します。
エミッシブマテリアルを作成してみよう:
1. 右クリックして Create > Material と選択し、プロジェクトにマテリアルを作成します。
2. Material Inspector で Emission にチェックを入れて、光の色を好きな色に設定します (画像 13)。エミッシブマテリアルには Baked と Realtime があります。ランタイム中にエミッシブライトを変更する必要がない場合は、Baked に設定するのが最適です。

画像 13:エミッシブマテリアル (Emissive Material) の設定
3. シーン内のオブジェクトにマテリアルを割り当てます。
4. エミッシブ (発光) な光を適用したいすべてのオブジェクトが Static (静的) に設定されていることを確認します (画像 14)。

画像 14:エミッシブマテリアルからの光を受けるゲームオブジェクトを Static に設定する
5. これで発光するマテリアルができあがりました (画像 15)。光の輝度を上げるには、Emission の Color のボックスに 1 より大きな値を入力します。

画像 15:周囲のオブジェクトに光を放っているエミッシブマテリアル
エミッシブマテリアルは、シーン上で静的ジオメトリに直接効果を与える場合にのみ有効です。 エミッシブライトは、雰囲気を加えたり、ソフトな動的でないライティングの追加に最適です。エミッシブライティングをキャラクターのような動的、つまり、静的でないジオメトリにエミッシブマテリアルからライトを当てる必要がある場合は 、ライトプローブ(このドキュメントでは説明しません)を使用する必要があります。
7. アンビエントライトの追加
:アンビエントライト (Ambient Light) とは、特定の光源からのものではなく、シーン全体に存在する光のことです。このタイプのライティングは、シーンの全体的な外観や明るさに重要な役割を果たします。光源を追加することなく、暗すぎるシャドウを除去してシーンを明るくします。
アンビエントライトの設定を調整するには、Lighting ウィンドウを開きます。
1. Window ドロップダウンから Rendering > Lighting Settings と選択します。これで Lighting ウィンドウが開きます (画像 16)。

画像 16:ライトの設定ウィンドウ

画像 17:アンビエントライティング
Lighting ウィンドウには多くの設定項目がありますが、ここでは最も重要な設定項目を取り上げます。
Environment タブでは、以下のようなプロパティがあります:
- Skybox Material:シーンですべてのものの背後に表示されるマテリアルです。
- Sun Source:プロシージャルなスカイボックスを使用する場合、この設定により、太陽の方向を示す Directional Light コンポーネントを持つゲームオブジェクトを指定することができます。
- Environment Lighting:離れた環境から入ってくる光を決定します。
- Source:アンビエントライトの光源です。オプションには以下があります:
- Skybox:スカイボックスマテリアルがアンビエントライティングの作成に使用されます。
- Gradient:空、地平線、地面からのアンビエントライトに別々の色を使用し、それらを滑らかにブレンドするときに選択します。
- Color:シーンのすべてのアンビエントライトにフラットな色を使用するときに選択します。
- Intensity Multiplier:アンビエントライトの明るさを設定します。この値は 0~8 での範囲で設定します。
- Ambient Mode:アンビエントライトを Realtime か Baked に設定できます。このオプションは、シーンでリアルタイムライティングとベイクしたライティング の両方が有効になっているときにのみ使用可能です。
Lighting ウインドウには、他にも多くの設定やオプションがありますが、上述のアンビエントライトのオプションを使えば、シーンのライティング方法を実際に調整およびカスタマイズすることができます。リアルなアンビエントライトのシミュレーションから、遠くの太陽のシミュレーションまでできる、強力なツールです。
プロジェクトのライティングにおいては洗練度の高さを計画することが重要です。光の量が多ければ多いほど、パフォーマンスに大きな影響を及ぼし、ベイク時間も長くなります。これは当然、ターゲットとするプラットフォームに一致させたいものです。ターゲットとするゲーム機がハイエンド PC であっても、パフォーマンス要件を満たすためには、使用するライトの数に気をつけなければなりません。