Map2Modelを使って立体案内地図を3Dプリント
どうやって行くか、を示す地図。
案内図が立体になって手元に収まったら、普通の道案内が「記念」になるんじゃないか。
普通のプリンターで地図が印刷できるように、3Dプリンターでも立体地図を印刷したい。
しかもなるべく簡単に作りたい。
そう思い、今回はMap2Modelを使って案内地図の作成をしてみました。
地形を切り取り、限られたスペースに詰め込むのもいいじゃないかーー。
これが立体案内図だ

できたのは上の画像のような立体地図です。赤線で「りんかい線 国際展示場駅」から「東京ビッグサイト」に徒歩で向かう経路を示しています。大きさはハガキと同じくらい。

3D地形モデル作成ツールMap2Modelを使う
以前私はPLATEAUというプロジェクトの3D地図データを使用して案内地図を作ったことがあります。ただ、多少のファイル構成への理解とデータをいじるちょっとした技術が必要で、万人にはおすすめしづらいと感じました(紹介するとか言いつつ一年経過し、そして紹介してなくてごめんなさい)。
色々調べた結果、この1年の間にもう少し直感的に3D地図作りができそうなツール「Map2Model」(https://map2model.com/)というものを見つけました。
今回は「Map2Model」をベースにGoogle マイマップなど複数ツールを組み合わせてデータを組み上げていきます。
立体案内地図のデータ作成の仕方
必要なもの
・ブラウザが動く端末(PC推奨)
・3Dプリンター(多色印刷できるものが良い)
今回使うサイトは一部Webブラウザ上でGPUレンダリング機能を使用します。ある程度スペックが必要です。変換やデータをぐるぐる回すときの処理の時間に差が出ます。
3Dプリンターは多色印刷ができると良いですが、自分で後から色を塗るなどでもできそうです。
1.ルート情報を準備する(Googleマイマップ→KMLファイル)
Google マイマップを作成する
Googleマイマップは皆さんもよく使うGoogleマップとは少し趣旨が違っています。マイマップという名の通り、自身で作る地図。旅行の計画を立てたり、自分専用のリストを作ったりするためのツールです。今回はルート情報を書き出すために使用します。PCのブラウザで Googleマイマップ(https://www.google.com/maps/d/)にアクセスし、「新しい地図を作成」をクリックします。

ルート情報を入手する
検索バーの下にある 「ルートを追加」アイコン(Y字の矢印マーク)をクリック。左側に「無題のレイヤー」が現れるので、
移動手段(車、自転車、徒歩のどれか)、[A]に出発地、[B]に目的地を入力してルートを決めます。この際マイマップ側でできるだけ最短ルートを提示してくれますが、ルートを変更したいときは青い線を掴んでマップ上をスライドすることで微調整できます。

地図のタイトル(「無題の地図」など)のすぐ右側にある 「︙」(メニューボタン) をクリックし「KML/KMZ にエクスポート」 を選択。ウィンドウが出たら「地図全体」を「ルート(出発地〜目的地)」に変更。「KMZ ではなくKML ファイルにエクスポートします」 にチェックしダウンロード。

2.ルート情報を変換する(GPS Visualizer→GPXファイル)
GPS VisualizerでGPXファイルに変換
KML (Keyhole Markup Language) というファイル形式は、Google系のサービスで使えるものです。今回は外部サービスでも使えるように、もっと汎用性の高いGPX(GPS Exchange Format)形式に一回変換し直します。まずはGPS Visualizer (https://www.gpsvisualizer.com/convert_input) にアクセス。「ファイル選択」ボタンを押して先程ダウンロードしたKMLファイルを選択、「Convert」ボタンを押すと、GPXファイルへ変換されます。

ページが遷移したら、Download ○○○○-data.gpxを選択してダウンロードすればOKです。

3.Map2Modelで3Dモデルを作る
これで準備が終わりました。ここから実際に3Dデータを作成していきます。まず、GPS Visualizerで作ったGPXファイルを、Map2Modelに読み込ませます。
GPXファイルをアップロード
Map2Model (https://map2model.com/) を開きます。オプション設定の「Features」をクリックして、一番下の「GPX Pass」を展開。「Upload GPX」をクリックして先程のGPXファイルをアップロード。地図にルートが表示されるはずです。

範囲と形状の指定
地図の右上にある選択肢から、切り取りたい形状を選択します。以下の選択肢があります。
・Rectangle: 長方形
・Square: 正方形
・Circle: 円形
・Hexagon: 六角形
・Polygon: 多角形(自由に点を打って囲む)
・Custom Size: サイズを数値で指定(縦横比固定の四角形)
どれを選んでも良いですが今回は小さめで出したいので「Custom Size」で寸法指定します。この際注意することは、ここで指定する寸法サイズは「地図部分だけ」だということ。実際のデータは「地図部分」+「外枠」になるのでその分を引いて寸法を入力します。

今回はハガキサイズで作りたいので完成は「100×148mm」。外枠の幅が3mmなので、4辺からそれぞれ3mmずつ内側にオフセットした「94×142mm」で取り出します(Frame Thickness、が外枠の幅のこと。デフォルト値が3mmです)。

寸法を決めた後はマップ上で二点を指定して切り取る部分を位置決めします。

枠を決めたら、試しで「Generate Mesh」を押してみましょう。その時点での3Dデータが表示されます。
モデルのパラメータを設定(飛ばしてもOK)
詳細設定(左サイドバー)でパラメータを調整していきます。設定できる項目は多いです。
左側のメニューはカテゴリーごとに分かれています。
【Base】
・Base Options(基本設定)
Map Size: 地図部分のサイズ。一番長い辺の数値。
Base Layer: 土台部分の厚さ。
Base Color: 土台部分の色。
・Topography(地形)
平坦に地図を作る場合(都市部であるとか)はOFFで。
山岳地など自然な地形を表現したいんだ!という場合はONにしましょう。
・Elevation Scale:地形の起伏(高さ)の強調度合い。
数値を上げると山や谷が極端に表現されます(平坦な場所ではあまり効果なし)
Smoothing Radius: 地形の滑らかさ。数値を上げると細かい凸凹が減り、滑らかな曲面になる。
Quality: メッシュの細かさ(品質)。高いほど精細ですが、処理が重くなります。
Flatten Sea Level: 海面を平坦(高さ0)にするかどうかのスイッチ。
・Frame(枠):モデルの周囲に付ける「枠(フレーム)」の設定です。
Frame Height: 枠の高さ(土台の厚み)。
Frame Thickness: 枠の太さ。全体のサイズは個々の数値分外側にオフセットされる。
Rounded Corners: 角を丸くするかどうか。チェックを入れると角丸になります。
Frame Color: 枠の色。
【Features】
・Roads(道路)優先度:高
Road Color: 道路の色。
Road Height: 道路を地面からどれくらい浮かせる(高くする)か。
Road Depth: 道路を地面に掘り下げる場合の深さ。
Road Width Multiplier: 道路の幅の倍率。3Dプリンターで出力する際、細すぎて消えないように太く調整するのに使います。
Include Footpaths: 歩道を含める場合はチェックを入れる。
Underground Roads: トンネルなどの地下道路を含める場合はチェック。
Road Types Edit: 「Highway」「Primary」など、含める道路の種類を個別にオン/オフできます。
Aeroway Types Edit: 滑走路など、航空路関連の種類のオン/オフ。
Railway Types Edit: 線路など、鉄道関連の種類のオン/オフ。
・Water(水域:川・湖・海)優先度:中
Water Color: 水の色。
Water Height: 水面の高さ(通常は0-0.40付近)。
Water Depth: 水深(または水面を掘り下げる深さ)。
Ignore Water Bodies Smaller Than: 指定したサイズより小さい水域(小さな池など)を無視・除外します。
Include Sea: 海を含めるかどうか。
Cut Out Water: 地形から水の部分を切り抜く(凹ませる)設定。
Water Base: 水底のベースを作成するかどうか。
Waterway Types Edit: 川や運河など、水路の種類のオン/オフ。
・Grass(緑地・公園)優先度:中
Grass Color: 緑地の色。
Grass Types Edit: 公園、森、芝生など、緑地の種類のオン/オフ。
Grass Height: 緑地エリアの高さ(わずかに盛り上げると質感がでます)。
・Buildings(建物)優先度:高
Building Color: 建物の色。
Roofs: 屋根の形状を再現するかどうか。
Force Basic Shape: 建物の形状を簡略化(基本的な形に強制)してデータ量を軽くします。
Buildings Scale: 建物の高さを強調する倍率。
Minimum Building Height: これより低い建物は無視する、という最低高さの設定。
Ignore Buildings Smaller Than: 指定した面積より小さい建物を除外します(出力の難しい小さなデータを取り除ける)。
・Sand(砂地・ビーチ)優先度:低
Sand Color: 砂地の色。
Sand Height: 砂地の高さ。
・Piers(桟橋)優先度:低
Pier Color: 桟橋の色。
Pier Height: 桟橋の高さ。
・GPX Path(GPXルート)
手持ちのGPXファイル(移動ログなど)をアップロードして、地図上にラインとして描画します。
Upload GPX: GPXファイルをアップロードボタン。
Path Color: ルート線の色。
Path Height: 線の高さ(埋もれないように地形より高く設定します)。
Path Thickness: 線の太さ(3Dプリント用に太めに設定するのがコツ)。
…これだけ設定項目があるのでめちゃくちゃいじっていけるのですがその中でも印刷のために自分が変更したところだけピックアップします。

もとの設定の場合、土台:白、道路:黒、緑地:緑、水面:青、建物:灰、経路:赤、
と6色構成になります。今回使う3Dプリンターでは4色までしか印刷できないため、以下項目を変更して4色に減らしました。
・Waterの色を灰色(#b8b8b8)に変更。(青→灰に)
→色数を減らすため。
海沿いではあるもののあまり目立たないため建物の色と合わせました。
・Grassを無効化。(緑→なし)
→草地または公園のように開けた場所はGrassで一括りにされます。
ルート近辺は緑地というわけでもないため、無効にしました。
モデルを生成してダウンロード
設定が終わったら、再度「Generate Mesh」ボタンをポチッと。データの仕上がりを確認しつつ、問題がなければ
多色印刷なら「Export 3MF」、単色印刷なら「Export STL」をクリックして、3Dモデルデータ(map_mesh.3mf または .stl)をダウンロードしましょう!

3Dプリンターで出力
ダウンロードした3Dモデルデータを、スライサーソフトにかけて実際に印刷してみます。
スライサーソフトで準備
3DプリンターはBambu Lab P2S、スライサーソフトはBambu Studioを使います。スライサーを開いて、ダウンロードした3mfファイルをインポート。プリンターとフィラメントの種類を選びます。必要であれば、モデルの向きやサポート材の設定も変更。「スライス」を実行して、G-codeを作成します。

3Dプリンターで印刷開始!
できたG-codeをBambu Lab P2Sに送ります。操作パネルからファイルを選んで、印刷スタート!

出力が終わったら、モデルを取り出して、サポート材を外せば完成です!
立体の地図って良いよね
現代人が便利に使っている道案内サービス。平面で捉える地図を立体にして、ルートを表示したら面白いんじゃないかとチャレンジした結果でしたがいかがでしたでしょうか。
情報量は増える部分(建物のスケール感などが分かりやすい)と、減る部分(ビル名称など文字ベースの情報は分かりづらい)があり、一長一短な感じもしましたが、道案内の方法としてひとつ新しいものになるのでは?と感じました。
GPSを搭載したスマートウォッチなどのスマートトラッカーなどからも、GPXデータを書き出せるものがあるらしく、ランニングルートを立体化などもできるのでは?という話も仲間から出ました。
ぜひ、みなさんも素敵な「マイ3Dマップ」作ってみてはいかがでしょうか。


