MoAR はビルをキャンバスにした AR コンテンツなのでキャンバスとなるビルの正確なモデルが必要になる。
PLATEAU
東京だし PLATEAU のデータ使えるかな?と思ってデータ確認してみたところ LOD2 で他より精度高く作られてはいるものの今回の用途にはディティールが足らなかった。(周辺のビルとかはオクルージョンとかには使えるかも
PLATEAU から個別のビルモデルを抽出する方法
-
PLATEAU View で建物 ID を調べる。
- CityGML をダウンロードする。
- ダウンロードした ZIP ファイルを展開すると大量の gml ファイルが出てくるので、建物 ID を全文検索して該当するモデルが含まれる gml ファイルを特定する。(gml ファイルには複数の建物データが含まれている
- PlateauCityGml で↑で見つかった gml ファイルを処理すると建物1つずつの OBJ ファイルが生成される。
- 建物 ID がファイル名になっているので該当するファイルを見つける。
自分でモデリングする
PLATEAU のモデルが使えないのなら作るしかないので図面もらって Fusion 360 でモデリング。
プリントされた図面をスキャンした PDF なのでところどころ歪んでたり傾いたりしてるやつを Photoshop で修正して Fusion 360 で下敷きにしてトレース。数値読めない部分もあったりするのも勘で適当に合わせる。割とシンプルな扇型だったので助かった。
作ったモデルを Immersal で AR 表示してみたところ。ちょいズレてるのが、ドリフトしてズレてるのかモデルが正しく作れてないのかそもそも建物が図面どおりに作られてないのかがわからないところが厄介だけど PLATEAU モデルよりは全然よい。
左が自分でモデリングしたやつで、右が PLATEAU のモデル。
Blender で作り直す…
Fusion 360 でモデリングしたものは OBJ ファイルなどのポリゴンモデルとして書き出すと Unity などの他アプリで使用できるようになる。で、Fusion 360 からポリゴンモデルとして書き出すと、めっちゃ細長いこれは線なのでは?というポリゴンとかめちゃくちゃ小さいこれは点なのでは?というポリゴンとかが生成されたりするし当然ながらトポロジーみたいなのは全く考慮されないデータが出てくるので、単にそれを表示するだけならまだいいのだが(よくないのだが)、ここからさらに加工しようとするとその構造がアレすぎてかなり辛い。
という事情があって最終的に MoAR アプリで使っているモデルは、Fusion 360 のモデルを参照しながら Blender で1から再モデリングしたものだったりします。
左が Fusion 360 から書き出したモデルで、右が Blender で1からモデリングしなおしたもの。