はじめに
現実の地理情報をMinecraft風の3Dボクセルマップに変換して眺めると、地形・道路・水域・建物の関係を直感的に把握できます。
この記事では、OpenStreetMap(OSM)のような公開地理データを使い、ブラウザ上でMinecraft風の地図表現を作るときに考えるポイントを整理します。特定のゲームMODの作り方ではなく、地理データをボクセル表現へ落とし込むための設計メモです。
1. 地理データをそのままブロックにしない
OSMには道路、河川、建物、土地利用などの情報があります。しかし、これらはMinecraftのブロック情報ではありません。
そのため、まず「地物の種類」と「表示するブロック」を対応付けます。
-
waterや河川: 水系の色・水ブロック -
highway: 道路や小道 -
building: 建物の輪郭や高さ -
forest/wood: 植生エリア -
railway: 線路や交通ルート - 公園・農地・住宅地: 地表の色や素材の違い
大切なのは、完全な現実再現よりも、地図を見た人が地形や場所の特徴を理解できることです。
2. 緯度・経度をグリッド座標へ変換する
地理データは緯度・経度ですが、ボクセル地図は通常のX・Y・Zグリッドです。
実装では、対象範囲を決めてから、緯度・経度をローカルな平面座標へ変換します。その後、縮尺を決めてブロック単位の座標に丸めます。
単純化すると、次のような流れです。
- 表示したい地域の境界を決める
- 緯度・経度をローカル座標に投影する
- 縮尺を設定する
- グリッドへ丸める
- 地物ごとにブロックや色を割り当てる
縮尺を細かくしすぎると、ブラウザ描画もワールドデータも重くなります。最初は「1ブロックが数メートル〜数十メートル」のような粗めの設定で試すのが扱いやすいです。
3. 高さは別のデータとして扱う
OSMは地物の情報には強い一方で、地形の標高を常に十分持っているわけではありません。
リアルな起伏を作るには、標高モデルなど別の高さデータを組み合わせる必要があります。高さデータがない場合でも、次のような段階的な表現は可能です。
- 最初は平坦な地形にする
- 建物だけ簡易的な高さを持たせる
- 後から標高データを追加する
- 山や谷は滑らかにせず、段差として表現する
Minecraft風の見た目では、ある程度の段差はむしろ自然に見えます。
4. ブラウザで見る場合の注意点
3D地図をブラウザで扱うときは、描画量の管理が重要です。
- 最初から広い範囲を読み込まない
- 画面に見えている範囲を優先して描画する
- 同じ素材のブロックをまとめて描画する
- ズームアウト時は細部を省略する
- 水域や建物など、意味のあるレイヤーを切り替えられるようにする
地図としての理解しやすさと、3D表現としての面白さを両立させるには、すべてを高精細に描くよりも、重要な情報を選んで表示する方が効果的です。
5. 実際に試す
現実世界の場所をMinecraft風の地図としてブラウザ上で確認する例として、MapMC のようなオンラインツールがあります。
こうしたツールを使うと、地理データをどの程度の縮尺・色・高さで表現すると見やすいかを、実装前の参考として確認できます。
まとめ
OpenStreetMapをMinecraft風の3Dボクセル表現へ変換する際は、次の4点が基本になります。
- 地物をブロック表現へ意味づけする
- 緯度・経度を扱いやすいグリッド座標へ変換する
- 高さデータを独立して設計する
- ブラウザ描画では範囲と詳細度を制御する
地理データをゲーム風に可視化する方法は、単なる地図表示とは違う発見があります。まずは小さな地域から試し、縮尺と表現ルールを調整していくのがおすすめです。
Minecraft OpenStreetMap WebGL JavaScript 地図