1/21/2014

PC-8001で3Dグラフィックス

1975年頃の話だけれど、日本で実用的なパソコンPC-8001が販売された。会社でそれを買って
会計ソフトを作って使っていたのだけれど、その頃は実用ソフトはほとんど売られていなかったので
全部自分でつくらなければいけなかった。言語はN88-BASIC(必要ならそれにマシン語を組み込んだ)だった。

その頃、ASCIIという雑誌があった。それにAPPLE-IIのプログラムで3Dグラフィックスをやろう、
という記事があった。それを見て自分もやってみようと思った。
今は3Dソフトなどフリーでも入手できるが、その頃はゼロから作らなければいけなかった。
それをどうやったかを思い出してみよう。

まずある大きさの空間を設定したと思う。と言ってもどこまで細かく計算するかでどうにもなるのでそれは便宜上のことだったけれど。その空間の中に適当な大きさのブロックを置いた。
データは確か別の場所に行列として置いたと思う。
コンピュータのディスプレイの解像度はいくつだったろう?そんなに高くなかったと思う。640になったのはずっと後のように思う。

私は最初からディスプレイへの表示は想定していなかったディスプレイと同じ画面比でXYプロッターに出力しようと思っていた。
それで仮想のディスプレイ平面を作って自分の目の位置と、その平面の位置、それとデータとして入力した「線分」の座標を設定して、目と線分(2点)の座標がディスプレイ平面のどこを横切るかを
計算した。

画面に収まる大きさのブロックや多面体のデータを作って表示させてみたらきれいに表示された。
特にXYプロッターでメッシュ表示された絵はとてもきれいだった。
そのころSF映画で見たような絵と遜色なかった。

それで「スターウォーズ」のあの溝を飛ぶシーンを作ろうと思って、大きな平面を用意してその真ん中に溝を作った。それだけでは面白くないので途中に橋を作ってそこをくぐることにした。
データは手入力で全部作った。
遠くからその平面(平原)をディスプレイさせると驚くほどきれいな絵がプロットされた。

そこまではすんなりだったが、問題はその後だった。
データ全部が画面に収まる場合は問題ないのだが、画面からはみ出す場合の処理が問題だった。 線分全体が画面からはみ出す場合は無視すれば良いので良かったのだけれど、
大体の場合線分の途中までが画面の外で線分の一部のみがディスプレイに入ることが多い。
その処理をどうすればいいのか、他の雑誌も見てみたけれど詳しく書かれていなかった。
いや、書かれていたかもしれないけれど、理解できなかったのかもしれない。

それでその部分のプログラムは考えて作った。
どうやったのか全く思い出せない。たぶん試行錯誤で作ったのだと思う。
ついでに視野はバンク、ピッチ、ズームの焦点なども変えられるようにしてプログラムを完成させた。
映画のようにバンクをかけながら溝に入り橋をくぐって出てくるまでを10画面くらい作った。
それをXYプロッターでA3の大きさに描いた絵はとても美しかった。

そのプロットとプログラムを雑誌ASCIIに送ってみた。
そしたらその絵に関心したらしく、面白いと言ってくれた。電話でASCIIの人と話しをした。
あれは誰だったのだろう? 西さんだったのだろうか?と今思う。
しかし、プログラムがBASICのみだったし、データの作り方とかが問題だったのだろうか、
掲載されるかも・・・と言っていたけれど、掲載されることはなかった。

A3にプロットした絵がみつからない。処分してしまったかも。
でもあのプログラムはカセットテープに入ってどこかにまだあるだろう。