第1回:建築のジオメトリを拡張する
1. 各業界におけるジオメトリ操作
堀川──ありがとうございます。お二人とも建築の分野にはない視点からジオメトリを扱っています。情報技術(コンピュータ技術)を利用した造形、編集、解析など、ご自身の業界におけるジオメトリの操作のあり方をご紹介いただけますか。
形状をコントロールするCGシミュレーション
菊池──僕が専門としているシミュレーションの分野では、最終的な形状はやってみないとわからない、基本的にボトムアップのつくり方です。研究で使用しているのは「Houdini」というソフトウェアです
。Houdiniで水を落下させるシンプルなシミュレーションを行なう際、プログラムを走らせるまで、水がどのような挙動になるかは正確にはわかりません。パラメータを少しいじるだけで、挙動がまったく変わってしまう。これはボトムアップ型の特徴でもあり欠点もあります。特に流体のシミュレーションは、パラメータがたくさんあるので、これらを調整して思いどおりの結果にするのは本当に大変です 。- fig1.1──「Houdini」の操作画面
積乱雲のシミュレーション
僕が学生の頃から取り組んでいる積乱雲のシミュレーションも、ボトムアップ型です。積乱雲は、夏の暑い日にすごい上昇力で空に向かって昇るイメージがありますが、昇るのはその内部だけで、外側の雲は下に落ちています。この激しい対流運動が積乱雲の特徴です。
ナビエ・ストークス方程式という流体力学の支配方程式を解けば、煙のような、単純にふわふわと上昇していくような流体は簡単に表現できるのですが、対流運動の表現はとても難しい。そこで、この方程式の代わりに、コンピュータのなかに3次元空間をつくり、一番下を地面に設定しヒートマップ(温度分布)をつくりました
。- fig.1.2──地表面のメッシュ分割しヒートマップを設ける
温かいところから温度の高い粒子をたくさん出し、その地表面の温度をもたせて雲粒子を出しました。温度が決まると浮力の計算は簡単にできるので、浮力計算をします。温かい雲粒子は強い浮力で上昇しますが、外側の空気に接している雲粒子は、空気中に放熱して浮力が弱くなるんですね
。「エントレインメント」と呼ばれる現象です。すると雲粒子は下に落ちていく。内側からはガンガン突き上げられるのに、それに伴って外側はボロボロと落ちていくイメージですね。これをボリュームレンダリングと呼ばれる手法で書き出すと、ふわふわとした雲のモーションが出来上がります 。ただ、どんな形状の雲になるかはコントロールできず、最終的な雲の形はシミュレーションするまでわかりません 。- fig.1.3──温度の異なる地表面から雲粒子を発生させる
- fig.1.4──コンポジット映像[掲載用に解像度とフレームレートを落としてGIFに変換]
雪煙のシミュレーション
同様の手法を用いたのが、雪崩の雪煙のシミュレーションです。山の上から雪に見立てたパーティクルを落とします
。これが山の斜面でバウンドしたときに、ぶつかったところのエネルギーを計算して、先ほどの雲の発生源を置きます。それらを雪煙の発生に引き渡して計算すると、雪崩のシーンをシミュレーションできます 。実際には雲と雪煙の舞い上がり方は違うのですが、アルゴリズム的には雲の発生とほとんど変わりません。最終的に迫力のある雪崩のシーンが出来上がりますが、ゲームデザイナーや監督から「こんな形にしてほしい」とリクエストを受けることがあります。その結果を得るために、何度もトライアルを繰り返す必要があります。そこで、最近では最終的な形状を決めて、トップダウン型のコントローラブルなシミュレーションの手法を開発しました。これによって、例えばあらかじめ思い描いた積乱雲の形状をシミュレーションすることが可能になります
。- fig.1.5──山の斜面にパーティクルを落とす[掲載用に解像度とフレームレートを落としてGIFに変換]
- fig.1.6──テストレンダリング[掲載用に解像度とフレームレートを落としてGIFに変換]
稲妻のシミュレーション
また、稲妻の形状をコントロールするプロジェクトもあります。稲妻の生成過程は物理法則の式に則って、ボクセルに分割した空間のなかをどのように稲妻が走るのかを計算します。次に、電荷がかかったときに稲妻が走るいくつかのパターンをつくり、それらをデータベースに登録しておきます。そして、稲妻の形状をコントロールするには、ユーザーが空間のなかで任意のラインを書いて、その上にデータベースに登録した基本的な稲妻の形状をつないでいくと、ユーザーが描いた形状の稲妻が発生します。この手法を使えば、ハートや星の形に稲妻を走らせることができます
。- fig.1.7──ハート形の稲妻のシミュレーション[掲載用に解像度とフレームレートを落としてGIFに変換]
観察からアルゴリズムをつくる
堀川──ありがとうございます。ボトムアップ型の自然現象のCGシミュレーションと、トップダウンにコントロールする手法をご紹介いただきました
。建築の分野では、つくりたい形をトップダウン的に現実空間で成立する形状に落とし込んでいくので、逆の考え方と言えます。また、積乱雲の物理現象のシミュレーションでは、あえて簡略化しないと人の目にはリアルに見えないという点が面白いと思いました。リアルに見せるための誇張や省略の勘所はあるのでしょうか。菊池──勘所と言っても、これをやれば必ずうまくいくというものはありません。特にCGで自然現象を再現する場合、その対象はそれぞれですから、再現する手法はまったく異なります。私が学生の頃は、実際に雲の現象をたくさん観察して、雲の物理学や気象学の本を読んだり、雲の写真集を見たり、理科年表を買って勉強していました。あと、ビデオカメラで雲を撮影して、物理学の本では解説されている浮力などをシミュレーションのなかに実装します。その様子を見ながら、要素を探して肉付けしていく感じです
。堀川──自らの観察によって、ジオメトリを操作するアルゴリズムをつくるというプロセスが興味深いです
。建築分野の造形方法のなかにも、ボトムアップの考え方があります。セル・オートマトンよりも、既存のアルゴリズムに頼ることなく自分で現象を観察して組み立て、形を形成させる。こうしたアプローチは建築の分野にも必要ではないかと思いました。ゲーム空間におけるAIの地形解析
ナビゲーションメッシュ
三宅──ゲームにおけるジオメトリ解析の例をいくつか紹介します
。「ナビゲーションメッシュ」と呼ばれるものです。AIは空間ではなく、ナビゲーションメッシュを空認識しているので、キャラクターはナビゲーションメッシュを伝って、あるポイントから目的地のポイントへ歩くことができます 。人間は3次元形状の地形を認識できますが、人工知能は離散的な情報しか扱えません。なので、地形を離散グラフ上に再構築します。これを「ネットワークグラフ」と言います。スタート地点からゴール地点までの最短経路を見つけるアルゴリズムとして「ダイクストラ法」という方法が有名ですが、ゲームでよく使われる方法は「A*(A-star)法」です
。これは、ゴールのほうに誘導して検索することで、最短経路を最も早く検索することができます 。- fig.1.8──ダイクストラ法
- fig.1.9──A*アルゴリズム
パス検索
ナビゲーションメッシュ上の地点から指定した地点への経路を、リアルタイムで計算して導く技術を「パス検索」と言います。「COUNTER STRIKE」(Valve、2000)では、目的地を定めるとAIのキャラクター自身がパスを検索して、進むべき経路を見つけられます。スーパーファミコンなどのゲームではこうした技術がなかったので、お化け屋敷のお化けのように、ずっと同じ場所でプレイヤーを待ち構えていました。
バイオウェアが共同開発した「Dragon Age」(2009)にもカナダのアルバータ大学が開発したパス検索技術が使われています。数百mではなく、1kmや2kmといった長い距離を検索できるので、キャラクターは戦略的に動くことができます。さまざまな地形をナビゲーションメッシュに還元することで、AIがゲーム内空間を探索できるようになったことは、ゲーム業界で起きた静かな革命でした。これによってAIは場所から解き放たれ、より高度で長時間の思考が必要とされるようになったのです。
地形の生成次に、地形を自動生成(プロシージャル)する観点から見てみましょう。1980年の「Rogue」というゲームでは、正方形の分割をくり返すことでマップを作成していました。1973年に開発が始められた「アーロン」という人工知能がありますが、これは知識ベースにルールをたくさん重ねていくことで、絵を描けるようになりました。一方、乱数を使って地形をつくる方法もあります(ブラウン運動)。2016年の「No Man's SKY」というゲームは、乱数を用いて宇宙や太陽系、惑星を自動生成しています。最近では乱数や数学的曲線を使って、ゲーム世界そのものを生成することが増えています。しかし、地形をつくったあとに、AIを地形になじませなくてはいけません。
そこで、それぞれのAIの行動目的に応じたデータを階層化させる方法があります。例えば、「KILLZONE」(Guerrilla Games、2005)では、まずキャラクターが移動するウェイポイントの層があります。これをクラスター化して上位の戦略思考の層を形成します。これをさらに結んで戦術思考の層をつくります。このように階層化することで、グローバルにAIが戦況を判断することが可能になるのです
。- fig.1.10──「KILLZONE 2」(Guerrilla Games)におけるポイントをクラスター化した戦術レベルグラフ。色ごとのかたまりのエリアを単位としてマップを認識する。
[出典=Remco Straatman, Tim Verweij & Alex Champandard, Killzone 2 Multiplayer Bots (Paris Game / AI Conference 2009, 2009)]
AIが目的に応じて地形を認識する方法のひとつに「インフルエンスマップ(Influence Map、影響マップ)」があります
。セル分割されたマップに、問題とする性質の評価値を記録していく方法です。これによって、ゲームの地形だけではなく、時々の状況をリアルタイムに把握することができます。「SimCity」(Maxis、1989-)ではインフルエンスマップが巧みに使われています
。第1層では道路や鉄道のシミュレーション。第2層では人口密度や渋滞などのシミュレーションを行ないます。第3層には地形の影響、そして第4層は人口増加率といった時間的な変化をシミュレーションします。インフルエンスマップを多層化することで、街の地理的変化を解析しているのです 。- fig.1.11──インフルエンスマップの例
- fig.1.12──「SimCity」 におけるインフルエンスマップの利用
プロシージャル(自動生成)とリアルタイムの地形解析
また、プロシージャルと地形解析を重ねることもあります。「Warframe」(2013)では、まずコアとなるマップだけつくります
。ブロックを組み合わせてゼロから生成するわけではありません。こうした生成を「セミプロシージャル」と言います。AIが自動生成したマップを自動解析して骨格部分を検出するように、トポロジー(形の連結性)つまり「つながり方」を抽出します(自動骨格抽出)。抽出した骨格に沿って、自動的にナビゲーションデータを作成します。これによってAIは動けるようになるのです。そして、AI自らスタート地点と脱出地点を決め、プレイヤーを熱源としたヒートマップ(インフルエンスマップ)をつくることで、それに動的かつリアルタイムにモンスターをマップ内に配置することができます 。自動生成したマップに対して、事前の地形解析とランタイム内の地形解析を二重化することで、ユーザーが面白いと思えるようなマップの利用ができるのです。さらに、プレイヤーの緊張度や脱出経路を計算し、ゲームバランスを考慮してモンスターを出現させることができます。このようなメタAIは、いわば映画監督のように舞台と役者をコントロールして物語をつくっているんですね
。- fig.1.13──「Warframe」における自動生成されたマップ。
[出典=Daniel Brewer, AI Postmortems: Assassin's Creed III, XCOM: Enemy Unknown, and Warframe (GDC2015)]
現実空間のリアルタイムな空間解析は可能か
堀川──ありがとうございます。リアルタイムに地形を解析する技術は、建築空間でも有効ではないかと思いました。現実の空間に対して、ナビゲーションメッシュ化してインフルエンスマップをつくることは可能なのでしょうか。
三宅──デジタル空間の解析技術を現実空間に展開するときの課題は、現実空間をどうように把握するかということです。人工知能は現実空間を把握する能力がきわめて低いんですね。自動運転がいまだに実現しないのはそのためです。ナビゲーションメッシュやロボティクスは、もともと現実空間に対して開発されたもので、これをゲームに移転して使っています。そこで、もう一度現実空間に戻そうという動きがあります
。例えば、ドローンが上空から地形を把握し、オブジェクトと地表を判別してナビゲーションメッシュをつくる。そうすると、ケータイの画面越しに見えるAR空間のキャラクターは、現実空間の噴水を避けたり、道路にのめり込まないように動くことができます。ただし、残念ながら実現はしていません。Googleは人工衛星を飛ばしたりグーグルカー(ストリートビュー撮影車)を走らせて地形データを収集することによって、人工知能の弱点である地形認識を補完しようとしています。こうしたデータによって、「Ingress」や「Pokémon GO」といったゲームが実現しています
。堀川──例えば、現実空間のある地点からある地点へ移動したいとき、Google Mapsのルート検索は、あくまで最短距離を示すだけで、かならずしもその人の状況に適した経路とは限らないですよね。インフルエンスマップがリアルタイムに解析できるようになると、ユーザー一人ひとりに応じた経路が検索できるようなことは、ありうるのでしょうか。
三宅──そうですね。例えば、今日は遠回りでもいいから、風通しのいい道や景色の綺麗な道を歩きたいと思うことがあります。人はかならずしも最短経路だけを知りたいわけではないですよね。効率性からは逸脱するけれど、感性に訴える評価値をどう把握するか。例えば、写真はGPSデータと紐付けられますが、ゲームのなかでは、みんなが写真を撮る場所をインフルエンスマップにすることが行なわれています。ゲーム内でユーザーが写真を撮れるようになっていて、その情報が集積されることで、ユーザーによって発見された絶景ポイントがわかる。あるいは車で移動中に「いい風景だなあ」と誰かが言ったことを車の中の人工知能が覚えていると、その記録が集合知のようなかたちで自然といい場所が見つかるということもあるかもしれませんし、その蓄積をインフルエンスマップに応用することは可能かもしれません
。堀川──これも建築や都市に応用できる可能性があって、非常に面白いですね。
周囲の環境認識と形の自動生成
堀川──三宅さんは、プロシージャルの生成の例として「No Man's Sky」を挙げていました。興味深いのは、「No Man's Sky」を1週間くらいプレイした人の大半が「冗長でつまらない」というの感想を抱いていたことです。生成できるとはいえ、そのパターンはマイナーなアップデートにしかならないのかなと思ったのですが。
三宅──「No Man's Sky」ではゲーム空間の惑星や地形を自動生成します。エンターテインメントである限り、それは「面白いマップ」でなければなりません。例えば、人間が精緻にデザインした「スーパーマリオ」のようなマップと、プロシージャルによる自動生成マップは対極であり、これまでにもゲームクリエーターはそのあいだを行ったり来たりしているんですね。人がつくったマップは、よくできていて面白いんだけど、何度かプレイしていると、手のひらで踊らされているような感じがする。そこで、むしろAIが勝手につくったマップのほうが面白いと思う。でも、また飽きて、やっぱり人がつくったほうがいいなと思う。この両極はどちらも重要で、飽きたらもう1回生成すればいいわけです。選択的に進化できる仕組みがおそらく必要とされるのではないでしょうか
。堀川──この両極は、建築の形づくりでも似たような状況があります。一から自分で計画していくタイプの方法もあれば、パラメトリックデザインのように数理的に形をつくるような方法です。そのあいだの揺れ動きは、建築の分野でも同様だと思いました。
三宅──そこに欠けているのは、やはり人工知能的な考えです。アルゴリズミックな方法の暴力的なところは、周りの空間を顧慮せず全部つくってしまうところです。一方、先ほどのメタAI的なアプローチでは、空間の地形を認識し、そのうえでどの形状が一番いいかをAIが判断します。例えば、植物の自動配置では、傾斜に応じて生やす植生を変えるわけです。周囲の環境を認識するメタ的なフェーズと、プロシージャルの生成。これらの手法を使い分けることが必要ではないかなと思います。
- 0. 建築のジオメトリと自己紹介
- 1. 各業界におけるジオメトリ操作
- 2. 業界の制限
- 3. 業界で進んでいないこと、面白いこと