ライティングの基本
概要
最終更新日:2020/01/27 ライティングとはCGの世界に光を設定し、彩りを表現する方法、過程のことです。 現実世界は太陽などの光を発しているモノが当然のようにありますが、 CGの仮想空間では当たり前ではありません。 現実世界と同じ、またはその世界独特の表現を行うために仮の光源を設定、 配置することで、その世界に陰影がつき、その世界のリアルさを表現できます。
陰影を表現する
ライティングは名前の通り「光」を設定することにあるので、明るさの表現と考えがちですが どちらかといえば光源によってできる「陰影」に価値を見出しています。 CGの世界は陰影があるからこそリアルな表現ができており、陰影がないとリアルさを失います。 上の図のように3Dモデルを描画した場合、ライトがないと陰影の表現ができないので、 そのモデルの持つ色がそのまま描画されますが、陰影がありません。 陰影がないと立体感の表現ができないことが分かってもらえると思います。
特性
CGのライトは現実のライトにはできない特性をもっています。
- オリジナルのライトが作れる
- 影響をコントロールできる
オリジナルのライトが作れる
CGの世界のライトは自分たちが表現したい演出を実現するために 独自のルールを持ったライトを作ることができます。 例えば、この後で説明する平行光源は「減衰」がありません。 減衰とは言葉の通り光の強さが減っていくことで、「減退」とも呼びます。 ライト直後の光の強さを1として、この光が離れていくと 光の強さは0に近づいていきます。 現実の世界ではどうしても距離によって光の強さは減衰するので、 CG世界のオリジナルライトといえます。 あと、現実にないライトでいうと暗くするライトも作れます。 現実では照らしたところだけを暗くするライトはありませんが、 CGの世界ではライトの色情報を負の値にすることで作成できます。
影響をコントロールできる
ライトの持つ影響もコントロールすることも可能です。 ライトの影響を特定のオブジェクトだけ反映するかどうかを決めることもできます。 また、ディフューズやスペキュラーなどのマテリアルの成分や RBGの色情報についても、反映するかどうかをコントロール可能です。
ライトの種類
CGでよく使われるライトは以下の通りです。
- 平行光源(Directional Light)
- 点光源(Point Light)
- スポットライト(Spot Light)
- 面光源(Area Light)
平行光源
平行光源(Directional Light)は以下の特性を持っているライトで、 発生する光の方向情報だけを持っていれば問題のないシンプルなライトです。
- 光の方向は全て同じ
- 位置は関係ない
- 光の減衰がない
このライトを使用したライティングの計算は非常に軽い上に、 全オブジェクトに対して同じ光を当てることができるので、 CG世界全てを照らす光の役割として使用されています。
位置は関係ない
平行光源は光の方向のみの情報を持っていて、 その光がCG世界に対して、まんべんなく降り注いでいます。 そのためライトをどこに置くかは関係ありません。
光の方向は全て同じ
平行光源の光の方向は全て同じ方向です。 同じ方向で光が進むので、当たり前ですが光の角度にバラツキが発生しません。 その結果、光の角度による反映結果に変化はありません。
光の減衰がない
他のライトは位置があり、そこから発生した光は 距離が遠くなればなるほど減衰していきます。 平行光源は位置は関係なく、方向のみを使用するため、 光は減衰せずにどこで当たったとしても光の強さは同じです。
点光源
点光源(Point Light)は指定した位置から放射状に光が広がるライトです。 ライトから発生した光は光源の位置から離れるほど減衰していきます。 電球やロウソクなどの光を表現する際に使用されています。
スポットライト
スポットライト(Spot Light)は点光源と同じように特定の位置から放射状に 光が広がるライトですが、点光源とは違い放出する範囲を限定します。 こちらも発生した光はライトから離れるほど減衰していきます。 懐中電灯などの特定の範囲に対して光を当てる表現で使用します。
面光源
面光源(Area Light)は面積を持ったライトです。 面光源で照らされたオブジェクトは本影と半影ができるので 現実世界に近い影を表現できます。 本影と半影は影の記事で詳しく書きます。 ここでは本影が濃い影、半影が薄い影と考えてください。 窓などの面積のある光を表現できますが、 他のライトよりも計算量が多くなるので計算に時間がかかります。
ライティングの流れ
ライティングは以下の流れで行われます。
- ライトの位置や種類、パラメータを決める
- ライトから光が発生する
- オブジェクトに光が当たる
- 当たった光が別のオブジェクトに当たる
①.ライトの位置や種類、パラメータを決める
まずはライトの種類とパラメータ、配置を決めます。 パラメータはライトによって異なりますが、「光の色」はどのライトにも必要です。 また、ライトの数は一つではなく複数配置することが可能ですが 数を多く置くほど、レンダリングの計算量が増えるので気を付けてください。 上の絵ではスポットライトを設置しています。
②.ライトから光が発生する
配置が完了したらそれらのライトから光が発生します。 上の絵もスポットライトか光が発生しています。
③.オブジェクトに光が当たる
発生した光がオブジェクトに当たります。 上の絵では机(?)にスポットライトの光が当たることで机が明るくなっています。 このように光が当たるとオブジェクトがどのような見え方をするのかが決まります。 以下は見え方を決める時に行う対応の種類です。
- 反射
- 吸収
- 伝搬
これらの対応はオブジェクトの性質によって割合が異なります。 例えばオブジェクトが鏡だった場合は反射率100%となり、 オブジェクトが真っ黒な物質だったら吸収率100%、 真空状態なら伝搬が100%となります。 この時のオブジェクトに当たった光がライトから直接発せられた光の場合、 その光の事を「直接光」と呼びます。
④.当たった光が別のオブジェクトに当たる
更にリアルな光のシミュレーションを行う場合、 ③でオブジェクトに当たり、変質した光に対して別のオブジェクトが 当たっていないかを調べて③を実行します。 上の絵では机に当たった光が反射して椅子(?)に当たり、若干ですが明るくなっています。 このようにライトから発せられた光ではなく、 別のオブジェクトを介した光を「間接光」と呼んでいます。 間接光を利用するとより現実的な光の表現ができますが、 計算量が多くなるというデメリットがあります。 そのため、③でライティングを終わらせることもあります。