コラム
» 2004年03月24日 18時43分 公開

XIIIの秘密〜プログラマブルシェーダを使わなくてもできる効果的な表現(中編) (1/2)

フランスの同名の人気コミックを3Dゲーム化した作品「XIII」は漫画の雰囲気をそのままに3Dゲーム化するために独自の「セルシェーティング」を取り入れている。中編ではその具体的な処理方法を解説しよう。

[トライゼット西川善司,ITmedia]

大胆な陰影処理はこうして作り出されている

 まずは、「セル調の陰影処理」の実現手法から見ていこう。

 アニメ画として描かれるオブジェクトには、グラデーション的な陰影がなく、明るいか暗いかだけの「二値的なドラスティックな陰影」だけがある。これを突き詰めて考えれば光が「当たっているか」「当たっていないか」の判断だけで陰影が描かれることになる。

 ポリゴン単位で「当たっているか/否か」の判断は、そのポリゴンの向き(すなわち法線ベクトル)が光源方向に「向いているか」「向いていないか」を判断できればいい。これは高校レベルの幾何学に出てくる「ベクトルの内積」の値で判断すればいい。

 具体的には、ポリゴンの法線ベクトルと光源の向きを表す光源ベクトルの内積を計算して、この値が正か負かで判断できる。ちなみに負であればその面は光源方向に向いていないことになる。

 実際の一般的なセルシェーディングでは、ポリゴン単位の処理では大ざっぱすぎるため、もう少し細かく処理している。処理の前段階では「明るい」「暗い」だけを描いたツートーンテクスチャをあらかじめ用意しておく。

 描画するポリゴンを形成している各頂点単位ごとに、前述した「光源方向に向いている」「向いていない」を判断するための演算を行い、その結果をテクスチャ座標として出力して、先ほどのツートーンテクスチャでテクスチャマッピングするのだ。

 ただし、XIIIではこのような一般手法を使っていない。効率が良いか悪いかの議論は別にして、ちょっとユニークな手法を採用している。

 各頂点単位ごとに頂点の法線ベクトルと光源ベクトルの内積を求めるのは、一般的な方法と同じだが、この値がゼロになるところに新たな頂点を線形補外(補外=extrapolate 生成するという意味でつかっていい)するのだ。

 これにより「光に当たっているポリゴン」「光が当たっていないポリゴン」というようにポリゴンレベルで二分できることになる。この場合、最終描画時には

  • 光の当たっているポリゴンは明るく
  • 光の当たらないポリゴンは暗く

とそれぞれ描画していく。

 ややまどろこしい感じは否めないが、この手法によってプログラマブルシェーダを活用しなくてすむため、GeForce2系のようなクラシックなGPUでも動作できるというわけだ。

何となく先進的なイメージの漂うセルシェーディングだが、XIIIで採用している手法はプログラマブルシェーダを必要としないので互換性は高いといえる

ちなみに、筆者が試したところでは、ノートPCなどに使われているチップセット内蔵グラフィックスコア(Intel 855GMなど)でもXIIIのセルシェーディングを動作させることができた

輪郭線はこうして描かれている

 続いて、NPR的表現手法には必要不可欠な輪郭線の描画方法について見ていこう。これもまた、XIIIではユニーク、かつ大胆な方法で実現している。

 まず、3Dモデルを1つ用意する。これを便宜上「本体モデル」と呼ぼう。下図で言うところの左端の青い球体だ。

 次に、その本体モデルに対し、まったく同形で動きも完全にシンクロするが、本体モデルより一回り大きいモデルを用意する。これを便宜上「被せモデル」と呼ぶことにする。

 この被せモデルを本体モデルに被せるのだ。これが下図の真ん中にある状態となる。風船人形を2体用意し、大きさを微妙変えて2体被せ重ねて膨らませたイメージだ。

 この状態で、被せモデルを構成しているポリゴンのうち、視線に向いているポリゴン(視点から見て“表向き”のポリゴン)だけを透明にし、視線に向いていないポリゴン(視点から見て裏向きのポリゴン)だけを黒色で描画してやる。

 こうすると「実際に見えるもの」は、本体モデル前面と、その外郭にはみ出して見える一回り大きい被せモデルの背面ということになる。はみ出して見える被せモデルの背面は、先ほど説明したように単色の黒で描かれるのでこれが画面上では輪郭に見える、という寸法だ。これが下図にある右端の状態となる。

 この方法もプログラマブルシェーダを活用しないので互換性が高いという利点がある。

互換性が高い手法ではあるが、レンダリングのときに、一つのキャラクターに対して本体モデルと被せモデルの両方の処理を行わなければならない。そのため、処理ポリゴン数は単純計算でそのままの2倍になってしまう欠点も併せ持つことになる

詳しくはあとで説明するが、一部の輪郭は決めうちでテクスチャに描かれている。XIIIの手法では、原理上、描かれない輪郭線が多発するために、最新のセルシェーディングでは、この手法が採用されることは少ないようだ
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

この記事が気に入ったら
ITmedia PC USER に「いいね!」しよう