Studio」に実装されつつある技術を報告するカンファレンス「スクウェア・エニックス・オープンカンファレンス」を開催した。弊誌ではカンファレンスの模様を前後編に分けてお届けしたい。Studio上で動作するテクノロジーデモ「Philosophy」について言及している箇所もある。Studio上に実装された(あるいは実現しうる)多様な機能のうちの、一部を選択して開発が進められているものだ。Studio」という表記に統一しているのでご了承いただきたい。「スクウェア・エニックス・オープンカンファレンス」は、「トップゲームスタジオが開催する完全無料の技術カンファレンス」という触れ込みで募集が行なわれたため、告知後、申し込みが殺到し、瞬く間に定員オーバーに達して参加募集が打ち切られるという人気ぶりを見せた。募集打ち切り後も参加希望者の問い合わせが後を絶たず、元々は開催場所はスクウェア・エニックス社内で執り行なう予定だったものが、より大きな新宿エルタワービルのカンファレンスルーム会場での開催に切り替えて、再募集を行なったほどだった。した無料カンファレンスの開催は、ソフトウェアエコシステムを育成する意味合いから、インテルやNVIDIAなどのハードウェアメーカー、あるいはマイクロソフトのようなOSメーカーが開催することはしばしばあるが、ゲームスタジオが、しかも日本のゲームスタジオが開催することは非常に珍しい。今回の件について以下のように説明した。欧米では、開発者同士の技術交流が盛んで、技術交流カンファレンスの開催自体が珍しくない。ゲームエンジンの概念が早くから浸透している欧米では、ゲームエンジンのフォーラム・コミュニティも活発だ。日本のゲーム業界は、技術を囲い込む方向の文化が強く根付いてしまった。CEDECのようなゲーム開発者向けのカンファレンスの年次開催で、そうした「囲い込み文化」が和らぎつつはあるが、ゲームスタジオ間の壁を越えての「距離感の近い交流」の機会はまだまだ少ない。閉塞感漂う日本のゲーム業界を盛り上げていくためには、いわば「チームジャパン」としてゲームスタジオ同士が手を取り合ってゲーム開発シーン全体を盛り上げて行く必要がある。それには、オープンコミュニティの文化が日本のゲーム開発シーンにも必要なのではないか......。「日本のゲーム開発シーン」を「業界のみんなで発展させていこう」という意図から、今回の開催になったというのだ。1回で終わらず、幾度となく開催を期待したいものだ。本カンファレンスは「グラフィックス編」、「AI&アニメーション編」、「ゲームエンジン&マネジメント編」の3部構成で行なわれ、各部では2セッションずつ、合計6セッションが執り行われた。本稿ではそのうち、「グラフィックス編」の2セッション、「AI&アニメーション編」の1セッションをレポートする。本稿でカバーしていない残り3セッションは、後編を参照して頂きたい。Studio」講座でも取り上げているので未読の方はぜひご一読いただきたい。11で設計されている。11ベースのグラフィックス技術を実装するにあたって、実際に検証した技術の数々が紹介された。Compute)ということになるが、セッションもその2テーマに絞った内容となっていた。テッセレーションステージは、筆者の連載でも幾度となく触れてきているので詳細は省略するが、簡単に言えば、3Dモデルを構成するポリゴンを分割して、それに対して「盛ったり削ったり」といった変位を与えることができる機能になる。Clark」(ACC)法を選択したという。Schaefer氏(テキサスA&M大学)らが考案したもので、詳細の論文はこちら(http://research.microsoft.com/en-us/um/people/cloop/accTOG.pdf)で公開されている。【テッセレーションステージ】テッセレーションステージの概念図(左)。Clark」(ACC)法を選択(右)【ACC法のアルゴリズム基本概念】【ACC法によるテッセレーション】ルミナススタジオ開発チームが実装したACC法によるテッセレーションのデモ映像ディスプレースメントマッピングとは3Dモデルに対して盛ったり削ったりを行なうテクニック。基本概念としては、ベースとする分割対象単位をクワッド(四角形)とし、8個のエッジ(輪郭)点、4個のコーナー(隅)点、4個のインテリア(内)点、総計16個の制御点でベジェパッチを生成する。ベジェパッチとは高次曲線のベジェ曲線に従って曲面を表現するものだ。テッセレーションステージの醍醐味は、ジオメトリレベルの凹凸を適用するフィーチャー「ディスプレースメントマッピング」にもある。Studio」では、凹凸量を記載したテクスチャ「ハイトマップ」から変位量を読み出して、適用先ポリゴンの法線方向にバイアスする形で適用する最も基本的なディスプレースメントマッピングの手法はもちろんのこと、やや高度なディスプレースメントマッピング手法にも対応する。それは「ベクトル・ディスプレースメントマッピング」だ。テクスチャには変位量だけでなく、その変位方向までを記載した、いわば「ベクトルマップ」を読み出して適用先ポリゴンを変位させる。元のポリゴンが持つ法線ベクトルと合成するのか平均を取るのか、はたまた無視をするのかは語られなかったが、いずれにせよ、突起するだけでなく、広がって張り出すような凹凸を作り出すことができるのが、このテクニックのウリになる。Studio」では、広がって張り出すような凹凸を作り出せる「ベクトルディスプレースメントマッピング」にも対応する静的なオブジェクトへのディテール付加にはテッセレーションを活用すべきではないテッセレーションを使うべきなのは動的なキャラクタに対して。したテッセレーションにまつわる様々な実験をする中で、開発チームは、「GPUベースのテッセレーションをどう使うべきか」という傾向と対策を見出すことに至った。語られたのは「テッセレーションステージを使うべきでない」という「後ろ向き」な経験則についてだ。背景などの動かない静的なオブジェクトに対するディテール付加目的には使用すべきではない、と説明された。彫刻のような複雑なモデルをDCCツール上でデザインして、これを低ポリゴンのモデルに変換し、ディテール部分をディスプレースメントマッピングで再現しようとしてもほとんどうまくいかない。費用対効果の面でも美味しくないというのだ。逆に「テッセレーションステージを活用すべき」という局面も紹介された。Detail(LOD)の処理系をテッセレーション側に任せようとする場合だ。裏を返せば、動的に動くようなキャラクタモデルに用いるのが望ましいということだ。その裏付け的データとして示されたのは、10MB分のジオメトリデータからなる4万ポリゴンの多ポリゴンモデルをアニメーション付きで動かしたときのフレームレートと、628KBのジオメトリデータからなる2,500クワッド(約5,000ポリゴン)の低ポリゴンモデルにACC法のテッセレーションを掛けて、さらに223KBのディスプレースメントマッピングを適用して、前出の4万ポリゴンの3Dモデルとほぼ同一品質にしてアニメーション付きで動かしたときのパフォーマンス比較データだ。結果は、未最適化状態でありながら、後者の方が10%近くパフォーマンスが良い。最適化すればパフォーマンスはさらに向上するだろうし、なによりメモリ占有率がテッセレーションステージ活用事例の方が1/10というのが、費用対効果として大きい。テッセレーションステージにはやや扱いにくい“じゃじゃ馬”的な側面もある。1つは、曲面パッチベースのテッセレーションを行なう事で、鋭い突起や、シャープな切れ目、折り返し(CREASE)が、失われてしまうという問題だ。この問題はACC法に限らず、別の手法のテッセレーション技法でもよく浮上する課題だ。Studio」では、この問題に対し、折り返し(CREASE)の重み情報を持たせる方策で対処している。具体的には、各クワッドの各辺(エッジ制御点)に「どのくらいシャープか」の重み情報を持たせておき、ハルシェーダでベジェ曲面状に変位させる段階で、トップ3の重み情報を読み出し、その組み合わせで変位量を決定するアルゴリズムを実装している。イメージ的には、重み情報の大きいエッジ制御点が多ければ多い箇所ほど、ベジェ曲面によるカーブ生成がキャンセルされてシャープなエッジが残るといった感じだ。【折り返し重み情報】「シャープな表現もみんな丸くなってしまう」というテッセレーション活用の際によく挙がる課題(左)。2つ目はクラック(ひび割れ)の問題。テッセレーションを行なったり、ディスプレースメントマッピングを行なったりすると、3Dモデルの表皮状にひび割れが出てしまうことがある。これらの原因としては「接平面の不連続性」、「ディスプレースメントマッピングの際の変位テクスチャのサンプリングエラー」などが考えられるわけだが、前者についてはエンジン側のプリプロセスツールで不連続性を解消させたり、特異点箇所を監視して、そこにはディスプレースメントマッピングを行なわない仕組みを盛り込んだとのことだ。ディスプレースメントマッピングの際の変位テクスチャ読み出しエラーはジオメトリ解像度と変位テクスチャ解像度のズレが大きい時に発生しやすいので、これにはMIP-MAPの概念を持ち込んで対処する。クラックの問題(左)は、事前処理でこれに対処(中)。グラフィックス関連セッションの後半は、ComputeShaderにまつわる話題が語られた。Studio」開発チームとしては、次世代機ではGPGPU技術の活用が必須となると考えており、この分野にも力を入れて取り組んでいる。Studio」に採用したGPGPUベースの実装フィーチャーとしては「布のシミュレーション」、「パーティクルシステム」が挙げられた。前者は、「ベルレ積分」を活用した位置ベースの物理シミュレーションでの実装となっていた。ベルレ積分ベースの物理シミュレーションといえば、カプコンの「ドラゴンズドグマ」でも実装されていたアプローチだ。パーティクルシステムに関しては、10万個以上のパーティクルを出現させることを次世代表現の目標としていることから、テクノロジー推進部としては「GPU内部で帰結できるパーティクルシステム」の設計に取り組んでいる。その設計の実現にComputeShaderベースのGPGPU的アプローチは最有力手段ということのようだ。現在でも、パーティクルに対して厚み情報等を付加し、疑似ライティングの仕組みを導入してボリュメトリックな表現を実現しているゲームタイトルは存在するが、テクノロジー推進部ではそこから一歩踏み込んで、セルフシャドウ付きのパーティクル描画システムを実装している。これは既にCRYTEKや「3DMARK11」のFUTUREMARKが実践している方法とよく似たもので、光源方向から適当な数で分割した空間に対してシャドウマップを生成する方式のメソッドだ。面白かったのは、このパーティクルシステムでは、パーティクルの挙動制御に疑似流体物理シミュレーションが適用できる仕組みだ。Flow」と呼ばれる手法がベースとなっている。これはパーリンノイズをベースとした2次元ノイズ関数を用いて、巻き込むような力場を得るプロシージャル的手法だ。Studio」の次世代パーティクルシステム【パーティクルシステムのデモ】前半はセルフシャドウ付きGPGPUベースパーティクルシステムのデモ。11フィーチャーではないが、レンダリング結果に対し、画面座標系で局所的なレイトレーシング的なテクニックを応用して実践する「リアルタイム・ローカル・リフレクション」(RLR)などのテクニック等を実装したことも報告された。これは、CRYTEKの実装と同アプローチの手法だという。2011』グラフィックス講座」にて解説しているのでそちらをご覧頂きたい。【リアルタイム・ローカル・リフレクション】球体への映り込みは環境マップ。Studio」の研究開発に取り組んでいるが、そのエンジンの水準を高める目的でテクノロジーデモの製作も並行して行われている。そのテクノロジーデモ「Philosophy」の開発の中心的な人物がリードアーティストの岩田亮氏だ。グラフィックス関連セッションの後編では、この岩田氏が、フォトリアルなグラフィックスを製作するための基礎テクニックについて「リアルタイム用フォトリアル背景モデル作成講座」と題した講演を行なった。フォトリアル、すなわち写実的なグラフィックスを製作するためには、現実世界情景のベンチマークがあったほうがよい。製作を複数の開発メンバーで行なうためには、具体的な共通ゴールが必要になる。岩田氏は、これについて最も基本的かつ手軽なものとして「デジタル写真」を挙げた。【デジタル写真】お手本の写真を撮る(左)。これを基準とし、ゴールとする。次にプリレンダーCGを作成し(右)、それをさらにリアルタイムに落とし込む。再現したいシーンや、それに近いシーンを、デジカメで写真撮影を行ない、それをゴールとしてCGでの再現を目指すわけだ。岩田氏のセッションでは、そうしたデジカメで撮影した写真から素材の反射率を求めるテクニックが話された。得られる反射率は、基本的には拡散反射の反射率になる。異方性の反射特性がある素材や、鏡面反射特性がある材質などは、このパラメータだけでは一筋縄には行かないが、得られた反射率は素材表現において有益な情報になる。この反射率の取得には市販されている「銀一シルクグレーカード」を利用する。この銀一シルクグレーカードは、入射した光を18%だけ拡散反射する特性があるシートで、反射率を測定したい対象物と共に、適当な大きさに切ったこのカードを添えてデジカメで写真を撮影する。【銀一シルクグレーカード】お手本写真を銀一シルクグレーカードと共に撮影する。カットする際、一辺の大きさを何cmと決めておくと、後で対象物のサイズの割り出しにも役立つというTIPSも。その写真を、フォトレタッチソフトなどで読み込み、まずは写真中の銀一シルクグレーカードを基準にホワイトバランスを整える。この状態から露光量(輝度バランス)の調整を行なって、写真中の銀一シルクグレーカードの灰色の箇所のRGBの各要素が18%の値に揃うように調整する。この調整を行なう事で、写真に映っているもの達が全て、正規化された白色光(たとえばR=G=B=255)の下で照らされた時の反射状態にできる。この時の写真中の各素材の色は、最大輝度の完全な白色光が当たったときの反射色(RGBの反射率)ということになる。デジカメの写真は、デジカメ側の画像処理エンジンが記憶色再現処理を行なってしまう場合があるため、撮影はできるだけ光の物理量を正確に記録できる画調モードを選択した方がいい、というアドバイスもあった。フォトレタッチソフトで調整を行なう際、不当な丸め誤差を避ける意味合いからも、取り扱う写真はHDR(ハイダイナミックレンジ)であることも求められる。セッションでは、実在のフォトレタッチソフトを使用して、具体的な作業工程なども示されたが、そうした内容についてはカンファレンス当日だけの限定情報ということなので本稿ではザックリとした概念理論の紹介に留めている点をご理解いただきたい。して得た反射率を元に素材表現を行なってグラフィックスを作成すると、光の条件が異なった場合にも、現実世界に近い結果が得られる。写真でお手本としたシーンを再現できるだけでなく、照明条件やシーンを変えても写真的なリアルな映像が構築できるようになるということだ。これは物理ベースレンダリングの堅牢な特長の1つでもある。して求めた表現したい素材の反射率のストックを充実化させることで、写真撮影ができない素材に対しても、相対的に「この辺りの反射率となるはず」というような推測もできる、と岩田氏は述べていた。その反射率が正しいことがわかっている素材を並べてレンダリングし、そこに新たに表現したいモデルも同時にレンダリングし、照明条件を色々と変えて、その表現したいモデルの素材のパラメータを、イメージが近くなるように調整を追い込んでいくのだ。Studio」講座の最後に掲載した駐車場のシーンの各素材も、今回紹介されたテクニックで集められたパラメータが用いられている。Studio」で重視している要素としてアニメーションがある。モーションキャプチャによって取得したモーションデータベースのアニメーションは、ゲームグラフィックスの表現手段が3Dグラフィックスに移行してからは当たり前の技術となったが、動的に変化するゲームシーンに対して、つじつまの合う形でアニメーションを適合させる手段や、あるいは複数のモーションデータを組み合わせて新しいモーションを生成するような手段は、未だ各所で研究が進行中という段階だ。アニメーション担当リードリサーチャー向井智彦氏は、まさに、この分野の専門家だ。Studio」に実装される予定のアニメーション関連の研究成果について語られた。1つ目は、最近流行のフルボディIKの話題だ。Kinematics)と言われるもので、例えばある目的の場所に手先や足先を移動させた場合に、各関節をどう回転させたり、曲げたりすればいいかを求めるものだ。Kinematics)は、各関節を回転させたり曲げたりすると手先や足先はどこに行くかを求めるものになる。フルボディIKとは、手先を動かしたり足先を動かしたりしたときに、手や足の関節だけでなく身体全体の姿勢までを制御するものになる。向井氏が最初に紹介したのは、「優先順位付きフルボディIK」と呼ばれるもの。これは読んで字の如く、優先順位条件を与えてIKを計算するものになる。足の接地が優先されるときは、地面から足をなるべく離さずに手を動かす......といったIK制御になる。2つ目は「力学的リターゲティング」と呼ばれるプロシージャル的モーションアレンジ技術だ。これは、「剣を振る」といったような、何かの重量物を操作したモーションデータがあったとして、その重量物の重さが変化したときのアニメーションを既存のモーションデータからプロシージャルにアレンジ生成するものになる。「力学的リターゲティング」では、操作対象物の重量が変わっても、元々のモーションの重心位置をなるべく維持するような制御を加えることで実現する。3つ目は、異なる2つのモーションを自然に繋ぐ手段についての技術だ。一般には、繋げる2つのモーションをオーバーラップさせ、それをブレンドするモーションブレンドの手法がよく用いられるが、向井氏の研究では、ブレンドする2つのモーションの間にプロシージャル生成したモーションを挟んで繋ごうというアプローチになる。その補間モーションの生成にはスプライン補間のアルゴリズムを利用する。モーションデータとは、各ボーンの時間方向の変位量であり、時間方向の多次元情報になるため、一意的なスプライン補間が難しい。そこで、向井氏の手法では、マーケティングリサーチなどでも用いられるような多次元尺度構成法で低次元に写像し、これに対してスプライン補間をして、その結果を再び多次元のモーションデータに復元するアプローチを取る。続いて、現在も開発中の歩行動作生成アルゴリズムについての話題が取り扱われた。最初に紹介されたのは、あらゆる地面の高低差に対応でき、しかも現実的にりあうるあらゆる方向とあらゆる歩幅で自然に歩行する「データ駆動型アプローチの歩行モーション生成技術」だ。具体的には、約40個程度の歩行モーションおよび走行モーションのモーションキャプチャを事前に行なって、このモーションデータ群をベースにして新しいモーションを生成するという方向性になる。【歩行モーション生成】データ駆動型アプローチの歩行モーション生成(左上)、基本ループ(右上)、要素技術(左下)、最低限のモーションデータはモーションキャプチャにて取得。実際のランタイムにおける歩行モーション生成では、まず次に踏み出す足の位置を移動方向や地形に配慮して決定し、その足の位置に至る歩行モーションを合成することになるのだが、面倒そうなのは足と地面の衝突位置決定だ。これについては、事前計算で対処する。具体的には、足を踏み出した際に着地しうる足の位置をたくさん事前に求めておき、各位置に衝突判定用の仮想球を生成しておく。ランタイムでは、踏み出し先の足位置がどの仮想球になるのか...を決定する「仮想球と地面との衝突判定」を行なう。出力するモーションは、その仮想球に対応したものとするわけだ。【歩行モーション生成】「歩行の際の地面との衝突判定」は「事前計算で生成した仮想球の選択」に置き換えられる(左)。次に紹介されたのは、そうしたデータ駆動型アプローチの歩行モーションに、さらに力学作用を合成させる技術だ。WALKER」を、日本のスクウェア・エニックスのテクノロジー推進部が独自拡張したものになる。歩行、走行するだけでなく、力学作用として重心速度も算出するため、走行時にはやや前傾姿勢になったりするモーションがプロシージャル付加される。デモでは急激な姿勢変化で首を動かしたりするモーションが介入することがあったが、これらはあらかじめ設定されたルールに従って実行されたモーションだとのことだ。「生身っぽさを出すための演出」と捉えてもいいかもしれない。その他、足と地面の作用力も配慮されるという。下り斜面で急に静止したりすれば前のめり気味になって小刻みに踏ん張るようなモーションが追加される。最後に、向井氏は今後の展望などについて語った。今回紹介していたような、データ駆動型技術を進化させ、物理・力学との融合をさらに進めていくこと以外に、強調していたのは「AI」との連携・統合だ。いった感じの「コマンド羅列」的な離散的な意志決定が主体であり、それらをひとつひとつアニメーション化していくような表現が主流だが、意志自体を複合化・連続化し、それらを連続したアニメーションとして反映させられることを目指したいというのだ。動的に変化する環境下において、「今、こういうアニメーション(アクション)が行えるから、こう動くべき」というような、アニメーション起点のAIの意志決定というのも将来的には必要になってくるだろう、と向井氏は述べていた。アニメーションとAIの連携・統合が達成されたとき、ゲームは新しい次元に踏み出せるようになるかもしれない。