シェーディング: shading)は、3次元コンピュータグラフィックスイラストレーションなどで明暗のコントラストで立体感を与える技法である。絵画では陰影画法と呼ぶ。単に立体に影を付ける、付影処理 (シャドーイング、: shadowing) とは異なる。

絵画技法 編集

 
シェーディングの例

紙上に絵を描く際のシェーディング(陰影画法)とは、暗い部分にはより濃く画材を使用し、明るい部分には軽く画材を使用することで、立体的に描く手法である。シェーディング技法には、直角に交わる線を間隔を変えながら多数描いて影を表すクロスハッチングなどがある。線の間隔が狭い部分は影が濃い部分となる。同様に線の間隔が広い部分は明るい部分となる。

対象物への光の当たり方を考慮してシェーディングを施すことで、紙上に奥行きがあるかのように感じられる絵を描くことができる。

コンピュータグラフィックス 編集

コンピュータグラフィックスにおけるシェーディングとは、光の角度と光源からの距離を考慮して色を変化させ、実写のような効果を得る処理を指す。シェーディングはレンダリング処理の一部である。

簡単な例 編集

シェーディングは3次元モデルの表面の色をその表面と光線の交わる角度に基づいて変化させる。

下の左の画像は、直方体を描いたものだが、どの面も同じ色で描いている。面の輪郭線も別の色で同時に描いてあるため、直方体だと分かりやすくなっている。真ん中の画像は、同じモデルを描いており、同様にどの面も同じ色である。輪郭線を描いていないため、面と面の境界が分かりにくいし、全く立体感がない。右の画像はシェーディングを施しており、より写実的でそれぞれの面も識別しやすい。

 
箱の画像。シェーディングを施していないが、面の輪郭線で立体とわかる。
 
同じ画像から輪郭線を除いたもの
 
同じ画像にシェーディングを施したもの。面によって光源との角度が違うため、色がそれぞれの面で違う。

光源 編集

 
投光照明によるシェーディング

3次元コンピュータグラフィックスでシェーディングを施す際、以下のような様々な光源を使用する。

  • アンビエントライト(環境光) - シーン内の全てのオブジェクトを等しく照らす。特に光源の位置を定めず、全体が等しい明るさになるため、シェーディングは施さない。
  • ディレクショナルライト(平行光源) - 設定した方向から平行で均一な光線を当てる。太陽光線のような非常に遠い光源を想定したもので、シェーディングは行われるが、後述する距離減衰は発生しない。
  • ポイントライト(点光源) - ある1点から光が発生し、そこから全ての方向に光線が広がっていく。
  • スポットライト - ある1点から光が発生し、設定した円錐状に光線が広がっていく。
  • エリアライト(面光源) - ある平面を設定し、そこから指定した方向に光線が広がっていく。
  • ボリュームライト - 空間内で設定した距離の範囲内だけ届く光源。

シェーディングは、これら光源とオブジェクトの表面の角度に基づいた内挿である。もちろん、1つのシーンに複数の光源を設定することができ、実際そのように制作することが多い。レンダラーは複数の光源からの光線の合成を内挿し、それにしたがって2次元の画像を生成する。

距離減衰 編集

理論的には、平行な2つの面があったとき、太陽光線のような遠距離の光源からの光の照度は等しい。たとえ一方の面がずっと離れていても照度は一定である。

下の図では、2つの直方体を異なる光源で照らしたときのシェーディングを示している。左の画像ではどちらの直方体も正面の面は同じ色になっている。右の画像では前の直方体の正面の方が若干明るい。また、床が近い部分ほど明るくなっている。右の画像の光源は光源からの距離が遠いほど光線が減衰する設定になっている。これを「距離減衰 (distance falloffあるいはdistance attenuation)」と呼び、光源を増やすことなく、より写実的な画像が得られる。

 
OpenGLレンダラーで描画した2つの箱。視点からの距離が異なるが全く同じ色で描画している。
 
「距離減衰」を実装した ARRIS CAD で同じモデルを描画したもの。視点に近い表面をより明るく描いている。

距離減衰の計算方法はいくつかある。

  • 線形(1次) - 光源との距離を x としたとき、そこに届く光の量を x に比例して減らす。
  • 2次 - 実世界での光の性質に近い。光源からの距離が2倍になると、届く光の量は4分の1になる。
  • n次 - 光源との距離を x としたとき、そこに届く光の量を 1/xn とする。
  • これら以外の関数を使うこともできる。

フラットシェーディングと滑らかなシェーディング 編集

 
フラットシェーディング補間の例

フラットシェーディング (flat shading) は3次元コンピュータグラフィックスにおけるライティング技法の一種である。オブジェクトを構成するポリゴン法線ベクトルと光源の方向との角度に基づいて面単位でのシェーディングを施すもので、色はそのポリゴン(面)を照らす光の強さにしたがって決定される。リアルタイム処理系など、高速なレンダリングが必要で、より高度なシェーディング技法が使えない場合に利用される。しかしグラフィックスチップ上でのハードウェアT&Lおよびプログラマブルシェーダーが一般化して以降は、すでにローエンド品やモバイル向けであっても非常に高速に滑らかなリアルタイムシェーディングが可能であり、性能的な理由でフラットシェーディングを使うことは少なくなっている。

フラットシェーディングの欠点は、滑らかな曲面を表現したい場合でも小さな平面が並んでいるような見た目になる点である。逆に角ばった物体を描きたいなら、そのような見た目が好ましい場合もある。ソリッドモデル製作中はフラットシェーディングの方が形状が見やすいので、よく利用される。より進んだ写実的なシェーディング技法としては、グーローシェーディングフォンシェーディングがある。非写実的なシェーディング技法としては、陰影の階調が段階的に変わるセルアニメーションのようなトゥーンシェーディングが挙げられる。

関連項目 編集

外部リンク 編集