OpenStreetMapから3Dへ

OpenStreetMapから3Dへ、 パイプラインなしで。

従来の手順は、Overpassクエリ、整えるためのGISツール、押し出すためのスクリプトかアドオン、ライティングのためのデスクトップ3Dパッケージです。Studioなら1ステップです。地図上でボックスを描くと、OSMの建物、道路、水域が実際の地形の上に押し出されて読み込まれます。

左は地図のエリア、右は同じエリアを押し出した3Dモデル
OpenStreetMapインポート後のStudio
Studioの実際の出力。地図データ © OpenStreetMap contributors。

クエリ言語は不要

Overpass QLを書いたりGeoJSONを扱ったりする必要はありません。ボックスを描くと、インポートがOpenStreetMapに建物、道路、水域、土地利用を問い合わせ、結果をキャッシュします。

ジオメトリを変えるタグ

heightとbuilding:levels、min_heightは建物の高さと始まる位置を決め、roof:shapeとbuilding:partは上部の形を決めます。highwayの等級は道路の幅を決め、waterとlanduseのタグはマテリアルを選びます。

正しい単位と配置

すべてがボックスの中心を基準にメートル単位に投影されるので、距離は正確で、自分のモデルも実寸で置けます。

使っているツールへ書き出し

有料プランでは、結果をGLB、glTF、OBJ、FBX、STLで書き出し、Blender、Unreal、Unity、スライサーで使えます。

各タグが何になるか

ブライアントパーク沿いの、屋根がセットバックした段状のミッドタウン・マンハッタンの高層ビル群
ミッドタウン・マンハッタン。屋根はNYC 3-D Building Modelの実データ、欠けた部分はOpenStreetMapで補っています。

地図の高さどおりの建物

外形はタグ付けされた高さか階数まで押し出され、地面に据えられます。地図にある屋根形状と建物パーツが作られ、小さな住宅には推定した切妻と寄棟が付き、平らな屋根にはパラペットと屋上設備が付きます。

幅の異なる道路、橋のある川、公園エリアが実際の地形の上に読み込まれた状態
等級別の道路、橋、水域、土地被覆。

道路、水域、緑地

道路は等級ごとの幅で、歩道、車線表示、横断歩道が付きます。橋は水面にめり込まずに水の上にかかり、公園、舗装、街路樹が残りを埋めます。

上空から見たモナコのエルキュール港。港が岸壁と桟橋まで水で満たされている
モナコ、エルキュール港。OSMの海岸線から作った海。地図データ © OpenStreetMap contributors。

海岸線から作る海

OpenStreetMapは海を海岸線としてしか描きません。インポートはその線を閉じて水面にするので、港や湾は岸壁まで水で満たされます。

読み込んだ街の隣に、地図由来と推定の建物の高さを一覧にしたインポート結果を表示するStudio
ニューヨークのロックフェラー・センター周辺をシティモードで読み込んだ後のインポートレポート。

地図にあった情報を教えてくれる

インポートは、建物の高さのうち地図由来の件数と推定した件数を報告するので、スカイラインをどこまで信頼できるか判断できます。

読み込んだロウアー・マンハッタン上に、GLBを選択したStudioの書き出しダイアログ
読み込んだ場所のGLB書き出し。Blenderでは、File ▸ Import ▸ glTF。

Blenderで仕上げる

有料プランでGLBかFBXを書き出し、Blenderに読み込みます。メートル単位で実寸どおり、オブジェクトは最初から分かれています。

Mixosが選ばれる理由

各タグがどうなるか

OpenStreetMapは、タグの付いた点、線、ポリゴンのデータベースであり、3Dモデルではありません。3Dにするには、地物の種類ごとに、どんなジオメトリにするかを決める必要があります。Studioのインポートは、OSMコミュニティ自身の3D表記の慣例に沿ってその判断を行います。

建物の外形は、中庭の穴も含めた閉じた形状になり、heightタグの高さまで押し出されます。heightがなければ、building:levelsに約3 mを掛けた値が使われ、どちらもなければインポートが推定し、その件数をレポートに記載します。min_heightは、歩道橋や張り出しなど、地面より上から始まる部分を持ち上げます。roof:shapeは、切妻、寄棟、四角錐、片流れ、ドーム、玉ねぎ型の屋根を作ります(ギャンブレル、マンサード、半寄棟は最も近い形で描かれます)。building:partはランドマークをパーツから組み立て、タグのない小さな住宅には推定した切妻か寄棟が付きます。各外形はその下にある地形の最も低い点に据えられるので、斜面でも浮くことはありません。

highwayの線は、歩道から高速道路までの等級に応じた幅の帯になり、地形の表面に沿って敷かれます。閉じた水域は平らな水面になり、海はOpenStreetMapでは海岸線としてしか描かれないので、その線から閉じて水面にします。公園、草地、舗装などの土地利用は、ライブラリのマテリアルを持つ地表被覆になります。地形そのものは、OSMには標高がないため、オープンな標高タイルから作られます。

OSMのデータはOpen Database Licenseの下にあります。© OpenStreetMap contributorsのクレジットを表示すれば、そこから作ったものを商用を含めて利用できます。Studioはこのクレジットをシーンに保存するので、インポートからレンダリングまでの間に失われません。

各タグがどうなるか

よくある質問

OpenStreetMapのデータを3Dモデルに変換するには?

Studioで「実在の場所」ピッカーを開き、ボックスを描いてインポートします。建物、道路、水域、土地被覆が押し出され、実際の地形の上に自動で敷かれます。.osmファイルのダウンロードやOverpassクエリの作成は不要です。

OSMの建物をBlenderに取り込めますか?

はい。Studioでエリアを構築し、有料プランでGLBかFBXとして書き出して、Blenderに読み込みます。Blender内で完結させたい場合は、無料のBlenderGISやBlosmアドオンでもOSMデータを読み込めます。

どのOSMタグを読み取りますか?

height、building:levels、min_heightのある建物の外形、道路幅のためのhighwayの等級、水域、そして地面のマテリアル用にpark、grass、paving などの土地利用です。

なぜ一部の建物の高さが違うのですか?

地図に情報がないためです。建物に高さや階数のタグがない場合、インポートが推定し、その件数をレポートに記載します。OpenStreetMapにタグを追加すれば、全員にとって修正されます。

データは商用で無料で使えますか?

はい、Open Database Licenseの下で、© OpenStreetMap contributorsのクレジットを表示すれば利用できます。抽出したデータ自体をデータベースとして再配布する場合は、ODbLのシェアアライク条項も適用されます。

Mixos

パイプラインは不要。 ボックスを描く。