CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

3D都市モデル「PLATEAU」から取得するファイルの構成と、Blenderで読み込んで確認する方法

今年の3月下旬に、国土交通省より3D都市モデルについての発表がありました。

Project PLATEAU ver1.0をリリース ―全国56都市の3D都市モデル整備とユースケース開発が完了―

ただ、3D都市モデルの取得場所、データ形式、UnityやBabylon.jsで使うための方法などがうまく見つけられなかったのでまとめてみました。

1. Project PLATEAUとは?

公式HPの説明を引用します。また、以降はProject PLATEAUをPLATEAUと表記します。

PLATEAU は、国土交通省が進める 3D都市モデル整備・活用・オープンデータ化 のリーディングプロジェクトである。都市活動のプラットフォームデータとして 3D都市モデルを整備し、 そのユースケースを創出。さらにこれをオープンデータとして公開することで、誰もが自由に都市のデータを引き出し、活用できるようになる。

引用元:Project PLATEAU | PLATEAU [プラトー]

つまり、都市の3Dモデルを自由に使えるという仕組みです。

わかりやすい解説です。
www.watch.impress.co.jp

3D都市モデルの概要について調べられています。
qiita.com

PLATEAUの概要だけでなく、PLATEAUの3D都市モデルを使ったアプリのリンクが豊富です。
bibinbaleo.hatenablog.com

なお、4/18時点では、PLATEAUのHPからはなぜかリンクを見つけられず、G空間情報センターの中にあるリンクから取得します。

2. 3D都市モデルがダウンロードできる「G空間情報センター」とは?

G空間情報センターについては、2016年の国土交通省のニュースリリースに説明があります。

G空間情報センターは、国土地理院などの各府省、民間各社及び各学術機関等からご協力頂き、官民問わず様々な主体により整備・提供される多様な地理空間情報を集約し、利用者がワンストップで検索・ダウンロードし利用できる、産学官の地理空間情報を扱うプラットフォームです。
(途中省略)
(背景)第二期地理空間情報活用推進基本計画(平成24年3月閣議決定)において、「国・地方公共団体・民間事業者等が一体となって施策を推進することで、我が国における地理空間情報の共有・提供を行う情報センターの構築を目指す」とされていることを踏まえて、これまで国土交通省として、「平成28年度G空間情報センター運用による地理空間情報の流通の円滑化及び利活用モデルの構築業務」(国土交通省委託事業)により地理空間情報の利活用の検証を行うとともに、G空間情報センター運用の検討、個人情報等の取扱いに関する検討を実施してきました。

引用元:G空間情報センターが運用開始! 多様な地理空間情報が集約、ワンストップで検索・ダウンロードが可能に!(2016年11月18日)

国土交通省から派生した組織の運営によるもののようです。

3. 3D都市モデルのダウンロードページについて

色々リンクがありますが、このページからみると一覧で確認できます。

www.geospatial.jp

UnityやBabylon.js、Three.jsなどのWebGL系ですぐに確認するには、FBXまたはOBJを使用するのが早そうです。

また、FBXとOBJ形式には3次メッシュと4次メッシュの2つがあります。

3D city model list from G space center in Japan

この区分けは、総務省統計局の資料で説明がありました。以下、関係するページを抜粋します。

What is 1st-4th generation mesh on map

Visual examples of mesh on map

引用元:https://www.e-stat.go.jp/pdf/gis/chiiki_mesh_toukei.pdf

このように、地図を細かい正方形で区切ったとき、細かいほど1次、2次、3次、4次と変わります。

試しに4次メッシュを選択してみます。先ほどの一覧で確認できるページから、objの4次メッシュのリンクをクリックします。

3D都市モデル(Project PLATEAU)東京都23区(OBJ 4次メッシュ 2020年度) - データセット

すると、また説明のページが表示されます。東京都23区のすべての3D都市モデルはデータサイズとしても大きすぎるので、先ほどのメッシュのルールによって分割された状態で提供されます。

分割範囲は、「東京都23区構築範囲図」というページを見ると確認できます。

Split area on Tokyo 23 word

引用元:3D都市モデル(Project PLATEAU)東京都23区(OBJ 4次メッシュ 2020年度) - 東京都23区構築範囲図

たとえば、渋谷区や新宿区を含むエリアの3D都市モデルがほしい場合、この後のダウンロード画面で、533945という番号を使います。
大田区の右隣、羽田空港があるエリアの場合、533926という番号を使います。

4. 実際に3D都市モデルをダウンロードしてみる

試しに、4次メッシュの提供ページで533926をダウンロードしてみます。

zipを解凍するとこうなります。LOD1とLOD2については、同じ建物の3Dモデルが入っています。ただ、LOD1は単純な立方体などで簡略化されています。

Contents of PLATEAU 3D city model data as obj

brid.zipは、指定エリアに含まれる橋の3D都市モデルです。dem.zipは地形データです。Unityなどでのplane、Babylon.jsでのgroundオブジェクトのようなもので、地面だと考えて良さそうです。

LOD1.zip、LOD2.zipを解凍すると、実際のobj、テクスチャ、mtlファイルが入っています。

当たり前ではありますが、提供ページからダウンロードできる3D都市モデルのファイルサイズは、建物の多さによるため、場所によって異なります。
たとえば、羽田空港付近の533926はあまり建物がないので、533926.zipは104MBでした。
一方、渋谷区や新宿区を含む533945.zipは、3.06GBでした。

なお、bridやdemは、CtiyGMLでの呼び方のようです。こちらの解説を参考にさせていただきました。

CityGMLで都市を3Dモデル化!特徴や事例をご紹介 | 地図素材やGISMAPシリーズ構築、空間情報の提案型サービスなら北海道地図

5. UnityやBlenderに入れてみる

Unityの場合はいつものようにProject Viewに3D都市モデルデータをドラッグし、Game Viewに表示させることができます。

fbxであればこのように違和感なく表示されますが、objを入れると高さ方向が変わってしまいました。Unityの場合データサイズの観点からもfbxの方がよさそうです。

■fbxの場合
Two PLATEAU 3D city model fbx on Unity 2019

■objの場合
Two PLATEAU 3D city model obj on Unity 2019

一方、Blenderの場合、objではCG空間のどこに表示されたかが追いづらくなりました。今回の3D都市モデルの中では、fbxの場合はdem (地形) が1つのエリアにつき1つなのですが、objの場合はdemが細分化されており、インポートが大変でした。

fbxであれば、demが1つであり、CG空間の見える範囲を調整すれば大きさや位置は大体把握することができました。ちなみに、533926のdem (533926_dem_6677.fbx) と数個の3D都市モデルのfbxデータをBlenderで表示させた例です。

dem of 553926 3D city data on Blender2.9

CG空間の原点 (緑と赤の線が交差する点) には、Blender起動直後に表示されるCubeが置かれています。つまり、dem自体はCubeよりもずっと大きく、Cubeからもかなり離れていることが確認できます。

6. Tips

6.1 Blenderで指定した3D都市モデルに視点を合わせる方法

以降はfbxを読み込んだことを前提としています。

まず、Blenderで表示したオブジェクトは、Unityと異なり、Fキーを押しても視点が合いません。視点を合わせるには、シーンの中のオブジェクトを選択状態にして、テンキーパッドの場合は、"."を押します。テンキーパッドがない場合、View / Frame Selected を選択します。以下はFrame Selectedのボタン位置です。

How to focus selected objects on Blender2.9

demデータの場合はこれでいけます。
しかし、fbxでインポートした他のデータは、この方法でFrame Selectedを実行するとBlenderのCG空間の原点に視点が移動してしまいます。

特定の建物に視点を合わせるには、子階層のsurfaceMember〜を選択状態にしてから、View / Frame Selected を選択します。これで特定の建物の表面に視点が合うのであとは微調整できます。

How to focus selected objects with selecting surface of CityGML fbx data on Blender 2.9

6.2 Babylon.js Editorで表示させる方法

Blenderでglb形式に変換したものを使用します。

Babylon.js Editorを起動後、AssetsウインドウのMeshから、glbファイルを指定すると読み込めます。Unityと同じように特に苦労することなく表示させることができました。

Loaded a PLATEAU model on Babylon.js Editor v4.0.0-rc.3

同じ3D都市モデルをBlenderで表示させた画面です。位置関係などは問題なさそうです。

Loaded a PLATEAU model on Blender 2.9

7. おわりに

今回検証したように、UnityでもBlenderでもfbx形式を使用する方がよさそうです。また、Babylon.jsで使うには、Blenderでfbxで読み込んだ後、glbに変換することで使用できます。