2009/12/30

Blender - シーンの自動生成

シーンを自動生成したい

SIO2 を使った iPhone ゲームに表示させるための街並みシーンを作ろうとしています。手動で作るのは大変だと思ったので、最小限の情報から規則的に生成することを考えています。


Open City Engine

まず試したのはOpen City Engineというツールです。これはかなり強力なツールで、車線の数、ビルの種類(住居用/商業用/...)、ビルの分布などを指定して、信号機や歩道を含む街のシーンを生成することができます。

で、こっちを採用する路線で行ってたんですが、SIO2 + iPhone 環境にフィットさせるために今後いろいろ必要になるであろうカスタマイズ性を考えると、Open City Engine 内部を思い通りにいじくるのは大変そうだと思ったので、自分で作ってみることにしました。


オレオレエンジン(0.01)

道路を表すグラフから、道路メッシュや信号機、フェンス、横断歩道などを生成します(予定では)。今できてるのは、ラフな道路メッシュの生成と、道に沿って猿を設置する機能です。

道路を表すグラフ(黄色くハイライトされてるやつ。8頂点, 8エッジ)
roads generation


生成されたシーン
roads_generation


TODO


  • 道路同士をシームレスに繋げる

  • 何をどこに設置するかを決めるアルゴリズム

  • 設置する信号機、横断歩道、街路樹、フェンス、標識などの手配(作るor見つけてくる)

  • 設置するオブジェクトに応じた物理パラメータの設定

  • シーンの部分描画(未検討)への対応


などなど。


ちなみに

以前にも似たようなことを途中までしていまして、そのときは Metasequoia で作ったシンプルグラフ(.mqo)を C# で parse、道路メッシュを生成、それを別の .mqo に出力、それを Metasequoia で開いて DirectX(.x) 形式に手動でエクスポートというワークフローでした。

Blender + python 構成だと、内部データを直接いじれるので面倒な parse をしなくてよい、Blender のいろんな機能がスクリプトから使えるなど、良いことばかりです。(今は Metasequoia でもできるのかもしれませんが。)

ビデオ編集の話といい、いろんなメディアが Blender, Python というフリーなツールを介して繋がっていく感じが大変良いです。