Computer Graphics: A Half-technological Introduction |
A 歴史的経緯に敬意を払って,私はまずレイ・トレーシングのほうから始めることとしたい.というのも,世界の最良の,あるいは最悪の理由のゆえに,こちらのほうがラジオシティのアルゴリズムよりもずっと古いからである.アクセル・ロッホが近々明らかにするであろうように,レイ・トレーシングという概念はコンピュータ・グラフィックスから生まれたものではまったくなく,もともと敵の飛行機をレーダーで追跡するという軍事的な意味で生まれたものである.そしてコンピュータ・グラフィッカーであるアラン・ワットが最近証明したように,レイ・トレーシングはもっとずっと古くから存在する.光線の屈折や反射からヴァーチュアルな画像が作られた歴史上最初の試みは,1637年,ルネ・デカルトなる人物の手によるものだったのだ[★9]. その18年前,30年戦争さなかの1619年,デカルトは一つの啓示と三つの夢を得た.啓示の内容は奇妙な学問に関するもので,これが後に彼の解析幾何学になったものかもしれない.それに対し夢のほうは,右半身麻痺したデカルトを彼自身の左足を中心にしてぐるぐる回す嵐で始まるという夢であった.しかし私は,夢と学問とは同じものだと推測している.夢の中で実体は広がりのない点,ないしほとんど中心点となっており,その回りを自分自身の肉体が三次元的な身体としてある円の幾何学的な形を描いている.この「思惟するもの(res cogitans)」[精神]とあの「延長するもの(res extensa)」[身体/物体]とを扱うのがデカルト哲学であることは周知のことであるが,それに対して,代数的に記述可能な運動や平面というものを扱っているのが解析幾何学であるということはあまり知られていない.数学史上初めて,デカルトは,例えば円という形を,単に天から与えられた予め決まった幾何学模様として再現して描くだけでなく,代数的な変数の関数として構成するということを成し遂げたのだった.「思惟するもの」としての実体は,いわば方程式のあらゆる関数値というものを調教し,ついには1619年の決定的な夢において,円やミュンヒハウゼンの大砲の弾の上の玉乗りに関する寓話が書かれるに至っている. 控えめなデカルトが1637年,『方法序説』によって世論の注目を集めたとき,彼はこの著作に『幾何学』のほかに,二つの光学的な論文を載せていた.すなわち,一つは光の屈折に関する法則について,いま一つは虹についての論文である.しかしじつは,この両方の論文とも,解析幾何学を色彩と現象に適用したものである.虹という光線の戯れを自分の慣れ親しんだ神学から解放するために,デカルトはガラス吹き職人に,たった一つの水滴を何百倍にも拡大した巨大なシミュレーション・ガラス玉を特注した.しかしこの中空のガラス玉は,彼が考えていたある思考実験の実験的な証しにすぎなかったものであって,その思考実験においては,デカルト的な一点の実体が,考えうるあらゆる角度から玉の向きを変えるというものであった.つまり実体自身が太陽から来る光を放射し,それが虹の水滴のなかでありとあらゆる反射や屈折のプロセスを経て,最終的に単純な太陽光が三角関数の法則に基づいて虹のスペクトルに分解されるというわけである[★10]. むろん反射法則は既にアレクサンドリアのヘロンが定式化していたし,屈折の法則はヴィレブロルト・スネルがうち立てていたものである.しかし両法則を何度も応用することでたった一つの光線の道に束ねることは,デカルトが初めて成功したのである.デカルト的実体は自己適用によって成立するといってもよいし,情報理論的に言えば,帰納によって成立するといってもよいだろう.まさにこれこそが,なぜデカルトによる光線の追跡がその後,画家や光学アナログ・メディアに何の影響も与えられなかったかの理由でもある.コンピュータ,詳しく言うなら帰納的関数を備えたコンピュータ言語において初めて,ヴァーチュアルな表面に満ちたヴァーチュアルな空間において一つの光線が作り出す無数の相互作用や運命を追跡する計算能力をもてるようになったのである. レイ・トレーシングのプログラムは,初歩的段階では,モニターを,ヴァーチュアルな三次元世界が見える二次元的な窓として定義することから始まる.その後,モニター上のこれらすべての行・列に二つの反復の輪(Iterationsschleifen)が続き,それは,ヴァーチュアルな,モニターの前に集められた眼から発せられる視線がすべてのピクセルに到達するまで続く. つまりまとめるなら,レイ・トレーシングは,無限に細い光線がヴァーチュアルな空間における一定量の二次元の面と組み合わされることで,物理的にリアルな高輝度の画像を作り出す,というわけである. |
前のページへ![]() ![]() |