カメラでの撮影とCG

CG画像処理

映画やゲームに登場する、現実には存在しない風景や人物。それらの多くは、コンピュータの中でゼロから作り出された画像です。
ここでは、そうした画像がどのように生み出されるのか、その全体像を、私たちにとって身近な「カメラでの撮影」になぞらえて見ていきます。

CGとは何か
CG

コンピュータを使って画像を作り出す技術をCG(コンピュータグラフィックス)といいます。

CGでは、写したい対象や、それを照らす光、対象を写すカメラなどを、すべてコンピュータ上のデータとして用意します。
そして、それらのデータをもとに計算を行い、仮想的な世界の光景を1枚の画像として生成します。

つまりCGとは、現実の風景をカメラで写し取る代わりに、コンピュータの中に作った世界の光景を、データから画像として作り出す営みなのです。

スマートフォンで目の前の景色を撮影すると、レンズを通った光がそのまま写真になります。これは現実の光景をそのまま写し取る「撮影」です。
一方、映画やゲームに出てくる架空の街や生き物の映像は、現実には存在しない世界を、コンピュータの中のデータから計算して作り出した画像です。こちらが「CGによる生成」にあたります。

デジタルカメラモデル
CG

CGの仕組みは、現実のカメラでの撮影過程を思い浮かべると理解しやすくなります。

現実の撮影では、レンズの前にある被写体に光が当たり、その光がレンズを通ってカメラの内部に届き、像として記録されます。
CGでは、この一連の流れをコンピュータの中に置き換えます。被写体の代わりに3次元のデータを置き、現実のカメラの代わりに仮想的なカメラを置いて、レンズに届くはずの光を計算で求めて画像にするのです。

このように、カメラでの撮影過程をCGの作成過程に置き換えたものをデジタルカメラモデルといいます。

現実の撮影とCGの作成は、おおまかに次のように対応しています。

  • 被写体 ↔ 形状などのデータで表された仮想の被写体
  • カメラ・レンズ ↔ コンピュータ内の仮想的なカメラ
  • レンズが結ぶ像 ↔ 計算によって求められる画像

CGを学ぶうえでカメラの仕組みが手がかりになるのは、CGがこのデジタルカメラモデルにもとづいて画像を作り出しているからです。

CGを構成するデータ
CG

デジタルカメラモデルでは、被写体・カメラ・光のすべてをデータとして扱います。
ここでは、それぞれがどのようなデータなのかを見ていきます。

被写体のデータ

CGの被写体は、現実の物体ではなく、コンピュータ上のデジタルデータとして表されます。
その中でも、被写体の形を表すデータを形状モデルといい、形状モデルを作る作業をモデリングといいます。

カメラのデータ

被写体を写すカメラも、データで表されます。
カメラがどこにあるか(位置)、どの方向を向いているか(向き)、どれくらいの範囲を写すか(画角)といった情報を数値として与えます。画角は、現実のカメラでいうレンズの焦点距離に対応する値です。

レンズの焦点距離とは、レンズから、光が1点に集まる位置(焦点)までの距離のことです。
焦点距離が長いほど写る範囲は狭くなり、遠くのものが大きく写ります(望遠)。逆に短いほど広い範囲が写り、近くのものまで画面に収まります(広角)。

光のデータ

被写体がどう見えるかは、光によって決まります。そのため、被写体に当たる光が、どの方向から、どれくらいの強さで届くかをデータとして与えます。
さらに、被写体が当たった光をどの程度反射するか?の計算結果も、被写体ごとのデータとして扱います。これによって、物体の色や質感の見え方が決まります。

このように、CGの世界は被写体・カメラ・光という3種類のデータから組み立てられています。次は、これらのデータからどのように画像が作られるのかを見ていきます。

ビューイングパイプラインとレンダリング
CG

被写体・カメラ・光のデータがそろうと、カメラにどのような像が写るのかを計算できるようになります。
この計算は、いくつかの処理を順番に積み重ねていく形で行われます。この一連の処理をビューイングパイプラインといいます。

ビューイングパイプラインの中でも中心となるのが、3次元の形をもった被写体を、2次元の画像の上の像へと変換する処理です。これを投影といいます。
立体的な世界を平面の画像に写し取るという、カメラがレンズで行っていることを、コンピュータは計算で行うわけです。

また、光が被写体に当たってどのように反射し、最終的にどれだけの光がカメラのレンズへ入ってくるのかも計算で求めます。この、光の反射のしかたを計算する仕組みをシェーディングモデルといいます。シェーディングモデルによって、物体の明るさや色合い、質感の見え方が決まります。

こうして、被写体・カメラ・光のデータから1枚の画像を作り出す処理全体をレンダリングといいます。
つまりレンダリングとは、デジタルカメラモデルにもとづいて「コンピュータの中の世界を撮影する」ことだと言えます。

アナログ画像からデジタル画像へ
CG画像処理

ここで、もう一度現実のカメラに目を向けてみます。

現実のカメラでは、レンズを通った光がカメラの内部で像を結びます。このとき結ばれる像は、光の強さが連続的に変化するアナログ画像です。
カメラはこの像を、撮像素子(イメージセンサ)によって読み取り、コンピュータが扱えるデジタル画像として保存します。

CGでも同じことが起こります。
レンダリングによって作られる画像は、最終的にデジタル画像として生成されます。現実のカメラが「アナログの像 → デジタル画像」という流れをたどるのに対して、CGははじめからデジタル画像を計算で作り出す、という違いがあるだけです。

そして、こうして得られたデジタル画像に対して、明るさや色を整えるなどの加工を加え、目的の1枚に仕上げていきます。デジタル画像を解析したり変換したりするこうした処理を画像処理といいます。

CGと画像処理は、どちらもデジタル画像を扱いますが、向きが異なります。
CGはデータから新しい画像を「生成」する技術であるのに対し、画像処理はすでにある画像を入力として受け取り、それを「解析・変換」する技術です。