ジオメトリシェーダのアクセラレーション的活用(4)~ファーシェーダを加速する/その3~ファーシェーダの応用
シェル法は、フィン法とは逆に、毛先の延長線上に視線があるような、視線と毛の先端が相対しそうなくらいの位置関係のときに、ふんわりとしたボリューム感が得られるファーシェーダだ。
フィン法とシェル法は共に補間関係にあるので、実際に毛むくじゃらのキャラクタをリアルに表現しようとする場合は両方を同時に組み合わせて使用するのが良いとされる。
これをジオメトリシェーダ無しでやろうとすると事前に毛ヒレは植え込まなくてはいけないし、毛の断面図ポリゴンを事前に積層させなければならず、何かと大変だ。
ジオメトリシェーダがあれば、二種類の"毛生え"を、事前準備無しで両方実践することができる。
より高度な実装にするならば、毛を生やす地肌ポリゴンの法線ベクトルと、視線との関係を見て、毛の側面を見てしまいそうな位置の地肌にはフィン法の毛を多めに適用し、毛先と視線が相対しそうな位置の地肌にはシェル法の毛を多めにするといった適応型のコンビネーション・ファーも実現可能なはずだ。
また、ジオメトリシェーダや頂点シェーダのプログラムをやや高度にして、毛を風になびかせたり、加速や減速、重力や完成などに配慮して、生成した毛にアニメーションを与えるのも応用として面白いはずだ。この場合、毛同士の衝突や、毛と外界オブジェクトとの衝突は取りにくいので無視することになるだろうが、CPUが介在せずに毛のアニメーションが実現できる。
また、こうしたファーシェーダはなにも毛を生やすだけでなく、応用次第で別の表現にも使える。
もっとも手近な例としては雑草の表現だ。
フィン法で、髪の毛のテスクチャにしているところを草木の横から見た画にして、これを地面に生やせば密集して生えている草木のできあがりだ。
また、シェル法ならば、断面図テクスチャの色を適当な緑系や茶系の色にして地面に適用すれば芝生のような葉先の短い植物が絨毯のように密集して茂っている地面を表現できる。
この場合にも風でなびくようにすれば、リアリティはさらに向上する。
ただし、3Dキャラクタが草木を押しのけていく様のような、動的キャラクタと、ファーシェーダで生やした草木とのインタラクションを取るのは難しい。草木をあまり背を高く生やしすぎると葉が動的キャラクタの体にめり込んだりといった不自然さが目立つことになる。
シェル法の背の低い草木であれば、動的キャラクタが踏みならした部分のファーの積層間隔を詰めたり、あるいはファー自体を出さないことで足跡の表現などはできそうだ。(続く)
(トライゼット西川善司)