“新境地”の土台構築と、新たな問題への挑戦

前編で述べたようにMarschnerモデルはその時代のヘア・レンダリングの最先端をゆく技術として世界に知れ渡り、その結果としてヘア・レンダリングに関心のある優秀な才能のもち主が次々に同氏の研究室の扉を叩くことになった。Marschner 氏はこれらの若き才能をうまく導きながら、毛の表現の“新境地”ともいえる数々の新たな技法を発表していった。研究室を開設してからの数年間は、このような新境地の土台を固める時期だったといえる。

毛の質感の特徴は、“色”と“輝き”によって決定される。Marschnerモデルの真髄は、毛の輝きを物理的に正確にモデル化したところにあった。黒髪のように毛の内部に入り込んだ光がすべて吸収されてしまう場合には、毛の表面には1種類のハイライトしか現れない。ハイライトは、毛の繊維に並行な断面上でモデル化できる。これ対して黒髪以外では、毛の内部で光が散乱することによって、毛の表面に黒髪の場合のハイライトとは違った、2種類目のハイライトが現れる。従来のKajiya-Kayモデルではこのようなハイライトは生成できなかったのだが、Marschnerモデルは毛の繊維に垂直な断面上で、2種類目のハイライトをモデル化することに成功したのだ。

しかし、毛の“色”に関しては、Marschnerモデルだけでは解決できない問題が残されていた。なぜなら人間の目が知覚する毛の色とは、一本一本の毛の色ではなく、毛が密集した領域全体(ヘア・ボリューム)の色であるからだ。Marschnerモデルはあくまで光と一本の毛との干渉をモデル化したもので、毛の色を正確に算出するためには、光とヘア・ボリュームの干渉も物理的に正確にモデル化する必要があった。とくに金髪のような明るい色の毛の場合には、光と一本の毛が干渉した際に、毛を透過する光の割合が非常に高い。その結果として、光はヘア・ボリューム内で散乱を繰り返すことになる。このようなヘア・ボリューム内での複数散乱(マルチ・スキャタリング)が作り出す効果を、いかに正確に、なおかつ効率よく生成するかが、よりリアルな毛を表現するための鍵となる。Marschner氏らが次に取り組んだのは、まさにこの問題だった。

明るい色の毛のリアリズム

ヘア・ボリューム内で散乱を繰り返した光が作り出すエフェクトを物理的に正確にモデル化する試みは、2006年にJonathan Moon氏とMarschner氏が共著で発表した論文に初めて登場した。この論文の最大の意義は、金髪のような明るい毛の色を正確に作り出すためにはヘア・ボリューム内でのマルチ・スキャタリングの正確な計算が不可欠であること、およびヘア・ボリューム内のマルチ・スキャタリングは他のボリューメトリックな媒体内(たとえば皮膚など)のマルチ・スキャタリングとは違った特徴をもっていることを理論的に示したところにあった。金髪のような明るい色の毛は、内部を透過する光の割合が非常に高い。その結果として、明るい色のヘア・ボリューム内では光が何度も散乱を繰り返す。なおかつ、光は散乱を繰り返しながら、前ヘ前へと進もうとする。

通常のボリューメトリックな媒体内で散乱を繰り返した光は、ディフュージョンという現象を起こし、ある特定方向への優位性を保ちながらも、一様にランダムな方向に散乱しようとする傾向をもつようになる。このことが、マルチ・スキャタリングの効果をシンプルな関数としてモデル化するために大きく貢献していた。しかしヘア・ボリューム内のマルチ・スキャタリングに関しては、このディフュージョンという現象が起こりえないため、その効果をシンプルな関数としてモデル化することは非常に難しい。実際のところ前述の論文でも、ボリューム・フォトンマッピング法の考え方を応用したシミュレーション的な方法論を採用しており、それゆえに計算負荷はかなり重かった。

このようなジレンマを解決するために、Moon氏とMarschner氏が2008年のSIGGRAPHで発表したのがSH基底関数(Spherical Harmonics)を導入して計算の効率化を図る方法だった。ボリューム・フォトンマッピング法と同様に、この方法でも、まずは光源を発した光がボリューム内で散乱を繰り返して作り出す効果を前計算し、ボリューム内の各地点に記録しておく。ただし、ここではその記録データをSH基底関数の係数という形に変換しておく。その一方で、光が一本一本の毛の表面でどのように散乱されるかという特徴(実質的にはMarschnerモデルの関数)もSH基底関数の係数という形に変換しておく。このような変換を事前に行っておくと、レンダリング時には、これら両者のSH基底関数の係数を掛け合わせるだけで、ボリューム内の任意の地点におけるマルチ・スキャタリングの効果を算出できるのだ。フォトンマッピング法を用いた場合と比較して、ほぼ同じ精度のレンダリング結果を1/10の計算速度で作り出すことができるという。

前述したように、Marschnerモデルを最初に実用化したのはWeta Digital社であった。このSH基底ベースのマルチスキャタリング・モデルに関しても、その実用化に最初に王手をかけたのはWeta Digital社だった。同社は『アバター』(2009)においてSH基底ベースのライティング・モデルを自社開発した。このライティング・モデルと、前述のSH基底ベースのマルチスキャタリング・モデルは非常に相性がよかった。実際のところ『猿の惑星:創世記(ジェネシス)』(2011)では、チンパンジー、ゴリラ、オラウータンなどの毛の表現に、SH基底ベースのマルチスキャタリング・モデルの考え方を導入した手法が適用された。これらの動物の毛は総じて暗く短いものだったので、ヘア・ボリューム内のマルチ・スキャタリングを考慮することが絶大な効果をもたらすわけではなかった。しかし、将来的なプロジェクトでの本格的な実用化に向けた試験的意味合いもあったようで、現在もこの手法に対するさらなる改良が社内で重ねられているそうだ。

図A

"Inverse Rendering in (Jonathan Moon & Stephen Marschner, “Simulating Multiple Scattering in Hair Using a Photon Mapping Approach”, Proceedings of SIGGRAPH2006, (c)2006 ACM, Inc)


一本の毛と干渉した光の挙動は、表面反射 (R)、透過(TT)、内部散乱(TRT)という3種類に分けられる。図Aが示すように、金髪のような明るい色の毛では、3種類の挙動の中でも透過の割合が圧倒的に高い。したがって、明るい色のヘア・ボリューム内では光が散乱を繰り返す。なおかつ、どれほど散乱を繰り返しても散乱の方向性が淘汰されることはなく、前ヘ前へ向かって進むことになる(前方散乱の傾向が強い)。

図B

(Jonathan Moon & Stephen Marschner, “Simulating Multiple Scattering in Hair Using a Photon Mapping Approach”, Proceedings of SIGGRAPH2006, (c)2006 ACM, Inc)


図Bの左から1番目は、直接光の影響(=ヘア・ボリューム内で1度だけ散乱した光)のみを考慮したレンダリング結果である。このようにヘア・ボリューム内のシングル・スキャタリングのみを考慮したのでは、金髪の色が表現できないことを示している。
左から2番目は、パス・トレーシングを用いて(=ヘア・ボリューム内でのあらゆる光の経路を考慮して)レンダリングしたものである。ここではヘア・ボリューム内のシングル・スキャタリングだけでなく、マルチ・スキャタリングも考慮されているため、金髪の色が正確に表現できている。
左から3番目と4番目は、フォトンマッピング法を用いてヘア・ボリューム内のマルチ・スキャタリングを計算したもので、パラメータのwは、前方散乱の傾向の強さを決定する。wの値が大きい場合(3番目)には金髪の色が正確に表現されているが、wの値を小さくすると(4番目)金髪の色が正確に表現できなくなる。

図C

(Jonathan Moon, Bruce Walter, Steve Marschner, “Efficient Multiple Scattering in Hair Using Spherical Harmonics”, Proceedings of SIGGRAPH2008, (c)2008 ACM, Inc)


図Cは、ヘア・ボリューム内のマルチ・スキャタリングの計算(render indirect)を効率化するためのSH基底ベースのアルゴリズムを示している。ここではまず、ヘア・ボリューム全体を3Dボクセルに分割する。次に光源からレイを追跡して各ボクセルに運び込まれる光の強さを計算し、これをSH基底関数の係数(SH coefficients)として記録する。そして、ボクセル単位で記録された係数データをフィルタリングすることによって、空間全体に渡って連続的に変化する係数データを作り出す。その一方で、光と一本の毛との干渉を表す関数もSH基底関数の係数(この係数は視点方向を変数とする関数となっている)に変換しておく(SH phase function)。
このように前準備をしておくと、実際のレンダリングでは、フォトンマッピング法のように視点からのレイトレーシングを行わずとも、ボリューム内のレンダリング地点に蓄えられている光を表す係数と、この地点での毛と光の干渉を表す係数とを掛け合わせるだけで、レンダリング結果を得ることができる。

図D

(Jonathan Moon & Stephen Marschner, “Simulating Multiple Scattering in Hair Using a Photon Mapping Approach”, Proceedings of SIGGRAPH2006, (c)2006 ACM, Inc)


図Dの左2枚はフォトンマッピング法でレンダリングした画像、右2枚は図CのSH基底ベースの手法でレンダリングした画像を示している。ほぼ同じレンダリング精度でありながら、SH基底ベースの手法ではレンダリング時間が1/10にまで短縮されている。