> For the complete documentation index, see [llms.txt](https://nosrith.gitbook.io/tpf2-mod/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nosrith.gitbook.io/tpf2-mod/station-mod/model.md).

# 3Dモデルを作成する

駅MODで使用する3Dモデルは、車両モデルのときと全く同じ方法で作成できます。

3Dモデルの作成単位は、ホームやアセットといったモジュール単位で作成するのが最も簡単ですが、モジュールファイルの設定により、複数の3Dモデルでひとつのモジュールを構成することもできます。とくに、ホーム端や、線路に面しているホームに点字ブロックを引くなど、条件によって表示するモデルを切り替えたい場合は、それぞれの条件ごとのモデルを用意しておき、モジュールファイルで条件ごとに表示するモデルを切り替えることができます。

## メタデータの設定

作成した .mdl ファイルのメタデータも基本的には車両モデルと同じですが、モデルによってはいくつかの追加の設定が必要になります。

### 乗客が歩く通路を設定する（ホーム、駅舎、こ線橋など）

ホームや駅舎のモデルの上を乗客が歩けるようにするには、metadata セクションに **transportNetworkProvider** セクションを作成し、**laneLists** を設定します。設定内容は次のようになります。

```
	metadata = {
		transportNetworkProvider = {
			laneLists = {
				{
					nodes = {
						{ { 20, -2.5, 10 }, { 0, 2.5, 0 }, 10 },
						{ { 20, 0, 10 }, { 0, 2.5, 0 }, 10 },
						{ { 20, 0, 10 }, { 0, 2.5, 0 }, 10 },
						{ { 20, 2.5, 10 }, { 0, 2.5, 0 }, 10 },
					},
					linkable = false,
					speedLimit = 20,
					transportModes = { "PERSON" },
				},
				...
			},
		},
	}
```

* laneLists には、乗客が歩ける **レーン** を設定します。レーンは、乗客が歩くことのできるひとつづきの折れ線を表します。枝分かれする場合は、laneLists 下に複数のレーンを設定します。レーンが分かれている場合でも、下記ノードで定義されるレーンの領域が重なっていれば、乗客はレーンを渡り歩いて移動するようです（未検証）。
* nodes は、レーンを表す折れ線の頂点（**ノード**）のリストを設定します。ノードは必ず2つずつ設定し、それぞれの2つ組（1番目と2番目、3番目と4番目...）が折れ線中の1本の線分（**エッジ**）を表します。

  各ノードの最初の3つ組がノードの座標、次の3つ組がタンジェント（向き）、最後の数値がレーンの幅を表しています。タンジェントの長さはエッジの長さと同じにする必要があります。
* linkable を true にすると、ノードの近くに別のレーンのノード（MOD 外のノードも含む）がある場合に、自動的に短いエッジが引かれるようになります。駅出口のレーンなどに設定すれば、既設の道路につながるようにできます。

### 番線をラベルに表示する（ホーム、アセット）

番線はモジュールが配置される場所によって変わるため、特殊な設定をする必要があります。番線をラベルとして表示するには、.mdl ファイル内でラベルを CUSTOM として設定しておき、.module ファイル内で表示設定を行います。

```
	metadata = {
		labelList = {
			labels = {
				{
					transf = { 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -0.020, 1.97, 3.145, 1, },
					size = { 0.5, .5 },
					color = {0.0, 0.0, 0.0, 1.0},
					type = "CUSTOM",
					alignment = "CENTER",
					alphaMode = "BLEND",
					fitting = "SCALE",
					childId = "RootNode",
				},
				...
			},
		},
	}
```
