3Dキャラクタに毛を生やす「ファー(毛)シェーダ」(Fur Shader)と呼ばれるテクニックがある。
このファーシェーダには大別して二通りの方法があり、これらのどちらか、あるいは両方を組み合わせて活用することが一般的になっている。
ジオメトリシェーダのアクセラレーション的活用(2)~ファーシェーダを加速する/その1~フィン法のファーシェーダ
1つは毛を描いたテクスチャを貼り付けたポリゴンを3Dキャラクタに植え込むアプローチの「フィン(Fin:ヒレ)」法だ。
この手法では、事前に3Dキャラクタに植毛をするように毛ヒレを3Dキャラクタ本体に植え込んでおく必要がある。
この方法では、毛の有無などが分かりにくいほど視点から遠い位置の3Dキャラクタにおいても、GPUは植え込んだ毛の頂点処理やピクセル描画を行う必要があり、無駄が多い。
ジオメトリシェーダを用いれば、事前に3Dモデルに対して毛を生やしておく必要はなく、描画時にリアルタイムに動的に"植毛"することができるようになる。
動的に生成することで副次的なメリットも生まれる。
例えば、3Dモデル情報をいじらずに、1つの3Dモデルを流用して、毛の長さや毛並み(毛の密度)を変えた3Dキャラクタ描画を行うことができるようになる。
また、視点から遠いキャラクタに対しては毛ヒレの植え込み個数を少なくして手を抜いたり、あまりにも遠い場合は毛ヒレを植え込まないと行ったLOD(Level of Detail:視点からの距離に応じて高負荷の処理と低負荷の処理を使い分ける処理系)的な仕組みを実装することもできることだろう。
フィン法のファー表現のライティングに関しては様々なものが考案されているが、最も単純なのは毛ヒレに対して簡易的な頂点単位のライティングを施すものが比較的負荷が軽く、よく用いられるようだ。
これは、毛ヒレに対して光源方向に近い方角から明→暗とグラデーションをかけるだけの簡単なものになる。毛の根元の方は他の毛に光が遮断されているはずなのだが、この簡易方法ではそこまで対処できないため、ハイライトがあまり毛の根元の方に出ないような工夫を入れておく必要がある。(続く)
(トライゼット西川善司)