PLATEAU & Unreal Engine & 流体解析に挑戦してみた結果【第1回:PLATEAUの3DモデルをBlender経由でUnreal Engineに取り込む】

こんにちは、エヌデーデーの富永です。
国土交通省のPLATEAUが提供している3D都市モデルを利用してビル風の流体解析を行い、その結果をUnreal Engine上で表現することに挑戦しました。目的としましては、ドローンが飛行可能な風速領域をUnreal Engine上で表現することであり、実現すれば幅広い応用が期待できると考えています。

PLATEAUとは、国土交通省が主導する、日本全国の3D 都市モデルの整備・オープンデータ化プロジェクトです。PLATEAUが公開している3D都市データは自由に利用することが可能ですので、3Dの建物データを流体解析のモデルに利用することとしました。

この記事はシリーズ化して、次ような内容でまとめていく予定です。

  • 【第1回:PLATEAUの3DモデルをBlender経由でUnreal Engineに取り込む】←この記事
  • 【第2回:CADモデル、メッシュの作成】
  • 【第3回:流体解析ソフトでビル風のシミュレーションをする】
  • 【第4回:流体解析結果をUnreal Engineで可視化する】
  • 【第5回:風速データをUnreal Engineのシミュレータに反映する】

第1回の本記事では、PLATEAUからダウンロードしたデータをUnreal Engineに取り込むところまでの手順を紹介します。

PLATEAUの3DモデルをUnreal Engineに取り込んだ状態

PLATEAUからデータをダウンロードする

今回は中野坂上にある本社ビルを対象に流体解析を行っていくことにします。まずは、利用する3D都市データをダウンロードするため、PLATEAUのホームページ[1]からG空間情報センターにアクセスし、東京23区を選択します。

①PLATEAUのホームページからOpen Dataをクリック
②G空間情報センターにアクセス
今回はFBXファイルを利用するため2020年のデータを選択
その他のファイル形式でもBlenderで扱えるらしい…

FBXのデータをダウンロードします。

ダウンロードしたファイルの中の「bldg」フォルダ内に「lod1」フォルダと「lod2」フォルダがあります。LODについては後ほど説明します。LOD2のデータがあればそれを使いたかったのですが、残念ながら中野坂上周辺はLOD1のデータしかないためこちらを使います。
23区すべてのデータがダウンロードされているため、データ区分を参照して使うデータを選びます。ここでは、中野坂上が含まれる区画のデータ(53394534_bldg_6677.fbx)を使います。区画の確認は「bldg」と同一フォルダ内にあるPDF(13100_indexmap_op.pdf)で確認できます。

ダウンロードファイルの構成

◇LOD(Level of Detail) とは
 LODは3D都市モデルに含まれている地物の詳細度を示すものです。
 LOD1よりLOD2の方が形状が詳細であり、また3D都市モデルのLOD2ファイルはテクスチャ付きです。

ダウンロードしたデータをBlenderに取り込む

ここからはBlenderを用いて3D都市モデルのデータを加工していきます(参考[2])。Blenderを立ち上げたらCollection内のCamera, Cube, Lightは削除しておきます。

赤枠内を削除しておく

File→Import→FBXを選択して取り込むFBXファイル(53394534_bldg_6677.fbx)を指定します。
Blenderはcmスケールで取り扱われるため、mスケールである3D都市モデルとスケールを一致させるためScaleを100にして取り込みます。

Scaleを1から100に変更してインポートする

PLATEAUデータは複数の区域を組み合わせられる仕組みであることから、読み込んだデータは中心位置には来ていないはずです(おそらく東京周辺のデータは平面直角座標系[3]の9系における基準点が中心位置になっていそうです)。

編集操作しやすいようにモデルを画面の中心に配置します。
キーボードの「7」を押して上から見た表示に変更します。「A」を押すと取り込んだすべてのモデルが選択されます。「.」を押してすべてのモデルが画面内に収まるように表示されます。ここで「Shift + C」を押すと原点とモデルが含まれた画面表示になります。Moveを選択しダウンロードしたモデルを中央に移動させます。

「7」→「A」→「.」→「Shift + C」の順にキーボードを操作するとこのような表示になる。
①の移動マークを選択し、②の赤矢印及び緑矢印を操作して取り込んだデータを中央に移動する。

中央に移動出来たらObject→Apply→Locationを選択します。これでモデルが中央に配置されました。

Blenderで編集する

本社周辺以外の建物モデルは評価範囲に含めないため、まとめて削除します。
本社周りのビル以外を選択して「Delte」を繰り返します。
(もっとスマートなやり方があれば教えてほしいところです。)

本社ビルとその周りの3つビルのみの状態にした

Unreal Engineに取り込めるファイル形式で出力する

Unreal Engineで取り込めるFBX形式で出力します。
File→Export→FBXを選択します。

これでBlenderの作業は完了です。

Unreal EngineでFBXファイルをインポートする

Unreal Engineを起動します。今回はUE4.27.2を使用します(今後の記事で利用するAirSimと呼ぶプラグインがUE5ではサポートされていないため)。

新規プロジェクトはゲームを選択します。

テンプレートはブランクを選択します。

プロジェクト設定は特に変更せず、保存フォルダとプロジェクト名を設定して「プロジェクト作成」をクリックします。

エディターが起動したら先ほど作成したFBXファイルをコンテンツブラウザ上にドラッグ&ドロップします。すると、ポップアップが開くので「Combine Meshes」にチェックを入れて「全てインポート」をクリックします。

インポートしたデータをビューポートにドラッグ&ドロップすると、ビューポート上に3Dのビル群が表示されます。

やけに黒くなっているが、UE上にPLATEAUデータを取り込むことができた

LOD2ファイルであれば、Blender出力時にテクスチャを含めて出力すると、Unreal Engine上でテクスチャありの建物を表示することができます。

東京駅周辺をテクスチャありで表示できた

次回はBlenderで加工したデータをCADソフトに取り込み、CADモデルを作成して流体解析用にメッシュ化を行っていきます。

参考サイト