メニュー
目次
コンピュータグラフィックスの基礎
コンピュータグラフィックスとは
コンピュータグラフィックス(Computer Graphics: CG) とは,コンピュータを用いて生成された画像・映像データのことであり,そのための技法を指すこともある.実際の物体をカメラで撮像した画像に対する画像処理とは区別される.仮想の画像も生成できることから,映画や芸術の分野でも使用されることが多い.
CGの利用目的として,指定テキストのマルチメディアビギナーズテキストにあげられているものは次の通りである.
- 映像製作(映画,テレビ番組,プレゼンテーションなど)
- 芸術(アート)
- ゲーム
- 科学的シミュレーション結果の可視化,教育目的の可視化(例: モータの構造や動作など)
- 歴史的建造物の復元,景観シミュレーション,環境シミュレーション,室内インテリア
- バーチャルリアリティ
ハリウッド映画では100億円規模の予算で製作されることも珍しくない.古くは,数千人規模のエキストラを使用した群集シーンや大規模なセットを構築してきたが,そうして撮影された以上のシーンをCGで作成できるようになった.CGのために,数十億円規模の予算でスーパーコンピュータを利用したCG製作を行っても,その方がコストが安く済むため,現代ではCG製作が主流となった.このような潤沢な予算をかけられるため,世界初のCG表現技法は映画製作時に開発されることも珍しくない.
2次元CG
線の式
一般的にCGといえば3次元CGの方を思い浮かべるであろうが,2次元の平面上だけで製作された画像はCGの基本的な部分の理解に役立つ.
話を2次元に限定するため,何かの「線」を表現するには,次の陽関数が使用できる.
y=f(x)
数学ではよく利用されるものの,CGの世界では陰的表現と呼ぶ形式を利用することも多い.
F(x,y)=0
例えば円の方程式などがある.半径4の円の場合
x2+y2=4
座標系
これらはx,yという直交するふたつの軸に対する値によって平面上の座標を表現している.これを直交座標系(Rectoangular coordinate system),あるいはデカルト座標系(Cartisian coordinate system)と呼ぶ.これに対してx,yに次のパラメータを設定した極座標(Polar cooridanta system)もよく用いられる.
x = r・cosΘ,y = r・sinΘ
逆変換は
r = √(x2+y2), Θ=tan-1(y/x)
極座標系表示では,半径4の円は単に
r=4
となる.
直線描画
方程式で表現された線分を,ビットマップ画面に対応させる作業のことを俗にラスタライズと呼ぶ.ビットマップ画面は細かい碁盤状であるため,斜めに傾いた直線を描画するためには,実際には階段状の折れ線で描画することになる.この階段をどのように作るのかを決定するのに,有名なアルゴリズムが,ブレゼンハムのアルゴリズムである.端点(x1,y1)と(x2,y2)の間に線を引くとすると次のように行う.
1. 端点(x1,y1)と(x2,y2)で,xの差とyの差から大きい方を選択. 2. 仮にxの方が大きいなら,変化率d=(y2-y1)/(x2-x1)で理想的な直線は「y=dx+x1」. 3. xをx1からx2になるように1画素ずつずらす.現在値を(xp,yp)と呼ぶ. 4. 横位置がxp+1のとき,2.式の理想のyを計算 5. それがypとyp+1のどちらに近いのか選択し,yp+1とする. 6. x1からx2までの途中位置のy座標を決定.
階段状に直線を描画するため,直線の角度によってその階段のギザギザ(ジャギなどとも呼ばれる)が目出つ.これは,画像におけるエイリアスである. 音声の場合には,本来の周波数よりも低い周波数の音として感じられるが,直線のエイリアスは周期的に生じる段(別方向への短い線分)として知覚される.こ れを目立たなくせさる処理のことをアンチエイリアシングと呼ぶ.
アンチエイリアシングには様々な方法が考案されたが,もっとも単純な方法は,画像処理におけるスムーズ処理と同様に画像をぼかすことで行われるものである.ただし,それできれいに見えるかどうかは画像次第であり,必ずいつもうまくいくわけではない.
ラスタライズと合わせて,「ラスタ形式」「ラスタ」という言葉が用いられる.本来,「ラスタ」とは水平走査線の意味である.しかし,いつのまにか,これが本来の意味と離れて「ビットマップ形式」の意味を持つようになった.
多角形の塗りつぶし
このポリゴンを塗りつぶす処理が,スキャンコンバージョンアルゴリズムである.考え方の基本は,上から水平線で順に走査し,多角形の辺を確認しながら,一ラインずつ塗りつぶしを行うというものである.このとき,境界を示す辺をアクティブリストに登録して,動的に管理を行う.
次回の3次元CGの基本単位となるポリゴンは,凸ポリゴンである.凸ポリゴンとは,すべての内角が180°を越えない多角形である.つまりくぼんだ形が一切存在せず,また孔もあいていない図形であることを示す.この凸ポリゴンであることを前提にできれば,処理をさらに高速化することが可能である.
それに対して複雑図形の塗りつぶしの場合には,再帰呼び出しなどを利用した塗りつぶしアルゴリズムが用いられる.これは,塗始めの座標の上下左右のとなりの画素が境界線でなければ,またその画素の上下左右を調べ,すべての可能な画素をしらべ尽くすことで塗りつぶしを行うものである.
曲線描画
曲線の場合,端点だけでなく通過点や制御点によって定義される.単純に十分細かい間隔で定義された通過点があるならば,その間を線分で結ぶことにより,多角形近似が可能である.
より滑らかに通過点を結ぶためには,2次式以上の曲線で近似する必要がある.ニュートン補間やラグランジェ補間が有名である.しかし,すべての通過点を結ぶ曲線の近似式を求める場合,点の数が増えれば不可能となってしまう.通常は,次のスプライン補間やベジェ補間を用いることが多い.
ある二点間だけの曲線を補間し,次の通過点に対してはまた両端の二点間だけで曲線を補間し,すべてをつなぐ方法である.こうすることで点数が増えても基本的に二点間だけの補間を連続実行するだけなので,問題とならない.実際には,二点間だけでは条件が足りないため,前後の点も含め4点で近似式を計算する.しかし,実際に線を描画するのは二点間だけとする.
フラクタル図形
フラクタル(fractal)図形とは
- 自己相似系
- 図形を拡大・縮小しても複雑さが変化しない
発見者の名をとったマンデルブロー集合,ジュリア集合などがフラクタル図形の典型例とされる.