このページの本文へ

“人魚のNalu”と“昆虫博士Timbury”の裏側を公開――米NVIDIA、開発の鉄人セミナーを開催

2004年09月06日 19時25分更新

文● 編集部 佐久間康仁

  • この記事をはてなブックマークに追加
  • 本文印刷
会場の模様
会場の模様

米エヌビディア(NVIDA)社は6日、ゲーム開発者向けの技術セミナー“開発の鉄人 NVIDIA IRON DEVELOPER 2004”を、東京・新宿の工学院大学キャンパスで開催した。本セミナーは同会場で開催されている“CECA デベロッパーズカンファレンス 2004(CEDEC 2004、セデック 2004)”の第1日目プログラムの一環として行なわれたもので、会場には席につけずに階段に座って傍聴する人も出るほどの盛況振りだった。CEDECは、(社)コンピュータエンターテインメント協会が主催する開発者向け会議で、6~8日の3日間に渡って同校舎の12会場で99のセミナー/会議が行なわれる。



デベロッパー・テクノロジー部の芦田幸治氏“人魚と海賊:NVIDIAデモ開発チームのさらなる秘密”で解説するデベロッパー・テクノロジー部の芦田幸治氏
Naluのブロンド髪の制作について
Naluのブロンド髪の制作について

初回のセッション“人魚と海賊:NVIDIAデモ開発チームのさらなる秘密”では、エヌビディア(株)のデベロッパー・テクノロジー部の芦田幸治氏が壇上に立ち、GeForce 6800シリーズなどの発表会で公開された人魚のNalu(ナル)/昆虫学者のTimbury(ティンバリー)/海賊船という3つのリアルタイム3D CGデモの開発秘話が紹介された。

Naluはブロンドの長髪をなびかせながら水中をユッタリと泳ぐ人魚で、昨年9月の“開発の鉄人”(CEDEC 2003内のセミナー)で技術解説が行なわれた、蝶の羽を持つDawn(ドーン)とはまったく異なる表現の難しさを持つという。具体的には、

  • ブロンドの髪には影と透過光が複雑に影響すること
  • 長い髪が水中を自然に揺れ動く表現を行なうこと
  • 水中から太陽を仰いだときの放射状の光線と影(ゴッドレイ)を表現すること

などが挙げられた。ブロンドの髪の表現では、髪の毛の表面の反射/髪の毛を通過(透過)する光/髪の毛の内部で反射と回折を行なう光の3つのハイライト処理を合成しているという。髪の影についても、従来のシャドーマップではエッジが目立ちすぎる(髪はオブジェクトとして細すぎるためエッジだらけになってしまう)ため、“オパシティーシャドウマップ”を採用。これは、影が落ちるかどうかを0/1で判定するのではなく、何%の光が遮断されるかを判定するもので、髪の中心部分ほど影が濃くなる自然な表現が可能になったという。

光が透過しながらも自然な影を作るブロンドの髪の表現 ブロンド髪を表現するための3つのハイライト 影の有無によるリアルさの違い
光が透過しながらも自然な影を作るブロンドの髪の表現ブロンド髪を表現するための3つのハイライト影の有無によるリアルさの違い


シャンプーのCMのように自然な髪の動きの制作について
シャンプーのCMのように自然な髪の動きの制作について

髪の動きは、Naluの髪(4095個のラインオブジェクト)の一部(762個)に対して動力学的な計算を行ない、ほかのオブジェクトはそこで計算された変形を補間する形で表現している。ゴッドレイは3次元的な表現のように見えるが、実際には2次元処理で行なっているという。具体的には、光源(Naluの場合は太陽)の位置から放射状に広がる直交座標をX-Y軸の極座標に変換、そこに縦方向のブラー(残像のようににじませた映像加工)を掛けたテクスチャーを計算する。最後に極座標⇒直交座標に戻して重ね合わせるという処理を行なっている。



髪の動きを決定する“制御髪”の配置と作成 左が“制御髪”のみを配置したところ。右は制御髪を補完するかたちで残りの髪を配置したところ 影の有無によるリアルさの違い
髪の動きを決定する“制御髪”の配置と作成左が“制御髪”のみを配置したところ。右は制御髪を補完するかたちで残りの髪を配置したところ髪の動き(ジオメトリ)を計算する流れ
ゴッドレイの制作について ゴッドレイは放射状のブラー効果を組み合わせて表現している 放射状ブラー効果の作成方法
ゴッドレイの制作についてゴッドレイは放射状のブラー効果を組み合わせて表現している放射状ブラー効果の作成方法
各手順でのテクスチャーの変化 実際のデモでは、Nalu自身が作る影の部分を除いて、明るい領域のみにブラー効果をかけている

Timburyの本名と出生地、生き方などのプロフィール
Timburyの本名と出生地、生き方などのプロフィール。ここではあまり重要ではない

厚ぼったいメガネとやや偏執的な印象の風貌が特徴のTimburyでは、HDR(ハイダイナミックレンジ)ライティングという演算処理を行なって、画面全体にソフトフォーカスの効果を与えている。HDRは、最終的に画面に表示するRGB各256階調(約1677万色)の8bit整数データを算出するために、内部的に16bitの浮動小数点演算(GeForce 6800などでは標準サポート)で高精度のライティング計算を行なっている。これを描画する際には、表示解像度のオリジナル画像と、拡大サンプリングしたテクスチャーに変換し、xy方向に2回ずつブラーをかけたぼやけた映像の2枚を作成し、両者を合成する。

16bit⇒8bitのデータ変換時には、自動ゲイン調整機能も行なっている。これはビデオカメラや人間の目が、明るすぎる被写体に対して絞りや瞳孔を閉じるように調整する機能を再現したもので、明るい部分が判別できるようになる半面、暗い部分は黒く潰れてしまう。Timburyではこうした効果を使って人の目で見た印象に近い映像を作っているという。



画面全体に合計4回のブラー効果をかけて柔らかイメージを作り、最後にオリジナル画像を重ね合わせる 右は太陽を見上げているため逆光状態になり、影となる木々などが真っ黒に塗りつぶされている 実際のデモには採用されなかった未収録ショット
画面全体にxyxyと合計4回のブラー効果をかけて柔らかイメージ(yブラー(2))を作り、最後にオリジナル画像を重ね合わせる(合成)自動ゲイン制御の例。左は画面全体に特にまぶしい部分はない(Timburyの頭くらい)ので、全体がはっきり見渡せるが、右は太陽を見上げているため逆光状態になり、影となる木々などが真っ黒に塗りつぶされている実際のデモには採用されなかった未収録ショットだが、テクスチャーの属性やレンダリング時のパラメーターなどを変えると、思わぬ効果が得られる
ソフトフォーカスの効果がわかるデモの1シーン 自動ゲイン補正の効果がわかるデモの1シーン モデリングの接続(関節)などの設定を誤って動かしてしまうと、ちょっとホラーな印象になってしまうことも
ソフトフォーカスの効果がわかるデモの1シーン自動ゲイン補正の効果がわかるデモの1シーンこちらも未収録ショット。モデリングの接続(関節)などの設定を誤って動かしてしまうと、ちょっとホラーな印象になってしまうことも

波や船の動きをリアルにシミュレートした海賊船のデモ“Clear Sailing”
波や船の動きをリアルにシミュレートした海賊船のデモ“Clear Sailing”

最後に、海賊船のデモ“Clear Sailing”の技術解説が行なわれた。これは、波をかき分けながら進む船をリアルにシミュレートしたもの。従来の船の表現ではピクセルシェーダーを使い波だけが不自然に揺れる“静かな海”しか表現できなかった。そこで、頂点シェーダーを使って波が船にぶつかり砕ける様子、船が前後左右に傾きながら進む様子をリアルに表現するべく作成したという。

波の表現には、Gerstner(ガースナー)波形計算とFFT(高速フーリエ変換)の統計モデルがあるが、ここではGerstner波形を採用している。その理由として芦田氏は、FFTの統計モデルでは、リアルな波を表現できる半面、計算(プリレンダリング)に時間がかかること、同じ波が繰り返し出てきてしまうことなどを挙げた。ただ、リアルタイムレンダリングの必要がない映画などではFFTの統計モデルが使われており、同じ波の繰り返しはカメラ位置を切り替えることなどでカバーしていることも説明した。



波を作成するために、カメラ位置から見える範囲を150×150のメッシュに分割し、頂点を作成 各頂点を頂点シェーダーで演算するため、横から見たときの船の喫水線が、波の形をリアルに描かれている 海賊船らしく砲弾の打ち合いもあり、弾が船体に当たると煙と破片が飛ぶ
波を作成するために、カメラ位置から見える範囲を150×150のメッシュに分割し、頂点を作成する。実際には波の動きによって画面外の座標が画面に入り込む場合もあるので、カメラアングルの外側まで含めて150×150のメッシュで分割している各頂点を頂点シェーダー(バーテックスシェーダー)で演算するため、横から見たときの船の喫水線が、波の形をリアルに描かれている。ピクセルシェーダーでは水面(波)の形状自身を描けないため、このような水面は描けない海賊船らしく砲弾の打ち合いシーンも用意されている。弾が船体に当たると煙と破片が飛ぶ。これらはパーティクル(火花など細かいオブジェクトが飛び散る3Dエフェクト)によって表現している
船体と海面のワイヤーフレーム表示 同じくカメラを引いて見た状態では、船体に比べて海の頂点数が少ない 揺れる水面に船体が映り込んでいるところや、波頭が泡だっているところなどに注目
船体と海面のワイヤーフレーム表示同じくカメラを引いて見た状態。船体に比べて海の頂点数が少ないことがわかる。これはカメラが寄った状態でも引いた状態でも、同様に150×150に分割して頂点を生成しているためだ背後から船体を追ったカメラアングル。揺れる水面に船体が映り込んでいるところや、波頭が泡だっているところなどに注目

カメラ位置からのアングル(画角)全体を150×150のグリッドに区切り、そこに45個の円を計算して波を生成すると、パフォーマンスとクオリティーのバランスがいい。ここに至るまで、いくつかの試行錯誤を繰り返し、当初は設計した世界全体にグリッドを最初から配置して計算したこともあるが、これでは描画が不要な場所の計算が必要となるほか、遠方ほどグリッドの密度が高くなり、小さなシーンに多数の計算が必要となるなど無駄が多いことがわかったため、現在の方法にしたという。


各セッションの最後には、参加者にGeForce搭載グラフィックスアクセラレーターカードが当たる抽選会も各セッションの最後には、参加者にGeForce搭載グラフィックスアクセラレーターカードが当たる抽選会も行なわれた。あるいはこれを目当てに参加した人もいたのかも!?

CEDEC 2004の2日目では昨年同様、米マイクロソフト社のDirectXチームによるWindows向けゲーム開発セミナー“MELTDOWN(メルトダウン)”なども開催される。

カテゴリートップへ

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン