コンピュータグラフィックスのライティングとは、コンピュータグラフィックスシーンにおける光のシミュレーションに使用される技術の総称です。ライティング技術は、詳細度や機能面で柔軟性を提供する一方で、計算負荷や複雑さのレベルも異なります。グラフィックスアーティストは、それぞれの用途に合わせて、多様な光源、モデル、シェーディング技術、エフェクトから選択することができます。
光源によって、グラフィックシーンに光を導入するさまざまな方法が可能になります。[ 1 ] [ 2 ]
点光源は、あらゆる方向に一点から光を発し、光の強度は距離とともに減少します。[ 3 ]点光源の例としては、単独の電球があります。[ 4 ]

指向性光源(または遠方光源)は、一方向から均一にシーンを照らします。[ 4 ]点光源とは異なり、指向性光源は極めて遠くにあるとみなされるため、シーンのスケール全体にわたって、指向性光源によって生成される光の強度は距離によって変化しません。[ 4 ]指向性光源の例としては、地球上の太陽光が挙げられます。[ 5 ]
スポットライトは指向性のある円錐状の光を生成します。[ 6 ]視聴者がスポットライトの光源と光円錐の中心に近づくにつれて、光は強くなります。[ 6 ]スポットライトの例としては懐中電灯があります。[ 5 ]
エリアライトは光を発する3Dオブジェクトです。ポイントライトやスポットライトの光源は無限に小さな点とみなされますが、エリアライトは物理的な形状として扱われます。[ 7 ]エリアライトはポイントライトやスポットライトよりも柔らかい影とよりリアルな照明を生成します。[ 8 ]
環境光源は、他の光源が存在しない場合でも物体を照らします。[ 6 ]環境光の強度は方向、距離、他の物体に依存しないため、シーン全体で効果は完全に均一です。[ 6 ]この光源により、完全な暗闇でも物体が見えるようになります。[ 5 ]
ライトワープは、幾何学的世界における物体が光の方向と強度に基づいて光を屈折させる技術です。光は、色スペクトルの範囲を持つ環境拡散項を使用してワープされます。その後、光は反射散乱されて被写界深度が深くなり、屈折します。この技術は、独自のレンダリングスタイルを作成するために使用され、オブジェクトの露出過多を制限するために使用できます。Team Fortress 2などのゲームでは、このレンダリング技術を使用して、漫画風のセルシェーディングのスタイリッシュな外観を作成しています。[ 9 ]
HDRIはHigh dynamic range imageの略で、屋外設定として3Dモデルに巻き付けられた360°画像であり、通常は空の光源として太陽を使用します。モデルのテクスチャは、HDRIからの直接光と環境光、および色を反映することができます。 [ 10 ]
コンピュータグラフィックスでは、光源が物体に及ぼす全体的な効果は、物体と光源との相互作用の組み合わせによって決定され、通常は少なくとも 3 つの主要なコンポーネントによって記述されます。[ 11 ] 3 つの主要な照明コンポーネント (およびそれに続く相互作用の種類) は、拡散光、環境光、および鏡面反射光です。[ 11 ]

拡散照明(または拡散反射)とは、均一な量の光が光散乱面と相互作用することによって物体を直接照らす現象です。[ 4 ] [ 12 ]光が物体に当たると、物体の表面特性と入射光の角度に応じて反射されます。 [ 12 ]この相互作用が物体の明るさの主な要因であり、その色の基礎となります。[ 13 ]
周囲光は方向性を持たないため、すべての表面に均一に作用し、その強度は周囲光源の強度と物体の表面材料の特性、すなわち周囲反射係数によって決定されます。[ 13 ] [ 12 ]
鏡面反射光コンポーネントは、オブジェクトに光沢とハイライトを与えます。[ 13 ]これは、環境内の他のオブジェクトがこれらの反射で見えないため、ミラー効果とは異なります。[ 12 ]代わりに、鏡面反射光は、鏡面反射光コンポーネントの強度と表面の鏡面反射係数に基づいて、オブジェクト上に明るいスポットを作成します。[ 12 ]
照明モデルは、光の物理法則に基づいて光が近似されるレンダリングされた環境で照明効果を再現するために使用されます。 [ 14 ]照明モデルがなければ、自然界で発生する照明効果を再現するには、コンピュータグラフィックスにとって実用的ではないほどの処理能力が必要になります。[ 14 ]この照明、または照明モデルの目的は、シーン内のさまざまな表面のすべてのピクセルの色または反射される光の量を計算することです。[ 15 ]照明モデルには、オブジェクト指向照明とグローバル照明の 2 つの主要なものがあります。[ 16 ]オブジェクト指向照明は各オブジェクトを個別に考慮するのに対し、グローバル照明はオブジェクト間で光がどのように相互作用するかをマッピングするという点で異なります。[ 16 ]現在、研究者は、光が環境とどのように相互作用するかをより正確に再現するためのグローバル照明技術を開発しています。[ 16 ]
オブジェクト指向照明(局所照明とも呼ばれる)は、単一の光源を単一のオブジェクトにマッピングすることによって定義されます。[ 17 ]この手法は計算が高速ですが、現実のシーンで光がどのように振る舞うかを完全に近似することは難しい場合が多いです。[ 17 ]特定のオブジェクトの鏡面反射光、拡散光、および環境光の組み合わせを合計することによって近似されることがよくあります。[ 14 ]主要な局所照明モデルは、Phong照明モデルとBlinn-Phong照明モデルの2つです。[ 18 ]
最も一般的な反射モデルの 1 つは Phong モデルです。[ 14 ] Phong モデルでは、各ピクセルの強度は拡散光、鏡面反射光、および環境光による強度の合計であると仮定しています。[ 17 ]このモデルでは、オブジェクトから反射する光の角度を使用して鏡面反射光を決定するために、ビューアの位置を考慮します。[ 18 ]角度のコサインが取られ、設計者が決定したべき乗に上げられます。[ 17 ]これにより、設計者はオブジェクトにどのくらいの幅のハイライトが必要かを決定できます。このため、べき乗は光沢値と呼ばれます。[ 18 ]光沢値は表面の粗さによって決定され、鏡の場合は無限大、最も粗い表面の場合は 1 になる可能性があります。[ 17 ]このモデルは、ビューアの視点に基づいて、よりリアルな白いハイライトを作成します。[ 14 ]
Blinn-Phong照明モデルは、物体の光沢に基づいて物体にハイライトを作成するために鏡面反射光を使用する点でPhongモデルに似ています。[ 19 ] Blinn-Phongモデルは、光源とビューアの中間にある物体の表面に垂直なベクトルを使用する点でPhong照明モデルとは異なります。[ 14 ]このモデルは、正確な鏡面照明と計算時間の短縮のために使用されます。[ 14 ]反射光ベクトルの方向を見つける計算は、中間法線ベクトルを計算するよりも複雑な計算であるため、処理に要する時間が短くなります。[ 19 ]これはPhongモデルに似ていますが、異なる視覚結果を生み出し、同様の鏡面反射を生成するために鏡面反射指数または光沢を修正する必要がある場合があります。[ 20 ]
グローバルイルミネーションは、シーン全体を光が伝わる様子を計算するため、ローカルイルミネーションとは異なります。[ 16 ]この照明は、光線がシーン全体で散乱、反射、無限に跳ね返るという物理学と光学に大きく基づいています。[ 21 ]グローバルイルミネーションはローカルイルミネーションよりも多くの計算能力を必要とするため、現在も活発な研究が行われています。[ 22 ]

光源は、吸収、反射、または屈折によってさまざまな表面と相互作用する光線を放出します。[ 3 ]シーンの観察者は、自分の目に届く光源をすべて認識します。観察者に届かない光線は認識されません。[ 23 ]すべての光源から光線を放出し、それぞれの光線がシーン内のすべてのオブジェクトとどのように相互作用するかを計算することで、これをシミュレートできます。[ 24 ]しかし、このプロセスは、ほとんどの光線が観察者に届かず、処理時間を無駄にするため非効率的です。[ 25 ]レイトレーシングは、このプロセスを逆にして、観察者からビューレイを送信し、光源に到達するまでどのように相互作用するかを計算することで、この問題を解決します。[ 24 ]この方法は、処理時間をより効果的に使用し、自然光を忠実に模倣した光シミュレーションを生成しますが、レイトレーシングは、観察者の目に届く光の量が多いため、依然として高い計算コストがかかります。[ 26 ]
ラジオシティは、周囲の物体と光源から放出されるエネルギーを考慮に入れます。[ 16 ]観察者の位置と向きに依存するレイトレーシングとは異なり、ラジオシティ照明は視点の位置に依存しません。[ 25 ]ラジオシティはレイトレーシングよりも多くの計算能力を必要としますが、一度だけ計算すればよいので、静的な照明のシーンではより有用です。[ 27 ]シーンの表面は多数のパッチに分割できます。各パッチは光を放射し、他のパッチに影響を与えます。各パッチの最終的なラジオシティを取得するには、多数の方程式を同時に解く必要があります。[ 26 ]
フォトンマッピングは、レイトレーシングよりも効率的な2パスグローバルイルミネーションアルゴリズムとして作成されました。[ 28 ]これは、光源から放出されたフォトンを一連の段階を通して追跡するという基本原理です。[ 28 ]最初のパスでは、光源から放出されたフォトンが最初のオブジェクトで反射します。次に、フォトンの位置のマップが記録されます。[ 22 ] フォトンマップには、反射または吸収される各フォトンの位置と方向の両方が含まれます。[ 28 ] 2番目のパスはレンダリングで行われ、さまざまな表面の反射が計算されます。[ 29 ]このプロセスでは、フォトンマップはシーンのジオメトリから分離されるため、レンダリングを個別に計算できます。[ 22 ]コースティクスをシミュレートでき、ビューやオブジェクトが変更されても前処理ステップを繰り返す必要がないため、これは有用な技術です。[ 29 ]
ポリゴンシェーディングは、 3Dモデルを2Dピクセル画像として描画するラスタライズ処理の一部です。[ 18 ]シェーディングは、3D モデルの幾何学的属性と連携して照明モデルを適用し、結果の画像の各フラグメント(またはピクセル) で照明がどのように表現されるべきかを決定します。[ 18 ] 3D モデルのポリゴンには、シェーディング処理に必要な幾何学的値が格納されます。[ 30 ]この情報には、頂点位置値と表面法線が含まれますが、テクスチャやバンプマップなどのオプションのデータも含まれる場合があります。[ 31 ]



フラットシェーディングは、ポリゴンごとに均一な照明と色を適用するシンプルなシェーディングモデルです。[ 32 ] 1 つの頂点の色と法線を使用して、ポリゴン全体のシェーディングを計算します。[ 18 ]フラットシェーディングは、レンダリングごとに各ポリゴンの照明を一度だけ計算すればよいため、コストが低くなります。[ 32 ]
グーローシェーディングは、各ポリゴンの内部の値が頂点値のブレンドとなる補間シェーディングの一種です。[ 18 ]各頂点には、周囲のポリゴンの表面法線の平均で構成される独自の法線が割り当てられます。[ 32 ]次に、その頂点の照明とシェーディングは、平均法線と選択した照明モデルを使用して計算されます。[ 32 ]このプロセスは、3D モデルのすべての頂点に対して繰り返されます。[ 2 ]次に、頂点間のエッジのシェーディングは、頂点値の間を補間することによって計算されます。 [ 2 ]最後に、ポリゴンの内部のシェーディングは、周囲のエッジ値の補間として計算されます。[ 2 ]グーローシェーディングは、3D モデルの表面全体に滑らかな照明効果を生成します。[ 2 ]
フォンシェーディングは、グーローシェーディングと同様に、頂点値をブレンドしてポリゴンをシェーディングする別のタイプの補間シェーディングです。[ 21 ]両者の主な違いは、フォンシェーディングはシェーディングを計算する前に、ポリゴン全体にわたって頂点法線値を補間することです。 [ 32 ]これは、既にシェーディングされた頂点値をポリゴン全体にわたって補間するグーローシェーディングとは対照的です。[ 21 ]フォンシェーディングは、ポリゴン内のフラグメント(ピクセル)の法線を計算した後、そのフラグメントをシェーディングするライティングモデルを適用できます。[ 32 ]このプロセスは、3D モデルの各ポリゴンがシェーディングされるまで繰り返されます。[ 21 ]

コースティクスは、湾曲した界面を持つ媒質内で反射および屈折した光、または湾曲した表面で反射した光の効果です。[ 33 ]これらは、集中した光のリボンとして現れ、水面やガラス面を見たときによく見られます。[ 34 ]コースティクスは、コースティクステクスチャ マップを影響を受けるオブジェクトのテクスチャ マップとブレンドすることで、3D グラフィックスに実装できます。 [ 34 ]コースティクス テクスチャは、コースティクスの効果を模倣するようにアニメーション化された静止画像、または空白の画像へのコースティクスのリアルタイム計算のいずれかです。 [ 34 ]後者はより複雑で、3D レンダリングの環境を通過する光子をシミュレートするために逆方向レイ トレーシングが必要です。 [ 33 ]フォトン マッピング照明モデルでは、モンテ カルロサンプリングがレイ トレーシングと組み合わせて使用され、コースティクスによって引き起こされる光の強度を計算します。[ 33 ]
反射マッピング(環境マッピングとも呼ばれる)は、レイトレーシングを使用せずに反射効果を作成するために 2D 環境マップを使用する技術です。 [ 35 ]反射するオブジェクトの外観は、ビューア、オブジェクト、および周囲の環境の相対的な位置に依存するため、グラフィックス アルゴリズムは、これらの要素に基づいてオブジェクトに色を付ける方法を決定する反射ベクトルを生成します。[ 36 ]周囲を表現するために完全にレンダリングされた 3D オブジェクトではなく 2D 環境マップを使用することで、オブジェクトの反射は、シンプルで計算コストの低いアルゴリズムを使用して決定できます。[ 35 ]
パーティクルシステムは、火、流れる液体、爆発、動く髪の毛など、混沌とした複雑なイベントをモデル化するために、小さな粒子の集合体を使用します。 [ 37 ]複雑なアニメーションを構成する粒子はエミッターによって分配され、エミッターは各粒子に速度、寿命、色などの特性を与えます。[ 37 ]時間の経過とともに、これらの粒子は、効果に応じて移動したり、色を変えたり、他の特性を変化させたりする場合があります。[ 37 ]通常、パーティクルシステムは、エミッターが各粒子に与える初期特性などにランダム性を取り入れて、効果をリアルかつ非均一にします。[ 37 ] [ 38 ]