コンピュータによるイメージ生成

いわゆるCG(コンピュータ・グラフィックス)は、従来の画材によるイメージ生成とは異なり、「数値データから自動的にイメージが生成される」という特徴 をもっています。

数式がつくりだす抽象的なパターン、生物・物理・化学におけるミクロ・マクロな世界のふるまい、カメラでは撮影不可能な架空の世界の構築など、かつて視覚 が体験した事のないイメージの生成が可能になりました。

CGの歴史は、サザランド(1963)によるスケッチパッド(対話型の描画ツール)の開発にはじまり、その後、図形の描画のための各種アルゴリズムの確立 と、それに関連するハードウエアの進歩が相まって、現在では、建築・工業・出版・芸術・娯楽映像・ゲーム・Webと、わずか40年程度で 「もはやできな いことはない」 という域に達しています。
|  PAGE TOP |


形状記述 によるイメージ生成

形をつくるデータ(位置・サイズ・角度・色など)を記述する
  →人間と機械が対話的に形をつくっていく

これは、皆さんが普通にIllustratorや3Dのソフトを使用して行うイメージ生成のプロセスに相当します。

頭で思い描いた形を、マウス等を用いて対話形式でコンピュータに入力していく。
こうしたタイプのCGを形状記述型のCGと言います。
このタイプのものは、従来の絵画や彫刻の場合と同様の思考方法でモノづくりを行うもので、絵筆をマウスに置き換えたようなものと言うことができます。最近 ではそのツールも非常に身近なものとなっています。

ペイント系ツール
画面を画素(ピクセル)の2次元的な集合と考え、各画素に色情報をもたせるかたちで像の生成を行います。ブラシや消しゴムを使う感覚で利用できるものです が、写真などの静止画を取り込んで様々な画像処理を行える点は、従来の画材にはない特徴です。
ペイント系ツールの上では、絵画も写真も区別なく同質のデータとして扱われます。

ドロー系ツール
画面を図形(オブジェクト)の集合と考え、図形単位に頂点座標と結線情報および色彩などの属性情報をもたせるかたちで画面を構成するものです。
データの性質上、ペイント系のツールのような画像処理はできませんが、文字も含むすべての図形要素について、拡大・縮小における画質の劣化がないため、印 刷物を作成する場合の最終的なツールとしての利用価値は高いものです。

3DCGツール
3次元すなわち(x,y,z)の軸をもつ架空の世界でデータを定義し、その形状を代数的な計算によって2次元のスクリーンへ投影して表示するものであす。
3次元空間内でのデータの移動・回転・拡大・縮小、視点をカメラの位置へ移動する視野変換、隠線・隠面の消去、光源・物体・視点の関係に基づく影と明るさ の計算、テクスチュア画像のマッピングなど様々な計算プロセスを経由して、最終的には架空の世界の写実的なイメージが生成されます。
さらに、その位置・回転・サイズなどのデータを時間というパラメータにしたがって変化させれば3DCGアニメーションができあがります。
その制作は従来のセルアニメーションの場合と同様のキーフレーム法、すなわち、動きのキーポイントとなるフレームのみを定義し、その中間部分は計算で補間 していくという方法が多く採用されています。
3DCGアニメーションには、全体の動きを骨格の動きとして定義するスケルトンアニメーション、関節の回転角に制限を与えて先端から中心へ(指先から肩 へ)のなめらかな関節の動きを定義するインバースキネマティクス(逆運動学)、さらに、対話型操作では、定義が難しい複雑な動きを、実際の人間に取り付け たセンサーから取り込むモーションキャプチャなど、キャラクターに振り付けを行うための様々な技法が用意されています。
|  PAGE TOP |



手続き記述によるイメージ生成

 形をつくる手順(計算規則)を記述する
 →計算に必要なパラメータを与えると、造形処理は自動的になされる

これは、あまり馴染みがないかもしれませんが、例えば、Photoshopのフィルターの雲模様など、乱数によってパターンを自動生成するプロセスなどに 相当します。

コンピュータ・グラフィックスには、何らかの造形的規則と生成パラメータを与えて、あとは機械に描き出してもらうという発想のものがあります。
数学者の(美的)実験から発見されたジュリア集合やマンデルブロ集合といった
フラクタル図形もその典型で、単純なプログラムで生成されているにも関わらず、
無限の奥行きをもったディテールで美しい秩序を表出させます。

同様の発想で、剰余や三角関数のもつ周期性を利用した幾何学的な造形も、
そのプログラムに何らかの工夫をこらすことで思いがけない変化を生むことがあり、このような数式という生成規則による造形も、その応用は無限の可能性を もっていると言えます。

こうした発想はもちろん音楽の領域でも応用されていて、
語の生成(作詞)や旋律・和声の生成(作曲)に規則を与えたうえで、ランダムに
複数のサンプルを自動生成し、その中から気に入ったものを選ぶ、という発想は
コンピュータの登場以来一つの作曲の手法として現実に利用されています。

さて、こうした手続記述型の発想法には大きく二つのタイプがあります。ひとつは
「全体を統一的な生成規則で描く」 というもので、もうひとつは
「要素の相互関係にのみ規則を与えて、複数の要素から成る全体を描く」というものです。

前者の典型的な例は数理曲線や再帰図形などですが、
これらは一般に 「いかにも機械的で表情に欠ける」という性格をもつため、
生成の過程で若干の乱数を加えることで表情を豊かにするという方法をとることが多いようです。この乱数は先の話で言うと対称性を破る存在で、例えば単純な 2分木の再帰図形でも、適度な乱数で十分豊かな表情を醸し出します。

後者は、いわゆる複雑系の現象のシミュレーション、
例えばフォン・ノイマン(1957)のセル・オートマトン、
クレイク・レイノルズ(1989)のボイド(鳥もどきのアニメーション)などに
その典型を見ることができます。
多くの要素が絡みあう複雑な系(Complex System)において、我々の目に面白く見える部分というのは、秩序の領域と混沌の領域がせめぎあう「カオスの縁」と呼ばれる領域です。
たばこの煙に例えて言えば、たばこの先から一直線に上昇している部分が(決定論的に記述される)秩序の領域で、天井に拡散した部分が(確率論的に記述され る)混沌の領域。そして、その中間にある煙の「乱れそめ」の部分が(カオス理論の対象となる)見ていて面白い領域です。
コンピュータで要素間の関係に規則を与えて、そのふるまいを観察した場合も同様で、安定した秩序に落ち着くか、あるいは無秩序な撹乱になるか、あるいはそ の中間的状況として複雑で有機的な形を次々に展開するかになるのですが、もちろん最後の状態が見ていて面白いものであり、造形的にも応用が効きやすいもの といえます。
ただしこの場合の条件の与えかたは難しく、その試行錯誤はゲーム感覚ですらあります。

いずれにせよ、こうした発想法の最大の特徴は、「何ができるかは、結果を待つしかない」という点と「数多く生産させて、美的に良いとおもわれるものを選択 する」という作品に対する姿勢(進化論的な発想)で、これは機械(特にコンピュータ)が 登場する以前にはできなかった発想です。もちろん自然界にある偶然の産物のなかから面白い部分を抽出するという発想は古くからあるものかもしれませんが、 偶然を機械的に制御しながら面白い形が出来るまでひたすら作らせるというのはまったく新しい発想と言えるでしょう。

|  PAGE TOP |



手続き記述が作る造形の具体例


反復(リピート)が作るパターン

一次元の反復によるパターン生成
for( x=0; x<width; x=x+step ){
    /*ここに「描画命令」を記述*/;
}

二次元の反復によるパターン生成

for( y=0; y<height; y=y+step ){
    for( x=0; x<width; x=x+step ){
        /*ここに「描画命令」を記述*/;
    }
}



数理曲線総論


描画空間の座標(x,y,z)を、高次の多項式や三角関数を用いてパラメトリックに表現すると、複雑な幾何学模様をつくることができます。縦方向の振動と 横方向の振動が合成してできるリサージュ図形などがその典型です。



sinとcosによる数理曲線(反復計算が作る秩序)


正円を描く

x ← cos θ
y ← sin θ
座標 ( x, y )に点を打つ(画素に色を付ける)
θをわずかに増やす

以上を繰り返すと画面に円図形が描かれます。

for( th=0; th<2*PI; th=th+0.01 ){
    x = R * cos(th);
    y = R * sin(th);
    PIXEL( x+CX, CY-y );
}
※PI:円周率  R:半径  CX,CY:画面の中心
  PIXEL()は点を打つ関数とする

リサージュ図形を描く

for( th=0; th<2*PI; th=th+0.01 ){
    x = R * cos( FX * th );
    y = R * sin( FY * th );
    PIXEL( x+CX, CY-y );
}
※FX,FYはそれぞれ横方向・縦方向の振動数

超動リサージュ図形を描く
x = R1*cos(FX1*th) + R2*cos(FX2*th) + R3*cos・・
のように複数の振動が重ね合わさった状態


正葉線を描く

for( th=0; th<2*PI; th=th+0.01 ){
    r = R * sin( F * th );
    x = r * cos(th);
    y = r * sin(th);
    PIXEL( x+CX, CY-y );
}


右はリサー ジュ、正葉線などを組み合わせて生成したパターンです。



剰余が作る形(線的な周期性)

 
k ← n を 3 で割った余り(剰余)
k の値を色の値として図形を描く
n ← n + 1

以上を繰り返すと、画面には
 012012012012・・と周期的な
色の変化が現れます。

for( y=0; y<height; y=y+step ){
    for( x=0; x<width; x=x+step ){
        c = ( x * y * y ) % 256;
        SetPixel(hDC,x,y,RGB(c,c,c));
    }
}



乱数(対称性を破る契機として)


数式がつくる形は規則的で冷たいという印象を受ける
そのような場合は

A ← A × (  1 +  乱数(1より小さな範囲の) )

などとして、計算結果 ( A ) にわずかにランダムな要素を混ぜる
ことで、変化を加えることができます。

一様乱数の生成例

x = rand() % 640;       /* 0-639 */
y = rand() % 200 + 140; /* 140-339 */
※ % は剰余計算(割った余りを求める)

正規乱数の生成例

s = 0.0;
for( i=0; i<12; i++) s = s + RAND();
s = s - 6;
/* s : 平均0 標準偏差1の正規乱数 */
※ RAND()は、[0.0 , 1.0 ) であるとする。


フラクタル図形総論

部分の形が全体の縮小形になっているというような「自己相似性」をもつ図形をフラクタル図形といいます。樹木・雲模様・海岸線の形状など、いずれの形も、 基本となる「図形を描く」プログラムをその図形の一部を描く部分に再帰的に利用することで生成することができます。例えば「一本の幹の先端に二本の枝を描 く」というプログラムを、その枝を描く部分に適用すれば、枝の先端から二本の子枝ができる。これを子枝・孫枝:と繰り返せば、枝の生い茂る木ができるとい うしくみです。
フラクタル図形は、きっかけとなる手順やデータが単純であっても、できあがる全体は非常に複雑で、またわずかな初期値の違いが最終的な結果を大きく左右す るために、最終的なイメージは予測がつけにくい存在です。
このようなシステムを一般に「複雑系(Complex System)」と言います、実は、我々生命体を含む多くの自然現象がそのようなふるまいをしているのです。
要素単位で見れば単純な規則でも、複数の要素が影響しあうと非常に複雑になります。膨大な計算を必要とするものであり、コンピュータの存在無くしては、こ のようなイメージには出会えません。



フラクタル図形(セルオートマトン)


生成規則の1例
「親の世代の左と右が01または10のとき、子は1となる、逆に00または11のときは子は0となる」

1行目(ご先祖) 00001000010000100
2行目(2代目) 00010100101001010
3行目(3代目) 00101011000110001
4行目(4代目) 01000011101111010
   :         :
この01並びを模様として描くと複雑な3角形のパターンができます。





フラクタル図形(再帰アルゴリズムがつくる図形)


生成規則の1例

『枝を描く』という命令が

1)枝を描くと同時に
2) 先端左に小『枝を描く』
3) 先端右に小『枝を描く』

という処理内容であれば、
枝が小枝を、小枝がさらにその小枝を描くことになり(一定限度でストップ)、
これを幹を最初の枝としてスタートすれば、結果的に右図のような樹形になります。


フラクタル図形(マンデルブロ集合・ジュリア集合)


マンデルブロ集合

Zn+1 ← Zn2 + C
n ← n + 1

この計算を Z0 = 0 から1定回数繰り返すと、定数Cの値によって発散する場合と、
発散しない場合があり、発散しない場合のCの位置を黒とすると右図のような図形になります。

ただし、ZとCは複素数( a + bi )で、
画面も縦を虚数軸、横を実数軸とした「複素平面」です。


ジュリア集合  

マンデルブロ集合と同様の計算を、一定のCの値について、 様々なZ0から繰り返すと、Z0の位置によって発散する場合と、
発散しない場合があり、発散しない場合のZ0の位置を黒とすると右図のような複雑な図形になります。



カオス図形


初期位置
P0 ( x0 , y0 )を与えて

xn+1 ← f( xn,yn,a)
yn+1 ← g(xn,yn,a)
n ← n+1

という漸化式を繰り返すと、計算式の与え方次第で、1.収束 2.振動 3.発散 4.非周期的振動
のいずれかになります。
この4番目の場合が、カオス図形(うごめく秩序)です。

|  PAGE TOP |


補足:電気・電子的手段による音の生成


さて視覚情報における「CG」に相当するものとして、聴覚情報における電気・電子的な情報の生成器、つまりシンセサイザーのような電子楽器を用いた音の生 成について、余談として触れておきましょう。

ここではまず、その音色を特徴付ける二つの要素について概説する必要があります。一つはスペクトルパターン、もう一つは時間経過パターンです。

ま ずはじめに「スペクトルパターン」すなわち「周波数分布」ですが、これは、楽器の音色を特徴づける複数の倍音(基本周波数の整数倍の音)をどのように分 布構成させるかという問題です。これをコントロールするには、原信号の変調の仕方で倍音の出方を制御(FM音源など)してもよいし、単純な正弦波発信器 を複数並べて加算制御、あるいは豊富な倍音をもつ信号から成分を減算制御しても制御できます。要は、各倍音成分の発振強度が調整できさえすれば、様々な音 色が作れ るのです。
ただ実際には、非整数倍の成分が音色を特徴付ける場合も多いため、より個性的な音作りをするには、わずかにチューニングを狂わせた倍音などを 合成する必要もあります。さらに、ドラムのような「非楽音」の場合は、連続スペクトル、すなわち「楽音」のように倍音が等間隔に並ぶ離散的スペクトルとは 異な る音色が必要で、その生成には発振音を変則的に変調するなどの工夫が必要です。 

一方の「時間経過パターン」ですが、これは、音の鳴 り始めから鳴り終わりまでの音量(厳密には音程や音色も含む)の時間的な変化の問題です。音の立ち上がり、減衰の早さ、余韻の残り方などもその「音」を 特徴付ける重要な要素で、例えばピアノの音を真似ようとした場合、単に倍音構成を真似るだけでなく、特に音の立ち上がり部分の倍音構成の時間変化パ ターンを上手く真似ないと「ピアノらしい」音にはなりません。

シンセサイザー 

では、電気・電子的に音を生成する楽器の代表であるシンセサイザー(音を総合するという意味)について、その基本的な構造と発音の仕組みを見てみましょ う。
も ちろん実際の楽器ごとに操作の詳細は異なりますが、基本的なところは同じで、そこには発振器(Oscillator) ・フィルタ(Filter) ・増幅器(Amplifier)の3つのブロックがあって、発振器から出た様々な倍音を含む信号が、フィルタによって加工処理(一般的には通過制限)さ れ、最後に増幅されて出力されるという流れになっています。

その際、それぞれのブロックにはEG(Envelope Generator) による時間経過パターンの制御がかかり、例えば発振器にかかれば音程(Pitch)の時間変化、フィルタにかかれば波形(Wave Form)の時間変化、増幅器にかかれば音量(Amplitude)の時間変化というように音を制御できます(それぞれを PitchEG FilterEG AmplitudeEG といいます)。

このEGは一般にADSRという四つの時間区分を用いるもので、A (Attack)は立ち上がり 、D(Decay)は減衰、S(Sustain)は伸び、 R(Release) は残響と、それぞれの設定によって、音程・波形・音量それぞれの時間経過パターンが制御されます。

さらにLFO(Low Frequency Oscillator)がそれぞれのブロックにかかることで、ヴィブラート、ワウ、トレモロに相当する効果をかけることも可能で、以上のすべての要素の総 合的な制御によって、あらゆる自然楽器のシミュレーションはもちろん、自然楽器では生成できない音も加工生成することが可能となるのです。
 
か つてアナログ回路しかなかった時代には、発振・フィルタリング・時間経過パターンの制御、いずれも技術的に制限があったため、音のバリエーションはそう多 くはありませんでしたが、現在では原波形をサンプリングで得られることと、デジタル回路による演算加工の自由度の高さとが相まって、無限の音作りが可能に なっています
|  PAGE TOP |


「複雑系」について


この項目は書きかけです。

おそらく皆さんが、これまで数学や物理で学んだ「予測」の手法は、
以下の2つのタイプに分類されると思います。

決定論的なもの

状況の変化が、数式によって決定的に定まるもので、
誤差がほとんどない決定的な「予測」が可能です。
例 : 等加速度運動をする物体のt秒後の位置の予測

確率論的なもの

数式モデルで記述するには問題が複雑なため、
例えば100回のうち10回は、事象Aが起こる・・・
といった確率の問題として「予測」がなされます。
例:サイコロの出る目の予測


で、複雑系とは、その中間に ある現象だと
位置づけることができます。つまり、
数式による決定的な記述ができるにも関わらず、
そのふるまいが複雑で、予測がつけにくい。
また、わずかな初期値の変動が結果に大きく影響するような現象・・
ということができます。

これは、コンピュータを使って、ひたすら計算させれば
その結果をシミュレートすることが可能です。
|  PAGE TOP |


デジタル造形時代の覚書

さて、コンピュータによる画像・映像の生成について概観したのですが、便利な環境が整った今日の状況に関して、これまでの経験をふまえた私なりの「覚え書き」を残したいと思います。
私が、コンピュータというものと出会った時、それはまだ「画面」を持たない存在、つまり入力も紙(パンチカード)で、出力も紙(連続伝票)というものでした。
 
80年代にはパーソナルコンピュータも台頭し、モノクロ、8色、16色、4096色、90年代に1670万色と、あっという間にフルカラー表示が実現し、 現在では動画像のリアルタイム処理も可能になりました。
かつて、動画はもとより、大きなサイズの画像や色数の多い画像はモニターに表示する事ができず、CGで作品を作るには、生成した画像データ(画素ごとの RGB値を羅列した汎用画像ファイル)を専門のラボで出力してもらうしかありませんでした。
そんな時代と比較すれば、3DCGを含めた映像の制作がPCの画面上でストレスなくできてしまう現状はまさに夢のようです。

しかし、このコンピュータに依存した今日の制作の環境では、余計なことに必要以上の時間がかかったり、目的と手段が逆転してしまったりすることも多いよう です。デザイン教育に携わる中で、日頃感じている「大切なこと」をいくつか挙げておきたいと思います。

第一に、ツールは手段であって目的ではないということ。
優れた機能をもつソフトウエアを前にして「すべてを使いこなさなければ・・」という強迫観念が、制作の手を鈍らせてしまうことが多いようです。
確かに、競争原理で動くデザインの現場では、知らないことで作業能率を下げるようなことは許されません。しかし、それも度を過ぎると、結局、「使い方を覚 えるためにソフトを使っている」 という状況に陥ってしまいます。
今やるべきことは何か、無意味なことに時間を使いすぎていないか、常に自分に問いかける必要があるでしょう。

第二に、画面に向かう前にしっかりした設計(スケッチ)が必要だということです。
特に、紙に書くことは重要です。例えばメモ。エディターで打ち込んだメモは確かに美しいが、すべての文字が均一に打ち出されるため、思考のメリハリが見え なくなります。
一方手書きのメモは、文字の大小や強調・省略、さらに文字と文字の位置関係から、すぐにその主題と思考の図式が想起できるのです。直接画面上で編集すれば 修正と同時に完成であり、それは一見能率的に見えるのですが、切り貼りの堂々巡りで何を書いているのかわからなくなってしまうことも多い(これはプログラ ムの開発でも同じである)。
直接画面に向かう方が能率的に見える時代ですが、設計段階では紙と鉛筆の方に軍配があがります。

第三に、「何を伝えたいのか」を忘れてはならないということです。
作業がゆっくりと進行していた頃はそれを常に意識する余裕もありました。
しかし、「ファイル・新規作成」 だけで新しい紙が準備されてしまうような環境では、いろんな技術を試してみたくなります。そして思考が追いつかない。
技術の誇示ばかりが優先されて肝心の「伝えたいこと」が脇に追いやられてしまうことがないよう心がけたいものです。たとえ線一本でも十分に存在感はあるの です。

最後に、CGもひとつの手段であってその領分があるということ。
絵の具がもつ物質的な存在感や写真映像がもつ「聖なる一回性」の感覚は、CGが勝負できる領域ではありません。
大事なのはCGでなければできないことを模索することです。メディアの 「らしさ」 が十分追求されたとき、それはツールの良し悪しに関わらず強い存在を 生むと思います。

補足:「ツール(道具)」について

「競争原理が優先する現場」を離れれば、もともとモノ作りのツールは何でもいいのです。その意味では、有志が集まって開発を続けるオープンソースのツール は、無料であるという以外にも、極端な仕様変更やライセンス管理のわずらわしさがなく、なにより「自由な配布」が永久に保証されているという信頼感があり ます。純粋なモノ作りには、本来そのようなオープンソースのツールが向いていると、私は考えています。
|  PAGE TOP |

KEYWORD LINKS

Norman McLaren
John Whitney
James Whitney

Sutherland
Neumann
Benoit Mandelbrot

Craig Reynolds
Karl Sims

幸村真佐男
河口洋一郎

SIGGRAPH
MIT  
ILM
PDI/Dreamworks Animation
Pixar Jp

Processing
+GAINER


Computer Graphics
(en Wikipedia)
2次元コンピュータ・グラフィックス(Wikipedia)
3次元コンピュータ・グラフィックス(Wikipedia)

3Dtutorials.com
CG トラッキング
 
注意
Googleイメージ検索へのリンクでは、検索結果の画像がすべて本人の作品であるとは限りません。あくまで参考程度でご覧下さい。