🏙️

[Unreal Engine 5] 実在する都市のデータを読み込む ( PLATEAU / VIRTUAL SHIZUOKA )

に公開

動作確認環境

Unreal Engine 5.5.4
PLATEAU SDK for Unreal v3.2.0
Windows 11 24H2

用語

  • VIRTUAL SHIZUOKA
    静岡県が主導する景観のオープンデータ化プロジェクト。
    主に点群データを整備・公開している。

  • 点群データ
    点の集まりとして表現された3Dデータ。

    • LP (laser profiler)
      航空測量された点群データ。広範囲を網羅するが、やや粗い。高所から見るとかなりそれらしいが、地表に視点を置くと特に粗さが目立つ。
    • MMS (mobile mapping system)
      車両から測量された点群データ。点群の密度が高く、看板も読める程だが、データは道路上の一部区間に限られる。
  • PLATEAU
    国土交通省が主導する都市のオープンデータ化プロジェクト。
    主に CityGML 形式のデータを整備・公開している。

  • LOD (Level of Detail)
    3D モデルの詳細度を意味するが、Unreal Engine と PLATEAU では使われ方が異なる。

    • Unreal Engine: カメラから遠い 3D モデルの詳細を簡略化し、パフォーマンスを向上させる
    • PLATEAU: LOD0 から LOD4 まで、データの詳細度が具体的に定義されている。 PLATEAU公式のLOD説明
      • 建物のまともな形が表現されるのは LOD2 から。LOD1 は底面と高さの情報しかないため、屋根の形などはすべて無視される。

データのダウンロード

G空間情報センター から DL。
ページに書いあるとおり、ダウンロード利用のみの場合はユーザー登録不要。
VIRTUAL SHIZUOKA は "静岡 点群"、PLATEAU は (都市名) + "PLATEAU" で検索できる。

サイズがかなり大きい場合があるため、ファイルの置き場所に注意する。
例えば「浜松市 2023 年度 CityGML (v3)」の場合、ダウンロード時が約 251 GB、zip 展開後は 3.5TB 以上となる。

点群データの読み込み

.las 形式の点群データは Unreal Editor で直接読み込むことが出来る。
ポリゴンではないので地面のように見える部分も歩くことは出来ない。
点群をそのまま読み込む場合は割り切りが必要。

PLATEAU のデータの読み込み

PLATEAU SDK for Unreal を使用する。
導入は 公式の手順 に従う。

用途に応じてテンプレートを選ぶ

Third Person Template で始めても特に問題はない。
その場合は、PlayerStart の座標を適当に変更する。

低いLODのデータは読み込まない

LOD1 と LOD2 を両方取り込むと、見た目は LOD2 でも、LOD1の当たり判定も有効になるため、建物の上部が平らでない場合、空中に立ってしまう。
データによるが、例えば「浜松市 2023 年度」であれば「最小LOD」を「2」に設定する。
なお建造物のデフォルトのテクスチャは若干不自然な見た目になりやすいので、ついでに変更しても良い。

余計なデータは読まない

データはかなり重いので欲張って広いエリアをインポートしない。
「建築物」と「起伏」以外の「インポートする」のチェックを外す。
メモリ不足でインポート中に落ちる場合もあるので不要なアプリは終了しておく。

問題

地面の画像が正しい順序で読み込まれないことがある。
今のところ原因と回避方法は不明。

インポートした都市データは一個の巨大なアクタとなる。
建物だけ破壊するとか、マップの逐次読み込みとかは難しいかもしれない。

小ネタ

Third Person Template の場合、BP_ThirdPersonCharacter のジャンプの回数を大幅に増やしておくと、マップを高所から確認できるので便利。

Discussion