2014年1月3日金曜日

ベクターグラフィックス

個人的にアップロードしているYouTubeの動画にこんなものがあります。
これは80年代後半に当時使っていたパソコンで作ろうとしていたゲームの画面です。
当時はOSのような形でプログラミング言語「BASIC」が使用されており、これもその BASICでプログラミングして作っています。

で、動画のコメントの中に「超高速中間色ペイントルーチン」というのがあり、ちょっと気になったので調べてみました。

「超高速中間色ペイントルーチン」は「ハイドライド」シリーズで有名なT&Eソフトのゲーム「スター・アーサー」シリーズで採用されていたグラフィック描画処理の事のようで、8色しか表示できなかった当時のパソコンで多くの発色を実現する技法のようです。

実はその「超高速中間色ペイントルーチン」というのは個人的に知らなかったのですが、おそらくこのグラフィック描画の処理がそのように見えたのでしょう。

どうも「超高速中間色ペイントルーチン」はアセンブラ、いわゆる「マシン語」で記述されているものらしいですが、コンピュータネイティブの言語であるアセンブラは難易度が高く使えなかったので、BASICの画像描画機能を私は使っています。(おそらく使用していたFM77AV40という機種の高速画像処理のせいでアセンブラで書いたように見えてしまっているかもしれません)

では、どのようにして画像を描いているのか?

現在のCGのほとんどが「画素(ピクセル)」に依存しているのに対して、80年代のパソコンは「座標」で描く方法を特にBASIC言語においては主流でした。
座標という事は「点」を画面に打つという事であり、PSET(ポイントセット)などの命令文での記述が該当します。
座標に打たれた点と点を繋ぐと「線」が出来ます。LINE文などの記述が該当します。
線を繋いで行って、最終的に始点と終点を繋いで閉じた場合、閉じられた線の内側には「面」を作成できます。
つまり、座標での描画というのは「点・線・面」を用いるという事なのです。

実際どう作業していたかというと、先ず手書きで絵を描きます。
描いた絵の上に薄手の方眼紙を置きます。
絵の特徴的な「点」に相当する座標を方眼紙に描きつつ、その横・縦の座標を記録していきます。
記録した座標をLINE文で繋げて描画し線分を作っていきます。
閉じた線分の内側をPAINT文で塗りつぶします。

このような工程を経てCGを描画しているのです。

さて、ここで問題になってくるのは色です。

当時の多くのパソコンは8色のみの表示がほとんどでした。
これは三原色「赤」「緑」「青」と混色による「黄(赤+緑)」「水色(緑+青)」「紫(赤+青)」と「白(赤+緑+青)」と全ての原色の発色が無い「黒」の8通りの色という事になります。(ちなみにこのような混色を「加法混色」といいます)
この色不足をフォローする為に例えば赤黒赤黒...のように色の点描を繰り返せば暗い赤が表現出来る事からこの8色の表示パターンを作ってあたかも多色表示しているように見せかけるのです。
一部のBASICのPAINT文にはこのパターンによる塗りつぶし機能が使用出来、私もこれを利用して描画しています。

このようにして作成されたCGは今のピクセルベースのデジタイザ画像と比較すると非常に荒いものになりますが、逆にCGそのものという味があり、面白い印象を今では与えるのかもしれません。

そして上記の「座標」によるCG描画を「ベクターグラフィックス」と言い、現在ではAdobe IllustratorなどのグラフィックソフトやOfficeの図形描画などでもその手法は利用されています。

このプログラムにはまだまだ色々語るところはあるのですが、それはまた後ほど。

0 件のコメント:

コメントを投稿