Bve trainsim > 路線や車両をつくる > チュートリアル > 路線をつくる

線路を敷く

テキストエディタを準備する

マップファイルは "メモ帳" で編集できますが、入力補完機能とパラメーターヒント表示機能を持つ Notepad++ の利用をお勧めします。
Notepad++ のダウンロードとカスタマイズの方法については、こちらをご覧ください。
なお、このステップは必須ではなく、使い慣れたソフトウェアを使用しても結構です。

ストラクチャーを用意する

ストラクチャーとは

Bve trainsim の風景は、複数のストラクチャーと呼ばれる 3 次元モデルを組み合わせることで構築されます。
ストラクチャーは、座標などが記述された 3D モデルファイルと、画像ファイルで構成されます。
現在、3D モデルファイルには x ファイル、画像ファイルには PNG ファイルまたは BMP ファイルが使用できます。


= +
ストラクチャー
3D モデルファイル
(x ファイル)

画像ファイル
(PNG または BMP ファイル)

ストラクチャーデータを用意する

最低限の風景を構築するため、ここでは以下の 5 種類のストラクチャーを用意します。

左レール 右レール 道床 地面 背景

ストラクチャーは自分で作成することもできますが、ここでは既に作成されたデータをダウンロードして使うことにします。
まず、ストラクチャーデータを置くフォルダーを作成します。
Tutorial フォルダーに新しいフォルダー Structures を新規作成します。
ストラクチャーデータの入った以下のファイルをダウンロードします。


strpack1

ダウンロードした strpack1 を開き、その中のすべてのファイルを Structures フォルダーにコピーします。

ファイルの使用条件
このファイルは、Bve trainsim の用途に限り、改変、再配布が可能です。

ストラクチャーリストファイルをつくる

ストラクチャーデータは、フォルダーに入れただけでは Bve trainsim に認識されません。
ストラクチャーリストファイルを作成し、どのストラクチャーを使用するのか定義する必要があります。
Structures フォルダーに、テキストファイル List を新規作成します。
List ファイルを開き、以下のように記述して保存してください。

BveTs Structure List 1.00
RailL0, RailL0.x
RailL1, RailL1.x
RailL2, RailL2.x
RailL3, RailL3.x
RailL4, RailL4.x
RailR0, RailR0.x
RailR1, RailR1.x
RailR2, RailR2.x
RailR3, RailR3.x
RailR4, RailR4.x
Ballast0, Ballast0.x
Ballast1, Ballast1.x
Ballast2, Ballast2.x
Ballast3, Ballast3.x
Ballast4, Ballast4.x
Grass, Grass.x
Bg, Bg.x

カンマ ( , ) の右側に 3D モデルファイル名 (相対パス) を書き、左側に自由なストラクチャー名を付けます。
ストラクチャーを配置する際はすべて、このストラクチャー名を使います。
ここではわかりやすくするため、ストラクチャー名をファイル名と同じにします。

ストラクチャーを配置する

座標系

マップファイルでは、ストラクチャーの位置を、自分の軌道を基準とした座標で表します。
軌道中心を原点に右方向が x 軸、レール頭頂面を原点に高さ方向が y 軸、レールの長手方向が z 軸になります。

座標系

マップファイルの構文文法

風景は、マップファイルに多数のステートメント (命令文) を記述することで構築します。
マップファイルで主に使用するステートメントは、次のような文法を持っています。

マップ要素.メソッド(引数1, 引数2, ...);

ステートメントの末尾には、必ずセミコロン ( ; ) を付けます。
引数 (ひきすう) の数はメソッドによって異なり、引数がないメソッドもあります。

数値のみのステートメントは、距離程を表します。

数値;

値の単位はメートル (m) です。
距離程は、それ以降に記述したメソッドに作用します。
例えば距離程の記述の後に、曲線を開始するメソッドを記述すると、曲線はその距離程から始まります。

ストラクチャーリストファイルの参照

ストラクチャーを配置するには、はじめにストラクチャーを読み込む必要があります。
ファイルヘッダーの下にステートメントを追加します。

BveTs Map 2.02
Structure.Load('Structures\List.txt');
0;

Structure.Load は、ストラクチャーリストファイルに従ってストラクチャーを読み込みます。
引数に、先ほど作成したストラクチャーリストファイルの相対パスを指定します。
文字列の引数は、クォーテーション ( ' ) でくくります。

線路を配置する

線路など、ストラクチャーを連続的に配置するには、Repeater マップ要素を使います。
配置を開始するには、Begin メソッドを使います。

Repeater[ストラクチャー列名].Begin(軌道名, シフトx, シフトy, シフトz, 回転x, 回転y, 回転z, 傾斜種別, 長さ, 間隔, ストラクチャー名);

はじめに、道床を配置します。

BveTs Map 2.02
Structure.Load('Structures\List.txt');
0;

Repeater['Ballast'].Begin(, 0, 0, 0, 0, 0, 0, 3, 5, 5, 'Ballast0');

距離程 0 m からストラクチャー列が始まります。
Repeater[].Begin メソッドの各設定値は次の通りです。

ストラクチャー列名: 道床ストラクチャー列に Ballast という名前を付けることにします。
軌道名: 自分の列車が走る軌道に配置するので、空欄にします。
シフトx, シフトy, シフトz, 回転x, 回転y, 回転z: 軌道の原点にまっすぐ配置するので、すべて 0 にします。
傾斜種別: 勾配とカントに従ってストラクチャーを傾斜させるので、3 にします。
長さ: 使用する道床ストラクチャーの長さは 5 m です。
間隔: 5 m 間隔で配置します。
ストラクチャー名: ストラクチャーリストファイルで定義した Ballast0 を配置します。

シナリオを実行してみましょう。
道床が現れるはずです。

しかし、よく見るとバラストが規則的な模様になっていて不自然です。
そこで、テクスチャーが若干異なる 5 つの道床ストラクチャーをローテーションで配置するように変更します。

BveTs Map 2.02
Structure.Load('Structures\List.txt');
0;

Repeater['Ballast'].Begin(, 0, 0, 0, 0, 0, 0, 3, 5, 5, 'Ballast0', 'Ballast1', 'Ballast2', 'Ballast3', 'Ballast4');

シナリオを実行してみましょう。
5 m 周期だった模様が 25 m 周期になり、不自然さが軽減します。

同じ要領で、レールと地面を配置します。

BveTs Map 2.02
Structure.Load('Structures\List.txt');
0;
Repeater['Ballast'].Begin(, 0, 0, 0, 0, 0, 0, 3, 5, 5, 'Ballast0', 'Ballast1', 'Ballast2', 'Ballast3', 'Ballast4');

Repeater['RailL'].Begin(, -0.5335, 0, 0, 0, 0, 0, 3, 5, 5, 'RailL0', 'RailL1', 'RailL2', 'RailL3', 'RailL4');
Repeater['RailR'].Begin(, 0.5335, 0, 0, 0, 0, 0, 3, 5, 5, 'RailR0', 'RailR1', 'RailR2', 'RailR3', 'RailR4');
Repeater['Grass'].Begin(, 0, -0.6, 0, 0, 0, 0, 1, 25, 25, 'Grass');

左レールと右レールは、軌道中心からそれぞれ左方向と右方向に軌間の半分の 0.5335 m ずらします。
地面は、レール頭頂面から 0.6 m 下げ、カントによって傾斜しないように (1 に設定) します。

背景をつける

背景も同様にストラクチャーで表現します。
しかし線路や地面と同じように配置すると、列車の進行とともにストラクチャーが後ろに流れてしまいます。
そのため専用のマップ要素を使います。

BveTs Map 2.02
Structure.Load('Structures\List.txt');
0;
Repeater['Ballast'].Begin(, 0, 0, 0, 0, 0, 0, 3, 5, 5, 'Ballast0', 'Ballast1', 'Ballast2', 'Ballast3', 'Ballast4');
Repeater['RailL'].Begin(, -0.5335, 0, 0, 0, 0, 0, 3, 5, 5, 'RailL0', 'RailL1', 'RailL2', 'RailL3', 'RailL4');
Repeater['RailR'].Begin(, 0.5335, 0, 0, 0, 0, 0, 3, 5, 5, 'RailR0', 'RailR1', 'RailR2', 'RailR3', 'RailR4');
Repeater['Grass'].Begin(, 0, -0.45, 0, 0, 0, 0, 1, 25, 25, 'Grass');

Background.Change('Bg');

Background マップ要素は、ストラクチャーの位置を列車とともに動かし、方向のみを地面に固定します。
列車がどの方角を向いても背景が途切れないように、ここで使用する背景ストラクチャーは、列車を囲むような円筒型をしています。

© 2016 mackoy