Houdini, Houdini Game Development Toolset, Open Street Map (OSM) を使って、現実の地図から、街の建物を生成してみました。ノードベースは、生成変換の過程がわかるのが良いですね。
2D平面の地図(OSM) から建物の領域だけを抽出して、ランダムに適当な高さを与えて、3Dポリゴンに変換しています。地図に対応した等高情報(いわゆる Height Map)があれば、よりリアルな街並みになるでしょう。地上から地下までを階層的に生成するなど。
道路は、曲線もあります。碁盤の目である京都の街並みになら、やりやすいかも(笑)
OSM Importer を使う, Born Digital
ビルを生成する, Born Digital
Open Street Map
図 2D平面の地図(OSM) から、建物のみを3D ポリゴンに変換した結果
図 Open Street Map 2D 平面の地図
2D平面の地図(OSM) から建物の領域だけを抽出して、ランダムに適当な高さを与えて、3Dポリゴンに変換しています。地図に対応した等高情報(いわゆる Height Map)があれば、よりリアルな街並みになるでしょう。地上から地下までを階層的に生成するなど。
味噌
建物だけを抽出する際、OSM 地図データのアノテーションを使い、建物以外を抽出して削除しています。幾何情報だけでなく、意味情報を使っています。
実践としては、そういうやりかた(戦術)は、筋が良いと思います。とはいえ、地図にアノテーションが存在しない状況もあるので、幾何情報と現実の何らかの情報から3D ポリゴン生成する頑健な手法を考えておきたいところです。
課題
3D ポリゴン生成時の法線の向き
現行は、入力情報が二次元しかないので、3D ポリゴン生成時に、頂点法線が反転してしまう領域があり、そのような領域を抽出して、法線を反転して強制的に修正しています。研究的な視点だと、その等高情報を画像から推定して生成する、のは面白いと思います。3Dポリゴン化した建物へのテクスチャマッピング(UV 座標)
3D ポリゴン化した建物の用途は、レベルデザインでのグレーボクシングと構造の把握程度までとしておきます。グラフィクスも考慮する最終レベルでは、事前にテクスチャマッピングした High Level of Detail の建物に置き換えます。道路など建物以外のポリゴン化
建物は凸形状なので、ポリゴンの押し出し(Extrude)で容易に3D 化できました。道路は、曲線もあります。碁盤の目である京都の街並みになら、やりやすいかも(笑)
階層化
地上から地下までをレイヤー化して、街をプロシージャル生成します。
よりリアルで自然な街並みを生成するには
長期の時間経過、自然現象のイベント、地球の自然環境を考慮したシミュレーションを実行して、街を生成します。これは研究になると思います。参考文献
Apprentice でも動作します。味噌は、Game Development Toolset インストール後に、Houdini を起動して、Shelf に Game を追加しておくことです。そうすると、Tab 操作で、OSM Importer などの機能が利用できるようになります。
ビルを生成する, Born Digital
Open Street Map
コメント
コメントを投稿