# 地形データとゲーム内の加工

出典：地理院タイル（標高タイル（基盤地図情報数値標高モデル））を加工して作成。
https://maps.gsi.go.jp/development/ichiran.html
取得日：2026-09-08。元タイルURLとSHA-256はmanifest.json。
国土地理院コンテンツ利用規約（PDL1.0）：
https://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html

build-terrain.pyをPillowのあるPythonで実行。元PNGをこのフォルダにキャッシュする。
DEM5A z15 → DEM5B z15 → DEM10B z14の順で、欠測でない4画素を使える最初のデータを利用。
今回DEM5A 4枚とDEM10B 2枚を取得。4画素で双線形補間、画素の中心位置を考慮。
PNGのRGB値から国土地理院仕様に従って標高を復元。未定義値128,0,0は欠測扱い。
https://maps.gsi.go.jp/development/demtile.html

assets/terrain.jsonは既存の局所座標で10m格子、107列×105行、11,235点。
標高範囲-0.643〜30.409m、原点の標高18.5m。ゼロや乱数による欠測埋めなし。
実行時は1格子2三角形の地形を作り、同じ三角面の高さを描画・道路・車で共有。
道路・緑地は地形の三角面で分割し正確に沿わせる。地面との表示の重なりを避ける微小な高さを加える。
建物は敷地の最高点を水平な基礎とし、斜面側に地面までの基礎を伸ばす。
タワー中心からX/Z各50m以内を高さ0に平坦化。50〜70mの間をsmoothstepで元地形につなぐ。
これらの基礎・タワー造成はゲーム上の接地処理であり実測の造成ではない。

車は接地高さと車体のpitch/rollを更新。勾配による重力加速・サスペンションは未実装。
高架は地形+5mの外観だけで、車は地表を走る。地下道路は前版同様省略。
飛行高度表示は対地高。カメラは地面から3m以上を保ち、建物は通過可能。
地形の境界外は最寄り境界の高さでクランプし、運転・飛行の既存の範囲制限を維持。

node check-terrain.mjs：補間、斜面姿勢、穴付き領域の地形への分割、基礎、描画規模・有限値。
node check-driving.mjs：既存の走行・衝突・100mに加え、車と追従カメラの接地。

地形込みの街は13メッシュ、166,439三角形（樹木インスタンス込み）。実機CPU/GPU負荷は未計測。
