Half-Life2」というプレゼンテーションを行った。Buren氏へインタビューを行う機会に恵まれたので,プレゼンテーションの内容と併せてお届けする。Buren(以下,BVB):主に顔のモデリングやそのほかのテクノロジー関連を統括しており,またゲーム内容そのもののプロデュースやサウンド関連のディレクションにも関与しています。Half-Life2の顔(フェイシャル)表現周りについてお聞かせください。あれは眼球へのシーンの映り込みを再現している——と説明されていましたが,具体的にはどのように処理しているんでしょうか。環境マップを用意しているのか,それともマルチパスレンダリング系のテクニックなのかなぁと推測しているのですが......。BVB:実をいうとあれは一種の"フェイク"なんです。シーン内に設置された光源を"眼球から見た場合"として光沢を描いているんです。環境マップ的なことはやっていませんが,一見するとそう見えるほど効果的です。これはコストが安い割には効果的なテクニックといえるかもしれませんね。決めうちの光沢と違って,キャラクターや光源が動けば眼球の中の光沢も移動するから,本当に"生きた目"のように見えました。まぶたについてはどうですか?BVB:これは上下のまぶたの表皮を変形させることで実現しています。HalfL-ife2におけるキャラクターの顔表現には40個の制御点があって,これを変位させていると聞きましたが,これについて教えてください。BVB:まずキャラクターの顔には34個の表情制御用の頂点があって,これらの変位によって表情を作り出しています。ボーンを中に仕込むのはパフォーマンスに大きく影響するので断念しています。表情のアニメーションはどのように行っているのですか?BVB:これはいわゆるキーフレーム・アニメです。表情の始まりと終わりの頂点変位の情報を与えればその中間の表情変化は算術的な頂点座標変移によって再現されます。ATIやNVIDIAのGPUデモでは「スキンシェーダ」(*)なるものが出てきているようですが。BVB:肌の質感を出すためのいわゆるスキンシェーダというのは利用していません。これまでのゲームのようにプラスチックみたいな質感の肌にはならないようにしています。頬や鼻といった部位に対しては,スペキュラマスクを適用していて,これは肌上の脂とか汗の感じを出すのに貢献しています。鼻や耳の穴,目の窪みなどは自己遮蔽度のようなパラメータをもたせて陰影処理をしていると聞きましたが?BVB:この点については我々も注意深く作業していて,現在はテクスチャベースの表現になっています。顔上の暗くなる部分については"テクスチャで暗くしている"ということですね。BVB:そうなりますね。顔には相当力を入れてデザインしたので,よく見て頂きたいと思います。大体一つのキャラクターにつき,顔だけで2500ポリゴンを割いているほどですよ。異方性ライティングを使った"毛ヒレ"のようなものでしょうか。髪の毛の表現が必要なときはそのタイプの手法でやっています。(*)スキンシェーダ......人間の肌は中に血や肉があり,それを覆う半透明の皮膚が光を複雑に反射する。この人間の肌の質感を再現するシェーダのことを,とくにスキンシェーダと呼ぶ眼球の中の"きらめき"はシーン内の光源位置を反映したもの。Half-Life2の影表現について教えてください。影の生成に関してはステンシルシャドウボリューム,シャドウマッピング(シャドウバッファ)のような手法がありますよね。Half-Life2ではどのような技術が使われているんでしょうか。BVB:我々が用いたのはいわゆる投射テクスチャ・シャドウです。光源を視点としてローディテールモデルの形状をテクスチャにレンダリングして,これを投射テクスチャマッピングで貼り付ける方法です。これは互換性の高い技法ですね。GeForce,RADEONの区別なく使えるようですし,家庭用ゲーム機への展開にも有利ですね。背景のオブジェクトの影はどうしていますか?BVB:セルフシャドウには対応していません。Half-Life2で影のソースとなる光源は,1エリアにつき1個に限定しています。シーンに投射する影はそこを基準としたものになります。動かない背景物影には,一般的なライトマップを使っています。動かないオブジェクトの影は伝統的なライトマップ,動くキャラクターには投射テクスチャで影生成を行っている。Half-Life2のグラフィックスを見ていると,ところどころにハイダイナミックレンジ(HDR)レンダリング(*1)のような表現が見られます。Half-Life2エンジンはHDRレンダリング技法を採用しているとみていいんでしょうか?BVB:はい。HDRレンダリングについては,名前は申し上げられませんが,あるGPUベンダの協力を得て実装しました。Half-Life2のゲーム中,HDRレンダリング的な表現は随所で見られます。9500以上ならば,浮動小数点実数バッファを使ったHDRレンダリングもできますが。BVB:Half-Life2のHDRレンダリング表現は,αチャンネルに光の輝度強度をもたせて,これを最終的にプログラマブルピクセルシェーダでグレア効果を出す方式です。8ベースの3Dゲームで多く使われている手法ですね。あと,Half-Life2を見ているとボリュームレンダリングのように見える箇所がありますが,あれはどういったテクニックによるものですか?BVB:ボリューム表現の多くはパーティクルシステムを使っています。水中などのシーンでは,いわゆる通常のフォグ(霧)機能と併用している感じです。