イベント
[SIGGRAPH ASIA]すべてはよりリアルな“もふもふ”のために。毛皮レンダリング最前線ではこんな研究が行われていた
最近ではゲーム内に登場するキャラクターの髪の毛もかなりリアルになってきている。それらで使われているKajiya-Kayモデルと言われる手法はもはや定番と言ってもよいだろう。さらに髪の毛内部の反射や屈折まで盛り込んだMarschnerモデルは,最先端のゲームデモで使用されている。ではそれが動物の毛皮にも使えるかというと,そうではないというのが今回の話だ。
なぜMarschnerモデルでは十分でないのかというと,毛髪の構造が異なるからだ。
毛髪は,表面のキューティクル層(Cuticle),内部層(Cortex),芯の部分の髄質層(Medulla)からなるのだが,人間の髪の場合,髄質は小さいため(場合によっては存在しない),Marschnerモデルでは髄質層は無視してシミュレーションを行っている。
今回の研究では,毛髪を2重の円筒の組み合わせと定義して,髄質の影響をできるだけ忠実に反映したレンダリングを目指している。
構造が違うから,計算内容も変わってくる。Marschnerモデルでは,
表面で反射した光 R
内部を透過した光 TT
内部に入って内面で反射した光 TRT
といった光を演算して髪の毛の状態を表現していく。図や記号を見ても「?」な人は,反射がRで透過がTと置き換えて追ってみよう。
それに対し,今回のモデルでは髪の毛を2層構造として扱っているため,R,TT,TRTなどはもちろん,
TttT
TrT
TtrT
TttRttT
などさまざまな状態が加わってくる。ちなみに小文字は,髄質での反射・透過を意味している。ほかにも,
TtrtRT
などいろんな状態が考えられるというのは簡単に想像つくだろう。
スライドでは各種動物の毛を分析した結果が示されていたが,これは縦に張った毛髪に光を当て,縦横方向に散乱される光を計測したものだ。横方向は0度〜180度,縦方向は10度〜50度の範囲が計測されている。散乱されている光の状態を見ると,角度によって意外なくらいクセのあるパターンが示されている。
前出の図のように,動物の種類ごとに特性も変わってくる。それをパラメータ化してまとめたものが以下の表になる。
これらのパラメータでシミュレーションをすればそれぞれの特徴を反映した毛皮がレンダリングできるという理屈になるのだが,はっきり言ってかなり複雑な演算となるのは想像できるだろう。そこで,散乱成分は事前計算でテーブル化しておき,実行時に参照するようなシステムが作られている。
お待ちかねのその結果はというと,以下のようなものとなる。
髄質で反射されることで散乱成分が多くなるためか,全体に毛づやが増している感じになっていることが分かる。より艶やかなもふもふが表現できているわけだ。
今後の課題としては,リアルタイム化や例外部分の処理,効率のよい散乱表現の確立などが挙げられていた。現状では重すぎてリアルタイム処理とはほど遠いのだが,やがてはリアルタイムに落ちてくるのではないかと期待される。
こういった手法が確立すれば,動物の表現はこれまで以上にリアルになることが期待でき,ゲームはもちろんバーチャルペットや動物園のようなものも凄いモノが実現できそうで,今後が非常に楽しみな研究といえるだろう。
SIGGRAPH ASIA 2015公式サイト
- この記事のURL: