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

ゲーム開発や映像制作で必要なのは、キャラクタとテクスチャ、そして植物だけではない。舞台が都市の作品であれば街自体も作り込まなくてはならない。シナリオが一方通行のリニア・ストーリー展開であれば、描かれる街並みやその舞台となる建物だけ手作業で作ってもいいが、例えば航空機を扱ったフライト・ゲームや、神の視点でプレイするリアルタイム・ストラテジー・(RTS)ゲームなどでは、背景物として大局的な街並みが必要になることが多い。

この、「街の3Dグラフィックスのプロシージャル生成」というのも、近年では注目されてきている技術なのだ。

この分野の研究を精力的に行っているのはスイス・チューリッヒ工科大学のYoav I H Parish氏とPascal Muller氏だ。

街をプロシージャル生成する

町の中の建物もプロシージャル生成する

2人が最初に開発したのは、水と陸の領域を与えると、内蔵されたロジック・ルールに則ってプロシージャルに陸地に道を敷き、テクスチャマップ付きの建造物までを建ててくれるというシステムで、これはSIGGRAPH 2001にて「Procedural Modeling of Cities」として発表されている。

まず、データとして必要なのは陸地マップと水域マップで、陸地マップはハイトマップの構造を取る。そしてプロシージャル街生成に重要な種となる人口密度マップも用意する。

左上から水域マップ、中央が陸地の高低を表したハイトマップ、左下が人口密度マップ

道の生成パターン

システムはこの人口密度の高い土地を高速道路で結び、そこから派生道路を敷いていく。道路は最初はグラフベースで生成する。ここでいうグラフとはグラフ理論のグラフでノードとノードを線で結ぶ線画的なデータ構造のこと。これには連載第82回のプロシージャル植物生成の所で紹介したL-SYSTEMの拡張版を用いている。道はただ闇雲に線を延ばすのではなく、行き止まりがないようにしたり、土地の高低をなるべく上り下りしないようにしたり、またパリのような同心円状に敷くルールも選べるようにして道を敷く。

等高線に沿うような道路生成ルール。急激な坂は造らない

道と道を理にかなった法則で接続する

実際にマンハッタンの地形と人口密度データで実験した例。上がこのプロシージャル技法で生成した道。下が現実世界のマンハッタンの道路網

動画
(WMV形式 20秒 714KB)

道が線のままでは仕方がないのでこれを"幅"を持った道へと変換し、実質的に道が土地を占有するような処理を行う。道を敷き終わったら今度は土地の区画を生成する。この区画生成にはあらかじめ設定しておいたその地域ごとの建造物の最大高パラメータをベースにして決められる。つまり高い建物が建つ地域ほど区画単位が大きくなり、そうでない場所は区画単位が小さくなる。(続く)

線で引いた道を幅を持った道へ変換し、さらに道で囲まれた土地を区画分割。区画は建物が建つ単位スペースとなる

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