イベント
[GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定
CityEngineについては,2010年8月に掲載した「SIGGRAPH 2010」でのレポート記事で紹介したことがある。植物をフラクタルで生成するアイデアからヒントを得て作成された,街並みの3Dモデルを自動生成するミドルウェアで,以下に掲載した出力結果を見るだけでも,凄いエンジンであることが理解できるだろう。
しかし,これまでのCityEngineは,映像分野での採用例はあっても,ゲームでの採用例はほとんどなかったのだという。そこでGDC 2014に合わせて,CityEngineのSDKを発表し,ゲームでの採用をしやすくしてきたというわけだ。
今回は,CityEngineを解説したセッションの概要をレポートしたい。説明を担当したのは,ESRIのディレクターであるPascal Mueller氏である。なお,今回のセッションは,CityEngineのツールとしての側面にフォーカスされており,アルゴリズムやエンジン部分の話はまったくなかったことを,あらかじめお断りしておく。
Pascal Mueller氏(Director,ESRI) |
プロシージャル生成なら,作れば作るほどコスト削減になるとMueller氏は主張する |
手軽にリアルな街並みを作り出せるCityEngine
会場では,ライブデモで実際にCityEngineを使って街並みを作る様子を披露していたのだが,見たところ,確かにとても簡単そうだ。基本的な操作は,地図上で範囲を指定してから,スタイルを定義するだけ。そうすると,指定範囲内を一定の規則で生成された街並みが埋め尽くすというわけだ。生成したデータをもとに,たとえば家の一軒一軒をカスタマイズしていくことも,非常に簡単にできる。
マップ上で範囲を指定すると(左),簡単に街並みが生成される(右) |
エディタ画面の右側を見ると,街の生成についてのパラメータがずらりと並んでいることが分かる。ここを適当に修正すると,出力される建物の種類を変更できる。
エディタ上で空きエリアに適当な線を引くと,次の瞬間にはそれが道となり,続けて建物で埋め尽くされる。道を曲げれば,建物の形も追従して変わるといった具合だ。生成アルゴリズムが優秀なだけでなく,ツールの操作性もなかなかよさそうだ。
適当に線を引くとそれが道路になり(左),それに合わせて建物が生成される(右) |
碁盤の目のように整然と並んだ道の一部を曲げてみると(左),建物の形も自動で追従して変化する(右) |
大まかに作成したデータに,後から植生を足したりして,よりリアルな風景に仕立て上げることも可能だ。Mueller氏の講演によれば,ファサード(壁面)用テクスチャとして,400カテゴリ分ものデータがCityEngineに追加されるとのことだった。
また,E-on Softwareの景観作成ソフト「LumenRT」用に作られた植物のデータ約80種類も,CityEngineで使えるという。
余談だが,ESRIとE-on Softwareはパートナーシップを結んでいる。植生を中心とした景観作成ソフト「Vue」を有するE-on Softwareと,CityEngineは相性がいいようだ。
建物の壁面に使えるテクスチャが400カテゴリも追加された |
LumenRTの植物データを,CityEngineでも利用できる |
CityEngineで作成したデータは,FBX形式など,さまざまな形式でエクスポートできるし,データサイトにアップロードしてコミュニティ内で共有することもできる。さらに,投稿データをWebブラウザ上で,時間や季節などの条件を与えて3D表示させることも可能だ。「WebGL」を使っているので,対応Webブラウザが限られはするが,投稿データを手軽に見られて,操作性も優秀だ。
登録データ数は,まだ多いとはいえないが,データの閲覧はユーザー登録も必要ないので,関心のある人は一度見てみるといいだろう。
SDKの登場でゲーム内にCityEngineを組み込めるように
Unityプラグインなら,生成した建物の中を移動も可能
CityEngineのデータをゲームで使うには,2種類の方法が想定されている。1つめは,モデルデータとして出力し,ゲーム側で使用するという方法だ。この方法は従来から可能であり,別にSDKが必要というわけではない。
それに対して,SDKの登場で可能となったのが,CityEngineのエンジン部分をそのままゲームに組み込んでしまって,ゲーム内で動的に都市生成を可能にするというものだ。
作成したデータを出力して,ゲームエンジン側で使う従来の手法(左)に加えて,SDKを使ってゲーム内にCityEngineを組み込む手法も可能になった(右) |
プラグインのデモも披露された。MayaやUnityの中でCityEngineのエディタを使っているかのように,都市モデルを調整できるのは,使い勝手がよさそうだ。とくにUnityでは,簡単な操作で街を出力して,そのままGame View内で街中を移動するといったことが簡単にできる。実行中にInspectorで,建物の仕様を変えることも可能だ。
Maya内で建物を生成した例。建物の高さを変えると,階数が自動的に変わる |
Maya上で建物を拡大すれば,その大きさに合わせて生成される |
こちらはUnityでのデモ。建物各部の大きさを変えると,CityEngineのルールで建物が生成される |
プロシージャル技術の活用は,ゲーム業界での課題でもある。樹木生成用ミドルウェアとして名高い「SpeedTree」と同じように,いずれはCityEngineも,ゲーム開発では必須のツールになっていくのかもしれない。
ESRI 日本語公式Webサイト
- この記事のURL: