ハンガーを作る


ハンガーを作る

では次にハンガーを作ってみましょう。 下の図に示すようなハンガーを作ります。 (なお、このハンガーは Olivier Briot 氏著の "Introduction to scenery design using tools of the public domain", Version 0.1, Nov.94 を参考にさせていただきました)

南側から見た図
From South

北側から見た図
From North

SCASM のソース

先程の例にくらべるとちょっと複雑になっていますが、良く見ると 変わったのは 12 から 36 行目の部分だけです。以下、これを説明していきます。

点の定義

まずは点の定義からです。

先程のハンガーの図を見てください。角の部分に番号がついていますね。 これが「点の番号」です。SCASM では、オブジェクトを作るさい、まず点を定義 しておき、つぎにその点を繋いだりしてオブジェクトを作成していきます。

点の定義を行っているのが 12 行目から 27 行目の部分です。 Points 命令が点の定義を開始する命令です。その直後に書いてある 1 という 数字はこれから定義を開始する最初の点の番号です。

そのあとの行で点の定義を行っています。3つの数値を一組にして点を一つ 定義しています。ここでは 14 個の点を定義しています。最初の点の番号が 1 ですから、ここでは 1 番から 14 番の点を定義しています。この番号は 先程のハンガーの図の角の番号に対応します。

点を定義するときは、「RefPoint からの相対座標」で値を定義します。 また、値は3つ組みで、順に X座標、Z座標、Y座標です。X 座標は東方向、 Y 座標は北方向、Z 座標は上方向になります。 たとえば、一番の点の定義は -4 0 -6 になっていますが、これは RefPoint の西 4 m, 南 6 m, 上に 0 m の点になります。(なお、これは RefPoint の スケーリングファクタが 1 の場合です。)


ポリゴンの描画

次に、この点をつかってポリゴンを描画します。

まず、29行目でこれから描画する面の色を設定します。ここでは 白色に指定しています。色についてはあとで詳しく述べます。

次に南側の壁を描きます。29 行目の ConcavePoly は、これから描く 面が凹型の面であることを指定しています。これがないとうまく表示されません。

そして 31 行目で面を描きます。Poly がポリゴンを描く命令で、1番から 9番までの点を順につないで、囲まれた面を塗りつぶしています。 同様にしてすべての壁と屋根を描画します。なお、南側の壁以外は凹型の面 ではないので、ConcavePoly は必要ありません。

ところで、このようにしてすべての面を描いてしまったら隠れている面も 描かれてしまう、と思うかもしれませんね。たとえば、南側からハンガー を見ている場合は北側の壁は見えないはずです。

実はこのような心配はいりません。なぜなら、すべてのポリゴンは 表側からしか見えないからです。表と裏の指定は SCASM を使えば ほぼ自動でやってくれます。それが、Poly 命令の1番目の引数の "a" (Auto の意味)で、これを指定しておけば表裏の判定を自動でやってくれます。

詳細は次の「隠面処理について」で説明します。


色の設定

先程は、SurfaceColor 命令でポリゴンの表面色を設定しました。 良く使う色を以下に挙げます。
	00      black
	01      dark gray
	02      gray
	03      light gray
	04      white
	05      red
	06      green
	07      blue
	08      orange
	09      yellow
	0A      brown
	0B      beige
	0C      orange/brown
	0D      green/gray
	0E      blue/marine
なお、上に挙げた色は時刻や光の当たり具合によって色が変わります。 こんな感じです。

それに対して以下の色は変化しません。主にイルミネーションに使用します。

	0F      red
	10      green
	11      blue
	12      dark green/blue
	13      orange
	14      yellow
	15      white (high intensity)
	16      white/light gray (low intensity)

色の指定を行う場合は、この値のあとに 'F0' をつけて使います。 たとえば青色なら "07 F0" と指定します。

なお、F0 を後ろにつける F0 カラーの他に、68 カラーや 69 カラーと いったものがあります。 68 カラーは FS のパレット番号を直接指定するもの、69 カラーは 半透明色(影の描画などに使っているもの)を指定するようです。 でも普通は F0 カラーが使えれば十分でしょう。


[次ページ] [目次]