Microsoftフライト・シミュレータ2000の新しいシーナリ命令 By Peter Jacobson |
注: フライト・シミュレータ2000は10月初め以来から入手可能であり ましたが、Peter Jacobsonは、何がそれの中にあるかを見るために、 FS2000シーナリエンジンをのぞき見する時間をたった今割くことができるよう になりました。 この短い記事は、これまでに彼が新しいFS2000-スタイルの建物と道 路について何を見つけたかを私達に示します。 ピーターが、彼が他のFS2000シーナリ命令についての 情報を追加することを提案しているので、近いうちにチェックしに戻ってきてくだ さい。 また、フライト・シミュレータ2000が非常に新しいので、 より一掃の情報が集められて共有されることにより、多くのこのような情報が追加 されることを我々は期待していることを心に留めておいてください。 Peter Jacobsonは、Full Throttle の親会社の Abacus により 出版されている href="http://www.abacuspub.com/catalog/s371.htm">Airport & Scenery Designerの開発者です。 最後の更新: 1999年11月18日 |
FS2000ビルディング
FS2000のシーナリ命令セットは、建物を建設する新しいコマンドを含んでいます。 この新しい命令は、前のバージョンのシミュレータで使用可能だった 命令(限られた数のテクスチャーとスタイルしかサポートしていなかった)に比べ、 大幅に強力です。 新しいビル命令は、ビルあたり最高4つのテクスチャー、3から最低 16までの側面、とがった屋根、および傾斜した側面を提供します。 この記事はこの新しいビル命令の技術的な面を議論します。 以下の記述が、FS2000のビル命令の使用方法と機能を完全に要約 できていないかもしれないことに注意してください。 FS2000の巨大なビルの数のため、そのバリエーションに対するすべての ものを試験することは不可能でした。 以下の議論において、すべてのデータフィールドは16ビット幅です。 イタリック体 はデータフィールドを示します。 すべての次元のデータはメートルにおいて与えられます(1メートル は3.28084フィートと等しい)。 Hが続いている数は16進法表記です(例えば 000BHは10進の11と等しい。) 命令のopcodeは00A0Hです。 sizeフィールドは 40, 42, または 46 をとり、opcode に続 く全体の命令のサイズをバイト数で示します。 ビルのstyleは次で、以下のとおりで、以下の値とと意味を持っ ているのが観察されます: 0004H 4つの側面のビル、サイズは 42 0007H 4つの側面のビルで、尖った屋根。サイズは 46 0009H 4つの側面のビルで、傾斜した側面。サイズは 46 000AH n 個の側面のビル、サイズは 40 000BH 8 個の側面のビル、サイズは 40 次元のフィールドはstyleフィールドに続き、それらの内 容は建物のタイプに依存します。 ビルスタイル 0004H, 0007H に対しては、x次元とy次 元があります。 ビルスタイル000AHおよび 000BHは、3つのフィールドを持っています: sides(側面)の数、x次元、およびy次元の番号。 ビルスタイル0009H(傾斜した側)は、4つのフィールドを持っています: x次元、y次元、x屋根次元、およびy屋根次元。 これらの命令タイプのそれぞれに、4つのtextureレ コード〈順番に与えられた〉があり、最高3つのレベルのビルの側面テクスチャーと屋根テクス チャーを制御します。 最初のレコードは、建物の中で最も低いレベルに適用されたテクスチャー をコントロールします。 2番目と3番目のテクスチャーレコードは、連続しているより高いレベ ルをコントロールします。 最後のレコードは屋根テクスチャーをコントロー ルします。 もしどのようなレコードも使われない(高さフィールドは0000Hに設 定、次のパラグラフを参照)ならば、次のレコードは隣のレベルをコントロールします。 均一なビルのテクスチャーは、1つのレコードのみを使って設立する ことができます。 個々のテクスチャーレコードは、命令におけるstyleフィー ルドに依存して、3, 4, または 5 個のデータフィールドを含んでいます。 最初のフィールドは常にテクスチャーのidentifier(識別子) であり、2番目のフィールドは常に、ビルのレベルレコードのためのheight(高さ) フィールドです。 もしheightが0000Hであるならば、レコードは使われません。 テクスチャーレコードの残りのフィールドは、ビットマップから取り 去られたテクスチャーの量をコントロールします。これは、 FS2000のビルテクスチャーと、それを identifier で識別する方法と ともに、次で述べられます。 建物に適用できる270の個々のテクスチャービットマップがあります(付録Bを見てください)。 これらのファイルはFS2000のメインテクスチャーディレクトリに蓄えられます。 テクスチャーファイルの実際のリストはG3D.DLLのデータセクション に維持されます。 それらは3グループに分割されます: ユニークなテクスチャーの4つの水平のバンドを持つビットマップ、 均一なテクスチャーを持つビットマップ、および屋根ビットマップ。 最初の2つのグループは、昼と夜のビットマップを持っているので、 実際の選択肢はもっと少なくなります。 しかし、ここに見られるように、FS2000 のビル命令の柔軟性は、巨大な数の ビルを可能にします。 1番目および3番目のレベルのテクスチャーレコード識別子は、テク スチャービットマップの最初のグループから選びます。 これらは、イメージの底から数えて1から4まで番号を付けられた4つ の水平のバンドを持つテクスチャーです。 2つの連続した識別子がそれぞれのテクスチャービットマップで使われます。 1番目のレベルのレコードは、テクスチャーに関連付けされた1番目または2番 目の識別子のどちらが使われるかによって、バンド1または3のいずれかを選択 します。 3番目のレベルのレコードは、どちらの識別子が使われるかに依存して、 バンド2または4を選択します。 従って、個々のテクスチャービットマップファイルは4つの組み合わ せで使用できます。 例えば、識別子0046Hと0047Hは、ファイルAIR_TB1_2.BMPによっ て使われます(そして、夜のAIR_TB1_2_LM.BMP)。 もし1番目のレベルのレコード識別子が 0046H で、3番目のレベルの 識別子が 0047H と与えられた場合、テクスチャーの最初と4番目のバン ドが選ばれるでしょう。 レベル1と3のテクスチャレコードの残りのフィールドは、 どれだけのテクスチャー(ピクセルの数)を使用するかを決定します。 垂直方向全体またはバンドのy-軸が常に使われます; 水平の(x-軸)コンポーネントだけがコントロールできます。 4つの側面を持つビルディングは、2つのピクセルコントロールフィー ルドを持っています; 長さ(x次元)のためのものおよび幅のためのもの(y 次元)です。 すなわち、最初のフィールドは正面の後方のテクスチャーの適用をコ ントロールし、2番目のフィールドは側面のテクスチャの適用をコントロール します。 ビットマップは幅256ピクセルなので、0100Hの値はバンド全体を選びます。 0080H(10進で128)の値は、バンドの半分を選びます。 もし0100Hよ り大きい値が使われるならば、ビットマップは繰り返されます。 例えば、0200Hはビットマップを2回使います。 4つ以外の個数の側面を持つビルに対しては、 1つのピクセルコントロールフィールドだけが提供されており、これはそれぞ れの側面で使用されます。 2番目のレベルのテクスチャーレコード識別子フィールドは、ビットマッ プの2番目のグループからテクスチャーを選びます。 これらは均一なテクスチャービットマップであり、昼と夜のバージョンを持っています。 このレコードは、垂直の軸をコントロールするための付加的なフィー ルドだけでなく水平の軸にテクスチャーの適用をコントロールす るためのフィールドも含んでいます。 この付加的な垂直のフィールドは、最初の水平のフィールドの直後に続いています。 4つの側面を持つビル以外では、2番目の水平フィールドはありませ ん。 FS2000ビルコマンドの最後のなテクスチャーレコードは、 屋根にテクスチャーの適用をコントロールします。 そのidentifierフィールドは屋根テクスチャーのグループか ら選びます。 これらのビットマップには夜のバージョンはありません。 4つの側面と平らな屋根を持つ建物では、heightフィール ドはありません。 height コンポーネントは4つ以外の側面を持つビルに対して提供され ます。 ビットマップの水平および垂直軸からテクスチャーの適用を 制御する、2つのピクセル選択フィールドがあります。 とがっている屋根をもつ建物のために、2つの付加的なフィールド があります。 それらは、頂点までの屋根の高さと、最後のピクセル選択フィールドです。 |
FS2000の道路
道路はMicrosoftフライト・シミュレータにおいて一連の2回以 上の命令によって建設されます。 最初の命令は、いつも、初期のポジションを指定して道路を開始する (いわゆる)RoadMoveToコマンドです。 これに続いているのは、実際道路を引く1つ以上のRoadLineToコマンドです。 シミュレーターの前のバージョンにおいて、道路は、現在確立された ラインと表面色によって引かれました。 テクスチャーは適用できたけれども、それをオフにすることが難しかっ たという点で、問題がありました。 FS2000のシーナリ命令セットは、テクスチャーの使用をサポート する新しいRoadMoveToコマンドを含み、以前の灰色の実線に比べ、 よりリアルなの道路表面を提供します。 以下の議論において、すべてのデータフィールドは幅16ビットで す(2バイト)。 イタリック体 はデータフィールドを示します。 すべてのオフセットデータはメートルにおいて与えられます(1メー トルは3.28084フィートと等しい)。 H がついた数値は、16進表記を示します。 (例えば 000BHは10進の11)と等しい。 ) 命令のopcodeは00A8Hです。 命令長は、opcodeを含む12バイトであり、5つのデータフィールド を次の通り提供します:
textureセレクターフィールドは主要なFS2000テクスチャー ディレクトリから以下のテクスチャーをロードします:
このフィールドでの1の値は、設立された表面とライン色を使います。 それは、ロードされたビットマップを使うけれども、フライト・シュ ミレーターのその前のバージョンが持っていたものと同じ問題(オフにできな い)を抱えます。 オフセットフィールドはこの命令の以前のバージョンと同一で、 それらの値はRefPoint単位です。 すなわち、それらはRefPointの scale factorに影響されます。 |
ピーターJacobsonにより研究されて、書かれました
もし誰かが、彼らが分担したいどのような他の発見または情報でも持っているならば、どうぞ、editor@ftmagazine.comで私達にメールすることをためら わないでください
日本語訳: 2000/1/29 by 村上 卓弥 (tmurakam@mtd.biglob.ne.jp) |