会場の模様 |
米エヌビディア(NVIDA)社は6日、ゲーム開発者向けの技術セミナー“開発の鉄人 NVIDIA IRON DEVELOPER 2004”を、東京・新宿の工学院大学キャンパスで開催した。本セミナーは同会場で開催されている“CECA デベロッパーズカンファレンス 2004(CEDEC 2004、セデック 2004)”の第1日目プログラムの一環として行なわれたもので、会場には席につけずに階段に座って傍聴する人も出るほどの盛況振りだった。CEDECは、(社)コンピュータエンターテインメント協会が主催する開発者向け会議で、6~8日の3日間に渡って同校舎の12会場で99のセミナー/会議が行なわれる。
“人魚と海賊:NVIDIAデモ開発チームのさらなる秘密”で解説するデベロッパー・テクノロジー部の芦田幸治氏 |
Naluのブロンド髪の制作について |
初回のセッション“人魚と海賊:NVIDIAデモ開発チームのさらなる秘密”では、エヌビディア(株)のデベロッパー・テクノロジー部の芦田幸治氏が壇上に立ち、GeForce 6800シリーズなどの発表会で公開された人魚のNalu(ナル)/昆虫学者のTimbury(ティンバリー)/海賊船という3つのリアルタイム3D CGデモの開発秘話が紹介された。
Naluはブロンドの長髪をなびかせながら水中をユッタリと泳ぐ人魚で、昨年9月の“開発の鉄人”(CEDEC 2003内のセミナー)で技術解説が行なわれた、蝶の羽を持つDawn(ドーン)とはまったく異なる表現の難しさを持つという。具体的には、
- ブロンドの髪には影と透過光が複雑に影響すること
- 長い髪が水中を自然に揺れ動く表現を行なうこと
- 水中から太陽を仰いだときの放射状の光線と影(ゴッドレイ)を表現すること
などが挙げられた。ブロンドの髪の表現では、髪の毛の表面の反射/髪の毛を通過(透過)する光/髪の毛の内部で反射と回折を行なう光の3つのハイライト処理を合成しているという。髪の影についても、従来のシャドーマップではエッジが目立ちすぎる(髪はオブジェクトとして細すぎるためエッジだらけになってしまう)ため、“オパシティーシャドウマップ”を採用。これは、影が落ちるかどうかを0/1で判定するのではなく、何%の光が遮断されるかを判定するもので、髪の中心部分ほど影が濃くなる自然な表現が可能になったという。
光が透過しながらも自然な影を作るブロンドの髪の表現 | ブロンド髪を表現するための3つのハイライト | 影の有無によるリアルさの違い |
シャンプーのCMのように自然な髪の動きの制作について |
髪の動きは、Naluの髪(4095個のラインオブジェクト)の一部(762個)に対して動力学的な計算を行ない、ほかのオブジェクトはそこで計算された変形を補間する形で表現している。ゴッドレイは3次元的な表現のように見えるが、実際には2次元処理で行なっているという。具体的には、光源(Naluの場合は太陽)の位置から放射状に広がる直交座標をX-Y軸の極座標に変換、そこに縦方向のブラー(残像のようににじませた映像加工)を掛けたテクスチャーを計算する。最後に極座標⇒直交座標に戻して重ね合わせるという処理を行なっている。
髪の動きを決定する“制御髪”の配置と作成 | 左が“制御髪”のみを配置したところ。右は制御髪を補完するかたちで残りの髪を配置したところ | 髪の動き(ジオメトリ)を計算する流れ | ||
ゴッドレイの制作について | ゴッドレイは放射状のブラー効果を組み合わせて表現している | 放射状ブラー効果の作成方法 | ||
Timburyの本名と出生地、生き方などのプロフィール。ここではあまり重要ではない |
厚ぼったいメガネとやや偏執的な印象の風貌が特徴のTimburyでは、HDR(ハイダイナミックレンジ)ライティングという演算処理を行なって、画面全体にソフトフォーカスの効果を与えている。HDRは、最終的に画面に表示するRGB各256階調(約1677万色)の8bit整数データを算出するために、内部的に16bitの浮動小数点演算(GeForce 6800などでは標準サポート)で高精度のライティング計算を行なっている。これを描画する際には、表示解像度のオリジナル画像と、拡大サンプリングしたテクスチャーに変換し、xy方向に2回ずつブラーをかけたぼやけた映像の2枚を作成し、両者を合成する。
16bit⇒8bitのデータ変換時には、自動ゲイン調整機能も行なっている。これはビデオカメラや人間の目が、明るすぎる被写体に対して絞りや瞳孔を閉じるように調整する機能を再現したもので、明るい部分が判別できるようになる半面、暗い部分は黒く潰れてしまう。Timburyではこうした効果を使って人の目で見た印象に近い映像を作っているという。
波や船の動きをリアルにシミュレートした海賊船のデモ“Clear Sailing” |
最後に、海賊船のデモ“Clear Sailing”の技術解説が行なわれた。これは、波をかき分けながら進む船をリアルにシミュレートしたもの。従来の船の表現ではピクセルシェーダーを使い波だけが不自然に揺れる“静かな海”しか表現できなかった。そこで、頂点シェーダーを使って波が船にぶつかり砕ける様子、船が前後左右に傾きながら進む様子をリアルに表現するべく作成したという。
波の表現には、Gerstner(ガースナー)波形計算とFFT(高速フーリエ変換)の統計モデルがあるが、ここではGerstner波形を採用している。その理由として芦田氏は、FFTの統計モデルでは、リアルな波を表現できる半面、計算(プリレンダリング)に時間がかかること、同じ波が繰り返し出てきてしまうことなどを挙げた。ただ、リアルタイムレンダリングの必要がない映画などではFFTの統計モデルが使われており、同じ波の繰り返しはカメラ位置を切り替えることなどでカバーしていることも説明した。
カメラ位置からのアングル(画角)全体を150×150のグリッドに区切り、そこに45個の円を計算して波を生成すると、パフォーマンスとクオリティーのバランスがいい。ここに至るまで、いくつかの試行錯誤を繰り返し、当初は設計した世界全体にグリッドを最初から配置して計算したこともあるが、これでは描画が不要な場所の計算が必要となるほか、遠方ほどグリッドの密度が高くなり、小さなシーンに多数の計算が必要となるなど無駄が多いことがわかったため、現在の方法にしたという。
各セッションの最後には、参加者にGeForce搭載グラフィックスアクセラレーターカードが当たる抽選会も行なわれた。あるいはこれを目当てに参加した人もいたのかも!? |
CEDEC 2004の2日目では昨年同様、米マイクロソフト社のDirectXチームによるWindows向けゲーム開発セミナー“MELTDOWN(メルトダウン)”なども開催される。