お気に入りタイトル/ワード

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

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

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

LINEで4Gamerアカウントを登録
[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2013/08/27 18:19

イベント

[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて

セッションを担当したのは,Pixar Animation Studioの手島孝人氏(Studio Tools Department,Software Engineer)。2年ほど前に,「グランツーリスモ」シリーズで知られるポリフォニー・デジタルからPixarに移籍したという経歴を持つ人物だ
画像集#001のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
 Pixar Animation Studio(以下,Pixar)がSIGGRAPH 2012で発表したオープンソースプロジェクト,「OpenSubdiv」を日本語で解説するセッション「OpenSubdiv: オープンソースの RenderMan 完全互換 GPU対応サブディビジョンサーフェスライブラリ」が,「CEDEC 2013」の2日めに開催された。
 先日掲載したレポート前編では,OpenSubdiv誕生の経緯,そして現行のゲームグラフィックスとは異なるPixar独特の“ジオメトリ文化”を紹介した。
 後編では,次世代ゲーム機では,ポテンシャル的に(すべては無理だとしても),Pixar的なグラフィックスアプローチに移行できるのではないか,という議論が起こりつつある,OpenSubdivの技術面の話題をお伝えする。


OpenSubdivの動作原理


 まずは,OpenSubdivの動作原理について,簡単におさらいしておこう。
 OpenSubdivは,SIGGRAPH 2012で発表された「Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces」(※PDF)という論文を実装したものだ。
 この研究はPixarとMicrosoftの共同研究で進められたもので,Pixarが長らく採用してきた,Catmull-Clark(カトマル・クラーク)法ベースのSubdivision Surface(細分割曲面。本稿では,広義的にテッセレーションという言葉を用いる)技術を,適応型処理を組み合わせてリアルタイム実践する技術になる。
 なおSubdivision Surfaceとは,ローポリゴンで構成された3Dオブジェクトをより細かなポリゴンメッシュに分割し,滑らかな曲面になるよう変換する手法だ。

OpenSubdivは,SIGGRAPH 2012で発表された「Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces」という論文を実践する形で研究されてきた
画像集#002のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて


 Catmull-Clark法のテッセレーションにより生成される曲面は,双三次B-Spline曲面(Bicubic B-Spline Curved Surface)と等しくなる。しかし,この手法が適用できるのは,各頂点の価数(=隣接している頂点の数)が4のときだけで,それ以外の特異点(Extraordinary vertex),例えば頂点の価数が3や5のときには適用できない。

特異点を含む面の取り扱い
画像集#003のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて

 そこでまず,特異点以外の部分では,普通の双三次B-Spline曲面に置き換え,DirectX 11世代GPUのテッセレーションステージを使って,必要なクオリティでポリゴンを分割してレンダリングする。一方の特異点については,特異点内側のクアッドの分割レベルを1段上げて分割するというルールを適用していくのが,OpenSubdiv(のベース論文)の方針だ。
 通常点と特異点の境界部分の分割に際しては,「トランジション・パッチ」と呼ばれる,推移箇所専用の専用分割アルゴリズムを適用するという。
 着目しているクアッド(下に示す図中で赤く示した部分)に対して,特異点を含む周辺クアッド(図中の緑のクアッド)がどのように接しているかのパターンに合わせて,事前に用意しておいた分割手法を当て込んでいく。ここがまさに適応型処理の最たる部分だ。
 例えば,図中の左端のパターンでは,特異点を含むクアッドが上に1つあるので,特異点を当該クアッド内の2頂点で結んだ三角形で分割する。その右隣のパターンでは,特異点含有クアッドが上と右に2つあるので,2つの特異点と当該クアッド内の1頂点を結んだ三角形で分割する。

トランジション・パッチは,この5種類とその回転パターンからなる
画像集#004のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて

 そして,必要な回数までポリゴンメッシュを分割していき,最後の最後はクアッドのまま残したり,あるいは「Gregory Patch」(※PDF)と呼ばれる拡張型ベジェ曲面をはめ込だりしてごまかす……という手段をとる。

 ただ,Catmull-Clark法に限ったことではないが,こうした曲面分割では,「角張ったものが何でもかんでも丸くなってしまう」という結果も生まれてしまう。
 OpenSubdivでは,そうした箇所を特別扱いし,周囲のテッセレーションによる分割レベルから隔離(Isolation)させられる。隔離させた領域のテッセレーションレベルをIsolation Levelとして取り扱い,適度なところで設定することで,角張った箇所や,やや丸みを帯びた角(Semi-Sharp Crease)を持ったモデル表現を行えるようにしているのだ。



OpenSubdivの実装形態


 手島氏は,PC上でのOpenSubdiv実装形態の解説を行った。
 現状の実装形態では,3Dモデルを形成する情報のうち,Pixar式Catmull-Clark法テッセレーションを行うためのトポロジーデータと頂点データ(Pointデータ)を分けてデータ処理を行っている。
 トポロジーデータは,「どこをどのくらいテッセレーションするか」といった制御情報や結線が入っているデータだ。これは,Subdivision Tableデータとして,GPU側に取りまとめられる。
 一方の頂点データは,アニメーションを行うための基本形状モデルとも言うべきもので,レンダリング時に頂点パイプラインに流すための頂点バッファオブジェクト(VBO)に流し込まれる。

 特徴的なのは,通常面を双三次B-Spline曲面に置き換えたり,特異点を含む面をGregory Patchに置き換えたりといった処理を,GPGPU(※コンピュートシェーダやCUDA)で行ってしまう点だ。この処理の結果も,もちろんVBOに流し込まれる。
 VBOに必要なデータが集まったら,これをGPUのグラフィックスレンダリングパイプラインに流し込んで描画を行う。その際,双三次B-Spline曲面やGregory Patchの実際の処理は,グラフィックスパイプラインのテッセレーションステージが担当する。

実際の処理の実装形態
画像集#005のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて 画像集#006のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて


OpenSubdivのAPIとしての機能


 OpneSubdivは,Windowsをはじめ,OSX/iOS/Android/Linuxといったプラットフォームで展開されている。オープンソース化されたということもあって,中にはPixar社外のボランティア開発者達が開発しているものもある。

 OpenSudivは,主に描画を行う「Draw」,通常面や特異点を含む面に対して適応型の処理を行う「Compute」,生成した曲面に対して評価を行う「Eval」という3つのモジュールから成り立っている。それぞれがさまざまな既存APIを用いて,各プラットフォーム向けに実装されているという形だ。
 なお,前段落で描画パイプラインの解説を行ったが,これらは実質的に,「Draw」と「Compute」の部分に関するものだ。
 「Eval」は,生成した曲面との衝突を取ったり,あるいは頭皮から毛髪を生やすというように,生成した曲面にさらに別のオブジェクトをつなげるといった際に利用するものになる。

 「Draw」は,DirectX,OpenGL,OpenGL ESといった描画系APIを用いて実装されている。
 「Compute」はCPUコードそのままだったり,あるいはOpenMP,OpenCL,CUDAといったGPGPU寄りのAPIが利用されていたりする。
 「Eval」は,最近やっと実装され始めたモジュールのため,CPUコードの実装しか稼動していないそうだ。

画像集#007のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
OpenSubdivがサポートするOSプラットフォーム
画像集#008のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
OpenSubdivの3つのモジュールが,どのAPIによって実装されているかを表した図

 OpenSubdiv自体が提供するAPIは,ジオメトリの表現に関するテンプレートライブラリの「HBR」(Half-Edge Boundary Representation),通常面や特異点を含む面に対して適応型処理等などを司るAPIの「FAR」(Feature Adaptive Representation),ComputeとDrawの相関処理(Interop)を司るAPIの「OSD」(OpenSubdiv)という3階層からなっている。

 HBRでは基本的に,PixarのレンダリングシステムであるRenderManのコードがそのまま使われている。また,OSDは,ハードウェアを実際に駆動させるモジュールだ。

3つのAPI層とパイプラインの対応
画像集#009のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて 画像集#010のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
OSDはComputeとDrawの相関処理を司る。例えば,ComputeをCUDAで実践し,描画をDirectXあるいはOpenGLで行うといった場合は,CUDAの結果をDirectXやOpenGLで利用するための処理が必要になる。OSDはそうした目的で活用される
画像集#011のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて

 なお,描画の実践に際しては,OpenSubdiv側が用意したハルシェーダ(OpenGLではTess.Control),ドメインシェーダ(OpenGLではTess.Evel),ジオメトリシェーダコードが走ることになるので,クライアントアプリケーション側では,頂点シェーダとピクセルシェーダだけを用意すればよい。

OpenSubdivでは,テッセレーションステージとジオメトリシェーダを駆動する
画像集#012のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて


OpenSubdivの今後とゲームグラフィックスの関わりについて


 手島氏は,OpenSubdivの開発にあたり,現行GPUが搭載しているテッセレーションステージの仕様に対する不満がいろいろと浮かび上がってきたと語る。

 現行GPUにおけるテッセレーションステージの仕様では,着目しているポリゴンの任意の方向の辺に対して,異なるテッセレーションレベルでの分割はできるが,トランジション・パッチで必要とされているような,中点で一つ,各辺ごとに中点の左右でそれぞれ任意の分割数で分割,ということができない。このため,やむをえず三角形ドメインを使って3〜4回に分けて,中点を保証しつつ分割している。
 そのため,先述した5つ(とその回転パターン)のトランジション・パッチの適用に際して,それぞれ別のハルシェーダプログラム,ドメインシェーダプログラムを稼動させる必要があるので,描画コール(DrawCall)が不用意に増大してしまっているという。
 これについては,APIレベルの拡張で済むのか,ハードウェアレベルの拡張が必要なのかは不明だが,OpenGLを司るKHRONOSグループやNVIDIAなどのGPUベンダーに対して働きかけて,仕様拡張の提言をしていきたいと,手島氏は話していた。

画像集#013のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
OpenSubdivには,DrawCallを削減するための,DrawCallまとめ上げAPIも用意されている
画像集#014のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
OpenSubdivの今後の機能拡張の方向性

 2012年のOpenSubdivプロジェクト発表以来,業界からの反響は大きく,グラフィックス制作ソフトウェア方面へのOpenSubdiv採用は急速に進んでいるという。
 ゲーム業界での採用事例も多いAutodesk Mayaは,次期バージョンでOpenSubdivへの統合がなされるとのことで,今回のプレゼンテーションで,その評価版の映像が公開された。

OpenSubdivへの対応が進められているグラフィックスソフトウェアの一例
画像集#025のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて



 最後に手島氏は,OpenSubdivとゲームグラフィックスとの関わりについての展望を語った。
 結論から言えば,現状のOpenSubdivはまだ,そのままゲームエンジンに組み込んで使えるものではないという。
 というのも,OpenSubdivはもともと,リファレンスライブラリとして提供されるものだからだ。そもそもゲームエンジン向けに設計されたものではなく,どちらかと言えば前述したような,グラフィックス制作ソフトウェアをアクセラレーションするために開発されたものである。
 そのため,まずは3Dモデルの制作を行うようなオーサリングツールへの組み込みにOpenSubdivを利用してはどうか,と手島氏は提案していた。

 また手島氏は,たとえ直近のゲームのランタイム上でそのまま表示できないとしても,OpenSubdiv準拠のグラフィックス制作ソフトを用いて,3Dモデルを制作する価値はあると語る。

 例えば,PlayStation 4向けのゲームタイトル用に,ある3Dモデルをテッセレーション前提で制作したとする。このゲームをスペックの低いゲーム機に移植する際,OpenSubdivを用いれば,スケーラブルに品質の高い3Dモデルが生成できるのだ。
 同じ3Dモデルを低ポリゴンでもう一度モデリングしたり,あるいは専用コンバータや手作業によるポリゴン削減をしたりしなくてもよくなるわけだ。
 手島氏は,「PlayStation 1で作った車をPlayStation 2で作り直し,PlayStation 3でまたまた作り直す。こうしたことはもうやめにしましょう」と,元ポリフォニー・デジタルのエンジニアらしいジョークを飛ばしていた。

 ちなみにポリフォニー・デジタルでは,SPUを用いた適応型テッセレーションを実装した自動車モデルの制作手法を導入済み。「グランツーリスモ6」(PS3)には,適応型テッセレーションによって表現された自動車モデルが登場する予定だ。これが,PlayStation 4など将来への展開を見据えた制作戦略であろうことは,容易に予想が付く。

「グランツーリスモ6」には,適応型テッセレーションによって表現された自動車モデルが登場する予定
(C) 2013 Sony Computer Entertainment Inc. Manufacturers, cars, names, brands and associated imagery feature in this game in some cases include trademarks and/or copyrighted materials of their respective owners. All rights reserved. Any depiction or recreation of real world locations, entities, businesses, or organizations is not intended to be or imply any sponsorship or endorsement of this game by such party or parties. Produced under license of Ferrari Spa. FERRARI, the PRANCING HORSE device, all associated logos and distinctive designs are trademarks of Ferrari Spa. The body designs of the Ferrari cars are protected as Ferrari property under design, trademark and trade dress regulations.
画像集#015のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて

 手島氏は,従来のポリゴン数が異なる3Dモデルのバリエーションを複数作りおく方式から,テッセレーション前提の3Dモデルの制作形態への移行を,「ドットフォントからアウトラインフォントへの移行」にたとえていた。確かに,テッセレーション前提の3Dモデル制作は,いわばアウトラインフォント(ベクトルフォント)の制作に相当すると考えれば,分かりやすく説得力のある話である。

画像集#016のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
まずはオーサリングツールへの導入が適しているのではないか
画像集#017のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
多ポリゴンモデルの制作は高解像度ドットフォントの制作と同じこと……という例え話
画像集#018のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて 画像集#019のサムネイル/[CEDEC 2013]「OpenSubdiv」セッションレポート(後編) :OpenSubdivの今後とゲームグラフィックスの関わりについて
レポート前編でも触れたように,低ポリゴンモデルに対して,複雑なシミュレーションや制御を行い,曲面やディテール盛りつけは,スケーラブルに後付けすべき…という主張がなされた

 手島氏は,そうしたテッセレーション前提の3Dモデルもいずれ,ゲームのランタイムで利用できるようになっていくはずだ,と予見する。
 OpenSubdivに組み入れられた技術の数々は,オープンソースの形で提供されるため,ゲームのランタイム用に高速化したり,あるいはゲーム向けの最適化や近似といった,高速化のための“手抜き”を実践させることも,理論上は可能なはずだ。

 ピクサーでも,3Dモデル自体は低ポリゴンモデルでモデリングしたものを用いているが,そこに付随するシワや突起といったディテール部分は,ディスプレースメント(変移)テクスチャとして分離して持っている。レンダリング時にはテッセレーションして多ポリゴン化した後の多ポリゴンモデルに,これを適用している。
 すなわち,「低ポリゴンモデル→テッセレーションして多ポリゴン化→ディスプレースメントマッピングによるディテール付加」という流れだ。
 ゲームグラフィックスにおいてOpenSubdiv的な発想が導入された場合も,同様のアプローチになると思われる。その際は「低ポリゴンモデル→テッセレーションして視点からの距離に比例した多ポリゴン化→視点からの距離に比例したディスプレースメントマッピングによるディテール付加」といった形になることだろう。
 なお,この方法に対応した3Dモデルを構築しておけば,マルチプラットフォーム展開における低スペックマシンへの3Dモデル出力においても,固定頂点量の3Dモデルをディテール付きで必要な頂点解像度で適宜出力できる。


 ゲーム業界では,DirectX 11世代GPUのテッセレーションステージの活用にいまだ消極的だが,PixarのOpenSubdivプロジェクトの進化や関連技術が洗練され,今後,どのような影響をゲーム開発サイドやGPUベンダーに及ぼしていくのか注目されるところだ。

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