Terragen .TER形式


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Terragen™ Terrainファイル仕様

ファイル構造

地形ファイルは多くのチャンクに準じて16バイトの識別子を含みます。様々なチャンクの配置は厳密に定義されていないため、あなたが地形ファイルの読取りプログラムに書き込む場合は、チャンクの配置決めに柔軟性を考慮に入れなければなりません。しかし、あなたが地形ファイルを作成している場合は、いくつかのチャンクが他に先立って出現しないように注意する必要があります。

すべてのチャンクは直近の4バイトで結び付きます。各チャンクは4バイトのマーカー(例 "ALTW")といくつかのデータを含みます。

注意:地形ファイルのチャンク構造は、他のTerragenファイル内で見られるチャンクのものとは異なります。地形ファイルのチャンクは、"length of data(データ長)"値を含みません。

地形ファイルは以下を含む必要があります:
  1. ファイルの先頭に8バイトの"TERRAGEN"の文字列。
  2. 8バイトの"TERRAGEN"の文字列は、ファイルの先頭から8バイトを位置しています。(最後の空白文字に注意)
  3. "SIZE"チャンク 。
  4. 地形が四角でない場合は、"XPTS"と"YPTS"のチャンクが必要です。
  5. ファイルの終わりに4バイトの"EOF "の文字列(Terragenの古いバージョンに必要)。
これらに続いて、実際の高度データを記述する事が出来ます。Terragenの将来のバージョンで圧縮データやより効率的な保存方法をサポートするかも知れませんが、その時までは高度データは"ALTW"チャンクで記録します。

すべての距離単位(X、Y、Z)がメートルではなく地形単位である事に注意して下さい。メートルから変換する必要がある場合は、デフォルトの寸法は地形単位30メートルです。

特定の地形のため、実際のスケール値は、"SCALE"チャンクに記録します。

チャンク(データの一塊の構造)

"XPTS" 4バイトのマーカー。"SIZE"マーカーの後ろに表記する必要があります。任意の高度データの前に表記する必要があります。
  • "XPTS"マーカーの後ろに2バイトの整数値"xpts"が続き、パディングの2バイトが続きます。"xpts"は高度画像のx方向のデータポイントの数と等しい。

"YPTS" 4バイトのマーカー。"SIZE"マーカーの後ろに表記する必要があります。任意の高度データの前に表記する必要があります。
  • "YPTS"マーカーの後ろに2バイトの整数値"ypts"が続き、パディングの2バイトが続きます。"ypts"は高度画像のy方向のデータポイントの数と等しい。

"SIZE" 4バイトのマーカー、必要不可欠。任意の高度データの前に表記する必要があります。
  • "SIZE"マーカーの後に、(n-1)と等しい2バイトの整数値が続き、パディングの2バイトが続きます。四角い地形において、"n"は高度画像の辺のデータポイント数です。非四角形の地形の場合は、"n"が最短の辺に沿ったデータポイント数と等しい。
  • 例:x方向300ポイント、y方向400ポイントを持つハイトフィールドの地形の場合、"size"値は299になります。

"SCAL" 4バイトのマーカー、必要不可欠。任意の高度データの前に表記する必要があります。
  • "SCAL" マーカーの後ろに3つのIntel命令の4バイトの浮動小数点値(x,y,z)が続きます。これは地形単位/mとして地形のスケールを表しています。デフォルトスケールは、現在(30,30,30)です。現在、Terragenは不均一なスケーリングを使う事が出来ないのでx、y、zは等しくなければなりません。

"CRAD" 4バイトのマーカー、省略可能。任意の高度データの前に表記する必要があります。
  • "CRAD" マーカーの後ろに1つのIntel命令の4バイトの浮動小数点値が続きます。これは惑星の半径がレンダリングされる事を表し、キロメートルで測定します。デフォルト値は6370、これは地球のおよその半径です。

"CRVM" 4バイトのマーカー、省略可能。任意の高度データの前に表記する必要があります。
  • "CRVM" マーカーの後に、1つの符号なしの整数が続きます。モード0は、地形が平坦(デフォルト)にレンダリングする事を意味します。モード1は、地形が"midx=XSIZE/2"、"midy=YSIZE/2"において、(midx, midy, -CRAD*1000/zscale)を中心とし、半径"CRAD*1000/zscale"の球体上に覆われ(そして延伸)る事を意味します。(地形サイズは側面のポイント数より1少ないです。)
  • X、Y値には歪が無く、このため上方から眺めたマップはまだ普通に見えますが、多くの屈曲がある場合は地理的距離はマップの端へと伸ばされます。景色が容認し難い程に歪む前に、景色のサイズ/曲率半径に関する暗黙の制限もあります。
  • 他のカーブモードは現在未定義のため、将来のバージョンのために保留となっています。

"ALTW" 4バイトのマーカー。"SIZE"マーカーの後に表記する必要があります。"XPTS"と"YPTS"マーカー(存在している場合)の後に表記する必要があります。
  • "ALTW" は「16ビットのワードでの高度」を表します。"ALTW"マーカーの後に、以下の命令が現れます:
    • HeightScale 、2バイトの符号付整数値。
    • BaseHeight 、2バイトの符号付整数値。
    • Elevations 、2バイトの符号付整数の配列。
  • (xpts * ypts)は、"SIZE"チャンク、または"XPTS"と"YPTS"チャンクが初期に設定されている場合は、xptsとyptsの高度整数になります。高度は、左から右に第1行(y = 0)、第2 (y = 1)というように最初に読込まれるように指示されます。高度の値は絶対高度ではありません。特定のポイント(xとyが同じスケールで)の絶対高度は、 BaseHeight Elevation * HeightScale / 65536 と等しい。