オススメ機能
Twitter
お気に入り
記事履歴
ランキング
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2011/10/17 00:00

イベント

[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

スクウェア・エニックス シニア R&D エンジニアRemi Driancourt氏
画像集#001のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス
 10月8日,東京・新宿で「スクウェア・エニックス オープカンファレンス2011」が開催された。
 このイベントを主催したスクウェア・エニックス テクノロジー推進部では,同社のCGムービー制作部隊と共同でPhilosophyプロジェクトと命名された次世代グラフィックスデモの開発プロジェクトを進めているという。
 カンファレンスの冒頭では,このPhilosophyのために研究されているDirectX 11世代のグラフィックス技術を使ったデモの一部が紹介された。いますぐに同社のゲームタイトルに採用される技術というわけではなく,あくまで研究開発段階という位置付けだが,実装のしやすさとグラフィックスの美しさを両立させる,現実的な技術の選択を行っていることをうかがわせるものだった。ここでは,その概要を紹介してみたい。


Approximating Catmull-Clark分割を採用するPhilosophyのテッセレーション


ポリゴンを分割して曲面や凹凸にフィットさせるローカルなスキーマとして氏が挙げていたのがPN- Triangleだが,スライドのような利点と欠点があるという
画像集#002のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス
 「DirectX 11最新リアルタイム映像事例集」と題された3Dグラフィックス技術に関するセッションは大きく2つのパートに分けて行われた。前半はテッセレーションに関する内容,後半がCompute Shaderに関する内容だったが,本稿では前半を中心に紹介してみたい。
 前半を担当したのは,Remi Driancourt(レミ・ドリアンコート)氏。DirectX 11パイプラインの概要を説明したあと,細かいディテールを持つサーフェスを作るためにPhilosophyチームが検討している手法について説明した。
 ご存じのように,DirectX 11ではテッセレーションが大きなフィーチャーとして追加されている。テッセレーションはポリゴンを細分化して頂点を増やし,詳細な3Dグラフィックスを実現する手段だ。DirectX 11では,テッセレータが新たなバーテックス(頂点)を生成し,ハルシェーダとドメインシェーダで頂点を移動させて凹凸を表現するというような処理になっているが,テッセレータは固定機能なので,ハルシェーダとドメインシェーダが高品位グラフィックスを作るための鍵になる。

 このうち,ドメインシェーダが受け持つのはディスプレースメント……頂点を移動させて凹凸や滑らかさを作り出す部分などになるが,Driancourt氏は「数学に基づいているプロシージャルなディスプレースメントについて話をしたい」と切り出した。
 プロシージャルなディスプレースメント手法にはいくつかのアルゴリズムがあり,Driancourt氏はローカルなスキーマとグローバルなスキーマという2つのスキーマに分類して話を進めていた。氏がいうローカルなスキーマとは,「バーテックスの情報だけを使う」方法で,例として挙げられたのはPN-Triangle(Point-Normal Triangle)法だった(編注:カプコンのロストプラネット2などで採用されている)。こういったローカルなスキーマの利点は「実装しやすいこと」だが,「問題点として曲率が高いサーフェスで破綻してしまう場合がある」と氏は語る。

 他方では,グローバルなスキーマはバーテックスの周りの情報を利用するため,クオリティの高いサーフェスが生成できるという。グローバルなスキーマの方法もまた,いろいろなやり方があるが,さまざまな調査を行ったうえで,氏のチームでは”Approximating Catmull-Clark”(ACC)を採用したそうだ。DirectX 11 SDKでのテッセレーションサンプルプログラムに使われるなど,ACCもよく知られている手法だ。「Catmull-Clark」は,多くのツールでサポートされている細分割曲面の技法であることも,採用の決め手になったと氏は説明していた。
 ここでいうツールとはMayaなどの3Dグラフィックスのツールのことで,これらのツールで作成したグラフィックスとリアルタイムレンダリングが近い仕上がりになるということだろう。

検討の結果,Approximating Catmull-Clark(ACC)を採用したそうだ。Catmull-Clarkは,ポリゴンを細分化する手法としてポピュラーだが,かつてはリアルタイムの計算が難しいとされていた手法でもある
画像集#003のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

 ACCでは,ジオメトリパッチで周りの制御点の重み付きの平均をとってポリゴンの細分化を行う。「ジオメトリパッチで”ほぼ”スムーズなサーフェスが生成できる」というが「特異頂点のところでスムーズではない」という問題点がある。そこでTangent patchを使うことで複雑なトポロジーにも対応するという方法をとっているそうだ。

ジオメトリパッチだけでは,スライドで上のような入り組んだところでスムーズさが欠ける場合がある。そこでTangent patchを計算することで下のようなスムーズなサーフェスが得られるという
画像集#004のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

 というわけで,Driancourt氏はACCを使ったデモ画像を紹介。「フェイシャルに最適な技術」というように,とくに耳の部分がスムーズに表現されていることが分かる。また,全般に丸くなるのでカートゥーンにも最適と説明していた。

フェイシャルに最適な技術と説明していたように,顔が綺麗に表現される。とくに耳の部分の描写がスムーズ
画像集#005のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス



 続いて氏は,より詳細なディティールを再現するディスプレースメントマッピングに話を移した。ディスプレースメントマッピングについては,4Gamer上で何度か解説記事を読んだことのある読者もいると思うが,テクスチャに保存されている情報に合わせて頂点を移動させ凹凸を再現する手法だ。

ディスプレースメントマッピングで木肌のディティールが再現されている。「オーガニックな表現に最適」とDriancourt氏
画像集#006のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

 ディスプレースメントマッピングは非常にポピュラーなものだが,Driancourt氏はその拡張版を紹介。「ベクトルディスプレースメント」と呼ばれる方法で,テクスチャにバーテックスを移動させる3次元のベクトルを格納しておくことで,一般的な手法より少し自由度の高いバーテックスの移動を可能にするものだ。

バーテックスを移動させる3次元のベクトルを格納しておく“ベクトルディスプレースメント”を用いると,この図のように覆いかぶさる(オーバーハング)オブジェクトの表現が可能になる
画像集#007のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

このような複雑な形もベクトルディスプレースメントで可能になる
画像集#008のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス 画像集#009のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

 ベクトルディスプレースメントはなかなか有用そうだが,Driancourt氏によると「やや重いのが難点」とのこと。テクスチャのサイズが大きくなり,計算も重くなるということだろう。
 ここでDriancourt氏はいったん話を変え,テッセレーション……とくにここまで説明されたACCやベクトルディスプレースメントの有用性と欠点についてまとめてくれた。まず,平面に浮き彫りを作り込んだスタティックなメッシュの例が挙げられた。その例では,普通のテッセレーションとディスプレースメント手法で,アーティストが加えた細かなディテールの再現は効率的にできなかったという。

この例のように,アーティストが細かく作り込んだオブジェクトをテッセレーションにかけると,うまく表現されないという問題がある
画像集#021のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

比較に用いられたアニメーションのモデルがこれ
画像集#011のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス
 この問題に対しては,ディテールに応じて分割の仕方を変えるという「適応型のテッセレーション」を使うというソリューションで対応できるとのこと。
 この利点は明白で,ポリゴンの密度を高めるより,テッセレーションを使ったほうが同じクオリティを保ちながら高速で軽いものになるということだ。Driancourt氏は実際に,ACC+ディスプレースメントを用いたアニメーションと,高いクオリティの高密度メッシュを用いたアニメーションを比較した例を紹介して利点を強調していた。

4万トライアングルのモデルを用いた場合と,ACC+ベクトルディスプレースメントを用いた場合とでメモリの使用量やフレームレートを比較。Driancourt氏によると,どちらも画像のクオリティは同じだという。ACC+ベクトルディスプレースメントではフレームレートが高くなり,メモリの使用量も減る効果があることが分かる
画像集#010のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス


より高いクオリティを目指す


ACCではカドがとれてしまい,モノが丸みを帯びる傾向がある。これをどう改善するかが課題だ
画像集#012のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス
 以上のように,ACCとディスプレースメントで高いクオリティの映像が得られるわけだが,まだ弱点もあり,改良を試みているという。最初に挙げられた改良すべき点が「ACCは丸くなりすぎる」というもの。カドがとれてしまい,丸みを帯びた形状になってしまうことが欠点だ。

 シャープなエッジをどう作り出すか。ポリゴンを増やすなどの方法も考えられるが「どのような方法にも欠点がある」とDriancourt氏。検討のうえで,氏が採用したのは「Crease」(折り目の意)だという。CreaseはMayaで使われている技法だが,Mayaの技法は特許がとられているため,Driancourt氏は異なる方法を使っているそうだ。
 具体的には「メッシュに重さを付け,メッシュとメッシュの間の形を補間で生成する」というやり方とのことで,ACCで重みを付けたバーテックスの情報に,Creaseのための情報を付加するだけで済むようだ。ACCのみを使うのに比べるとエッジが立った映像が得られているという。具体例をスライドで見てほしい。

Driancourt氏が採用したCreaseのアルゴリズム。元のメッシュの形状とACCで得られた形状を両方使おうというアイデアのようだ
画像集#013のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス
このような粗いポリゴンから,カドの立った画像が得られた
画像集#014のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス 画像集#015のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

 上記のスライドのように,ACCで滑らかな面を得つつカドが立った映像を生成できるが,問題点としてはシェーダが大きく重くなるということに加え,「パッチとパッチの間が合わなくなる」という問題があるという。具体的にはオブジェクトに亀裂が入ったようになってしまうことがあるそうだ。
 このような問題に対して,Driancourt氏は「まず前処理で連続的なタンジェントフィールドを作り,不連続な部分を検出しておいて,不連続な部分にはディスプレースメントを行わない」という方法で解決できているとした。

上のスライドの脇の部分のような亀裂が入ってしまう現象に対しては,あらかじめタンジェントフィールドを使って不連続な部分を検出しておいてディスプレースメントを行わないという方法で対処できるとのこと
画像集#016のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

 さらに,Driancourt氏のグループではNVIDIAのSarah Tariq氏が2008年にデモを行って話題になった,テッセレーションを用いたヘアーの実装も行っているそうだ。このデモは当時,話題を集めたので覚えている人も多いだろう。Sarah Tariq氏のアルゴリズムと同じものを実装しているので結果も同じと説明していたが「非常に面白い」と感想を述べていた。

Sarah Tariq氏(NVIDIA)が2008年に公開して話題になったヘアーのアルゴリズムの実装も行ったという
画像集#017のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

 というわけで,Driancourt氏はACCなどを用いたテッセレーションについて「より少ないデータでより高速なアニメーションができる」ことや「完璧なディテールとシルエットが再現できる」と利点を挙げる一方,ACCを用いた場合「テッセレーションをかけ過ぎると重くなるのでバランスが重要」だとアドバイス。
 さらに「できるだけシェーダは単純にすること」や,トポロジーも考える必要があるそうで,例えば「トライアングル(三角形)とクアッド(四角形)を混ぜるより,すべてクアッドにしたほうが楽」だともアドバイスしていた。

 冒頭で述べたように,Philosophyは構想・研究段階のゲームデモプロジェクトだが,「ちょうど先週からデザイナーとの共同作業を始めた」と語り,最後にその成果も見せてくれた。クロース(布)のアニメーションで好結果が得られているそうだ。Philosophyの成果自体は,いつ完成するとか,どのタイトルに使われるといった具体的な計画については触れられなかったが,研究の途中段階でも高いクオリティのグラフィックスが得られているようなので,完成を楽しみに待ちたい。



先週から始まったというデザイナーとの共同作業で得られたアニメーション。フィルムクオリティのアニメーションが実現できているという
画像集#018のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス 画像集#019のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス

後半はGavrenkov Ivan氏がGPUを用いた流体シミュレーションと反射について紹介していた
画像集#020のサムネイル/[SQEXOC]スクウェア・エニックスが取り組むDirectX 11時代のグラフィックス


  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:04月17日〜04月18日