北米時間2014年3月20日,スイスのESRI(エスリ)はGame Developers Conference 2014(以下,GDC 2014)にて,同社が開発している都市景観生成ミドルウェア「
CityEngine」に関するセッションを行った。
CityEngineについては,2010年8月に掲載した
「SIGGRAPH 2010」でのレポート記事で紹介したことがある。植物をフラクタルで生成するアイデアからヒントを得て作成された,
街並みの3Dモデルを自動生成するミドルウェアで,以下に掲載した出力結果を見るだけでも,凄いエンジンであることが理解できるだろう。
しかし,これまでのCityEngineは,映像分野での採用例はあっても,ゲームでの採用例はほとんどなかったのだという。そこでGDC 2014に合わせて,CityEngineのSDKを発表し,ゲームでの採用をしやすくしてきたというわけだ。
今回は,CityEngineを解説したセッションの概要をレポートしたい。説明を担当したのは,ESRIのディレクターである
Pascal Mueller氏である。なお,今回のセッションは,CityEngineのツールとしての側面にフォーカスされており,アルゴリズムやエンジン部分の話はまったくなかったことを,あらかじめお断りしておく。
![画像ギャラリー No.040のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/040.jpg) Pascal Mueller氏(Director,ESRI) |
![画像ギャラリー No.007のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/007.jpg) プロシージャル生成なら,作れば作るほどコスト削減になるとMueller氏は主張する |
ゲームで使う都市のモデリングデータを作るために必要な作業を示したスライド
![画像ギャラリー No.008のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/008.jpg) |
![画像ギャラリー No.009のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/009.jpg) |
![画像ギャラリー No.010のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/010.jpg) |
手軽にリアルな街並みを作り出せるCityEngine
会場では,ライブデモで実際にCityEngineを使って街並みを作る様子を披露していたのだが,見たところ,確かにとても簡単そうだ。基本的な操作は,地図上で範囲を指定してから,スタイルを定義するだけ。そうすると,指定範囲内を一定の規則で生成された街並みが埋め尽くすというわけだ。生成したデータをもとに,たとえば家の一軒一軒をカスタマイズしていくことも,非常に簡単にできる。
![画像ギャラリー No.011のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/011.jpg) |
![画像ギャラリー No.012のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/012.jpg) |
| マップ上で範囲を指定すると(左),簡単に街並みが生成される(右) |
エディタ画面の右側を見ると,街の生成についてのパラメータがずらりと並んでいることが分かる。ここを適当に修正すると,出力される建物の種類を変更できる。
建物の高さを変更した例。左は低めで,右は高めに設定されている
![画像ギャラリー No.013のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/013.jpg) |
![画像ギャラリー No.014のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/014.jpg) |
![画像ギャラリー No.015のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/015.jpg) |
エディタ上で空きエリアに適当な線を引くと,次の瞬間にはそれが道となり,続けて建物で埋め尽くされる。道を曲げれば,建物の形も追従して変わるといった具合だ。生成アルゴリズムが優秀なだけでなく,ツールの操作性もなかなかよさそうだ。
![画像ギャラリー No.016のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/016.jpg) |
![画像ギャラリー No.017のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/017.jpg) |
| 適当に線を引くとそれが道路になり(左),それに合わせて建物が生成される(右) |
![画像ギャラリー No.018のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/018.jpg) |
![画像ギャラリー No.019のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/019.jpg) |
| 碁盤の目のように整然と並んだ道の一部を曲げてみると(左),建物の形も自動で追従して変化する(右) |
OpenStreetMap.org
![画像ギャラリー No.020のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/020.jpg) |
線を引いていくだけで道ができ,街が作れるCityEngineだが,よりリアルな街を作るには,現実の世界をもとにしたデータを組み合わせるという手が使える。CityEngineの場合,フリーの地図制作プロジェクト「
OpenStreetMap.org」のデータを利用できるそうだ。OpenStreetMap.orgは商用利用も可能なので,ゲームで使うにはもってこいといえよう。
大まかに作成したデータに,後から植生を足したりして,よりリアルな風景に仕立て上げることも可能だ。Mueller氏の講演によれば,ファサード(壁面)用テクスチャとして,400カテゴリ分ものデータがCityEngineに追加されるとのことだった。
また,E-on Softwareの景観作成ソフト「
LumenRT」用に作られた植物のデータ約80種類も,CityEngineで使えるという。
余談だが,ESRIとE-on Softwareはパートナーシップを結んでいる。植生を中心とした景観作成ソフト「Vue」を有するE-on Softwareと,CityEngineは相性がいいようだ。
![画像ギャラリー No.021のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/021.jpg) 建物の壁面に使えるテクスチャが400カテゴリも追加された |
![画像ギャラリー No.022のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/022.jpg) LumenRTの植物データを,CityEngineでも利用できる |
スクリプトを作成すれば,街の生成ルールを自前で作成できる
![画像ギャラリー No.023のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/023.jpg) |
さて,CityEngineでは,街の自動作成に用いるスクリプトをユーザー自身が作成する機能がある。ESRIはこれを「エンコード」と呼んでいたが,スクリプトで独自のルールを作成すれば,個性的な街を作ることも可能になるのだ。スクリプト作成はそれなりに大変そうに思えるものの,ゲームではむしろ現実的でない街のほうが重要な場合もあるので,オリジナリティのある街並みを作るには,避けて通れない。ルールさえ決めれば巨大な都市を作成することも可能なので,スクリプト作成の労力は十分に報われるのではないだろうか。
CityEngineで作成したデータは,FBX形式など,さまざまな形式でエクスポートできるし,データサイトにアップロードしてコミュニティ内で共有することもできる。さらに,投稿データをWebブラウザ上で,時間や季節などの条件を与えて3D表示させることも可能だ。「WebGL」を使っているので,対応Webブラウザが限られはするが,投稿データを手軽に見られて,操作性も優秀だ。
登録データ数は,まだ多いとはいえないが,データの閲覧はユーザー登録も必要ないので,関心のある人は一度見てみるといいだろう。
公開されているデータをFirefox上で表示した様子
![画像ギャラリー No.028のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/028.jpg) |
SDKの登場でゲーム内にCityEngineを組み込めるように
Unityプラグインなら,生成した建物の中を移動も可能
さて,GDC 2014でのホットトピックであるCityEngine SDKは,CityEngineのデータをゲームなどで使うための開発キットである。
CityEngineのデータをゲームで使うには,2種類の方法が想定されている。1つめは,モデルデータとして出力し,ゲーム側で使用するという方法だ。この方法は従来から可能であり,別にSDKが必要というわけではない。
それに対して,SDKの登場で可能となったのが,CityEngineのエンジン部分をそのままゲームに組み込んでしまって,ゲーム内で動的に都市生成を可能にするというものだ。
![画像ギャラリー No.030のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/030.jpg) |
![画像ギャラリー No.031のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/031.jpg) |
| 作成したデータを出力して,ゲームエンジン側で使う従来の手法(左)に加えて,SDKを使ってゲーム内にCityEngineを組み込む手法も可能になった(右) |
CityEngine SDKの概要
![画像ギャラリー No.032のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/032.jpg) |
エンジン利用のライセンスはCi
ty
En
gi
neに付属するとのこと。また,エンジン部分とは別に,「Maya」と「Unity」用のプラグインも提供されるそうだ。
プラグインのデモも披露された。MayaやUnityの中でCityEngineのエディタを使っているかのように,都市モデルを調整できるのは,使い勝手がよさそうだ。とくにUnityでは,簡単な操作で街を出力して,そのままGame View内で街中を移動するといったことが簡単にできる。実行中にInspectorで,建物の仕様を変えることも可能だ。
![画像ギャラリー No.033のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/033.jpg) |
![画像ギャラリー No.034のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/034.jpg) |
| Maya内で建物を生成した例。建物の高さを変えると,階数が自動的に変わる |
![画像ギャラリー No.035のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/035.jpg) |
![画像ギャラリー No.036のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/036.jpg) |
| Maya上で建物を拡大すれば,その大きさに合わせて生成される |
![画像ギャラリー No.037のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/037.jpg) |
![画像ギャラリー No.038のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/038.jpg) |
| こちらはUnityでのデモ。建物各部の大きさを変えると,CityEngineのルールで建物が生成される |
Unityで作成した建物の中を歩き回ることも可能だ
![画像ギャラリー No.039のサムネイル画像 / [GDC 2014]プロシージャル技術で街並みを作る「CityEngine」最新事情。ゲームに組み込めるSDKが登場し,Maya&Unity用プラグインも予定](/games/999/G999902/20140322010/TN/039.jpg) |
CityEngineは街を丸ごとごと一気に作れるだけでなく,建物のモデリングツールとしても優秀だ。ベースのエンジンが優秀なのは昔からのことだが,それをここまで簡単に扱えるようになると,ゲームでの応用事例も増えていきそうだ。触ってみたいと思った人は,30日間の体験版をダウンロードしてみてはいかがだろう。
プロシージャル技術の活用は,ゲーム業界での課題でもある。樹木生成用ミドルウェアとして名高い「
SpeedTree」と同じように,いずれはCityEngineも,ゲーム開発では必須のツールになっていくのかもしれない。