【PLATEAU】CityGMLをゲームや3Dプリンターで使うための方法。

色々と調べたので備忘録として書いておく。

調べたと言えば聞こえはいいが、大事な部分はほぼ教えてもらったような感じです(笑)

PLATEAUと言うサイトから地形や建物のデータをダウンロードできるが基本はCityGMLという形式でデータをダウンロードすることになる。
すぐ3Dデータとして使える形式を配布している地域もあるが、どの場所でも対応できるようCityGMLから3Dゲームで使える形式に変換・加工するについて調べました。

ゲームで使う場合:
CityGML形式→OBJ形式やFBX形式に変換が必要

3Dプリンタで使う場合:
CityGML形式→STL形式やOBJ形式に変換が必要

ということで調べていたら以下の記事を執筆している方から3Dプリンターで出力する形式にするのであればこの方法でいけるよ!と教えて頂きました。

CityGML形式→【PLATEAU GIS Converter】→PLY形式→【IMAGEtoSTL】→STL形式

PLATEAU GIS ConverterでPLY形式にしてしまえばあとはIMAGEtoSTLで好きな形式に出力できるのでPCのスペックが高ければこれで3Dプリントできます。

大体の形式に出力できる。

ただ、ここで問題になるのはPLY形式にする際、建物データと地形データを別々にPLYにしてしまうとSTLを3DプリンターのスライスソフトやCADソフトに読み込んだ時に位置を合わせるのが大変になります。
なので両方のデータを読み込むのですが地形データがとにかく大きい。
これのせいでPLYからゲームで使える形式、例えばOBJ形式にしてPlayCanvasに読み込んであたり判定をつけると実行時にメモリー不足になり、3DCADソフトのFusion360で読み込んでSTLをソリッドに変換しようとすると凄い時間がかかり、ソリッド同士を結合しようとすると何故か増殖したりフリーズしてしまう問題に遭遇しました。

3Dデータに関しては一応解決策はあって、Fusion360上で編集はせずFlashPrintというスライサーにSTLデータを読み込ませて不要な部分をカット。そして必要な部分だけをSTLデータに出力しMeshmixerにインポート。
あとはMeshmixer上で加工してSTLデータを作るという方法である。

結構面倒ではあるし使い慣れたFusion360が使えないのは痛いが固まることもなく、やりたいことはできたのでこの方法でいいのかなと思っている。(Fusion360に読み込もうとしても関係ない点同士が面を形成していたりするので疲れた)

次はゲームで使える形式への変換だがやはり地形データをトリミングする必要があるので調べてみると、UE5とPLATEAU SDK for Unrealを使うことでトリミングしてインポートが出来るということがわかりました。

しかしUE5のプロジェクト作成でコケているので、まずはこの問題を解決しないといけない。。。

UE5について調べているとデフォルトの保存先がOneDriveになっていてそのせいでエラーになるとか糞使用みたいなの多いしUE5を使うべきなのか迷うけれど、Fortniteのマップとしても転用できそうなのでとりあえずマップ内を散策できるレベルまではやっておきたい。

UE5にインポートする際にトリミングできるのであればUE5でゲームも作れるし、トリミング後のデータをエクスポートすれば処理落ちしないデータをPlayCanvasにインポートできそう。

UnityにCityGMLをインポートするSDKも用意されているようなのでゲームを作るのは比較的簡単にできそうな予感。(エラー祭りにならなければ)

以上。



この記事が気に入ったらサポートをしてみませんか?