プロシージャルで街を作る~建造物と道路のプロシージャル生成(2)

ビルの生成にもプロシージャル技術が応用できるとして、研究メンバーのMuller氏がSIGGRAPH 2006に「Procedural Modeling of Buildings」として、ビルのプロシージャル生成についての論文を発表している。

建物の形状についても、連載第82回でも紹介したL-SYSTEMを独自拡張したものを用いて生成している。

分割した区画に適合する最大形状を求め、この範囲内でさらに内蔵された建物ボキャブラリーに基づいて形状の分割を行い、建造物としての複雑な形状を作り込んでいく。屋根の形なども、こうした分割と屋根のボキャブラリー・システムに基づき決定される。

区画内で建物の形状を生成。円柱、立方体などを組み合わせて生成

基本形状のボキャブラリー

屋根の形状のボキャブラリー

円柱と立方体を組み合わせ、これを上に成長させたような高層ビルの例

その他の高層ビルの例

続いて、建物の外観部分……具体的にはドア、窓、梁、ベランダのような外装部分のテクスチャのプロシージャル生成が行われる。多層建造物の場合は、各フロアの高さ、部屋の広さなどの情報を元に建造物の外面を分割して求めていく。この仕組みもやはり拡張版のL-SYSTEMを用いている。

フロアの割り振りもプロシージャルで行う

窓枠と屋根が重なってしまったり、窓枠が建物の輪郭ギリギリに配置されてしまったり、窓などの並びが上下左右の他の窓や隣接する面の窓と綺麗に配置されていなかったりするとそれを整理する最適化までが行われる。この建造物のプロシージャルなテクスチャ生成についてもMuller氏は「Image-based Procedural Modeling of Facades」としてSIGGRAPH 2007にて単体別論文として発表を行っている。

まずは建物の高さからフロアプランを分割生成、次に部屋の単位を分割生成

今度は部屋の単位内で分割を進めて窓枠、窓格子、梁だしなどを生成

生成された外装テクスチャ

補助線の概念を導入して窓枠位置や形状を最適化

左が最適化前、右が最適化後。窓枠の位置や外装パネルや屋根のディテールの有無にも注目

動画
実際に撮影した写真からビルの外装モデルを自動生成する技術もMuller氏の研究グループは開発した。
(WMV形式 54秒 1.63MB)

なお、このシステムは、街には欠かせない草木などの植物も生成するが、これには植物デザインソフトの「Xfrog」を用いている。都市部だけでなく住宅街の生成も可能で、その場合はそうした木々やまた区画を囲った垣根、プールなども生成される。

植物を伴った背の低い民家の生成にも対応。プールや池が生成されることも

実験グループが生成したビバリーヒルズの高級住宅街風の街並み

動画
生成された街並みのデモ映像。2001年当時のレンダリングなのでシェーダのクオリティはいまひとつだが、生成された街の説得力は高い。
(WMV形式 30秒 869KB)

まるで有名なコンピュータゲームの「シムシティ」をコンピュータ自身で1人遊びさせるような研究だが、この研究グループは、その研究成果を「CITY ENGINE」というプロシージャル街生成ミドルウェアとしてまとめ上げ、ビジネスにまで展開したことで、注目を集めている。

「CITY ENGINE」は、ゲーム開発や映像制作者向けのプロフェッショナルソフトとしてUS$6950にて販売が開始され、同時に30日限定の無料試用版もリリースされた。興味がある人はCITY ENGINEのオフィシャルサイトを訪れてみるといいだろう。

なお、最新版のCITY ENGINEでは、ビルの形状は現代風だけではなく、ルールの作り方次第では未来的な、あるいは異星文明的なものも作り出せるようになっており、応用範囲は広そうだ。

最新版「CITY ENGINE」によるプロシージャル都市生成の例

このような未来的な架空都市やSF的な斬新な都市も生成できる

想定されている用途は映像制作やゲーム開発といった以外に、都市計画シミュレーション、古代文明都市の再現などの学術用となどが挙げられている。

実際、CITY ENGINEの開発グループは、バージニア大学と共同でローマ時代の街並みを再現するプロジェクト「ROME REBORN」をCITY ENGINEベースで実装し、SIGGRAPH 2008で発表している。過去の数々の考古学的な発見を、系統立てて大局的にビジュアライズする手段としてCITY ENGINEが活躍したことになる。(続く)

都市計画シミュレーションにも利用できる?

ローマ時代の街並みを考古学的な見地で生成。バージニア大学との共同研究にてCITY ENGINEが採用された

(トライゼット西川善司)