オススメ機能
Twitter
お気に入り
記事履歴
ランキング
パッケージ
TOMB RAIDER公式サイトへ
読者の評価
78
投稿数:9
レビューを投稿する
海外での評価
86
Powered by metacritic
お気に入りタイトル/ワード

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

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

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

LINEで4Gamerアカウントを登録
[GDC 2013]PC版「TOMB RAIDER」は髪がすごい。ララ・クロフト秘伝のヘアケア技術教えます
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2013/03/27 00:00

ニュース

[GDC 2013]PC版「TOMB RAIDER」は髪がすごい。ララ・クロフト秘伝のヘアケア技術教えます

TOMB RAIDER
 日本では2013年4月25日の発売が予定されている「TOMB RAIDER」(PC / PlayStation 3 / Xbox 360)。そのPC版で実装される毛髪レンダリングの解説セッションが,「Game Developers Conference 2013」で「A Survivor Reborn: Tomb Raider on DX11」(ララの復活:DirectX 11版TOMB RAIDER)として開催された。


PC版TOMB RAIDERは髪がすごい


 新生TOMB RAIDERのPC版は,ゲーム機版とは異なり,DirectX 11にフル対応のレンダリングエンジンが採用されている。今回のセッションでは最初に,PC版TOMB RAIDERのさまざまな要素技術のカタログが示されたのだが,そのなかからピックアップされ,重点的な解説が行われたのが,冒頭でも触れた髪の毛のレンダリング技術だ。
 すでに4Gamerでもお伝えしているとおり,この技術には「TressFX Hair」(略称:TressFX)という名が与えられている。「Tress」とは「毛髪」,「FX」は「特殊効果」の意味である。


TOMB RAIDER
Jason Lacroix氏(Senior Rendering Engineer, Crystal Dynamics)
 セッションでは,TOMB RAIDERの開発元であるCrystal DynamicsのシニアレンダリングエンジニアであるJason Lacroix(ジェイソン・ラクロー)氏が登壇。まず,TOMB RAIDERの開発チームが「髪の毛のレンダリングで特別なことをやりたい」とAMDに相談したところ,AMDは数週間後に,毛髪レンダリングの技術デモを持って見せに来たと話し始めた。
 そのデモに使われていたキャラクターが,ララ・クロフトにとてもよく似ていて,イメージにピッタリだったことから,開発チームは,そのAMD製技術デモをスタート地点にして実装することを始めたのだそうだ。

TOMB RAIDER TOMB RAIDER
AMDが制作して持ってきた技術デモ(左)。これがスタート地点になった(右)

 なお,この技術デモのコンテンツ部分は,joseph alterという企業の手によるDCCツール用プラグインソフト「Shave and a Haircut」が用いられていたとのことである。

TOMB RAIDER
AMDは,joseph alter(joe alter)製のDCCツール用プラグインソフト「Shave and a Haircut」を使用して技術デモを制作したとのこと


実際のゲームにおけるララ・クロフトの髪モデルはスクエニのプリレンダー版を流用


TOMB RAIDER
 実際のゲームでは,AMDのデモで用いられたコンテンツではなく,スクウェア・エニックスのオフラインレンダリング(=プリレンダー)部門であるVisual Works(ヴィジュアルワークス)が開発した,プリレンダー版TOMB RAIDER予告編の髪の毛を流用しているという。


 Visual Worksが制作したプリレンダー版ララ・クロフトの毛髪は4737本分の制御パラメータを元にしていたが,ゲーム版ではこれを7014本分のスプライン曲線(spline curve。与えられたn+1の点を接続する滑らかな曲線)に置き換えたとのこと。ただ,それだと密度が不足したため,3倍の21042本にまで複製増毛させたそうだ。なお,1本当たりのスプラインは16頂点で構成するようにしているとのことである。

TOMB RAIDER
ゲームランタイムでは7014本分のスプライン曲線に置き換えた
TOMB RAIDER
1本のスプラインは16個の頂点に分解して構成

 スプライン化された毛髪は前髪,横髪,後髪,頭頂と4グループに分けて制御する方針が固まった。続いて検討されたのが「毛髪の動きをどうするか」という部分だ。

 これについてはポニーテールがトレードマークの陸上アスリートであるMichelle Jenneke氏を参考にしたのだとLacroix氏。いわく「陸上競技の映像はさまざまなアングルから撮影されていて,スローモーションにもなったりするのでとても参考になった」とのことである。

TOMB RAIDER TOMB RAIDER
「シミュレーションはどうするか。そうだ,アスリートの動きを参考にしよう」ということになったという。セッションではYouTubeのムービーも下の写真のとおり示されたが,著作権などがクリアになっていない可能性があるため,本稿ではリンクを示さない。この点はご了承を

 結局,シミュレーションは各毛髪に対して大局形状拘束条件(Global Shape Constrains,以下 GSC),局所形状拘束条件(Local Shape Constrains,以下 LSC)を与えつつ,重力に配慮したバネ物理を実現させたそうだ。

TOMB RAIDER
シミュレーションにGSCとLSCの概念を導入
 GSCというのは,端的に言えば髪型のこと。平常時にはその状態(髪型)に戻ることになり,重力や風,他者との衝突などに配慮したシミュレーションの結果でも,ある程度この状態を維持しようとする力が働く。
 一方のLSCは,簡単に言えば髪質のことである。直毛やちぢれ毛といったことを直接的には指すが,濡れた髪のような,髪自体の摩擦係数や重量状態もLSCに含まれる。LSCもGSC同様に,元の状態に戻ろうとする力が働くのが特徴となっている。

TOMB RAIDER
風や重力,あるいはララ自身の運動により,髪がリアルに動く

 髪のシミュレーション自体はComputeShaderで実装されたベルレ積分法(Verlet Integration)が利用されているとのこと。ベルレ積分法は「前の状態と現在の状態の差分情報から次の状態のベクトルを算出する」という離散的な積分方法で,GPUで処理するのに向いているとされる。カプコンの「Dragon's Dogma」(PlayStation 3 / Xbox 360)で,毛髪や布,柔体(ソフトボディ)表現にこのベルレ積分法が応用されたことは有名な話だ。

 さて,キャラクター自身の身体も含め,毛髪から見た他者との衝突は,ゲームロジック側で衝突判定に用いられる形状モデル――主にカプセルのような形状をしている――に対して行われる。

TOMB RAIDER
7つのシミュレーションプロファイルを設定
TOMB RAIDER
5つのシミュレーション要素をComputeShaderで実装

 シミュレーションでは,「乾いた髪」「濡れた髪」「ララが逆さに吊されたときの髪」「泳いでいるときに,下半分が濡れた髪」「ロープアクションにおける上下反転時の髪」「イベントシーン用の特例処理となる髪」「銃火器によるズームエイミング時の髪」と,計7つのプロファイルが設定されたそうだ。

 また,そのComputeShaderで実装されるシミュレーションの要素は5つに分けられるとのことで,「重力とGSCへの配慮」「LSCへの配慮」「風と髪の伸縮への配慮」「超高速で動いたときへの配慮」「自身の身体も含む,髪から見た他者との衝突への配慮」が内訳として挙げられている。

TOMB RAIDER TOMB RAIDER
2つの比較画像はいずれも左がゲーム機版,右側がTressFX Hairを有効にした状態のPC版だ。右側のほうが,髪の毛一本一本の質感が伝わってくる


髪の毛の描画,その詳細


 実際のレンダリングでは,毛髪を構成するスプライン曲線の全頂点は1つの頂点バッファに入れ込んで,1回の描画コールで描画する。

TOMB RAIDER
髪は線分ではなくクアッドで描画。「線分→クアッド」の変換にはジオメトリシェーダが活用されていると推測されるが,事前に制作段階でクアッド化している可能性もある
 各スプラインを構成する線分(Strip)は16頂点からなると前述したが,描画時には15個のクアッド(=四辺形=三角形×2)として描画される。もちろん,描画にあたっては,「あらかじめComputeShaderで実行しておいたシミュレーションの結果」に配慮して,3D空間上での位置を決定することになる。

 レンダリング時には,視点から見たときに髪の毛がなだらかな曲線――実際には四辺形だが――に見えるよう,あらかじめ設定されている髪の太さに応じて変移させる処理系を盛り込んでいる。髪が折れ曲がったとき,滑らかな丸みを持っているように見せるための,描画上の小細工が入っていると言ってもいいかもしれない。

 毛髪のシェーディング&ライティング手法は,2004年にATI Technologies(当時)が行った,「Ruby」デモにおける毛髪レンダリング手法とほぼ同じだと説明されている(関連pdf)。これは,ゲームグラフィックスでも採用例が多い,有名な「Kajiya・Kay」法を実装したものだ。
 具体的には,毛髪上の接平面(=接線)情報を毛髪に沿ってシフトさせ,光源からの直接反射光と毛髪が放つハイライトを分離させるような手法になる。言い換えるなら,「天使の輪」をプロシージャル手法で生成するイメージだ。

TOMB RAIDER
ライティングモデルはKajiya・Kay法を採用
TOMB RAIDER
実際のシェーディング&ライティングの概念

TOMB RAIDER
実際のレンダリング結果

 髪のシェーディングモデルは,

  • (環境光項+拡散反射項+髪の鏡面反射項)×髪の色+(分離された光源の反射項)

の形で表されると,Lacroix氏は説明していた。意外にクラシックな手法である。

 スクウェア・エニックスの「Agni's Philosophy」や「ガンスリンガー ストラトス」,トライエースの「End of Eternity(エンドオブエタニティ)」(PlayStation 3 / Xbox 360)など,髪の毛の表現にこだわりが見られる最近ゲームグラフィックスだと,比較的正確な「Marschner」モデルを使うことが多いが,Lacroix氏によれば「実装の時間が足りなかった。次回作にはきっと……(笑)」とのことだ。

TOMB RAIDER
カメラライトならぬビューティライト
 さて,TOMB RAIDERは洞窟のような暗いシーンが多く,黒髪に近いララ・クロフトの髪はこういったシーンだと真っ黒に沈んでしまうことが多かった。開発チームでは「これではビジュアル的に物足りない」と感じたため,視点(カメラ)位置から2メートル上空に光源を置く工夫を導入して,なかば強引に髪にハイライトを出すようにした。開発チーム内ではこれを「ビューティーライト」と呼称したそうだ。

 ちなみに,視点位置付近から柔らかい光源を置くというのは,TOMB RAIDERに限らず,ゲームグラフィックスではよく用いられる手法で,一般的には「カメラライト」などと呼ばれることが多い。
 アニメチックな造形をした女性キャラクターの顔面に鼻の影が落ちたりすると美人度(≒かわいらしさ)が下がったりするので,それを低減する目的で活用されたりするのだが,「髪質の表現のために置いた」というのは珍しい事例と言えるだろう。

TOMB RAIDER
暗がりでも美しい天使の輪が出るのはビューティライトの効果

 髪の影生成については,「ほかの要素と同じく,デプスシャドウ技法を活用している」という説明があった。
 毛髪スプラインを普通に単一のシャドウマップに書き込み,それを基にして影生成を行うのだが,ここで注意しなければならないのは,「髪は無数の毛髪による多層構造になっている」ということ。そこで,それらしいセルフシャドウを出すために,「髪ピクセルを描くとき,そのピクセルに対応する深度値から光源位置方向にシャドウマップを探査して,第三者によって遮蔽されていると判明したら,そこまでの到達距離を求めて,その大小で影の濃さを決める」ようにしたのだという。
 つまり髪のセルフシャドウは,一番表層の髪の形状でしか出ていないことになるわけだが,「そのセルフシャドウを,髪の厚みに応じた濃淡で作り出すことで,それっぽい表現に見せている」(Lacroix氏)とのことだ。

TOMB RAIDER TOMB RAIDER
髪のセルフシャドウ表現解説(左)と,アルゴリズムを示した擬似プログラムコード(右)

 なお,TOMB RAIDERにおける髪の毛のアンチエイリアシングは,GPUが提供する一般的なMSAA(Multi-Sampled Anti-Aliasing)ではなく,自前で実装したピクセルシェーダベースで実現されている。イメージ的には「髪が画面上の画素をどのくらいのカバー率で横切るか」で色を決めるようなやり方だ。

TOMB RAIDER TOMB RAIDER
髪の毛のアンチエイリアシング手法解説(左)と,アルゴリズムを示した擬似プログラムコード

 髪は半透明の素材で,かつ,ある程度の長さを持っている。そして,それらがシミュレーション結果で前後へ入り乱れることになる。通常,半透明オブジェクトは,ちゃんと視点から見て奥から順番に描かないと,正しい半透明表現にならないのだが,一本の髪がピクセル単位で前後入り乱れることになるため,単純な髪単位のソーティング(並べ替え)では描画がうまくいかない。

 そこで,「商業ゲームでは恐らく世界初」(Lacroix氏)となる「Order Independent Transparency」(以下,OIT)の実装に踏み切ったという。意訳するなら,OITは「描画順序不問の半透明描画手法」といったところか。
 その実装はかなりのチカラワザで,なんと,髪のピクセルを描画するときに,ワークバッファに髪色と深度値を1ピクセルずつ書き込んでいき,最終的には,ワークバッファに書かれたすべての情報を取りまとめて正確な半透明計算を行い,最終ピクセル色を求めているのだそうだ。1920×1080ドット解像度のゲーム画面をレンダリングする場合,OITの実現には最大で200MBものバッファが必要になるという。TOMB RAIDERのPC版はマルチディスプレイ表示に対応しているが,マルチディスプレイ表示を行った場合はワークバッファが300MBを超えるというからすごい。

TOMB RAIDER TOMB RAIDER
商業ゲームでは世界初!? TOMB RAIDERでは髪の描画にOITの概念を導入

 そのほか描画にあたっては,フォグ表現をはじめとしたポストプロセスを,毛髪レンダリングに対しても不自然さが起こらないようにしながら適用するために,髪だけをマスクで抜くための,ステンシルマスクのレンダリングなども行っているとのことだ。

TOMB RAIDER TOMB RAIDER
ポストプロセスやフォグ表現への対応

 髪のレンダリングのためのワークバッファに数百MBを使ったり,ComputeShaderで高度なシミュレーションを行ったり……というのは,現行のゲーム機ではとうてい不可能。ある意味,PCだけの贅沢ということができるだろう。
 というわけで,TOMB RAIDERが気になっている人は,PC版の購入を視野に入れてみてはどうだろうか。ちなみに,今回の毛髪レンダリング技術は,NVIDIAのGeForceを搭載するPCでも,問題なく動作するようだ。

「TOMB RAIDER」公式サイト

Game Developers Conference公式サイト

  • 関連タイトル:

    TOMB RAIDER

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