はじめに。

このマニュアルは、Yellow GarageのGPL forumにて連載したものの第二版です。最終執筆者は私、brubeckですが、細かい知識の補完はpolarさんやKOさんに頼り、付録部分のtsoファイル等のリファレンス部分はshutaroさんの翻訳が土台になっている部分も多くあります。また新たに書き加えたmipファイルの説明部分はumrkさんの解説の記述に基づくものです。このように様々な方々の助力があって成り立ったものであることをお断りして、この場を借りて感謝させてくださいませ。

このマニュアルに基づいて、かなり早い段階で、Teruさんによる「首都高C1」というアドオントラックが出現したことは、私にとって大きな喜びであり、誇りでした。その後、やや後に続く人々が停滞しておりましたけど、一年を経て、ようやく数人の後続者が現れつつあることを最近知りました。このような状況に対して、旧版の改訂の必要を感じ、また私自身その後3D関係のハンドリングの向上や、鈴鹿製作を通じたスキルの上昇によって得られた知識や経験が蓄積してきました。改訂をするにはいいタイミングではないか、と思い、このような個人サイトにて新たに上梓する次第です。

なお、いちおうweb上でも閲覧しやすいように構成を改めてはいますが、腰をすえてトラックを作ろうと思い立った方は、当文書を全部印刷し、項目ごとにインデックスをつけて手元に置いておくことをお勧めします。PC上はGPLtrkなどのウィンドウで一杯でしょうし、いちいち画面切り替えをしていては、思考とクリエーティビティが途切れてしまいかねませんから。

・・・では。


 

第一章 準備運動    

 【必須ツール】

http://home.online.no/~bi-knu/editing/apps/apps.htm
・GPLTrk 2.1
・trk23dow

取りあえず必須のツールは以上の二つですね。

GPLtrkというツールは、トラックのレイアウトをデザインするためのツールです。

trk2dowというツールは、GPLtrkで作製したレイアウトファイル(gtkファイル)をGPL上で動かせるようにコンパイルするためのプログラムです。
現在、trk23dofというwindows版が開発され配布されています。
http://forum.racesimcentral.com/attachment.php?s=&postid=90310
↑こちらからどうぞ。(直リンです)
両者の基本機能は同じですが、それぞれに短所・長所がありますので、両方保有して使い分けるのが賢いやり方のように思います。


【とりあえず起動】

私もGPLTrkをダウンロードして、とりあえず起動させてみました。
ありゃ、のっぺらぼうのウィンドウが立ち上がりました。
コースレイアウトをしたいのだけれど、
いったいここからどうすればいいのでしょう。

メニューのFile→Newを開いてみました。

102.GIF - 14,621BYTES


すると画像のようなウィンドウが開いて、なにやら
左上にツリーが、右上にリスト、そして下半分に
どうもトラックの図面ですかね、現れました。なるほど。
でも、ここからどうするんだろ。


 【画面説明】

この項は、上記の画面内の各項目の詳細な説明です。ざっと読む程度でいいでしょう。実際に操作する段階で、ここに立ち戻って読んでみてください。

《左上》
ツリー形式の表示部分(ツリー窓)。


+Track
  +Section 0(straight)
  +Section 1(curved)
    ・
    ・
    ・
   -Section x
     +Altitude x
     +Wall x


《Trackフォルダ》
     トラック全体にわたる設定情報を入れるフォルダ。
 
    《Section x (straight or curved)フォルダ》
     入力したセクション内のトレース線の高度(altitude)と
     ウォール(路面、芝、ガードレール)情報が表示されます。

       次のセクションを追加するには"Section x (straight)"部分を
       右クリックし、"Add After"で可能。

            《Altitude xフォルダ》
                   当セクションのトレース線の高度情報を入れるフォルダ

            《Wall xフォルダ》
                   当セクション内のウォールの設定情報を入れるフォルダ

  ※右ポップアップメニュー説明
            Remove/        そのセクションの消去
            Add Before/     そのセクションの前に新セクションを追加
            Add After/      そのセクションの後に新セクションを追加
            Sprit Section/    そのセクションを分割(分割距離を指定)
            Change Section Type/ セクションについてstraight
                                             またはcurvedの変更
            Copy Walls From/   他のセクションに設定したウォール情報を
                  そのセクションにコピーする
            Copy Walls To All/  そのセクションに設定したウォール情報を
                  全セクションが同じになるようコピーする。


 
 
 《右上》
ツリー窓にある各項目の内容設定画面。

《Trackフォルダ内》
  Length          トラックの全長(編集不可)
   Sum of Section Lenghth  全セクションの全長
   Number of Sections    全セクションの数
   Number of Traces     全トレース線の本数
  Trace x          トレース線のセンターラインからの距離
 

《Section x(straight or curved)フォルダ内》
   Type                 当セクションのタイプ(straight or curved)
   Start                Section 0のスタート地点(0座標)から
                        当セクションのスタート地点までの距離
   Length               当セクションのセンターラインを基準にした長さ
                        ダブルクリックすると設定可能。
                       (とりあえずメートル法で入力。
                         ただし、メートル法では誤差が生じます。)

   Orientation           Section 0のスタートラインと
                         当セクションのスタートラインとがなす角度
 
   Orientation mismatch  直前のセクションの後端ラインと
                         当セクションのスタートラインとがなす角度

   Longitudinal gap      直前との距離のギャップ
   Lateral gap           直前との幅のギャップ (?)
                   ※ Section 0の場合一番最後のセクションとの
                      ギャップです。これを上手く使うと複雑なコースで
                      最後の埋め合わせを楽に行えます。

 ※セクションタイプがcurvedの場合のみ
   CurveCenterX          当セクションのセンターラインを円弧とする扇形の、
                         中心点の縦軸座標(曲率円の中心点座標X)
   CurveCenterY          当セクションのセンターラインを円弧とする扇形の、
                         中心点の横軸座標(曲率円の中心点座標Y)
   Curvature             当セクションのセンターラインを円弧とする扇形の、
                         カナメの角度(curvatureの訳は「曲率」だが、
                         ここでは「中心角」の意で使われている)
   Radius                当セクションのセンターラインを円周とする円の半径
                           (曲率半径)
           ※セクションタイプがcurvedの場合は、
                           先にRadius(半径)を入力し、
                           その後にLengthを設定します。
                           Raduisは+の値で左カーブ、-の値で右カーブとなります。

   《Altitude xフォルダ内》
                         当セクションのトレース線の高度情報を設定。
                         土手や縁石などに高さを持たせるのであれば
                         設定する必要あり。
                         Trackフォルダ内のTrace xと番号が対応する。
                         例えばAltitude 3は、
                         Trace 3の当セクションにおける高度情報である。

                   ※ここは、私のやり方なので正しいかどうかわかかりません。
                      1. "1st order coeff."に高度を入力します。
                            当セクションの高さで、スタートラインから高さではありません。
                      2. 次のsectionではHeight@Startに、
                            ひとつ前のセクションの高度(Height@End)を
                            入力することになります。
                      3. Altitudeを入力しながらSectionをAddしていくと、
                            自動的にHeight@Startが入力されていきます。

   《Wall xフォルダ内》
                          当セクションのウォール情報の設定
                          右クリック、Add after or beforeで追加してゆきます。
                          ここでは、どこからどこまでどのような路面で
                          高さはどのくらいということを設定します。
                          原則として進行方向"右"(Wall 0")の
                          最内周はSurfaceが"2056"で、
                          進行方向"左"(Wall xx")の最外周のSurfaceは"10"
                          その内側はSurfaceが"2056"で設定します。
                          それらに囲まれたWallは自由に設定可能です。
 
 
 

【基本概念の説明】

で、GPLEAの解説文に
コース作成のために必要な基本概念の説明が書いてありますね。
これらの要素的な項目を対象にして値を設定することで、
コース全体の基本図を作成することができる。
ちょっと書き出してみます。

1. Sections/セクション
  
トラックはこの「セクション」と呼ばれるものがいくつも
  集まって全体を構成しているようですね。つまりブロックの
  1ピースのようなものです。この1ピースの「セクション」をまず作り
  それを組み合わせてゆくことで、全体で複雑なコースを作り上げてゆくわけです。

2. Walls/ウォール
  「壁」ですけど、ちょっと特殊な使い方をしてる用語のようですね。
  垂直に立つ壁状のものだけでなく、平坦な部分も含めた概念であると。
  むしろ訳すなら「面」かな。
   平坦)アスファルト、芝、土手、コンクリ
   垂直)armco←これはコーナーの安全障壁のことで商標ですね
      垣根、人垣
  こうして見てみると、二次元的な「面」の属性を設定する部分のようです。

3. Traces/トレース線
  トラック全周にわたって走る「線」のことだとありますね。
  センターラインと平行になっていると。
  高度情報は各セクションごとに、こいつに対して設定してゆくわけです。
  トレース線は、図面では青い実線で表現されています。
  デフォルトでは2本のトレース線が設けられています。
  図面を見ると灰色のターマック面の両脇に青線が引かれているのが分かりますね。
  この線は最高16本まで使うことが出来ます。

4. Altitudes/高度
  これは分かりやすいですね。各セクションごとにトレース線の高度を決定して行く。
  これによってトラックの高低差を付けて行くのですね。


 
 


【作成の手順】

作成の順番ですが、

・GPLtrkでレイアウトをする。
・とりあえず直線とカーブのセクションを組み合わせてオーバル状のコースを作ってみてください。
  ↓
・ウォール設定をする。
・ウォール設定の例(surfaceの値)
  左から
   ・left border(10)
   ・2048以降の高さのあるウォール(heightを1以上にする)
   ・grass(4)
   ・白線/curb(3)
   ・アスファルト(1)
   ・白線/curb(3)
   ・ピット用のアスファルト(1)
   ・2048以降の高さのあるウォール(heightを1以上にする)
・以上のウォール設定をひとつのセクションに施し、あとはすべてのセクションにコピーするのが簡単。
・すべてのウォールは一番外側のトレース線の内側に来なければならない。
・トレース線を用いて高度設定(これはオーバル作製を卒業した後がいいと思います)
  ↓
・で、コンパイル。trk23dow/fを使う。
・コンパイルのためのファイルの用意が面倒ですが、ここだけが難関といえば言えますけど、1時間もあれば用意できるんじゃないでしょうか。
  ↓
・めでたく出走。



 

【項目対照図】   
 
 各項目と図面とを対照させてみました。


 
 

--------------------------------------------------------------------------------


 第二章 オーバル作製 

それじゃ、まずは手始めに単純なオーバル・コースから作ってみることにします。
トミカのプラレールの要領で作るのです(つっても分からんやろな)。
↓これですね。コースレイアウトは、全くこれと同じ要領です。
http://www.asahi-net.or.jp/~ed4h-ok/densya/layout/step2.htm
本当にできるのだろうか。

さて・・・

【基本画面・Section 0】

File→Newを開くと
左上のツリー窓のTrackフォルダ内に

 Section 0[straight]

というフォルダがあらかじめ存在しています。
下の図面にはこのSection 0にあたる図が描かれています。
このセクションはデフォルトでは長さ50m、道幅が10mですね。
ここでは、この50mセクションを複数使ってオーバルコースを
作製してみましょう。

※このセクションを、長さの変更をしたり、カーブの曲率を変えたりすることで
 複雑なコースレイアウトにすることが可能になります。

図面の座標の中心は、
Section 0のスタートラインと
センターラインの交差する一点になっているようですね。
左下のステータスバーに表示される数字は、
左がその座標点からの横軸の距離、
右がその座標点からの縦軸の距離をメートルで表しています。

 

【セクション追加】

そこでまずはこのSection 0を右方向に延長してみましょう。

ツリー窓のSection 0を右クリック。(メニューでも可)
   ↓
 Add afterを選択しOK。

するとツリーにSection 1[straight]が加わるとともに、
図面にもSection 1にあたる部分が進行方向に向かって
追加されて描かれると思います。


【セクションのタイプを変更】

追加されたSection 1のタイプを変更してみましょう。
いま新たに追加されたセクションはstraightになっているはずです。
これをcurvedに変更してみましょう。

Section 1を右クリック。
   ↓
Change Section Typeを選択
   ↓
確認のダイアログが出るのでOKする。

と、そのセクションのタイプがcurvedになり、図面にもその結果が反映されるはずです。

もちろん、curvedをstraightに変更することもできます。同じ操作です。


 
【curvedセクションの左カーブ・右カーブの変更】

デフォルトの状態では、スタート位置(Section 0)から見て
左カーブのセクションが作られます。
これだと、オーバルコースを作る場合に、左回りのコースが出来上がりますね。
右回りのコースを作るためには、curvedに変更したセクションの
曲率(Curvature)あるいは半径(Radius)に
変更を加えなければなりません。

今回は、後の問題を複雑にしないために、右回りのオーバルコースを作ることにします。
そのため、当curvedセクションを右カーブに変更してやる必要があります。

curvedに変更したSectionのフォルダをクリック
    ↓
項目Curvatureをダブルクリック
    ↓
すると画像のような画面が開きます

    ↓
Value(値)のダイアログボックスに数字が書き込まれています。
右のBaseのラジオボタンをcurvatureに合わせると「20」という数値になりますね。
この数値が、そのcurvedセクションの中心角の角度になります。
そして左カーブのcurvedセクションは、正(+)の値、
逆に右カーブのcurvedセクションは、負(-)の値になります。
    ↓
したがって、ここではcurvedセクションを右回りに変更したいため、
値「20」の頭に「-」を書き加え、「-20」に変更します。
そしてOK。
    ↓
すると、当セクションが右カーブに変更されます。

 

※この「20」という数値を変更すると中心角のなす角度が変化します。
それにしたがって、当セクションの長さも変化します。Radius(半径)に変化がないため、
じつは曲率が変わるわけではありません。ここらがややこしいところですね。

※じつは(左カーブ)→(右カーブ)の変更はRadiusの項目について
(+)→(-)の変更を行うことでも可能です。つまりCurvatureの+-は
Radiusの+-と同期します。ともかく+値は左カーブ、-値は右カーブと頭に入れましょう。


以上の操作を憶えれば、簡単なオーバルコースは作ることができるはずです。
プラレールのようにstraightセクションとcurvedセクションとを組み合わせて
オーバルコースを作ってみてください。

なお、Section 0のスタートラインが
トラック全体のスタートラインとフィニッシュラインにもなりますので
この点は注意してコースレイアウトをしてください。


 

【最低限必要な設定】 


 オーバルコースのレイアウトは完成したでしょうか。
ぜんぜん難しいことじゃありませんね。
簡単な積み木細工です。プラレールと同じ。


もちろんGPLTrkは、もっと複雑なコースレイアウトも可能ですが、
その方法については後に解説することにします。
ちょっと我慢して先に進みましょう。

それと作ったコースは保存を忘れないように。

このようにして作ったコースレイアウトをgtkファイルに保存した上で、
trk23dow(あるいはtrk23dof)にかけてGPLで走行可能なファイルにするわけですが、
じつはこのままではtrk23dofは、このgtkファイルをエラーではじいてしまいます。
エラーが出ないようにするためには、先に作ったトラックにもう少し
項目を設定してやる必要があるのです。
これからその説明をします。

やるべきことは大きく分けて二つあります。

1. 最低限のウォールを付加・設定する

2. トレース線の値を変更するか、トレースを付加することによって、
  1で付加したウォールをトレース線の内側に収める

この二つについて設定を行いgtkファイルに保存後、
trk23dowにかけてコンパイルにすると、
ともかくもGPLで走ることができるトラックができあがります。
(trk23dowにかける時にいくつかの設定ファイルを用意する必要がありますが。
・・・これがじつは一番やっかいなのです)


 【トレース線とウォールとの関係】

先の1のウォールと2のトレース線は、どちらを先に設定しても構いませんが、
一つだけルールがあります。それは、

 すべてのウォールは、最大幅のトレース線の内側におさまらなければならない

ということです。
さもないと、せっかく付加・設定したウォールが表示されないことになってしまいます。
気をつけてください。


 【Trace/トレース線】   

 では、まずはトレース線の設定をしてしまいましょう。

先のルールをもう一度確認します。
「すべてのウォールは、最大幅のトレース線の内側におさまらなければならない」
このルールを守るためには、二つのやり方があります。
ひとつは、すでに存在しているトレース線のセンターラインからの距離を遠くする。
もうひとつは、コースの外側に新たにトレース線を付加してしまう。
いずれの方法によっても構いません。ともかく後に付加するウォールが、
トレース線の最大幅をはみ出さないようにすればいいわけです。


トレース線とは、センターラインと平行して走る「線」です。
このトレース線を対象に、各セクションごとに高度を設定することで、
トラックの高低差を表現することができます。
つまりトレース線とはトラックに高度を与えるための基本線です。

デフォルトでは2本のトレース線が設けられています。
Trackフォルダ内のTrace 0とTrace 1とがそれです。
トレース線は、図面では青い実線で表現されています。
図面を見ると灰色のターマック面の両脇に青線が引かれているのが分かりますね。
このデフォルトのトレース線はセンターラインからそれぞれ5m離れて設置されています。
(正確には、4.99999m、-4.99999mと表記されています)

このトレース線は最高16本まで増やすことができます。
この16本のトレース線それぞれについて
各セクションごとに高度設定できるわけですから、
非常に複雑な断面と高低差をもったトラックを作成することができるわけです。
土手を作ったり、ニュルのような階段状のバンクを設けたりすることも、
このトレース線の本数と、高度設定を上手にやれば可能になります。

ここでは、高度設定は行いません。フラットなコースを作製し
ともかくも走ってみることが目標ですから。


 
  【トレース線のセンターラインからの距離を設定】

ツリー窓のルートに位置するTrackフォルダを明けると、上右窓のリストに

Number of Traces
Trace 0
Trace 1

という項目があるはずです。
Trace 0は-4.99999mという値が設定されていることから分かるように
進行方向に向かって右のトレース線になります。
Trace 1は4.99999mですから左です。

それではTrace 0のセンターラインからの距離を50mに変更してみましょう。

Trace 0をダブルクリック
   ↓
値変更の画面が現れます。
Base内、Metersのラジオボタンをポチッ
   ↓
Valueのダイアログボックス
「-4.99999000E+00」を「-50」に変更してOK
   ↓
すると値が「-50.000002m」に誤差修正がなされて表示される。
また下の図面にはTrace 0の位置が、進行方向右にはみ出て
表示されるようになります。

※ダイアログボックスには小数点以下8桁ほどの数値が入力されていますが
これは単純に整数を入力しても構いません。また、センチメートル単位の
入力をしたいときには、0.85という数値を入れても受け付けます。

Trace 1についても同じやり方で設定をします。
つまり 「4.99999000E+00」を「50」に変更してOK


 
 【トレース線を追加する】

Trackフォルダを開くと、

Number of Traces
Trace 0
Trace 1

の項目が現れます。
トレース線を増やしたいときは、
すでに設定されているトレース線(この場合はTrace 0かTrace 1)を右クリックして
Add afterか、Add beforeのいずれかを選択します。
Add afterを選択すると、右クリックしたトレース線より上に、新トレースが設置されます。
Add beforeを選択すると、右クリックしたトレースより下に、新トレースが設置されます。
(ここではSection 0を基準にして言っています)

新トレースを外側に設置する場合は、基準になるトレースから25m離れて設置されます。
新トレースを内側に設置する場合には、すぐ内側のトレースとの真ん中の位置に
新トレースが割り込む形になります。

トレースが増えたら、次は新トレースのセンターラインからの距離を設定します。
方法は前項で説明したとおりです。



【Wall/ウォール】   

 次にウォールの設置をします。
くどいようですが、もう一度確認します。

すべてのウォールは、最大幅のトレース線の内側におさまらなければならない

よろしい?

ウォールというのは、あえて日本語に訳するとすれば「面」になります。
ウォールという概念にはアスファルト部分やグラベル部分も含まれるので、
「壁」と訳すると垂直のものを連想してしまい、適切ではないと思います。
使い方がやや特殊なので、ここでは「ウォール」を使います。

■ウォールの設置は基本的に三つの段階に分かれます。

1. ウォールの追加
2. 追加したウォールの幅を設定
3. 追加したウォールの属性を設定
4. 追加したウォールの高さを設定     ←これは壁など、一部のウォールのみ

セクションごとにウォールを設置してゆきます。
一セクションのウォール設置を済ませたら、その設定を他のセクションにも
コピーして反映させることもできます。

■さて、いま作製している単純な右回りオーバルコースに最低限必要なウォールは
左から順番に並べると・・・

    (属性値)
外側  10     left border
 ↑   2056    壁 (高さ必要)
      1      asphalt 真中のアスファルト
      3      curbs その脇に白線 (オーバル外側不要)
      1      asphalt (イン側にピット出入り用アスファルト)
 ↓   4      grass (そのイン側は芝)
内側  2056    壁 (高さ必要)

になります。これはSection 0を基準に、上から順番にウォールの属性を
並べていったモノです。

左の数値はgtk.exe内で入力する数値です。右は各数値の意味になります。
上から3番目に「1 asphalt」とありますが、
これはあらかじめ設置されている本コースのウォール属性です。
図面で言うと灰色の部分ですね。

これから、まだ設置されていないウォールの追加と、その属性設定を
してゆきます。


 
 
 【ウォールの追加】

ウォールの追加方法は、トレース線の追加方法と同じ要領で行います。
ウォールはあらかじめ2面、設置されています。

Wall 0   アスファルト面です。
Wall 1   left borderといって左境界面です。

ウォールを追加するには、いずれかのウォールをもとに隣接設置させてゆくわけです。

既存のウォールのフォルダを右クリック
   ↓
Add afterかAdd beforeを選択

afterを選択するとleft border側に新ウォールが設置されます。
beforeを選択するとその反対側に新ウォールが設置されます。

※なお、下の図面のなかで、ウォールが設定されている任意の位置を
ダブルクリックすると、設定情報を収めた該当フォルダが開きます。

※既存の二面のウォールのあいだに新ウォールを追加すると、
既存ウォールと幅を二分する形で新ウォールが割り込みます。
そのため既存ウォールは幅が狭くなります。


 
  【ウォールの幅を設定】

新しく追加されたウォールは、右クリックしたウォール(既存ウォール)と同じ幅です。
そこで、次にウォールの幅を設計通りに変更してやる必要があります。

ウォールの幅の設定は、新たに追加したウォールフォルダの

From
To

という項目の数値を変更することで行います。
この数値は追加された新ウォールの下側の接線が
センターラインからどれぐらい離れているかを表しています。
ややこしいですね。
したがってセンターラインより下にあるウォールについては
既存ウォールの数値をいじることで幅を設定することができます。
しかしセンターラインより上にあるウォールについては
既存ウォールの幅は、新ウォールのフォルダ内で設定しなければならないわけです。

数値入力の要領はトレース線の幅設定と同じです。わかりますよね。
Base内でMetersのラジオボタンをポチッとしてから、設定することを
忘れないように。

※ウォールの属性値10のleft borderは、幅の設定をする必要はありません。
一方で、属性値2048以降の壁については、幅の設定をする必要があります。
とりあえず、0.2mと設定しておきましょう。2056は幅を設定しておかないと
コンパイルの際にエラーが出ます。

この幅設定については、やや慣れが必要な部分かもしれません。
試行錯誤して慣れるようにしてください。


 
  【ウォールの属性設定】

ウォールの属性設定を行います。
属性とは、そのウォールの上を走ったり、あるいは
接触したりしたときに、マシンがどのような反応をするのかを
類型的に指定するものです。

■属性設定は数字を使って行います。
属性と数字との対応関係は以下の通りです。

〈数字〉   〈属性〉
1     アスファルト- Asphalt
2     コンクリート- Concrete
3     縁石- Curbs
4     草地- Grass
5     砂地- Dirt (砂煙が上がるぜ/makes dust!)
6     グラベル- Gravel  (makes dust!)
7     土手- Banking (makes dust!)
8     色んな表面(水のつもりだったんだろね)
      - Some sort of very vicious surface, probably was intended to be water.
10     左の壁- Left-most wall
2048+    当たればクラッシュする壁(例えばarmco、垣根、レンガなど)
      - a wall that you can crash into - e.g. armco, hedge, brick wall etc.
2048    通り抜けできるもの- Drive through (grass verges etc)
2049    めっちゃ硬いモノ- Very hard, armco, etc.
2050    2049と同じ- Same as 2049
2051    柔らかくて弾力のあるモノ(ゴム)- Soft, 'elastic'
2052    柔らかいけど弾力のないモノ(豆腐)- Like 2051, but not as 'elastic'
2053    柔らかい干し草の束- Soft, hay bales
2054    マシンが鼻を突っ込むほど柔らかいモノ(垣根?)- Soft, car sinks into (hedge?)
2055    2054より柔らかいモノ- Soft, softer than 2054
2056    硬いけど金属じゃないぞ、マシンがちょっと弾む- Hard, not metal, cars bounces off a bit
2057    金属的な堅さを持ったアームコ(ガードレール)- Hard, metal, armco
2058    柔らかい、干し草の束- Soft - hay bales
2059    硬い、金属、armco- Hard, metal, armco
2060    弾力のあるゴム- Bouncy rubber
2061+    通り抜けできるモノ- Drive through

■属性の設定をしたいウォールのフォルダをクリックします。
また下の図面上で属性設定をしたい部分をダブルクリックすると、その部分に
あたるフォルダが自動的に開きます。
       ↓
3番目の項目「Surface」をダブルクリック
       ↓
するとお馴染みの設定画面が現れますので、
Value(値)のダイアログボックスに、任意の数値を入力してください。
       ↓
すると下の図面の該当部分の色がそれに合わせて変化するのが確認できるはです。

■属性設定をする際に気をつけるべきことは、進行方向を向いて一番左側に位置する
ウォールは必ず10つまりleft borderの設定をしなければならない、ということです。

また、left borderのすぐ内側(左から2番目)と、一番右(wall0)に関しては、すべてのセクションにおいて
2048以降の高さのあるウォールを設置しなければなりません。さもないとコンパイル時にはじかれます。


  
 【ウォールの高さを設定】

ガードレールなど、ウォール属性によっては高さ設定をしてやる必要があります。
2048以降の属性を持つウォールが高さの必要なものです。
高さの設定は、項目中、Heightの値を変更することによって行います。
要領は、他の数値設定と同じですね。
Base内のラジオボタンをMetersに合わせてから設定することを忘れないように。

2056など高さ設定が必要なものについて設定がないと、コンパイルの時に
エラーが出て、はじかれますので気をつけてください。


 
  【ウォール設定の他セクションへのコピー】

一つのセクションについてウォール設置を済ませたら、その設定を他のセクションに
コピーしてやることで、コース全体のウォール設定を完了させることができて便利です。

やり方は、設定を済ませたセクションのフォルダを右クリック
  ↓
Copy Walls To Allをクリック

これで他のセクションにもウォール設定が反映されます。

もちろんセクションごとに違うウォール設定をすることがコースの見た目という点から
望ましいわけですが、全体に一律な設定をしたあとに修正を加えるという
手順をとるほうが、ラクではないでしょうか。

以上で、最低限必要なウォール設定を完了しました。

最後に一言。
保存を忘れずに。

次章から、いよいよコンパイルに入ります。


 
 

--------------------------------------------------------------------------------


 第三章 ファイルの準備

さていよいよGPLで動かすためのコンパイル作業に入りますが
そのために必要なファイルを準備しなければなりません。
ここの部分が一番やっかいかもしれません。

ここでは、単純なオーバルコースを作製し、ともかくも
コースに出て走らせることができるようにすることが目標です。
そのためオブジェクトやテクスチャは最低限のものしか用意しません。
(しかもかなり流用ですし(笑))
したがって以下のファイルの説明は、必要最小限のレベルにとどまります。
付録という形で、詳細な説明を試みようとは思っていますが。

【コンパイルから試走までの手順】

1. GTKファイル→TRKファイル
  GPLtrk.exeを用いて、先に作ったGTKファイルをTRKファイルにする。

2. GTKファイル→3DOファイル
  trk23dow.exeまたはtrk23dof.exeを用いて、GTKファイルから3DOファイルを生成。

   i.以下のファイルを用意。
    (トラック名).TEX
    (トラック名).TSO
    (トラック名).SET
    (トラック名).GRV
    (トラック名).FB
    (トラック名).INI
      trk23dow.cfgまたはtrk23dof.cfg
      TSOファイルで指定した3DOファイル

   ii.trk23dow.exeまたはtrk23dof.exeを実行し、N3Dファイルを生成。

   iii.N3Dファイルを"(トラック名).3do"とリネーム。


3. 同一フォルダに、作製した以下のファイルを放り込み、GPLのtracksフォルダ内に収める。

   (トラック名).trk         ←1.(トラック名).gtkより生成
   (トラック名).3do         ←2.(トラック名).N3Dをリネーム
       track.ini                ←(トラック名).iniをリネーム

      (トラック名).cam         ←TrackCamEditorで生成

      (トラック名).dat     ←以下のファイルはWatkinsglenなどから
       Pass1.lp                   取りあえず拝借する
       Pass2.lp
       race.lp
       minrace.lp
       maxrace.lp
       pit.lp

4. 67season.iniとgp.iniを適切に書き込む。

5. んでもって、試走。

※私が作ったGTKファイルを添付します。
bluebeck.zip
このトラックを前提に説明してゆきます。もっと複雑なウォール設定をした
トラックを作りたいのであれば、付録を熟読して挑戦してみてください。
(その前に単純なトラックでコンパイル・試走を強くオススメします。
ドツボにはまると泣きを見ますよ(笑)。いやホント)

※注意です。
GTKファイルは公開しないようにしましょう。
これはGPLコミュニティのコンセンサスだと思ってください。
GPLtrkは、GPLでロードできるTRKファイルを直接編集できないようになっています。
これは、デフォルトトラック・追加トラックを問わず、TRKファイルを改修して、
マルチ対戦やGPLRankなどで、ズルをすることを防ぐためです。
そのためにわざとGTKという仮のファイルを編集するという仕組みにしてあるわけです。
(GTK→TRK変換はできるが、TRK→GTK変換はできないようになっている)
自分が作ったコースを公開して対戦で用いてもらいたいと考えているなら、
GTKファイルは作製者だけ、あるいはプロジェクトの仲間内だけ、が
保持することが望ましいと思われます。
私の公開したGTKファイルはあくまで作例ですので、対戦等を想定して作ってるものでは
ないため、公開しているわけです。

 


 【各ファイルの説明】


簡単に、コンパイルに必要な各パラメータ・ファイルの役割を説明します。

〈TEXファイル〉
テクスチャの設定ファイルです。どこに何をいかに貼りつけるかを設定。

〈TSOファイル〉
Track Side Objectsの頭文字です。
樹木や建物などの3dオブジェクトの位置と向きを設定するファイルです。

〈SETファイル〉
コンパイル時にポリゴンの大きさや生成数を決定するためのファイルです。
細かなポリゴンを生成して、高低差のある部分やコーナーの湾曲を
スムースにするために設定。

〈GRVファイル〉
路面のグルーブライン(タイヤ跡)を描くためのファイル。
Replay Analyzerを使ってリプレイから書き出せます。
必要なければ空ファイルでOK。

〈FBファイル〉
Forward/Backward Viewing Distances
可視深度を設定するファイル。
フレームレートに影響します。

〈INIファイル〉
スターティンググリッドやピット、AIの動作などを
設定するファイル。

〈trk23dow.cfg / trk23dof.cfg〉
コンパイル状態を細かく表示させるかを設定。
trk23dowを使うか、trk23dofを使うかでファイル名が異なる。


【各ファイルの用意】

名前を付けて保存したgtkファイルを空フォルダの中に入れます。
そのフォルダ名もgtkファイル名と一致たせた方がいいでしょう。

例えばbluebeckという名称のトラックを作製するとします。
そのためbluebeck.gtkとしましたので、空フォルダ名もbluebeckとしました。

そして先に列挙したファイルを用意してbluebeckフォルダに入れます。
parafiles.zip
↑サンプルを用意しました。
テキストファイルを拡張子を含めて変更して作ってください。
とりあえず中身は空っぽでいいでしょ。

そうするとbluebeckフォルダには以下のファイルが含まれることになります。

    bluebeck.gtk           ←これはGPLtrk.exeによって作ったファイル
    bluebeck.tso
    bluebeck.tex
    bluebeck.set
    bluebeck.grv
    bluebeck.fb
    bluebeck.ini
    そして
    trk23dow.cfg(またはtrk23dof.cfg)←これについてはtrk23dow/fに同梱のもので結構。

以下に、ともかくもコースに出るために必要な最低限の設定のための
作例を用意します。

ファイルの記述内容の詳細については、付録にて各ファイルごとに
説明することにします。自分の思い通りのコースを作製するためには
詳細な説明を理解する必要があります。

・・・が、とりあえずここでは、ちょっと近道をとって、ともかく
コースに出てみましょう。


 

 以下、今回用意すべきファイルの中身について、作例を示します。

詳細については付録と題して、後に書きますので、
そちらをご覧になって、内容を習得してください。

 

【TEXファイル】

これは、どこにどんなテクスチャを貼るかを定義するファイルです。

この作例を(トラック名).texと名前を付けたファイルにコピペしてください。

作例
--------------
0 0 0 10.0 10.0 error
1 0 0 10.0 10.0 asphalt
3 0 0 10.0 10.0 curb0
4 0 0 10.0 10.0 grass
2056 0 1 10.0 10.0 barrier
--------------

※当然、これに見合うだけのテクスチャファイルも用意しなければなりません。
tex_and_mips.zip
↑サービス

※この作例では、テクスチャ設定を、ウォール設定の属性値0 1 3 4 2056に
ついてだけ行った場合のものです。
これ以外の設定を行っている場合には、付録の詳細設定を読んで、
設定してください。


 
 

 【TSOファイル】
3Dオブジェクトをどこに、どういう向きで置くかを設定するファイル。

今回はオブジェクトは何も置いてませんので、
以下の例をそのままコピーして作製してください。

作例
------------------
# Trackside 'Sets': 0
Set List
0 InfieldObject
0 OutfieldObject
------------------

※これも詳細は付録にて説明します。

※オブジェクトを置く場合には、該当する3doファイルも用意しなければなりません。
また各3doファイルに必要なテクスチャファイルも用意する必要があります。
今回はそれらも不要です。
このあたりは、後に説明します。


【SETファイル】

コンパイル時にポリゴンの大きさや生成数を決定するためのファイルです。

コンパイル時にポリゴンの大きさや生成数を決定するためのファイルです。
このファイルは、とりあえず記述例と同じものを用意すればいいでしょう。

作例です。
----------------------
100.0
300.0
20.0
10.0
100.0
20.0
0.10
50000
80000
7000
----------------------


【GRVファイル】
これはグルーブライン(タイヤ跡)を描くためのファイルですが、
必要がなければ、空白で構いません。ただしファイルだけは用意してください。
したがって生成方法の説明は、後に譲り、ここでは省きます。


【FBファイル】
可視深度を設定するファイルです。
深度が深ければ、場所によっては描画に負担が掛かるため、フレームレートは当然落ちます。
その場合には、深度を浅くすることによって調整することができるわけです。

このファイルについては、説明をしてしまいます。
コースの全長に合わせて、自分で作製してみてください。

■記述例
-------------------
400.0 250.0 0.0 0.0
385.0 250.0 0.0 0.0
370.0 250.0 0.0 0.0
355.0 250.0 0.0 0.0
340.0 250.0 0.0 0.0
.
.
.
210.0 250.0 0.0 0.0
-------------------

■ある行に下のような数値が記述されているとします。

600.0 550.0 0.0 0.0

これを解釈すると
1.「通常の場合、前方向に見える深さは『600.0メートル』」
2.「通常の場合、ミラー内に見える深さは『550.0メートル』」
3.「道をはずれた場合、前方向に見える深さは『0.0メートル』」
4.「道をはずれた場合、ミラー内に見える深さは『0.0メートル』」
という意味になります。

■128フィート(39.0144メートル)ごとに一行をあてて、設定します。
たとえば全長3000mのトラックなら、

3000(m)÷39.0144(m)=76.894...

となるので、76ポイントつまり76行の設定をしてやります。

■とりあえず現段階では、すべてのポイントを
500.0 300.0 0.0 0.0
という値にしてみましょう。
細かい微調整はオブジェクトの設定をして試走した後に行えばいいでしょう。
なお自分が作ったトラックの全長から必要なポイント数を割り出してください。

 


  【INIファイル】

スターティンググリッド、ピット、AIの動作などを
指定するためのファイルです。

コンパイル前は、TSOファイルなどと同じファイル名(トラック名)を使って
ファイルを作製しますが、インストールして出走する時には
このファイルをtrack.iniにリネームします。

■作例
記述が多いため、ここには掲げません。直前の書き込み(817)に添付した
パラメータファイルの中にbluebeck.iniファイルがありますので、それを
参照しながら、読み進めていってください。

■[ track ][ pit_lane_0 ][ starting_grid_0 ]の三部分だけは
トラック名やトラック全長に合わせて各自設定する必要があります。

ここでは、その部分だけ取りあえず説明をします。
残りの部分の説明はまとめて付録に譲ります。

■INIファイルは以下のような7部構成になっています。

i.   [ track ]               コースの名前、レース長を設定
ii.  [ configuration_0 ]     コース上のチェックポイントを定義
iii. [ statistics ]          AIのベースラップタイムを記述
iv.  [ ai_track ]            AIの動きを定義
v.   [ GP ]                  同じくAIの動きを定義
vi.  [ pit_lane_0 ]          ピットレーンについての設定
vii. [ starting_grid_0 ]     スターティンググリッドの位置を定義


■このうちここでは
i.[ track ]、vi.[ pit_lane_0 ]、vii.[ starting_grid_0 ]部分について説明します。

作例bluebeck.iniファイルは、コース全長が1500m、コース幅が10m、コース脇の白線の幅20cm、
そしてピットレーン進入用の道の幅が5mという数値を前提に
作られたINIファイルです。したがってこれらの前提条件が異なるトラックを
作製している場合には、当然、各部分に異なる設定をしなければならないわけです。


■i.[ track ]
プログラムカバーなどで表示されるサーキット名称などを設定する部分です。

作例
-----------------
[ track ]
track_name = Blue brubeck Circuit
track_name_short = bluebeck
track_num_turns = 2
track_length = 0.932m
track_altitude = 0
  ; Above, note track length given in miles,
  ; while altitude given in meters.
-----------------

(説明)
track_name                               トラックの正式名称
track_name_short                      トラックの略称
track_num_turns                        コーナーの数
track_length                               全長。マイルで換算する。
track_altitude                             トラックの標高。これは0のままでよい。

ここの記述は、コンパイルの段階では神経質にならなくても
良い部分です。設定が不正確でもコンパイルではじかれることはありません。
もちろん正式公開の段階では正確でなければ恥ずかしいですが、
逆に言えば恥ずかしい、という程度の問題にすぎません(笑)

※さきに添付した私のbluebeck.iniファイルの中に一カ所間違いがあります。
それは[ track ]部の次の行です。
   track_length = 1.500m
これですね、どうも単位のmはマイルなのだそうです。私、誤解してました。
したがって1500メートルのトラックですから、次のように直さなければなりません。
   track_length = 0.932m
ただここの[ track ]部は、先にも言ったとおりコンパイルとは関わりのない部分なので、
間違いがあってもコンパイルにエラーが出たりすることはないようです。
現に私は問題はありませんでしたから。


 
 ■vi.  [ pit_lane_0 ]
ピットレーンについての設定をする部分です。
コースレイアウトとピットの設計にしたがって、数値を入力します。

作例
-------------------
[ pit_lane_0 ]
lane_on_right = 1    ; 0 if lane on left, 1 if on right
lane_has_wall = 0    ; 0 if no pit wall, 1 if pit wall exists
lane_bounds_dlong = 1390.0 110.0  ; start/end dlong of the pit lane
lane_bounds_dlat = -9.0 -5.3   ; start/end dlat of the pit lane
pit_board = 5.0 1400.0 -100.0 100.0  ; dlat of board, dlong of board, dlong LOS start, dlong LOS end (last 2 not used)

stall_0 = 90.00 -7.00
stall_1 = 85.00 -7.00
stall_2 = 80.00 -7.00
stall_3 = 75.00 -7.00
stall_4 = 70.00 -7.00
stall_5 = 65.00 -7.00
stall_6 = 60.00 -7.00
stall_7 = 65.00 -7.00
stall_8 = 60.00 -7.00
stall_9 = 55.00 -7.00
stall_10 = 50.00 -7.00
stall_11 = 45.00 -7.00
stall_12 = 40.00 -7.00
stall_13 = 35.00 -7.00
stall_14 = 30.00 -7.00
stall_15 = 25.00 -7.00
stall_16 = 20.00 -7.00
stall_17 = 15.00 -7.00
stall_18 = 10.00 -7.00
stall_19 = 5.00 -7.00
-------------------

うえの作例は、

コース全長1500メートル、
コース幅10メートル、
コース脇のピット進入路の幅5メートル、
本コースとピット進入路に挟まれた白線の幅0.2メートル

というレイアウトを前提にピットを設計したものです。

lane_on_right       ピットレーンが本コースの右に位置するか否かを設定します。
                    右なら値は1、左なら0。

lane_has_wall       レーンと本コースとのあいだにピットウォールがあるかどうか。
                    あるなら値は1、なければ0。

次の二つの項目でピットレーンの長さと幅を設定します。boundとは境域の意。

lane_bounds_dlong   ピットの長さと位置を設定する項目。
                    スタートラインからの距離(メートル)を、始点−終点の順で設定。
                    作例は
                     1390.0 110.0
                    となっているが、これは全長1500メートルのトラックにおいて、
                    スタートラインから-110メートルの位置からピットが始まり
                    スタートラインから+110メートルの位置でピットが終わる、ということ。

lane_bounds_dlat    ピットの幅と位置を設定する項目。
                    センターラインからの距離(メートル)を、下端−上端の順で設定。
                    作例は
                     -9.0 -5.3
                    となっているが、これはセンターラインの位置を0として
                    下端が-9.0メートル、上端が-5.3メートルに位置していることを示している。
                    つまりピットレーンの幅が4.7メートルである。

以上の2項目からピットレーンの境域が、長さ220メートル、幅4.7メートルであり、
添付図のように展開していることになる。

pit_board           ピットボードの出現位置。
                    作例 5.0 1400.0 -100.0 100.0
                    センターラインからの位置5.0メートル、スタートラインからの位置1400メートル。
                    後ろの二つの数値は用いません。


stall_0以下         これ以下の数値は、ピット内のマシンの停止位置を設定するものです。
                    スタートラインからの距離(メートル)、センターラインからの位置(メートル)
                    で設定。位置決めは、マシンの前後全幅の中心点が基準になります。
                    当然、ピットレーン内におさまる位置でなければなりませんね。
                    作例では5メートルおきに、直線に並べてみました。


vii. [ starting_grid_0 ]
スターティンググリッドの位置を定義します。
これも各マシンごとに位置決めをします。

作例
-------------------
[ starting_grid_0 ]
  ; 3x2 staggered grid
  ; polesitter on left
  ; track length is <1500.00>
  ; grid front center at <1500.00, -0.00>
  ; width between boxes  3.00
stall_0 = 1497.00 3.00
stall_1 = 1497.00 -0.00
stall_2 = 1497.00 -3.00
stall_3 = 1477.00 1.50



stall_19 = 1417.00 -1.50
-------------------

最初の5行分のセミコロン以下はコメントです。覚え書きをしておくところ。

stall_0 = 1497.00 3.00

各マシンごとに、
スタートラインからの距離(メートル)、センターラインからの位置(メートル)
の順で設定する。これも位置決めは、マシンの前後全幅の中心点が基準になります。

作例では、最前列に3台が横並び。0番車が左、1番車が真ん中、2番車が右となります。
スタートラインから3メートル離していますが、これはマシンの中心の位置なので、
マシンのノーズはもう少し前になります。
二列目は二台。市松に並んでいます。


以上、コースレイアウトに合わせて、INIファイルの数値の設定を行ってください。
それ以外の部分については現段階では作例を改変する必要はありません。
(AIはまともに動いてくれませんが)


  
 【trk23dow.cfg / trk23dof.cfg】

これはコンパイル時にコンパイル状態を表示するか否か、どの項目を
表示するのか、を設定するためのファイルです。

trk23dow.exeまたはtrk23dof.exeをダウンロードすると同梱されているので、
現段階では、それをそのまま使用すればいいでしょう。


 
 

--------------------------------------------------------------------------------


 第四章 コンパイル

必要なファイルを準備できたら、いよいよコンパイルの実行です。
実体は、gtkファイルをGPLでロード可能な3DOファイルにするための作業です。

【コンパイルに必要なツール】

これには2種類存在しています。

trk23dow
trk23dof

前者はDOSベース・キャラクタベースのプログラムであり、
後者はwindowsのGUIをもつソフトです。
基本的な機能はどちらも同じです。
どちらを使用しても構いませんが、
DOSベースのソフトを使い慣れていない人は、後者を用いるのが無難でしょう。

ここではtrk23dofを使うことを前提に説明をしたいと思います。
trk23dowについては付録にて別途、説明します。


【コンパイルに必要なファイル】

コンパイル作業をするためには、さきにGPLTrkで作製したGTKファイルのほかに、
先に説明した7つのファイルを用意する必要があります(もちろん中身も適切に設定)。
これらはコンパイル時にtrk23dow/f.exeが読み込むパラメータを
定義するためのファイル群です。

    (トラック名).GTK

    (トラック名).TEX
    (トラック名).TSO
    (トラック名).SET
    (トラック名).GRV
    (トラック名).FB
    (トラック名).INI
      trk23dow.cfgまたはtrk23dof.cfg

これらのファイルを適切に作製し、すべてを同じフォルダに放り込んだあと、
trk23dow/fを起動してコンパイルを行います。

※TSOで指定したオブジェクトやテクスチャも用意する必要があります。
 ただし作例bluebeckトラックではオブジェクトは0個ですので不要です。

※TEXで指定したテクスチャはコンパイル時点で用意する必要はありません。


【コンパイル】

trk23dofを起動します。
この際、trk23dof.exe自体を、用意したgtkファイル・パラメータファイル群と
同一フォルダの中にコピーして、そこから立ち上げるとファイル選択などで
便利です。
      ↓
Pick GTKというボタンを押して、gtkファイルを選択。
      ↓
するとgtkファイルの内容にエラーがないかどうかを検査します。
エラーがあれば、その旨表示されますので、その記述にしたがって
gtkファイルの中身を改変してください。
-----------------------
Filename "bluebeck.gtk"
Length 29527560units [1500.0000m,  0.9321miles]
30 sections
210 walls ( 7.0 per section)
2 laterals
Finished checking TRK.  Number of errors=0.
Track is ok.
-----------------------
以上のような表記が出ればOKです。(bluebeck.gtkの場合)

      ↓
エラーがなければ、右下隅のCompileボタンを押します。
すると、コンパイルが始まり、N3Dという拡張子のついたファイルが
同フォルダに作り出されます。

※エラーは以下の場合に現れます。
・2048以降の壁に高さが設定されていない場合。
・left borderが適切に設定されていない場合。
・left borderのすぐ内側に高さのあるウォールが設置されていない場合。
・wall0に高さのあるウォールが設置されていない場合。
他にもパターンはあるのかも知れませんが、これ以外を確認できておりません。

【N3Dファイルをリネーム】

・trk23dofによって作出されたN3DファイルはそのままではGPLが
ロードしません。これの拡張子部分を3DOにリネームします。

bluebeck.N3D → bleubeck.3DO

・ついでにここでINIファイルもリネームしましょう。
   bluebeck.ini → track.ini
という具合に。
コンパイルの段階ではトラック名である必要があるのですが、
インストール段階ではtrack.iniでなければなりません。
なんででしょうね。
ともかくそういう仕様なのです。

 

 【インストールの準備】

・トラック名をつけた同一フォルダに、
作製した以下のファイルを放り込み、GPLのtracksフォルダ内に収めます。

   ・(トラック名).trk         ←(トラック名).gtkより生成
   ・(トラック名).3do         ←(トラック名).N3Dをリネーム
      ・ track.ini                ←(トラック名).iniをリネーム

      ・tex、tsoファイルによって設定したテクスチャファイル(MIPファイル・SRBファイル)と3DOファイル

      ・(トラック名).cam         ←TrackCamEditorで生成


        ↓


・また以下のファイルを既存のトラックから拝借して、同フォルダ内に収めます。

      (トラック名).dat     ←以下のファイルはWatkinsglenなどから
       Pass1.lp                   取りあえず拝借する
       Pass2.lp
       race.lp
       minrace.lp
       maxrace.lp
       pit.lp


        ↓


・そして67season.iniとgp.iniを適切に書き込んで出走。となります。

以下詳述します。

■trkファイルはgtkファイルをGPLtrk.exeで開き、

       ↓
  メニューから
  File →Export Track File

これで(トラック名).trkファイルが生成されるはずです。

※以前も書きましたが、gtkファイルは作製者・作製集団のみ保持するようにしてください。


■トラックCAMファイルはTrackCamEditorで作製します。
http://www.joachimblum.de/trkcamedit.htm
・Add Behindボタンでカメラの数を増やしてゆきます。Cam#に一つずつ加わるのが分かるはずです。
・各カメラに
                 Distance from s/f line                         スタートラインからの距離
                 Distance from center-line of the track  センターラインからの距離
                 Height from the ground             地上からの高さ
                 Change over point                              カメラ切り替え位置
  などを設定し、ファイルを保存します。
・ファイル名はトラック名にしてください。

※とりあえず全長だけでも合わせて、200mおきぐらいにカメラを置いてください。
最初はいい加減な設定でもいいでしょ(笑)。じっさいにリプレイを見て、
カメラの位置を自分で確かめながら少しずつ修正していってください。
あるいは既存のトラックのcamファイルを編集して流用するという方法でも構いません。


■datファイルは、例えばワトキンスグレンのフォルダ内のwatglen.datファイルを
自分がつけたトラック名にリネームして使用します。
これはdatファイル内の背景テクスチャなど、足りないファイルを用いる必要があるからです。

※ちなみにその他に必須とされるファイルは以下の通りです。
       ・AI関係のLPファイル
       ・プログラムカバーに関するPBFファイル
       ・背景関係のhoriz.3doとmipファイル

当然、発表するに足るトラックを作製するには、datファイル内の3doファイル等も
自ら作製する必要はあると思います。大変な作業です。


■以下のファイルも、ワトキンスグレンのフォルダの中から拝借してフォルダ内に収めましょう。
 これらはAIに関わるファイルのようです。

       Pass1.lp
       Pass2.lp
       race.lp
       minrace.lp
       maxrace.lp
       pit.lp

■もう一度、同一フォルダに入っているファイルを確認。
 例としてbluebeckと名前を付けたトラックとする。

(bluebeck)フォルダ内
       bluebeck.trk
       bluebeck.3do
       track.ini

       *.mip, *.sbr, *.3do

       bluebeck.cam

       bluebeck.dat
       Pass1.lp
       Pass2.lp
       race.lp
       minrace.lp
       maxrace.lp
       pit.lp

※作例のbluebeckトラックでは3doファイルは不要でしたね。
mipファイルに関しては
       error.mip
       Asphalt.mip
       Barrier.mip
       Curb0.mip
       Grass.mip
が必要でした。それらも同フォルダ内に収める必要があります。


【トラックインストール】
67season.iniを適切に設定します。同じくbluebeckトラックを例に説明します。
seasonsフォルダ内の67season.iniファイルの最後に

--------------------
[EventXX]
name=Blue brubeck International circuit
shortname=bluebeck
trackDirectory=bluebeck   ←この行が一番大事。bluebeckトラックの入ったフォルダ名を指定。
month=10
day=14
numberOfLaps=70
startingGrid=6
--------------------

を書き加えてください。

そしてEventXXのXXには続き番号をふる必要があります。
つまり直前のコースが20番なら、bluebeckは21番を入れる、という具合です。

さらに67seasonsiniファイル内の冒頭部分のnumEventの数字を一つ増やしてください。

※gpl.iniは出走のためには必須ではありません。


 
 

【改変とテストの繰り返し】   
 さて、コースに出ることはできたでしょうか。
今回作ってみたのは極めて単純なトラックなので、走行そのものが楽しめるわけでは
ありませんが、自分で作製したものは格別。最初は意味もなく何周もしてしまうに
違いありません。涙ものですよ、これは。

ここまでやってコースに出られない場合は、たいていテクスチャファイルが足りないのだと思ってください。高度設定に無理があろうが、3Dポリゴンが歪んでいようが、コースに出られることは出られるものです(走りやすいかどうかは別問題)。コースに出られないのは、texファイルや3Dオブジェクトで設定したテクスチャがトラックフォルダに入ってない場合です。確認してみてください。

最後にひとつだけ。

これはTIPSに属することかもしれませんが、触れておきます。
いったん出来上がったコースに手を加えて、少しずつ見栄えのいいモノに
仕上げてゆく作業をこれからしてゆくわけですが、その際、
原則として一カ所改変した時は、その都度、コースに出て、
改変にミスがないかどうか確認するようにしましょう。
必ずしも走る必要はありません。コースに出られるかどうかを確認すること。
複数箇所の改変をした後にコースに出ようとして出られなかった場合、
問題点がどこにあるのかを探すのは大変なことだからです。
めんどうでも改変一カ所ごとに一度コースに出てみること。
結果的にそのほうが作業時間はむしろ短縮されると考えてください。


 

--------------------------------------------------------------------------------


 付録


 【TEXファイル】
これは、どこにどんなテクスチャを貼るかを定義するファイルです。

■記述例
------------------
0 0 0 10.0 10.0 error
1 0 0 10.0 10.0 asphalt
1 1 0 10.0 10.0 road
1 2 0 10.0 10.0 run
.
.
.
2056 1 1 10.0 10.0 barrier
------------------

■たとえば、TEXファイルのとある行に、このような数値が記述されているとします。

2056 1 1 10.0 10.0 barrier

これを前から解釈すると
a.「『2056』と設定されているウォールに」          ウォールの属性値
b.「そのうちのUnk3値が『1』のウォールに」         Unk3の値
c.「そのうちの値『1』つまり縦の面(サイド)に」    そのウォールのどのサイドに貼るのか(サイド設定)
d.「縦方向に『10.0メートル』おきに」              縦方向、何メートルごとに貼るのか
e.「横方向に『10.0メートル』おきに」              横方向、何メートルごとに貼るのか
f.「『barrier.mip』というテクスチャファイルを」   貼るべきテクスチャファイルのファイル名
貼り付ける。
・・・という意味になります。

つまり
a.b.c.で場所を指定する。
d.e.で何メートルごとに貼るかを指定。
f.で何を貼り付けるのかを指定。
という具合。

※一行内の数値間の空白は、半角一つ分です。

■Unk3の値
同じウォール属性であっても、Unk3の値を変えてやることで
異なる設定をしたり、違うテクスチャを貼り付けるたりすることができます。

たとえば
2056 1 1....barrier01
2056 2 1....barrier02
2056 3 1....barrier01
2056 3 2....barrier03

※Unkとはunkownの意味でしょうか。

■3.のどのサイドに貼るのかの指定は、以下の数値によって行います。(サイド設定)

0=平坦なウォールの表面。地表など。通常はこれを指定。
1=armco(ガードレール)など、ウォールの左右の側面。
2=armco(ガードレール)など、ウォールの上面。
3=地面の裏面。
4=ウォールの手前の面。
5=ウォールの奥の面。
6=天井。

※1以降の数値は、幅と高さがあるウォールについての設定です。
なお1のサイドに貼ることは必須ですが、2、4、5への設定はオプションのようです。

 なお、4と5にテクスチャを張りたい場合には、gtkファイルの該当ウォールのunk4の値に「96」と入力してください。


■記述例にあるように一行目は通常、

0 0 0 10.0 10.0 error

と置きます。場所の指定が0 0 0になっていますね。
きちんと設定したつもりの場所指定に誤りがあった場合、
error.mipファイルが貼られることになります。error.mipファイルで
ハイライトするようにしておけば、指定漏れを見つけやすいでしょう。

※TEXファイルを設定する時は、同時に、対応するmipファイルも用意して
同フォルダの中に入れてしまいましょう。
コンパイルそのものには必ずしも必要ありませんが、テクスチャの用意し忘れを
防ぐためにはそのほうがいいと考えます。

※設定したウォールには、すべてTEXでテクスチャ設定を行う必要があります。
当然、それに対応したテクスチャも用意しなければなりません。


 
 
 
 【TSOファイル】
3Dオブジェクトをどこに、どういう向きで置くかを設定するファイル。

※このTSOファイルは3Dオブジェクトをあらかじめ用意してあることが前提になる設定ファイルです。
したがって論理的な順序から言えば3Dオブジェクトの性質や作成方法の叙述が
先に来なければならないわけです。ただ、のちのリファレンスの便宜、という意味で、
ここにまとめておくことにします。余裕があれば後にまた掲げます。


■記述例
-----------------
# Trackside 'Sets': 2
Set List
[    0]: 3, 165.0, 20.0, 0.0, 0.0, 0.0, 0.0, 1.0, tree2 side tree2
[    1]: 3, 175.0, 20.0, 0.0, 0.0, 0.0, 0.0, 1.0, tree2
1 InfieldObject
[    2]: 1, 1435.0, 9.5, 0.0, 270.0, 0.0, 0.0, 1.0, tower
1 Reference
{    0}: 14
1 OutfieldObject
[    3]: 3, 8427.0, 65.0, 0.0, -10.0, 0.0, 0.0, 1.0, tree16
3 Reference
{    0}: 55
{    1}: 56
{    2}: 57
-----------------

■構成
TSOファイルの記述は、三部構成になっています。

第一部 :   Set List以下         走行可能な範囲内に置かれたオブジェクトについての設定
第二部 :   InfieldObject以下   進行方向右側のコース外に置かれたオブジェクトについての設定
第三部 :   OutfieldObject以下  進行方向左側のコース外に置かれたオブジェクトについての設定


■文頭


------------------
# Trackside 'Sets': 2
------------------

ここで『2』とある数字は、Set Listの部に記述されたオブジェクトの数です。

オブジェクトは[ 0]からの連番になっているため、
Set Listの最後に記述されたオブジェクトの番号が例えば[15]であった場合は、
全部で16個のオブジェクトについて設定が行われることになります(last number+1)。


■基本構文
下の例は、一つのオブジェクトの場所と位置の設定情報を記述しています。
つまり一行につき一つのオブジェクトの設定を書くわけです。
そしてその設定情報の基本構文は一部、二部、三部とも共通です。


----------------------------------
[    0]: 3, 165.0, 20.0, 0.0, 0.0, 0.0, 0.0, 1.0, tree2 side tree2
----------------------------------
   a     b    c     d     e    f    g    h    i     j     k.....
※説明の便宜に英字を割り当ててみました。

この例を前から解釈してゆくと
a.「『0』番と指定されたオブジェクトについて」   ・・・オブジェクト番号(全オブジェクトの通し番号です)
b.「座標指定タイプの値が『3』」                ・・・座標指定番号。1または2という値もあるが通常3を変更する必要なし。
c.「スタート地点から『165.0』メートルの場所に」 ・・・スタート地点からの距離
d.「センターラインから『20.0』メートルの場所に」・・・センターラインからの距離
                                             ・・・(+値はセンターラインの左、-値はセンターラインの右)
e.「地表から『0.0』メートルの高さの場所に」     ・・・地表からの高さ(-値あり)
f.「上方から見た傾き『0.0』(角度指定)」       ・・・上方から見た傾き
g.「横断面から見た傾き 『0.0』(角度指定)」    ・・・横断面から見た傾き(滅多に変更しない)
h.「側面から見た傾き『0.0』(角度指定)」       ・・・側面から見た傾き(滅多に変更しない)
i.「スケール(倍率)『1.0』」                  ・・・スケール(滅多に変更しないし、変更しても反映しない(笑))
j.「ファイル名『tree2.3do』ファイルを指定の場所と向きに置く」・・・ ファイル名
k.「以下、コメント、つまり人間用のメモ。『side tree2』の記述は設定とは無関係」・・・ コメント

つまり
c.d.e.で場所を指定し、
f.g.h.で傾きを指定しているわけです。

※b.の座標指定タイプというのは、場所と傾きの値を
一点(トラック上の0座標)を基準とした絶対値で指定するか、
各所のセンターラインからの相対値で指定するか、に関わってきます。
値『3』は両者を相対値で指定するというタイプですが、これを用いるのが無難でしょう。

※c.d.e.の場所指定は、3Dオブジェクトの0座標(0.0)の位置が来ます。

■位置
オブジェクトを置く場所によって、第一部・第二部・第三部と置き分けてゆきます。

・第一部 Setlist以下
走行可能な場所にオブジェクトを置きたい場合は、
そのオブジェクトの設定情報を「SetList」以下に

・第二部 InfieldObject以下
進行方向にむかって右側の走行不可能な場所にオブジェクトを置きたい場合は、
「InfieldObject」以下に

・第三部 OutfieldObject以下
進行方向に向かって左側の走行不可能な場所にオブジェクトを置きたい場合は、
「OutfieldObject」以下に

それぞれ記述する。

 


 ■第二部・第三部の各冒頭部分
-----------------
4 InfieldObject
.
.
3 OutfieldObject
.
.

-----------------
それぞれの頭の数字は、それぞれの部に置かれているオブジェクトの個数です。
この場合、第二部は4個のオブジェクト、第三部は3個のオブジェクトについて
設定していることを示しています。


■Reference
InfieldObjectとOutfieldObjectで設定したオブジェクトは、
各オブジェクトが隣接しているセクション(gtkファイルのセクション)の数値を記述する
必要があります。


-----------------
[    4]: 3, 8427.0, 65.0, 0.0, -10.0, 0.0, 0.0, 1.0, tree16
3 Reference
{    0}: 55
{    1}: 56
{    2}: 57
-----------------

このReference以下の記述は、
「tree16.3doというオブジェクトが『55』『56』『57』の『3』つのセクションに隣接している」
という意味です。
・『55』『56』『57』という数字がGTKファイルにおけるセクション・ナンバーになります。
・Referenceの頭の数字が、隣接するセクションの個数になります。
上の例では、「当オブジェクトが隣接するセクションは3個」という意味になります。
・{  }内の数値は0からの連番を振ります。

このReferenceの記述は、オブジェクトが描画されるタイミングをコントロールするための設定です。
例えば、オブジェクトが55から70までのセクションを隣接している場合、Referenceで
68、69、70しか記述していなければ、オブジェクトの手前部分の描画のタイミングが遅くなり、
かなり近づいた時点で突如、オブジェクトが出現するという不自然なことが置きます。

そしてこの描画のタイミングは、FBファイルで設定した値と相関していますので、両者を上手に設定して
描画のタイミングとフレームレートの調和点を探ってください。

※コンパイルの段階でTSOに記述した3DOファイルとSRBファイルを用意して
同一フォルダに収めておくことが必要です。

※ファイル名が間違ってるとコンパイルの段階で蹴られます。気をつけて。

※ファイル名とコメントは数字や記号で始まるものは用いないように。

※3doのファイル名にロングファイルネーム(英数半角8文字超)は用いないこと。

※TSOファイルの記述には空白行を作らないようしてください。


 
 
 【SETファイル】

コンパイル時にポリゴンの大きさや生成数を決定するためのファイルです。
このファイルは、とりあえず記述例と同じものを用意すればいいでしょう。

このファイルと同じ機能をべつの形で代替させることもできますが、
以下、いちおう説明をしておきます。

■記述例です。
----------------------
100.0
300.0
20.0
10.0
100.0
20.0
0.10
50000
80000
7000
----------------------
これだけしか記述されていません。

説明の便宜のため各行にアルファベットを割り当てます。

a. 100.0
b. 300.0
c. 20.0
d. 10.0
e. 100.0
f. 20.0
g. 0.10         ←コーナーエラー値
h. 50000
i. 80000
j. 7000


■これを解釈すると

・〜aメートル
「a値100.0メートルまでの長さのセクションでは、最大c値20.0メートル長のポリゴンを生成」
(つまり最低でも5つのポリゴンで構成される)

・aメートル〜bメートル
「a値100.0メートルからb値300メートルまでのセクションでは、最大d値10.0メートル長のポリゴンを生成」

・bメートル〜
「b値300.0メートル以上の長さのセクションでは、最大e値100.0メートル長のポリゴンを生成」


■コーナーエラー(g値)
g. の
-------
0.10
-------
とはつまり0.10m(10cm)のことです。GPLEAではコーナーエラーの値と呼んでいます。
これはコーナーのセンターラインを滑らかな円周と考えた時、実際に生成されるポリゴンが
その理想の円周からどれぐらいずれることを許容するのか、の最大値を設定する
部分になります。センターラインを基準として考えるため、
コーナーの外側はより大きくずれることになります。

この値が大きいとゴツゴツしたトラックになります。逆に、0.05のように
小さい値を設定すると、滑らかなトラックになります。

■f. h. i. j. の各値は、変更する必要はありません。


 
 
 
 【INIファイル】

スターティンググリッド、ピット、AIの動作などを
指定するためのファイルです。

コンパイル前は、TSOファイルなどと同じファイル名(トラック名)を使って
ファイルを作製しますが、インストールして出走する時には
このファイルをtrack.iniにリネームします。

■INIファイルは以下のような7部構成になっています。

i.   [ track ]               コースの名前、レース長を設定
ii.  [ configuration_0 ]     コース上のチェックポイントを定義
iii. [ statistics ]          AIのベースラップタイムを記述
iv.  [ ai_track ]            AIの動きを定義
v.   [ GP ]                  同じくAIの動きを定義
vi.  [ pit_lane_0 ]          ピットレーンについての設定
vii. [ starting_grid_0 ]     スターティンググリッドの位置を定義


* 通常、track.iniを見ると ; 以降で示されるコメントが多数書き込まれています。
今回の説明では記述を省いていますが、実際の作成時には後で修正する場合を考慮して
コメントを残しておくか、あるいは自分でコメントを書いておいた方がよいでしょう。


■i.[ track ]
プログラムカバーなどで表示されるサーキット名称などを設定する部分です。

作例
-----------------
[ track ]
track_name = Tomioka Circuit
track_name_short = Tomioka
track_num_turns = 23
track_length = 5.774m
track_altitude = 0
  ; Above, note track length given in miles,
  ; while altitude given in meters.
-----------------

(簡単な説明)
track_name                    トラックの正式名称
track_name_short              トラックの略称
track_num_turns               コーナーの数
track_length                  全長。マイルで換算する。
track_altitude                トラックの標高。これは0のままでよい。

ここの記述は、コンパイルの段階では神経質にならなくても
良い部分です。設定が不正確でもコンパイルではじかれることはありません。
もちろん正式公開の段階では正確でなければ恥ずかしいですが、
逆に言えば恥ずかしい、という程度の問題にすぎません(笑)

以下、詳細に。

  [ track ]
  track_name = Tomioka Circuit
      サーキットの正式名称。レース結果やラップタイム
      をhtmlファイルにエクスポートする際は、サーキット
      名はこの名称で出力されます。

  track_name_short = Tomioka
      プログラムカバーの下や、レース後のニュースに
      表示される短縮名です。ただし、ニュースに表示
      される名前は厳密にはgp.iniや67season.iniに記述
      されたeventの項が使われます。

  track_num_turns = 23
      サーキットのコーナー数を記述します。これも
      プログラムカバーと共に表示されます。

  track_length = 5.774m
      サーキットの全長を記述します。単位はマイルです。
      例のように、数値の後ろに m が必須です。

  track_altitude = 0
      サーキットの標高、のようですが、ここにはゼロを
      指定します。デフォルトのサーキットでは、
      メキシコでさえゼロが指定されています。

上の例では、サーキットの名称は Tomioka Circuit、
短縮名は Tomioka、コーナーが 23個あり、
全長は5.774マイルであると定義しています。

 

 ■ii.  [ configuration_0 ]
コース上のチェックポイントを定義。
この定義は必須ではありませんが、ショートカットなどの
不正防止のために定義することがあります。

・作例
---------------------------
  [ configuration_0 ]
  checkpoint_0 = 2037.0 -14.0 7.5 5.0 0
  checkpoint_1 = 2763.3 -14.7 7.0 5.0 0
  checkpoint_2 = 3138.0 -14.3 6.5 5.0 0
  checkpoint_3 = 7069.5 -9.0 11.0 10.0 0
---------------------------
上記の例では、0から 3まで、合計4個所のチェック
ポイントを定義しています。

・チェックポイント0を例に説明します。
---------------------------
  checkpoint_0 = 2037.0 -14.0 7.5 5.0 0
---------------------------

四つ数字が並んでいます。左から
  2037.0      スタートラインからの距離(メートル)
  -14.0       通過義務最右端。センターラインからの右方向への距離(メートル)
  7.5         通過義務最左端。センターラインからの左方向への距離(メートル)
  5.0         チェックポイント不通過時に科せられるStop&Goペナルティの秒数
    0           役割は不明だが、かならず必要。


■iii. [ statistics ]
AIのベースラップタイムを記述
Mark Beckman氏によるtomiokaでの設定例に説明を加えて記します。

  reference_value = 171.0
      AIのベースラップタイムを秒数で記述します。
      171秒としてありますね。


■iv.[ ai_track ]
ここでは、AIの動きについて定義します。
以下、Mark Beckman氏によるtomiokaでの設定例です。

  [ ai_track ]
  end_start_behavior_section = 3.000000
      スタート後のサイド・バイ・サイドによる順位
      変動後、どれくらいで通常走行に戻るのかを調整
      する値です。

  merge_from_pit_line_dlong = 800.00000
      ピット・アウト後、どれくらいの距離でレーシング
      ラインに戻るかを調整する値です。

  pit_at_end_of_track = 0.0
      ピットレーンがスタート/フィニッシュライン跨ぐ
      場合は1、そうでなければ0に設定します。

  pit_lane_end_dlong = 200.000000
      ピットレーンの出口までの距離を設定します。
 
  pit_lane_entrance_width = 34.0
      ピット入口が口を空けている距離を設定します。

  pit_lane_has_wall = 1.000000
      ピットウォールがある場合は 1.000000 を指定。

  pit_lane_on_right = 1.000000
      ピットがコースの右側にあるなら 1.000000、
      左側にあるなら 0.000000 を指定します。

  pit_lane_start_dlong = 8800.000000
      ピットレーンがどこから始まるのか、言い換えれば
      AIはどこからスローダウンするかを調整する値です。

  pit_lane_width_left = 2.000000
      センターラインからピットレーンの左端までの距離をメートル単位で指定
      します。

  pit_lane_width_right = 3.000000
      センターラインからピットレーンの右端までの距離をメートル単位で指定
      します。

  start_of_pit_stalls = 9100.000000
      ピットのガレージがどこから始まるのかを調整する
      値です。

  brabham_fuel_load_per_lap = 3.84
  brm_fuel_load_per_lap = 4.72
  coventry_fuel_load_per_lap = 4.10
  eagle_fuel_load_per_lap = 4.35
  ferrari_fuel_load_per_lap = 4.27
  lotus_fuel_load_per_lap = 4.17
  murasama_fuel_load_per_lap = 4.62
      各AIカーが周回あたり何リッターのガスを積むか
      を調節する値です。この設定値が小さすぎると
      AIカーがガス欠になったり、逆に大きすぎると
      ペースが遅くなったりしてしまいます。

  track_dlong_sep_coeff = 0.8
      AIカーがどれくらい接近戦をするかを調整する値
      で、1.0を超える値を指定すると離れすぎてしまい
      ます。

  track_global_hype_scaling = 0.95
      AIカーのペースを簡単に操作するのに使う調節値。
      1.0が普通、小さくすると速く、大きくすると遅く
      なります。

以下はほとんど使われない特殊な値です。

  track_start_speed_limit = 1.231
      スタート後、end_start_behavior_sectionで設定
      した距離を走行するまでのAIの最高速度を指定し
      ます。
        * 1.000 = 80 mph
      レースペースでの速度と、スタンディング
      スタート後の速度が大きく差がある場合に使用?
      Zandvoortで使われているようです。

  track_driver_mod_scaling = 0.2
      gpl_ai.iniの設定を特定サーキットでのみ変更
      するための調整値のようですが詳細は不明です。
      Monacoで使われているようです。


 ■v.   [ GP ]
ここでも、AIの動きについて定義します。
以下、Mark Beckman氏のtomiokaでの設定例です。

  [ GP ]
  dlong_speed_adj_coeff = 1.027000
      GPLのクロック設定、といった雰囲気の調整値。
      1.0 は LPファイルの設定に基づき、値を大きく
      すると早く、小さくすると遅くなります。この
      値の影響範囲は非常に大きいので、調整範囲は
      ほんの少しにした方が賢明です。

  dlong_speed_maximum = 2.60000
      AIカーの最高速度を規定する値です。
        * 1.000 = 80 mph
      他にどんな設定をしていても、最終的にこの
      設定は有効になります?


■vi.  [ pit_lane_0 ]
ピットレーンについての設定をする部分です。
コースレイアウトとピットの設計にしたがって、数値を入力します。

作例
-------------------
[ pit_lane_0 ]
lane_on_right = 1    ; 0 if lane on left, 1 if on right
lane_has_wall = 0    ; 0 if no pit wall, 1 if pit wall exists
lane_bounds_dlong = 1390.0 110.0  ; start/end dlong of the pit lane
lane_bounds_dlat = -9.0 -5.3   ; start/end dlat of the pit lane
pit_board = 5.0 1400.0 -100.0 100.0  ; dlat of board, dlong of board, dlong LOS start, dlong LOS end (last 2 not used)
-------------------

うえの作例は、

コース全長1500メートル、
コース幅10メートル、
コース脇のピット進入路の幅5メートル、
本コースとピット進入路に挟まれた白線の幅0.2メートル

というレイアウトを前提にピットを設計したものです。

  [ pit_lane_0 ]
  lane_on_right = 1
      ピットレーンが左側にあるなら 0、
      右側にあるなら 1を指定します。

  lane_has_wall = 1
      ピットウォールがあるなら 1、
      ないなら 0を指定します。

  lane_bounds_dlong = 1390.0 110.0
      ピットの長さと位置を設定する項目。
      スタートラインからの距離(メートル)を、始点−終点の順で設定。
      作例は
         1390.0 110.0
      となっているが、これは全長1500メートルのトラックにおいて、
      スタートラインから-110メートルの位置からピットが始まり
      スタートラインから+110メートルの位置でピットが終わる、ということ。

  lane_bounds_dlat = -9.0 -5.3
      ピットの幅と位置を設定する項目。
      センターラインからの距離(メートル)を、下端−上端の順で設定。
      作例は
          -9.0 -5.3
      となっているが、これはセンターラインの位置を0として
      下端が-9.0メートル、上端が-5.3メートルに位置していることを示している。
      つまりピットレーンの幅が4.7メートルである。

  pit_board = 5.0 1400.0 -100.0 100.0
      ピットボードの出現位置。
      作例
        5.0 1400.0 -100.0 100.0
      センターラインからの位置5.0メートル、スタートラインからの位置1400メートル。
      後ろの二つの数値は用いません。

・ピット内のマシンの停止位置
作例
----------------------
stall_0 = 90.00 -7.00
stall_1 = 85.00 -7.00
stall_2 = 80.00 -7.00
stall_3 = 75.00 -7.00
stall_4 = 70.00 -7.00
stall_5 = 65.00 -7.00
stall_6 = 60.00 -7.00
stall_7 = 65.00 -7.00
stall_8 = 60.00 -7.00
stall_9 = 55.00 -7.00
stall_10 = 50.00 -7.00
stall_11 = 45.00 -7.00
stall_12 = 40.00 -7.00
stall_13 = 35.00 -7.00
stall_14 = 30.00 -7.00
stall_15 = 25.00 -7.00
stall_16 = 20.00 -7.00
stall_17 = 15.00 -7.00
stall_18 = 10.00 -7.00
stall_19 = 5.00 -7.00
-------------------

これは、ピット内のマシンの停止位置を設定するものです。
スタートラインからの距離(メートル)、センターラインからの位置(メートル)
で設定。位置決めは、マシンの前後全幅の中心点が基準になります。
当然、ピットレーン内におさまる位置でなければなりませんね。
作例では5メートルおきに、直線に並べてみました。
 
ここの書式は次の通りです。
        stall_# = 縦位置 横位置
          * 縦位置 = スタート/フィニッシュライン
                     からの距離
            横位置 = センターラインからの距離


  
 ■vii. [ starting_grid_0 ]
スターティンググリッドの位置を定義します。
これも各マシンごとに位置決めをします。

作例
-------------------
[ starting_grid_0 ]
  ; 3x2 staggered grid
  ; polesitter on left
  ; track length is <1500.00>
  ; grid front center at <1500.00, -0.00>
  ; width between boxes  3.00
stall_0 = 1497.00 3.00
stall_1 = 1497.00 -0.00
stall_2 = 1497.00 -3.00
stall_3 = 1477.00 1.50



stall_19 = 1417.00 -1.50
-------------------

最初の5行分のセミコロン以下はコメントです。覚え書きをしておくところ。

stall_0 = 1497.00 3.00

各マシンごとに、
スタートラインからの距離(メートル)、センターラインからの位置(メートル)
の順で設定する。これも位置決めは、マシンの前後全幅の中心点が基準になります。

作例では、最前列に3台が横並び。0番車が左、1番車が真ん中、2番車が右となります。
スタートラインから3メートル離していますが、これはマシンの中心の位置なので、
マシンのノーズはもう少し前になります。
二列目は二台。市松に並んでいます。

※pit laneやstarting gridの各表題部には末尾に「0」という数字がくっついています。
これは、複数のピットやスターティンググリッドを設定可能にするために
もうけられた数字ではないかと推測されています。papyというのは異なるゲーム間で
同じようなファイルフォーマットや設定方法を使い回しするという癖があるようで、
ここの設定方法はNASCARシリーズを念頭に置いたものではないか、とも言われています。
他にもmipファイルのフォーマットが圧縮の有無を除いては共通していることなども、
papyの癖の現れですね。


 
 【trk23dowの使い方】
このプログラムはGUIベースのtrk23dofと基本的な機能は同じです。
つまりGTKファイルから3DOファイルを生成するわけです。

ただし、DOSベース、キャラクターベースのプログラムであるため、
コマンドを文字で入力して実行する必要があり、慣れてない人には
訳の分からない世界が展開してゆきます。

ここではDOS窓の基本的な使い方を知っている方向けの説明になりますが、
できるだけ注釈を入れて、初心者にも分かるように心がけてみるつもりです。

・コンパイル
まずGTKファイルやパラメータファイル群を同一フォルダ内に納めます。
そして同フォルダ内にtrk23dow.exeも納めてしまいます。(cfgファイルもいっしょに)
※ここではCドライブのルート位置にそのフォルダを置いたことを前提に説明を進めます。
また例のごとくbluebeckトラックで説明します。(C:\bluebeck)

    ↓

MS-DOSプロンプトを開きます。
そして
c:\windows>_のあとに

cd c:\bluebeck

と打ち込んでカレントディレクトリを変更。c:\bluebeck>となる。
※cdとは「カレントディレクトリを変更する」dosコマンドです。
dos窓において、プログラムの実行をするには、カレントディレクトリを
そのプログラムが納められているフォルダに移動しなければならないため、
上記の操作が必要になるわけです。
※指定の文字を打ち込んだらEnterキーを押します。

    ↓

そして

trk23dow -t bluebeck > output.txt

と打ち込むと、コンパイルが始まります。
※ここでのtrk23dowという部分がプログラム実行のコマンドになります。
exeファイルの名前そのものですね。dosでは実行ファイルの名前そのものが
実行コマンドになっています。-tという部分はパラメータといって、
そのプログラムの実行オプションになっています。別のパラメータを入れると
プログラムは別の機能を実現します。bluebeckの部分は、いわば目的語です。
実行プログラムの振る舞いの対象です。

    ↓

同フォルダ内にbluebeck.N3Dファイルが生成されているはずです。


・コンパイル以外の機能を実現する実行オプション。
GTKファイルをコンパイルするには、-t という実行オプションをつけました。
trk23dowはこのほかにもいくつかの機能を別の実行オプションによって実現することができます。
以下各実行オプションの説明をします。

-t  これはコンパイル。

これ以下のパラメータを用いるとすべて<トラック名>.GK2というファイルを吐き出します。
これを<トラック名>.GTKにリネームしたあとにコンパイルをするわけです。

-r  トラックをリバースする。
   すべてのセクション、トレース線、高度設定、ウォールがリバースされる。

-f  高度設定によって生じる角度の不連続を修正する。
   バンプ、高度差のギャップも同時に修正する。これも<トラック名>.GK2を吐き出す。
 
-z  RPY2LPというプログラムが使えるように値を調整する。
 
-s  トラックの高低差を再計算してトラックをスムースにする。

-x  トラックを平坦にする。高度設定をリセットしたいときに用いる。


※trk23dof(windows版)には、trk23dow(dos版)にはない、スケールという機能があります。
これは、GTKファイルで自ら作ったトラックの全長を任意の長さに変更する、というものです。
これを使うとコンパイル後に試走した後に、どうも距離が短いな、などと感じた場合、
GTKをゼロから作り直すことなく、任意の距離に変更することができます。

※バッチファイルを用いて、

コンパイル→リネーム→GPLのトラックフォルダへのコピー

という一連の作業を自動化することができます。
txtファイルをcompile.batとリネームして、中身に以下の行を放り込む。
---------------------------------------
d:
cd\trk23dow
trk23dow -t mytrack > output.txt
copy mytrack.n3d c:\sierra\gpl\tracks\mytrack\mytrack.3do
---------------------------------------

一行目から順に説明。
trk23dowの存在するドライブ名。
trk23dowの存在するフォルダにカレントディレクトリを移動。
コンパイルの実行コマンド。
N3Dファイルを3DOファイルにリネームした上で、GPLのトラックフォルダへコピー。
「mytrack」部分は自分の作成したトラック名を当てること。

※trk23dofはtrk23dowに比べて以下の特徴があります。
・ウォール設定のエラーをあらかじめ知ることが出来る。
・インターフェースが分かりやすい。
・コンパイルが高速。
・スケール変更やギャプの埋めることも出来る。

 

--------------------------------------------------------------------------------

 

第五章 複雑なレイアウト

複雑なレイアウトのコースを作るためには、要素となる各セクションの形状を自在に
変えてゆかなければなりません。積み木遊びは第一回までで終わりです。いわば、
積み木そのものを自作する作業をしてゆくわけです。

【長さの変更】

これはさしたることではありません。各セクションのLengthをダブルクリックして、
お馴染みの設定画面に値を入力します。Metersにしてメートル単位で入力します。

※Longitudinal gapを調整するためにDecimalベースの値を用いて長さを微調整
してやる、というテクニックを使うことがあります。また後ほど述べます。


【曲率の変更】

Curvedセクションのカーブの「きつさ」を変更する方法を説明します。

■Curvatureの値を変えても、カーブセクションの曲率は変わりません。この場合は、
たんに扇のカナメの角度(中心角)が変わるだけなので、それこそ扇を開いたり
閉じたりするのと同じ事なのです。つまり曲率が同じで、当セクションのトラック部分
(センターライン)の距離が長くなるだけです。逆に言えば、Lengthの値を変更するのと
効果は同じです。

※注意
curvedセクションの「Curvature値」と、数値変更ダイアログの「Curvatureベースの値」
とは異なるものですので、気をつけてください。後者は、数値をどのような単位で表現
するのか、の一つのパターンです。
これには
・Decimalベース
・Metersベース
・Orientationベース
・Curvatureベース
の四つの表現方法があります。場合によって上手に使い分ける必要があります。
たとえばCurvature値を表現するのにMetersベースの値を使っても何の事やら我々の
直感に訴えてきません。当然この場合、Curvatureベースの値で表現してやる必要が
あるわけです。


■曲率を変えるためには、半径(Radius)の値を変更してやる必要があります。
図式的に言えば

・Radiusを短くする → カーブがきつくなる

・Radiusを長くする → カーブが緩くなる

円で考えてください。半径の小さな円の円周は、きついカーブですね。半径の大きな円
の円周は、カーブが緩い。それだけのことです。

※ただしここで注意すべき事があります。Radiusの値を短くした場合、当セクションの
トラックの長さも短くなります。これは後に述べますが、Orientation Mismatchを
引き起こさないためです。と言っても何だか分かりませんね。
ここでは聞き流してください(笑)

ですから、カーブの曲率の変更の順序としては

1、Radius(半径)を変更する。
2、次にLength(長さ)を変更する(あるいはCurvature値を変更する)。

これだけで、カーブのきつさの調整ができるはずです。


【分割】

トラックの直線部分が長い場合、途中で側帯部分を設けたいと思う場合が
ありますね。そのような場合には、セクションを分けてウォール設定に変化をつける
という方法を採ります。

一つのセクションを二つに分割するのは簡単です。当セクションのフォルダを
右クリックして「Split Section」をクリック。Length of the first partの
ダイアログボックスに、二つに分割した場合の手前側のセクションの長さを入力して
やるだけです。DecimalベースとMetersベースがにありますが、どちらで設定しても
いいでしょう。

※Decimalベースの値はいままでほとんど用いることなく済みました。我々の日常感覚
で使えるMetersベースの値で設定すればよかったからですが、レイアウトの最後の
仕上げである「つじつま合わせ」で、このDecimalベースの値がものを言ってきます。

※同曲率のカーブが長く続く場合には、それを一つのセクションにせず、いくつかの
セクションに分けてしまうほうがカーブの曲線が滑らかになる、という効果がありますので、
これを上手に使うといいでしょう。

※カーブセクションを分割する場合、メートル値によって分割すると誤差が生じ、
そのためOrientation Msmatchが直線部分との間に生じてしまいますので、
その都度、修正してください。

※同曲率のカーブをあまり長く続けるとなぜか出走時にGPLが落ちてしまうという現象が
みられます。これをさけるためにもカーブ・セクションについては、細かくセクションを
分けてゆく方がいいと言えます。

※追記
直線のセクションを150m以上の長さに設定すると、高低差を付けたときに
マシンが浮いたり、埋もれたりすると言う現象がみられます。そのため直線のセクションも
150mを越えないように設置した方がいいでしょう。

 

【つじつま合わせ】

レイアウトに関して、もっとも困難でテクニックを要するのが、複雑なレイアウトを作った
場合の最後のつじつま合わせです。つまり最終セクションとスタートライン
(=フィニッシュライン)との接合をいかに上手に行うか。

手順を簡単に述べます。

1、Orientation Mismatchをゼロにする。
  つまり前後の角度のズレを直す。

2、Longitudianl gapをゼロにする。
  つまり前後の距離的な懸隔や重なりをなくす。

3、Lateral gapをゼロにする。
  つまり横方向のズレをなくす。

この三つのプロセスを経て、前後を接合させるわけです。


■Orientation Mismatch

前セクションの後端線と後セクションの前端線とがなす角度のことです。まずはこの角度
をゼロにすることが先決。






































・このOrientation Mismatchをゼロにするには、スタートラインより前の一番近い
Curvedセクション(以後「直近のcurvedセクション」と表現)の中心角(Curvature)を
変えてやる、という方法を用います。つまり扇の開き具合を変化させることで不整合を
解消するわけです。

※ここでの説明は、スタートラインとの接合部分が不整合である場合を前提にしたもの
です。したがってそれ以外の部分のMismatchはすべて「0」である必要があります。
また、必ずしもスタートライン部分でMismatchを解消しなければならない、というもの
でもありません。他の部分で解消しても構わないわけです。添付画像の例がそうですね。

※このとき、注目しなければならないのは、Decimalベースによる値です。人間が
理解するには距離ならMetersベース、角度ならCurvatureベースですが、
つじつま合わせのための微調整には、Decimalベースの値を直接読みとり、
いじることが不可欠になってきます。これは慣れてください。

・公式は以下の通り。
Decimalベースの値で考えてください。

直近のcurvedセクションを以下のように修正する。
新Curvature値 = (Orientation Mismatch値÷2) + 旧Curvature値

例えば

・Orientation Mismatch = 103173344
・直近のcurvedセクションのcurvature = -170891319


103173344 ÷ 2 = 51586672

(-170891319) + (51586672) = -119304647


-119304647の値を直近のcurvautre値に入力してOK
するとOrientation Mismatchの値はゼロになります。

※直近のカーブセクションとスタートラインのあいだに直線セクションがある場合には、
その直線部分の三つのMismatch値にすべて「0」を入れてカーブセクションと接合してやる。

※幾何学が得意な人は「あれ?」と思うかもしれません。Orientation Mismatchの
角度をそのまま(二分の一などにすることなく)Curvedセクションの中心角に加えれば、
Orientation Mismatchは解消されるはずじゃないのかと。たしかに「角度」で考えると
そうなのです。

しかしDecimalベースの値に注目してください。
Orientation Mismatchの10度と、Curvatureの10度とでは、
おなじ10度でも前者のDecimalベースの値は倍になっているのです。
そのために公式のように二分の一にして足す、という操作を必要とするわけです。

※値がマイナスかプラスかは注意してください。中学校の数学の復習です。
「-24と-50を足す」と「-74」になります。

この作業を経ることで、Orientation Mismatchの値はゼロになり、最後のセクション
の後端線とスタートフィニッシュラインとが平行になるはです。ただしこの時点では距離が
離れていたり、横ズレしていたりするはずです。これらを修正するために次のプロセスを
経る必要があります。

※Mismatchの値にむりやり0(Decimalベース)を入力してやることで前後の
Mismatchは解消されます。
(もちろんこれはモグラタタキであって、別の部分にMismatchは生ずるわけですが)
このようにして0を挿入してやっても、なぜか値に「1」と
出てくる場合があります。このようなMismatchはあえて解消しなくても問題にはならない
ようなので、気にしないでください。

 

■Longitudinal gap

これは前後の端と端とが距離的に離れていたり、あるいは重なっていたりすることです。




ここでの距離的な修正は、すでにOrientation Mismatchが修正されていることが
前提になります。

この修正は難しいことではありません。Mismatch直前の直線セクションのLength値に、
Longitudianal gapの値を加えてやるだけです。


■Lateral gap

これは前後の横方向のズレです。これを修正するには多少、テクニックが必要です。
が、Decimalベースの値で500以下にすることができれば、必ずしも0でなくとも問題が
生じることはないようです。(500以下なら問題はない、という記述を読んだことが
あります)



ここでの修正は、すでにOrientation MismatchとLongitudinal gapとが解消
されていることが前提です。

このズレを解消する方法はいくつか考えられると思いますが、必ずしも決定的な方法は
ないように思われます。以下の方法を上手に組み合わせてズレを解消してください。

・直近のcurvedセクションのRadius(半径)を調整する。半径の値を変えても
自動的にOrientation Mismatchは引き起こされないようになっています。
ただしLongitudinal gapは同時に変更が加わりますので、その修正が別に必要に
なってきます。

・ズレが問題になっているセクションと直角の方向を走る直線セクションのLengthを
調整する。上手い具合に直交するstraigthtセクションがあればいいですが、
それがない場合でも、直交に近いセクションの長さを微調整することによって、ズレを
なくしてゆくことはできるはずです。ただしこれは慎重にやらないと、全体で破綻を
来すことにもなりますので注意してください。

※ギャップについては、ある程度いい加減なつじつま合わせをしても、出走すること
自体は可能です。もし出走できないとすれば、テクスチャの方に問題が生じていることが
おおいと言えます。


【全長の変更】

レイアウトが決まった後にコースを走ってみたところ、GPLではきついなー、と感じることが
あるはずです。(ブレーキ距離が長いですからね)そのため全長をのばしたいと思う
でしょう。そのときにまた最初から作りなおすなど、やってられません。

trk23dof(windows版)のscale機能を用いると、全長変更が簡単に可能です。
説明する必要さえないほど。

ただ、これによって作られたgk2ファイルをリネームしてgtkファイルにするわけですが、
そのあと、scaleボタンの隣に並んでいるzero gapsも同時にかけましょう。
scale機能をかけた状態では、全セクションが見るも耐えないほどにバラバラ状態に
なってますので。

また、 あらたにgapが生まれていますので、「つじつま合わせ」を再び行ってください。

※windows XPだとtrk23doはエラーが出ますね。could not open gtkと
出ちゃう。ちょっと困ったな。

--------------------------------------------------------------------------------

第5.5章 バッチファイルによる作業の自動化

trk23dowというプログラムは、直接gtkファイルや3doファイルを吐き出すのではなく、
いったんそれぞれgk2、N3Dという拡張子のファイルを吐き出して、
元のファイルを上書きしてしまわないように配慮されています。
そのため手作業でgtk、3doにリネームをしなければならず、繁雑な作業を強いられます。

そこでバッチファイルを使って、プログラムの実行とファイル操作を自動化することで、
作業量を減らすことができます。日に何度も何度もコンパイルをしなければならない時には
この方法を知ってるか知らないかでは、制作意欲に関わってきます。

私の場合、作業フォルダーに以下のような記述をしたバッチファイルを用意して
使っています。参考にしてください。トラック名は、pinです。
−−−−−−−−−−−−−−−−−−−−−
trk23dow -f pin >output_f.txt
copy pin.gk2 c:\sierra\gpl\tracks\pin\pin.gtk
trk23dow -s pin >output_s.txt
copy pin.gk2 c:\sierra\gpl\tracks\pin\pin.gtk
trk23dow -t pin >output_t.txt
copy pin.n3d c:\sierra\gpl\tracks\pin\pin.3do
−−−−−−−−−−−−−−−−−−−−−
ファイル名は、pin_f_s_t.batとしています。

※ただし私が鈴鹿を作っている際には、-f/-s部分だけのバッチファイルを用いました。これは
コンパイル部分に関しては、trk23dofを用いたためです。

--------------------------------------------------------------------------------

第六章 高低差とバンク

章題は、「高低差とバンク」としてありますが、ここで説明する高度設定は
それにとどまらず、道脇の土手や側溝、切り通し、山の斜面など
およそトレース線に高さを与えることで表現可能なもの、という広がりを
持っています。工夫次第で、様々な地形表現ができるわけです。


【トレース線】

トレース線のおさらいをしておきます。
・トレース線の数 2〜16本まで
・すべてセンターラインと平行に周回する
・各セクション毎に高度情報を与える
・すべてのウォールは最大幅のトレース線の内側におさまることが必要


【高低差設定の基本】

■各セクションのトレース線情報(Altiutde0〜)を見ると上から

3rd order coeff
2nd order coeff
1st order coeff
Height@Start
Gradient@Start
Gradient@End
Length of Trace

と言う項目が並んでいます。
製作者が設定可能なのは、このうち、1番目から4番目までの項目です。
しかし、筆者は結局、3rd order coeffと2nd order coeffの意味を
理解することができませんでした。
ここでは、1st order coeffとHeight@Startを設定することで、高度設定を
してしまうという方法を採りたいと思います。

※GPLEAには、3rd order coeffと2nd order coeffをも取り込んで設定するための
基本原理の説明と、ワークシートを配布していますが、
難解すぎて、とても私には理解が及びませんでした。
どなたか、この二つの値が何を意味するのか
文系の人間にも理解できるように説明していただけないでしょうか。まじ。

※ただ、もう一つ付け加えておくと、私がやってみた限り、3rd order coeffと
2nd order coeffがどんな意味を持っているのかなど知らなくとも、自由自在に
高度設定することが可能なので、そんなもの別に知っておく必要はないともいえるでしょう。
この二つの数値は、トレース線をなめらかな曲線にするために必要なもののようなのですが、
trd23dowの-fと-sという機能を用いることで簡単に路面を「整地」することができてしまいます。
二つの数値の意味を知りたいというのは単に知的欲求から来ているにすぎない、と言えるでしょう。

■高度設定に必要な項目の説明

・1st order coeff
これは、要するに各セクションの始点と終点との相対的な高度差です。
メートルで値を与えて設定することができます。セクションの始点と終点との
高度差が5mなら、そのセクションは5mだけ登りの区間になります。

・Height@Start
これは文字通り、各セクションの始点の高度です。これは絶対的な高度。
いわば標高に当たるものです。自由に設定ができるようになっていますが、
1st order coeff(相対高度)との関係で決まってくるものなので、計算して出してやる
必要があります。

・具体的に
section0、section1、section2と並んでいるとします。
section0のスタート地点の高度(height@start)が0m。
そしてsection0の1st order coeff(相対高度)に5mを入力。
すると、section1のheight@startは、5mになります。
したがって5mを入力。

section1の1st order coeffに同じく5mと入力。
するとsection2のheight@startの値は10mになりますので、
そのように入力する必要があります。

当セクションの1st order coeffと次セクションのheight@startは連動している
必要があるわけですが、GPLtrkではどちらかを入力すると、もう一方が自動的に
計算される、という便利な機能はありません。自分で計算して正しく
入力してやる必要があります。




■この二つの値をgtkに入力してやれば、高さ設定は可能です。ただし、
この値を入れただけの段階では、各セクションの継ぎ目が勾配の違いのために
折れてしまっています。そのためtrk23dowの-fオプションを用いて、
勾配の不連続を解消することが必要です。また仕上げとして-sオプションにより
継ぎ目の凸凹を解消してやることもできます。

あらたに高度を与えられたgtkは、そこからtrkと3doを新たに作る必要があります。
これはいままで説明したとおりですね。

※長いセクションに高度設定をほどこすと、trk23dowで-f、-sをかけることによって、
テクスチャが路面から浮いてしまったり、
逆に、マシンが路面の下に潜り込んでしまったりという奇妙な現象が起きることが
あります。このような場合には、そのセクションを分割し、1セクションを
150m以下にすることで症状が改善されます。

また
・wall0のunk4の値を、8192にする(これはgrvをスムーズにするおまじない)
・アスファルトのunk4値を、4096にする(これは車が少し浮き上がっている場合のみ)
・芝など完全にテクスチャが浮いている場合には、そのwallのunk4値を1024にする
などの方法で、改善される場合もあります。

【ワークシートによる高度設定の基本的な流れ】

以上の知識さえあれば、高度設定は可能です。
しかし、手動入力をしていたのでは、かったるくて、やってられません。
トレース線が4本ぐらい、セクション数が30ほどで済むのであれば、手動入力を
しても、なんとか意欲は続くかも知れませんが、これが最大数の16本、セクション数が
100を越えるような長大コースを造るとなると、とてもじゃないけど、手動入力など
していられるものではありません。単純計算すると1600箇所以上も手で入力しなけれ
ばならないわけですから。
これではせっかくの創作意欲がそがれてしまいます。もったいないことです。

そこで、エクセルを使うことで、高度設定を効率的に行う方法をここで
提案したいと思います。

※プリインストールされているけれど、エクセルなんて使ったことがないという人は
この機会にエクセルの使い方をおぼえてみてください。すごく面白いですよ。
またエクセルを持っていない方は買わなければなりませんが、単体で3万円もする
高価なソフトなので、このためだけに手を出しにくいかもしれません。
最近、オフィス関係のファイルを閲覧編集できるOpenOfficeというフリーソフトも登場してきました。
これは注目ですね。使ったことがないのでどういう操作体系なのか分かりませんが、
数万円の出費は馬鹿馬鹿しいですから、これで済ましてしまうのも手です。
http://ja.openoffice.org/

■基本的な流れ

レイアウトの済んだGTKファイルから各セクションの全長情報を
txt2gtkというツールを使ってtxtファイルに書き出す。
http://www.wsrt.de/editing/editlinks/body_editlinks.html

それをエクセルに読み込む。

そこから必要な情報(各セクションの全長情報)を
高度設定に特化された高機能ウルトラワークシート「エレポン」(brubeck謹製)に
コピペする。

エレポン内の高度・バンクの値を入力する。
センターラインの高度設定→各トレース線の高度設定という順

それをテキストに書き出し、txt2gtkを使ってgtkファイルに書き戻す。

そしてコンパイル作業。





■エレポンの基本的な考え方

エレポンは(インパクトのある名前の方がいいと思って、
こんな恥ずかしい名前にしたのです)、次の基本理念にもとづいて作られました。
・できるだけ直感的に高度設定ができること
・入力する部分は必要最小限であること

【エレポンの使い方詳細】

ここでは、pinという名のトラックを作ることを想定して、具体的に説明してゆきます。
まずはこちらをダウンロードして、エクセルで開いてみてください。

高度設定ウルトラハイパーワークシート「エレポン」のダウンロード

非常に大きなものになっています。しかしご安心ください。
トラック製作者が入力すべき部分は、黄色い背景のセルの部分だけです。
灰色の部分はコピペによって取り込んだ部分、そしてそれ以外の部分は、
エクセルが自動的に計算してくれる部分です。

■txt2gtkを使ってトラックの全長情報をエレポンに取り込む。

http://home.online.no/~bi-knu/editing/apps/apps.htm

・このツールはgtkの全長情報その他をtxtファイルに書き出します。
・書き出されたtxtファイルは、csv形式(コンマによる区切り)になっています。
・このファイルをEcxelに読み込みます。このとき、区切り文字をコンマに指定して読み込みます。
・そしてこのファイルのA列とB列の情報を「エレポン」の「in_out」ワークシートの当該部分にコピペします。
その後はエレポン内での作業になります。

※配布したエレポンは67のセクションを設置したpinをもとにしています。
各自、自分のトラックのセクション数にあわせて、行を増減してください。
行を増やす場合には、フィルハンドルを使って関数を一列ずつ下方へ延ばしてやってください。

※配布しているエレポンには例として既に数値が入力されています。
したがって、各位高度設定をする前に、黄色い部分の値をすべて0に直してから、設定するようにしてください。


 

■ altitudeワークシートの第二部の「説明」部分にストレートかカーブ、カーブ半径などの情報を覚え書きとして書き込む。

ここの部分はとくに機能に影響するわけではないので、書き込まなくても構いません。あくまで覚え書き。

■ 各行、フィルハンドルを使って、各列ごとに数式を下に延ばす。

・このあたりの操作はエクセル固有の操作体系を知らないといけません。ここは別途、お勉強してください。


■ 同じくaltitudeワークシート第二部の「相対高度(1st order coeff)」の黄色背景の部分に、そのセクションの始点と終点の高度差を入力してゆく。

・ここの数値は、仮想のセンターラインの高度を設定するわけです。これを基準にして後の項目で各トレース線の高度を
 このセンターラインとの相対値で設定してゆく、というのがこのエレポンの最大の特徴です。
・メートルで入力してゆきます。
・入力した数値は、リアルタイムでグラフに反映されますので、それを見ながら設定してゆく。
・例えばセクションの数が66まである場合には、始点絶対高度の67に当たる部分が、0mになるように、数値を調整する。
 さもないと、スタートライン部分の前後がちゃんとつながりません。(section0の始点絶対高度を0mに指定している場合)
・セクションの数が多く、セクション長が短いものが続く場合、路面にがたつきが生じることあります。そのような場合には、
 グラフを縦に拡大して、路面の凹凸を微調整してやる必要があります。場合によっては数cmの調整が必要なこともあります。

■ 第三部において各トレース線の高度を入力してゆく(バンクの設定)

・ここは第二部で設定した仮想のセンターラインの高度との相対的な高度差を、入力してゆきます。
・コースのバンク角だけではなく、コース外のドテ部分の高さなどもここの部分で設定することになります。

■ 入力値のgtkファイルへの書き戻し

・ワークシート「in_out」を表示。altitudeを表示したまま保存すると、路面がフラットになるので要注意。←よくやるんだ、これ。
・名前を付けて保存→テキストで保存(タブ区切り)→in_out.txtという名で保存。
・さらに名前を付けて保存→Microsoft Excelブック形式で保存→任意の名で保存。
 ※この順番で両形式の保存をしないと、txt2gtkでエラーが出ます。
・txt2gtkの「TXT→GTK」の部で、importボタン。で、先に保存したin_out.txtを読込む。
  ↓
 Exportボタンでgtkファイルを指定。するとエレポンで設定した高度値がgtkに書き戻される。