|
会場:サンフランシスコ Moscone Convention Center
プロメテックソフトウェアは、物理シミュレーションベースのミドルウェアやCAE (Computer Aided Engineering) ソフトウェアの開発を専門とするソフトウェアメーカーだ。最近では、エンターテインメント分野への進出が著しい。ゲーム向けのミドルウェアとしては自然現象シミュレーションをリアルタイム向けに実装した「OCTAVE ENGINE」が高い評価を受けており、昨年秋にはOCTAVE ENGINEに含まれる「WATER SURFACE BEAT」エンジンがバンダイナムコゲームスの3D格闘ゲーム「鉄拳6」に採用されたことが話題になった。
GDC 2008ではプロメテックソフトウェアは初めてエクスポフロアにブースを出展、同社の新作ミドルウェアとシミュレーションエンジンを披露していた。
ブース内で来場者の人気を最も集めていたのは「OCTAVE ENGINE CASUAL」と呼ばれる2Dベースのパーティクルベースの物理シミュレーションエンジンだ。各パーティクルは密度、速度、質量、粘性といった物理パラメータを持っており、リアルタイムに相互干渉に配慮した物理シミュレーションを行なって、次の状態を決定している。そのため、剛体物理だけでなく柔体、塑性体 (そせいたい:変形しやすい材質)、流体、気体などの物理シミュレーションが行なえるようになっている。ただし、あくまでも2次元。だから「Casual:カジュアル」なのだ。
ユニークなのは完全リアルタイムでフルインタラクティブなところ。
公開されていたデモはペイントソフトライクなインターフェイスを採用しており、操作性も直感的でおもしろい。ペイントソフトで色を選択するような感覚で、パレットからマテリアル(材質特性)を選択してマウスを動かせばその材質で線分を描くことができる。描いた瞬間から物理シミュレーションが適用されてその材質ごとのユニークな挙動を示し出す。
適当に壁を描き、そこに水を描くとザバーっと壁に沿って水が流れるし、水の流れる先にコップを描けばそこに水がたまる。モチのような粘着性のあるものをコップにくっつけるように描けばちゃんとくっつく。ここにさらに水流せばしばらく頑張ってくっついているが、次第に水流の強さに負けて流れてしまう。コップの底に穴を開ければ水がそこから流れ出て、モチがこの穴に詰まったりする。
文書ではなかなかおもしろさが伝わらないので、実際のインタラクションの様子はプロメテックソフトウェアから提供していただいた下の映像の方を見て欲しい。
「動きは超リアル、見た目はカジュアル」というギャップがユニークなこのエンジンは、そのエンジン名の通り、カジュアルゲームでの活用を前提に開発が進められている。
名前も見た目もカジュアルだが、実はまともなデータ並列処理型のパーティクルベースの物理シミュレーションを実装しており、意外にもプロセッサ負荷は高い。「プロセッサパワー的にはWiiで何とかこなせる。携帯ゲーム機でいうとPSPはなんとかいけそうだが、ニンテンドーDSでは結構大変そう」(担当者) という。もちろんPS3やXbox 360ならば問題はないそうで、現在はXNA版も開発中らしい。XNAはカジュアルゲームプラットフォームとしてMicrosoftが力を入れつつあるのでXNA版の登場は待ち遠しいところだ。
「OCTAVE ENGINE CASUAL」は現在も開発中とのことで、何件か実際の製品採用に向けての問い合わせが来ているそうだ。個人的な意見だが、こうしたリアル系物理シミュレーション型のカジュアルゲームは、WiiリモコンやPS3のSIXAXISコントローラでプレイしたら楽しそうだと感じた。
・「OCTAVE ENGINE HONGO」 CAEのための大局物理シミュレーションエンジンはGPGPUで!
「OCTAVE ENGINE HONGO」もパーティクルベースの物理シミュレーションエンジンだが、こちらは3Dベースのものになる。また、パフォーマンスはもちろんだが、大局物理シミュレーションを正確にこなすことを前提として開発されているため、ゲームでの活用というよりはCAE (Computer Aided Engineering) 用途をターゲットにして開発が進められたものだという。CAEは、製品設計をする際にコンピュータ上でその製品の性能や耐久性を評価する仕組みの1つで、これまでは、その計算量の多さからシミュレーションを高速に行なうには高価な超高性能コンピュータ (ハイパフォーマンス・コンピュータやスーパーコンピュータ) が必要であった。「OCTAVE ENGINE HONGO」は、このCAEレベルの大局物理シミュレーションを比較的リーズナブルでコストで導入できるGPUにて実装したものだ。
開発にはNVIDIAのGPGPU向け開発プラットフォーム「CUDA」を採用しており、GPUを増やせば増やすほどパフォーマンスが向上するスケーラブル設計になっているという。なお、プロメテックソフトウェアでは4GPUのPCシステムで100万パーティクルの大局物理シミュレーションを30fpsで処理できたと発表。CAEレベルの大規模物理シミュレーションをPCシステムで、なおかつインタラクティブ性を維持した形で提供できたことの優位性を強く訴求していた。
今回の展示においてはNVIDIAの協力があったとのことで、QUADRO PLEX-モデルIV (Quadro FX 5600×2) が2台と、TESLA S870 (Tesla C870×2) が1台、デモ実演用として提供されたという。このシステムを用い、プロメテックソフトウェアとしても初挑戦(?)となった6GPUによる300万パーティクルの大局物理シミュレーションのリアルタイム実演も行なっていた。
各GPUは自分の管理範囲を持っており、その範囲のパーティクルを管轄下に置いて計算を行なっている。シミュレーションの結果で各パーティクルは各GPU管理範囲を飛び越えることがあるが、この際にはパーティクルの情報の交換が行なわれる。このGPU間データ伝送にはPCI-Expressバスが利用されているとのこと。
現在も「OCTAVE ENGINE HONGO」は開発中で、2008年夏に正式発表を予定している。コンセプトとしては、プロメテックソフトウェアが提供しているCAE向けの物理シミュレーションシステム「FLUIDSISTA」のGPGPUバージョンという位置付けで開発が進められているようだ。
・プロメテックソフトウェアが採用するパーティクルベースの物理シミュレーションとは?
ところで、プロメテックソフトウェアが「OCTAVE ENGINE CASUAL」と「OCTAVE ENGINE HONGO」の双方で採用しているパーティクルベースの物理シミュレーションとはどんなものなのか。
流体物理シミュレーションをGPUで実装する際、一般的なのはシミュレーション対象空間を格子化して、複数枚のテクスチャに割り当てる……すなわちボリュームテクスチャ化してシミュレーションを行なうことが一般的だ。NVIDIAのGeForce 8000シリーズ用のデモの煙のデモなどはまさしくこの方式の実装であった。 こうした格子法は相互作用の計算範囲を隣接する格子同士に限定することができるので、局所性の高いデータ並列計算を得意とするGPUとの相性はいい。しかし、シミュレーション結果がこの格子解像度に依存してしまう弱点がついて回る。また、激しいエネルギー伝搬を伴った運動があった場合には、隣接する格子同士の計算だけでは破綻する危険性がある。
もちろん、この方法ではシミュレーションの正確性はパーティクルの個数に依存する。パーティクル同士は相互作用する可能性があるためパーティクルの個数が多ければ多いほど計算量は爆発的に増加する。こうした計算モデルも、データ並列コンピューティングを得意とするGPUが向いているのではないか、というわけでGPU実装に挑戦したわけだ。ちなみに、GPUを用いたパーティクルベースの物理シミュレーションとはいえ、パーティクル同士の相互作用の可能性の探索などの処理にはCPUの処理も介入する。トータルなパフォーマンスを出すためにはGPU性能だけでなくCPU性能も高いものが要求されるのだ。
・「OCTAVE ENGINE NATURE」 ゲーム向け和製物理シミュレーションエンジンがさらに進化!?
ブース内では、東京ゲームショウ2007で公開され、なおかつバンダイナムコゲームスの「鉄拳6」に採用された「OCTAVE ENGINE NATURE」も展示していた。
「OCTAVE ENGINE NATURE」の基本情報については本連載のこちらを参照して欲しいが、この「OCTAVE ENGINE NATURE」のうち、「Sand Surface Beat」(SSB) がPS3の“某ゲームタイトル”で採用されることが決定し、SSBのPS3実装が完了したことが公開された。なお、そのSSB採用ゲームタイトルについては3月に発表があるとのことだが、詳細は2月末時点では非公開。Sand Surface Beatがゲームにおいて重要な役割を果たしているとのこと。
SSBは一言でいうならば砂の地形のリアルタイムシミュレーションエンジンだ。細かく解説すると、細かい粒子が積み重なって形成される面の動きを算出するシミュレーションを行なう。だから砂だけでなく、雪面もシミュレーションできる。
シミュレーションは、グリッドベース (頂点ベース)。砂の面の高さや傾斜に配慮し、流体物理的な計算を行なう。穴を掘っても穴の外周から砂が流れ込み、砂を盛りつければ穴をだんだん埋めることもできる。砂を積み上げていくと、その斜面が維持できなくなり、崩壊もする。
SSBの現在のPS3向け実装では、開発期間やゲームへの実装などの都合もあってCellプロセッサのSPE (Synergistc Processor Element) を1個だけ活用した実装になっているとのことだ。しかし、今後は汎用性を高めるため、スケーラブルに複数のSPEに対応させられるバージョンの開発に乗り出したとのこと。
さて、「OCTAVE ENGINE NATURE」には、「鉄拳6」にも採用された、水面のシミュレーションを行なう「Water Surface Beat」(WSB) がある。今回の展示では、このWSBのシミュレーションの様子をパラメータの可視化付きで見られるデモも披露していた。
WSBでは「OVTAVE ENGINE HONGO」とは違い、パーティクルベースではなく、格子ベースの水面のシミュレーションを行なっている。詳細を言えば、WSBでは波の高さ、方向、粘性に加えて流速の情報に配慮したシミュレーションを行なっており、公開されたデモでは、水面の各頂点における速度と向きを可視化していた。
このデモでは、リアルタイムに地形を上げ下げすることができ、その上げ下げで波が立つだけでなく、出来た地形の凹凸に沿って水が流れたり、渦を巻いたりする様子が観察できて面白い。デモ自体はシンプルなものであったが、シミュレーションの結果がわかりやすく可視化されているのが興味深かった。「ポピュラス」のような、地形造形がキーポイントになるゴッドシム系のゲームに使えばかなり面白くなりそうな印象を持った。
■ ソニー謹製なのにPCとXbox 360にも対応した謎のマルチプラットフォーム対応エンジン「PHYRE ENGINE」
GDC 2008の会期中、SCEE R&DのSenior EngineerのRichard Forster氏は「PHYRE ENGINE-The New Hotness」と題したセッションにて、この新しいエンジンの紹介を行なった。 「PHYRE ENGINE」の発音は「ファイヤー・エンジン」であり、FIRE (火) を洒落て綴った感じになっている。 エンジンスタイルとしてはフルソースサポートのモジュールタイプのエンジンで、アートデータ作成/処理のパイプラインまでが整備されている。サンプルゲームはアートセット付きのフルソース/フルデータセットで提供され、ドキュメントも付属。後発なだけにサービス精神旺盛の本格的な3Dゲームエンジンとなっているようだ。 日本では、あまり知られていないエンジンだが、ヨーロッパでは既にライセンシー・タイトルがリリースされている。実例を挙げるとXbox LIVE Arcadeで配信中の「Grip Shift」(Xbox 360用、開発Sidhe Interactive)、PLAYSTATION Networkで配信中の「flOw+Expansion pack」(PS3用、開発Jenova Chen氏他)、「Colin McRae: DiRT」(PS3/Xbox360/PC用、開発codemasters) にて採用されている。
そう、ソニー製なのに「PHYRE ENGINE」はPS3だけでなく、Xbox 360とPCにも対応したタイトル開発に使用可能なエンジンなのだ。
・「PHYRE ENGINE」はソニー製なのにXbox 360に対応してる?
エンジンコアはマルチコアCPUに対応した設計になっており、特にPS3のCellプロセッサへの最適化が深いとのこと。これはまあSCEEなので当然といえば当然だ。 エンジンの各機能はモジュール設計になっており、使いたい部分は自由に取り出して利用することができる。例えば自社ゲームエンジンに使える部分を「PHYRE ENGINE」から持ってくるといったことも可能だということだ。 「PHYRE ENGINE」は、「低予算プロジェクト向け」をスローガンにして開発されてきたのでどちらかといえば既存のテクノロジーを組み合わせて使いやすくラッピングして提供するようなスタイルになっている。 グラフィックスAPIは、PSSG (プレイステーション・シーングラフ) をコアにしており、物理エンジンはオープンソースの無料エンジン「Bullet」、あるいはライセンシー締結様式によっては「Havok」、「Ageia」のものが利用できる。
そして「PHYRE ENGINE」は、実際のSCEE R&Dやソニー系ゲームスタジオが携わったゲームタイル開発でのノウハウがフィードバックされ、定期的かつスピーディにアップデートされる進化方針をとる。
エンジンそのものがソースで提供されるので、どのように動いているか、どのようにしたら自分達のゲームに向いているかを自前でエンジンを改造しつつ実験が可能となっている。それこそ、SCEE R&Dからの正式バージョンアップを待たずに「PHYRE ENGINE」を独自方式にアップグレードして使っていくことも可能なのだ。
3Dシーン作成やテクスチャなどのアートデータ作成のサポートも「PHYRE ENGINE」は行なう。「Maya」、「3DsMAX」などのDCCツール向けのデータエクスポーターは基本的なものが「PHYRE ENGINE」と一緒に提供される。具体的にはコンテンツデータの標準的なやりとり手法である「COLLADA」に対応したツールがコアとなるようだ。各種データを「PHYRE ENGINE」向けに実装するためのトータルツールとしては「PHYRE STATION」も提供される(後述)。
・サンプルプロジェクトはフルソース、フルアートセットで提供される
ソースとデータは実際にビルドできるサンプルであり、プログラムを改造してエンジンの挙動変化を実際のサンプルゲームのプレイ結果として確認することができる。 またソースコードのドキュメントや技術解説書も付属し、さらにソースレベルにはインラインのコメントまでが挿入されているという。 そして、面白いのは、開発をWindows PCベースで、しかもMicrosoftのVisualStudioで開発できるというところ。グラフィックスAPIはOpenGL、Direct3Dを用いて開発することができ、PC上で動作させて動作確認もできる。最終段階でPS3用にコンフィギュレーションを変えてビルドすればPS3上で動作できるオブジェクトが生成できる。
だから、PS3版だけでなく、Xbox 360版やPC版の開発も実質できてしまうわけだ。
・今世代のゲームエンジンの要求仕様を一通り網羅する「PHYRE ENGINE」 「PHYRE ENGINE」は今世代のゲーム機に対応したエンジンであるため、マルチスレッド前提の設計になっている。それも、SCEE主導開発なので当然PS3にフォーカスした設計になっている。 関心が高いCellプロセッサに7基内蔵されている128ビットSIMDプロセッサのSPU (SPU:Synergistic Processor Unit、SPE:Synergistic Processor Elementと呼ぶこともある) は、やはりジオメトリ処理にも活用される。具体的にはスキニング、モーフィング、カリング、アニメーション処理などで、このあたりの方向性は昨年、発表されたミドルウェア「Playstation Edge」とよく似ている。
この他、「PHYRE ENGINE」では、SPUをストリーミングプロセッサ的に活用する仕組みや、シーンマネージメントも実装されているとのこと。また、エンジン利用開発者のオリジナルタスクをSPUに実行させる仕組みも使いやすい形で提供される。
グラフィックスエンジン部については、一通りの今世代のトレンドを網羅している。 ライティングはHDRレンダリングに対応。RGB各8ビットの疑似ハイダイナミックレンジ (HDR) レンダリングに加え、RGB各16ビットのリアルHDRレンダリングにも対応する。影生成についてもデプスシャドウ系、シャドウボリューム系のメジャー技法2タイプに対応している。 LOD (Leve of Detail) システムはジオメトリとシェーダに対して効かせられる仕組みを実装。パーティクルシステムで利用するパーティクル設計は、先ほど少し触れた「PHYRE STATION」というオーサリングツールで行なうことが可能。
物理シミュレーションエンジンは、好みやライセンシー状況に応じて自在に組み替え可能な仕組みを実装している。オープンソースの「Bullet」や、商業エンジンの「Havok」、「Ageia」などに対応しており、これらは開発途中でもVisual Studioのコンフィギュレーションを切り換えることで自由に切り換えることができるという。
今世代のゲーム開発ではプログラム開発も大変だが、アートワークに掛かる負荷も大きい。そこで「PHYRE ENGINE」では、「PHYRE ENGINE」に特化した様々なデータセットを処理するための統合ツールとして「PHYRE STATION」を開発して提供している。
様々なデータ作成ツール、コンバートツールなどが含まれており、細かなツールをとっかえひっかえして使わなくても「PHYRE STATION」だけで事足りるようになっているという。
・次期「PHYRE ENGINE」に実装されるフリーフォーム地形エンジンとは? 「PHYRE ENGINE」は、近々新しい地形処理エンジン (Terrain Engine) を内蔵してバージョンアップを図るという。
新地形処理エンジンは、高低データによる地形生成だけではなく、完全なフリーフォームな地形処理に対応しており、穴があいていたり、せり出していたりという複雑な形状の地形にも対応できるとしている。地形やそれに対応するテクスチャはストリーミング処理され、プレーヤーキャラクタがゲーム世界をシームレスに移動できる仕組みが提供される。
LODシステムは、与えられた地形データを自動的にテッセレーションして視点に近いところは多ポリゴンに、遠いところは低ポリゴンにしてくれる。地形作成は、1エリア (1クワッド) を最大100ポリゴン程度とした部品を組み合わせて基本形状を作成し、そこから地形エディタを用いて細部を作り込んでいく方式をとる。
この地形処理エンジンの開発はWindowsベースで行なわれ、わずか5分程度の作業でCellプロセッサのSPUバージョンへの移植が完了したとのことだが、パフォーマンスは十分高速で、1SPUあたり2億個のクワッドを処理できるスループットを達成したとしている。
今世代のゲーム機はハイデフ化したことで何もかもが高解像度化している。オープンフィールド型のゲームではどうしても地形に目がいってしまう。この時、敵キャラクタは多ポリゴンなのに、地形モデルだけ前世代的な低ポリゴンでは見た目のバランスも悪いしビジュアル面での説得力も欠ける。しかし、広大なフィールドの地形を説得力のある形で多ポリゴンで全てモデリングしていくにはコストが掛かりすぎるし、かといって、最近注目集められている自動生成 (プロシージャル生成) に頼りすぎるのも、ゲーム性設計との関係性を考えると全面採用は難しい。
この「PHYRE ENGINE」のような地形部品を組み合わせて低解像度地形を造り、ディテール部表現やLOD生成をシステム側にやらせるというのは今世代の地形処理エンジンの在り方としてはリーズナブルな手法だといえそうだ。
・「PHYRE ENGINE」のロードマップ 「PHYRE ENGINE」のロードマップも公開された。2008年2月現在、PS3ライセンシーに提供されているのはバージョン2.0になる。バージョン2.0では「PHYRE STATION」にパーティクルシステムのデザインツール機能が実装されており、GUIベースでパーティクルアニメーションやエンジン内描画時の物理パラメーターからの影響などをプレビューしながら設定できる。
また、SPUをジオメトリアクセラレーション以外の、具体的には映像のポストプロセスに活用できる仕組みも実装されている。例を挙げるとSSAO (Screen-Space Ambient Occlusion:シーンの深度値を見ながら画像処理的アプローチで陰影を付加する最近流行のポストプロセス) や被写界深度のシミュレーションなど。
そして2008年4月には、バージョン2.0にマイナーバージョンアップが施され2.01となる予定だ。こちらは、前出の地形エンジンを利用したサンプルプログラム、オープンソースの物理シミュレーションミドルウェア「Bullet」の統合、Direct3D環境下での開発のためのHLSLサンプル集などが含まれる。
また、これまで「PHYRE ENGINE」開発チームが蓄積した開発ノウハウをまとめたドキュメントも多数含まれる予定だ。具体的には、ポリゴンカリングの方法、デバッグツールGCMを活用したメモリマネージメント手法、また難易度の高いと言われるSPUプログラミングノウハウをまとめたものも含まれる。
2008年5月にはバージョン2.1の提供を予定している。こちらは前出の地形処理エンジンを本格利用したサンプルゲームのフルセットが提供されることがホットトピックだ。また、地形処理エンジンを活用するためのサポートツール群と、地形エンジンと組み合わせて使うと威力を発揮するプロシージャル生成対応の植物生成エンジンも提供される。「PHYRE ENGINE」はこのバージョン2.1で、オープンフィールド型のレースゲーム、フライトゲーム、RPGなどの開発に対応するためのポテンシャルを得ると見られる。
2008年8月には植物生成エンジンとのさらなる統合を進め、「PHYRE STATION」にはシェーダーのオーサリングシステムや最適化システムの実装を行なったバージョン2.2を提供する予定。さらに2008年11月にはシナリオ制御などに活用できるスクリプトエンジンを実装したバージョン2.3の提供を予定している。ユニークなのはこのスクリプトエンジンをSPUで実装したバーチャルマシンで実行させようとしている点。SPUの新たなる使い道となるか、そういった視点でも興味深い試みだといえる。
・「PHYRE ENGINE」はソニー版XNAなのか 「PHYRE ENGINE」はテクノロジー的な視点で見ると「よくある3Dゲームエンジン」というものだが、その生い立ち、コンセプト、進化のプロセスを見るとかなり特殊で興味深い。 まず、開発をソニー (SCEE) が行なっているのにもかかわらず、PCとXbox 360を暗黙のうちにサポートしているという点が面白い。
また、各ゲームスタジオからの要望を聞いて、なおかつ「PHYRE ENGINE」を利用したスタジオからのノウハウをどんどんフィードバックさせていくという進化方針も面白い。PS3ライセンシーを締結する必要はあるにせよ、追加金なしの無償で提供されるので、いうなれば「PS3開発者達で行なわれるオープンソースプロジェクト」といえなくもない。あえて言いきるならば「ソニー製のプロ用途限定のXNA」といった感じだろうか。
うがった見方をすれば、「ゲームタイトル開発がPS3オンリー向けでは、なかなかビジネスにはなりにくい」と尻込み気味なサードパーティ向けゲームスタジオへのSCEEのなりふり構わないアクロバット戦略なのかもしれないが、いずれにせよ、今後の動向には注目していかねばならないだろう。
■ Jason Mitchell氏、Valve「Team Fortress 2」のシェーディング技術を解説
「Stylization with a Purpose: The Illustrative World of “Team Fortress 2”」と題して、Mitchell氏が行なったセッション全体の詳細についてはこちらのレポートを参照してもらうとして、ここでは、そのNPR技法について切り出して紹介をしたいと思う。
Mitchell氏は、わかりやすく、「TF2」におけるライティングを、視線に依存しない拡散反射系と、視線に依存する鏡面反射のライティングとに切り分けて解説した。
Valveではただの明るさを持ち上げるだけの環境光ではなく、放射輝度ボリューム (Irradiance Volume) というちょっとだけ進んだ環境光の概念を導入している。名前こそ大げさだが、そのシーンの各地点における6方向の環境光の分布を数値テーブル化しており、これを用いて環境光としてライティングを行なうのだ。以前、本連載で取り扱った「ヴァルキリープロファイル2」編の半球ライティングの拡張版のようなもので、よりそのシーンに溶け込んだ環境ライティングが可能になるのだ。 そして「TF2」での基本的な拡散反射のライティングは、Valveが'98年の「Half-Life」から採用しているValve独自の疑似ラジオシティライティング技法である「ハーフ・ランバート・ライティング」(Half Lamber Lighting) を用いている。
ランバート・ライティングは拡散反射照明計算の一般系で、視線方向に依存しない光源の入射方向と面の向き (法線) だけで算出される陰影処理技法になる。この技法は「そのピクセルの明るさは、ピクセルの向き (法線) と光の入射方向が織りなす角度θのCOSθに比例する」という「ランバートの余弦則」で定義される。この技法をそのまま適用すると明暗がかなり強烈に出てしまうきらいがある。そこでValveでは、急激に変化するコサインカーブに細工をして緩やかにして、さらに暗部階調を持ち上げる工夫をした。具体的にはランバートの余弦則のコサインカーブが半分になるように“1/2”を掛け、さらに“1/2”を足して、さらにこれを2乗している。
そして「TF2」の漫画っぽいライティング技法のミソとなるのが、この1Dテクスチャによるライティング結果の変換だ。 せっかくナチュラルにライティングされた結果をあえて大ざっぱに漫画調にする変換をここでしているのだ。これは、よく言われる「セルシェーダー」、「トゥーンシェーダー」と呼ばれる技法に相当するものだ。
ここまでを全部合成すると下の画像のようになる。ここまでが「TF2」の拡散反射系ライティングの全てになる。
・「TF2」における鏡面反射照明 鏡面反射の照明は視線方向に依存した結果になり、より具体的に言えば視線の移動と共に陰影や光沢の出方が変化する照明のこと。鏡面反射……というと金属のライティングのイメージがあるが、濡れている材質やツルツルとした材質もこの鏡面反射モデルがよくはまる。
「TF2」ではさらに複雑な陰影を出すために、複数の異方性の鏡面反射光のスペキュラーマップを用意している。 1つはフレネル反射表現のためのスペキュラーマップだ。これは視線と面 (ピクセル) の向き (法線) がどういう位置関係になったときにどう反射するかを決定する項目。例えばそのピクセルを視線が掠めているような位置関係の時には、そこにハイライトを強めに出すというような陰影結果を促す。 さらに、逆光気味になったときにどういう光沢を出すのかを記載したリムライト・フレネルのスペキュラーマップも適用する。 リムライト処理は輪郭付近に逆光 (リムライト) があるとその光が滲み出てくるような処理をする異方性な光沢陰影処理。光が浸透して再び出てくるような人間の皮膚のような材質を擬似的に表現するのに使われている (疑似表面下散乱)。身近なところではWiiの「スーパーマリオギャラクシー」のマリオにはわかりやすく積極的に使われているので見てみるといい。
さらにスペキュラー効果を調整するマスクテクスチャも適用して光沢の出具合を調整する。
実際にこのシーンで、ここまでを項目別に適用した例はこんな感じになる。 まず、スペキュラーとフレネル反射を考慮するとこんな感じに表示される。黒い部分は黒くなると言うことではなくて、光沢がないということを意味しているので勘違いしないように。逆に、明るい部分は実際に出る光沢の様子を表している。 一方でリムライト・フレネル反射は計算するとこんな感じになる。ここも黒は黒くなると言うことではなくて光沢がないということを意味している。逆に、明るい部分は実際に出る光沢の様子を表している。 ここで両者を比較して強く出た光沢の方を結果とするという処理を適用する。
天球光や環境光からのリムライトの効果を出すために、同じリムライト・フレネル反射のスペキュラーマップを別扱いでもう一度処理する。
ここまでの全ての光沢を総合すると下の画像のような感じになる。
そして前段の拡散反射の結果までを合成して、最終ライティング結果となる。
・「TF2」のNPR表現はアイディアと基本技でできていた
なお、ライティング計算はHDR次元で行なわれ、動的なトーンマッピング処理も行なわれる。NPRレンダリングの映像なのにリアリスティックなHDRレンダリングも行なわれるのも、ユニークなビジュアル表現に貢献している。
PIXARアニメライクの独特な「TF2」のライティングは、意外にも基本ライティングのモディファイの組み合わせで実現されていたのだった。
スペシャルなシェーダーがなくても、基本技とアイディア次第でユニークなビジュアルは作り出せる……そんなメッセージを感じた解説であった。
□Game Developers Conference(英語)のホームページ http://www.gdconf.com/ □Game Developers Conference(日本語)のホームページ http://japan.gdconf.com/ □関連情報 【2008年2月】Game Developers Conference 2008 記事リンク集 http://game.watch.impress.co.jp/docs/20080221/gdclink.htm 3Dゲームファンのためのグラフィックス講座 バックナンバー http://game.watch.impress.co.jp/docs/backno/rensai/3dg.htm (2008年2月28日) [Reported by トライゼット西川善司]
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp Copyright (c)2008 Impress Watch Corporation, an Impress Group company. All rights reserved. |
|