超雑訳 Dual Scattering Approximation for Fast Multiple Scattering in Hair

Share

今日は,
[Zinke 2008] Arno Zinke, Cem Yuksel, Andreas Weber, John Keyser, “Dual Scattering Approximation for Fast Multiple Scattering in Hair”, SIGGRAPH 2008、vol.27, No.3, pp.1-10, 2003.
を読んでみることにします。
いつもながら、誤字・誤訳があるかと思いますので,指摘して頂ける場合は正しい翻訳例と共にご指摘頂けると有難いです。

Abstract

明るい色の髪を表現する場合、髪全体の色を正しく認識するためには、複数のファイバーの散乱が必要です。そこで本研究では,人間の全頭髪や類似の繊維ベースの形状に対して,複数の繊維散乱を効率的に近似する新しい手法を提案します.これまでの場当たり的なアプローチとは対照的に、本手法は物理的に正確な双方向散乱分布関数の概念に基づいており、パラメータの調整を必要とせずに物理的に妥当な結果を得ることができます。この理論モデルに基づいた積極的な単純化を行うことで、複雑な散乱効果を非常によく近似できることを示しています。unbiasedなモンテカルロ・パストレーシングと比較すると,我々の近似はほとんどの設定でフォトリアリズムを維持しつつ,少なくとも2桁以上のレンダリング時間を短縮することができます・また、時間的・空間的な複雑さは、フォトン・マッピングに基づく手法に比べてはるかに低く、民生用グラフィック・ハードウェアを搭載した標準的なPCでも、リアルタイムでリアルな結果を得ることができます。

1 Introduction

人間の髪の毛をリアルに表現するには、多重散乱を考慮することが重要な要素となります。特に密集した明るい色の髪では、多重散乱が髪の色の重要な要素となり、これは半透明の物質の表面下散乱で見られる効果と同様です。しかし残念ながら、ヘアモデルの幾何学的な複雑さとヘアボリューム内の光の相互作用の複雑さが相まって、この多重散乱効果の計算を困難にしています。単一の点光源による照明を計算するという最も単純なケースであっても、合理的な視覚的精度を得るためには、複数の異なる光路の寄与を決定する必要があります。

近年、髪の毛の多重散乱計算を高速化するために、2つの異なるフォトンマッピングに基づく手法が提案されています。これらの手法は、総当りによるパストレーシングに比べて大幅に速度が向上していますが、1つのフレームを計算するのに数時間を要し、フォトンマップを保存するために大量のメモリを必要とします。一方、リアルタイムグラフィックスでは、髪の毛の多重散乱特性は過度に単純化され、(髪の毛の繊維が円形であることの影響を完全に無視した)透明な影と、その場しのぎの拡散成分として扱われます。この極端な単純化は、物理ベースのヘアシェーダーの使用を妨げ、ヘアに鈍い印象を与えてしまいます。さらに、許容できる結果を得るためには、パラメータを厳密に調整する必要がありますが、そのリアルさには常に疑問が残ります。

この論文では、二重散乱の概念を紹介します。その概念は多重散乱の計算を2つの要素に分けます:グローバル多重散乱ローカル多重散乱です。グローバル多重散乱コンポーネントは、ヘアボリュームを通過して注目点の近傍に到達する光を計算することを目的とし、ローカル多重散乱はこの近傍内の散乱イベントを計算します。実際の毛髪繊維の物理的な散乱特性を利用して,これらの成分を計算するためのいくつかの理論的な簡略化を行いました。これにより、精度の低下を最小限に抑えながら、非常に効率的な多重散乱計算が可能になります。積極的に理論的な簡略化を行った結果、グローバル多重散乱の実装は、標準的な半透明の髪のシャドウイング技術と非常によく似たものとなり、局所的多重散乱は髪の繊維特性に由来する材質特性としてモデル化されています。

図1の上段では、パストレーシングに対する二重散乱法の異なる実装を比較しています。パストレーシング画像の計算には7.8時間かかりますが,二重散乱法を用いることで,オフライン実装では5.2分,GPU実装では14フレーム/秒にまで短縮することができます.すべてのデュアルスキャッタリング実装に必要な事前計算時間は、わずか数秒です。これらの画像からわかるように、計算時間を大幅に改善しても、視覚的な精度を維持することができます。同様に重要なのは、すべての計算が計算可能または測定可能な値に基づいていることで、以前の物理ベースの技術にあった直観的でないパラメータ調整(平滑化半径など)は必要ありません。

図1の下段は、deep opacityマップを用いて半透明の影をつけたシングルスキャッタリングのみの手法と既存のヘアシェーディング手法の結果です。シェーダーが使用するアドホックな拡散色や、影の計算に使用する不透明度の値など、パラメータを厳密に調整しても、パストレーシングのリファレンスとは大きく異なる結果となっている。これは主に、方向性、カラーシフト、連続的なぼかしなど、いくつかの重要な多重散乱効果が、これらの過度に単純化された定式化ではモデル化できないためです。したがって、我々の二重散乱近似法を用いて達成したリアリズムは、既存のリアルタイムヘアレンダリング手法を超えるものです。二重散乱は、リアルタイムヘアレンダリングを強化するためのその場しのぎの追加ではなく、物理ベースのシミュレーションであり、そのシンプルさがリアルタイム実装を可能にしていることに注意してください。


※図は, [Zinke 2008]より引用

次のセクションでは、これまでの研究の概要と、本稿で使用する用語について説明します。セクション3では、二重散乱の理論を紹介します。セクション4では,我々の様々な実装の詳細を示し,セクション5では結果を示します。最後に,セクション6で簡単な議論を行い,結論とします。

2 Background

コンピュートグラフィックスでは、ヘアモデリングとレンダリングに関する多くの研究が行われています。このセクションでは、私たちのアプローチに最も関連する技術のみをレビューし、物理ベースの手法に焦点を当てます。ヘアレンダリングのより包括的な概要については、Ward et al.の最近の調査論文[2007]を参照してください。

2.1 Prior Work

Marschnerら[2003]は、人間の髪の毛を物理的に基づいてレンダリングするという点で、画期的な研究を発表しました。この論文では、実際の髪の毛の測定結果に基づいて、髪の毛の遠距離散乱モデルを開発しました。髪の毛の繊維を、内部に色のついた誘電体の円柱としてモデル化し、そのモデルは、複数のハイライトなどの重要な単一散乱効果を考慮することができ、暗い色の髪の毛でも現実的な結果を得ることができました。

さらに研究を進めると、特に明るい色の髪を正しく認識するためには、複数の繊維の散乱が不可欠であることがわかりました。Marschnerら[2003]のアプローチを一般化し、これらの多重散乱効果を考慮した新しいモデル[Zinkeら 2004; Moon and Marschner 2006; Zinke and Weber 2007]が開発されました。

このようなより一般的な照明問題を解決するためには、パストレーシングなどの手法を用いることができますが、これはしばしば膨大な実行時間を必要とします。MoonとMarschner[2006]およびZinkeとWeber[2006]は、多重散乱を推定するために、フォトンマッピングアプローチを使用しています。どちらの方法も多くの状況でパストレーシングと同様の正確な結果を得ることができますが、計算コストが高く、高解像度の(メモリを消費する)フォトンマップを必要とします。また,これらの手法は対話的に行うことができません。Yukselら[2007]は、繊維のグローバルイルミネーションをレンダリングするための別の投影ベースの方法も提案しています。しかし,この手法では,相互反射を無視するなど,いくつかの簡略化を行っているため,精度が低下しています。

ヘアボリュームの多重散乱効果については,特にインタラクティブなヘアレンダリングのためのセルフシャドウイングに関連して,他の多くの技術が取り組んでいます[Lokovic and Veach 2000; Kim and Neumann 2001; Merten et al 2004; Bertails et al 2005; Xu et al 2006; Hadwiger et al 2006; Yuksel and Keyser 2008].しかし、これらの方法の主な欠点は、物理的な毛髪繊維の特性からは得られない、アドホックな単純化や非物理的なパラメータを使用していることです。これらの方法では、状況によっては適切な画像が得られるものの、シーンや光の状態に応じてパラメータを何度も調整する必要があります。例外として、Gupta と Magnentat-Thalmann [2005]の研究では、より複雑な散乱ベースのアプローチを提供しています。しかし、このアプローチは純粋に密度ベースであり、物理的根拠のないアドホックな体積散乱関数を使用しています。そのため,多重散乱の方向性,連続的なぼかし,微妙なカラーシフト効果などの重要な現象を捉えることができません。

ボリュームメトリックな光輸送をシミュレートするために、安価な解析的多重散乱モデルが発表されています[Kniss eet al. 2003; Premoze et al.]。 Premozeら[2004]は、関与媒質の光学的特性を考慮することにより、実用的な近似式を用いて、入射ビームの空間的および角度的な広がりなど、多重散乱光の重要な特徴を効率的に計算しています。放射伝達は、わずか数個のプロトタイプのパスサンプルに基づいて計算されます。しかし、この研究は私たちのアプローチと精神的には関連していますが、空間的に変化する毛髪繊維の高度な異方性散乱を扱うことはまだ実証されていません。

2.2 Terminology and Notation

この論文の考察には、読者にとって馴染みのない記号や用語が数多く含まれています。Marschnerら[2003]およびZinke and Weber[2007]が使用した用語と表記法に従っています。より詳細な説明については、これらの文献を参照していただきたいのですが、ここでは用語の簡単な復習と概要を説明します。

図2を参照して、毛髪繊維の接線(すなわち、毛髪繊維の中心軸を通るベクトル)を\(u\)とします。\(u\)に垂直な面が法線平面です。この法線平面内の方向を方位角と呼び、記号\(\phi\)で表します。法線面に対して形成された角度を緯度傾角といい、記号\(\theta\)で表します。また、繊維上のある点についての方向性を記号\(\omega\)で表します。したがって、任意の方向\(\omega_a\)は、緯度傾角\(\theta_a\)と方位角\(\phi_a\)で等価的に表現されます。


※図は, [Zinke 2008]より引用

ある方向\(\omega_i\)からの入射光が、別のある出射方向\(\omega_o\)に散乱する量は、双方向散乱分布関数で表されます。毛髪繊維については,Zinke and Weber [2007] が,入射角と出射角に加えて繊維の形状を考慮した非常に一般的な双方向繊維散乱分布関数を定義しています。観測者と光源が毛髪繊維から十分に離れていると仮定することで,毛髪の形状や局所的な(ニアフィールドの)形状の変化を無視することができ,その結果,簡略化された双方向曲線散乱分布関数(BCSDF),\(f_s(\omega_i, \omega_o)\)が得られます。Marschnerら[2003]によって定義された散乱関数は、1つの可能なBCSDFです。

毛髪繊維は一般的に円柱と考えられており、この円柱の境界に光が当たると、透過(T)と反射(R)のどちらかになります。したがって、TTは、光が繊維に入ってから出るまでのおおむね順方向の反射を意味し、RとTRTは、繊維を通過する前(R)または通過した後(TRT)の逆方向の反射を意味します。BCSDFの計算には、一般的にこの3つの成分が含まれ、より複雑な相互作用(TRRTなど)は無視されます。

Marschnerら[2003]とZinke and Weber[2007]に倣い、BCSDFを3つの反射タイプ\(t \in ({\rm R}, {\rm TT}, {\rm TRT})\)のそれぞれについて、縦方向の関数\(M_t\)と方位角の関数\(N_t\)の積として定式化して使用します。\(M\)は、平均\(\alpha_t\)と標準偏差\(\beta_t\)を持つ正規化されたガウス関数\(g(\alpha_t, (\beta_t)^2)\)としてモデル化され、毛髪の測定された特性に従って指定されます。\(N\)は、差角\(\theta = (\theta_o – \theta_i)/2\)と\(\phi = \phi_o – \phi_i\)の2次元テーブルであらかじめ計算されています。これらの計算の詳細については、Marschnerらの論文[2003]を参照してください。なお、本稿では、\(g(a, b)\)は、変数\(a\)で定義された単位面積のガウス関数で、ゼロ平均の分散\(b\)を持つものを指します。

3 Dual Scattering

このセクションでは、二重散乱近似の理論的基礎を紹介します。実際の人間の髪の毛の繊維の特性と現実的な人間の髪の毛のモデルを使って、複雑な物理的多重散乱現象の計算を単純化します。これらの単純化の結果、物理ベースの多重散乱の定式化を実現し、標準的なヘアシャドウイング技術と非常によく似た方法で実装することができます。

MoonとMarschner[2006]と同様に、我々のレンダリングシステムでは、髪の毛の幅に渡る照明の変化を無視して、1次元の繊維を使用しています。この形式では、点\(x\)における方向\(\omega_o\)への出射放射輝度\(L_o\)の一般的なレンダリング方程式は次のように書くことができます。

\begin{eqnarray}
L_o(x, \omega_o) = \int_{\Omega} L_i (x, \omega_i) f_s(\omega_i, \omega_o) \cos \theta_i d \omega_i \tag{1}
\end{eqnarray}

ここで、\(L_i\)は方向\(\omega_i\)からの入射放射輝度、\(f_s(\omega_i, \omega_o)\)は毛髪繊維のBCSDF、\(\Omega\)は球体上のすべての方向の集合です。入射輝度関数\(L_i(x, \omega_i)\)には、以下のような毛髪体積内で散乱するすべての光路が含まれます。

\begin{eqnarray}
L_i(x, \omega_i) = \int_{\Omega} L_d(\omega_d) \Psi(x, \omega_d, \omega_i) d\omega_d \tag{2}
\end{eqnarray}

ここで、\(L_d\)はヘアボリュームの外側から\(\omega_d\)方向に入射する光(遠方からの照射を想定)、\(\Psi(x, \omega_d, \omega_i)\)は\(\omega_d\)方向からヘアボリュームに入射した光がヘアボリューム内で散乱され、最終的に\(\omega_i\)方向から\(x\)点に到達する割合を示す多重散乱関数です。

二重散乱法の主なコンセプトは、多重散乱関数をグローバル多重散乱ローカル多重散乱という2つの成分の組み合わせとして近似することです。グローバル多重散乱関数\(\Psi^G\)は,毛髪体積内の点\(x\)の近傍に到達する放射照度を計算するために使用され,ローカル多重散乱関数\(\Psi^L\)は,\(x\)のローカルな近傍におけるこの放射照度の多重散乱を近似的に表します(図3)。したがって、多重散乱関数は、グローバル多重散乱と、さらにローカル多重散乱を経由したグローバル多重散乱の和になります。

\begin{eqnarray}
\Psi(x, \omega_d, \omega_i) = \Psi^G(x, \omega_d, \omega_i)(1 + \Psi^L(x, \omega_d, \omega_i)) \tag{3}
\end{eqnarray}

簡単にするために、被写体のヘアモデルが単一の指向性光源で照らされていると仮定して、二重散乱法を説明します。このセクションの最後に、このアプローチが他の光源タイプ、複数の光源、画像ベースの照明、グローバルイルミネーションに拡張できることを説明します。


※図は, [Zinke 2008]より引用

3.1 Global Multiple Scattering

グローバル多重散乱は、外部からの照明を髪のボリュームの奥まで浸透させることができるため、明るい色の髪には特に重要です。Marschnerら[2003]の測定によると、人間の毛髪繊維からの光散乱は、緯度方向には強い異方性がありますが、方位角方向には異方性が非常に小さいことがわかっています。人間の髪の毛は、このように方位方向にかなり広い散乱特性を持っているため、グローバル多重散乱の計算では、かなり複雑な複数の異なる光路を扱う必要があります。一方、ある点に到達する光のエネルギーは、実際の経路ではなく、経路上の散乱現象の質に依存します。統計的に独立した散乱現象を仮定すると、クラスターの他の幾何学的特性(繊維間の距離など)はすべて無視することができます。さらに、現実的な人間の毛髪モデルでは、隣接する毛髪繊維の向きに強い局所的な類似性があるため、異なる光路の確率もこの類似性を示すことになります。

これらの観察に基づいて,我々の2重散乱手法は主にシャドウパスで(\(\omega_d\)方向),単一の光路のみに沿って光散乱特性を探索るによってグローバル散乱を単純に計算し,他の可能な経路の寄与を近似するために集めた情報を使用します(図3)。シャドーパスに沿って、散乱イベントの可能なすべての散乱方向を前方散乱と後方散乱の2つのグループに分類します。これらは、元の光源に対する散乱円錐の前半分と後半分のすべての方向に対応します。

なお、毛髪繊維散乱の強いTT成分はフロントハーフコーンに含まれています。そのため、明るい色の髪のモデルでは、前方散乱が後方散乱よりもかなり強くなります。さらに、後方散乱を経て点\(x\)の近傍に到達した光路は、その点から遠ざかる方向に散乱し、その方向を反転させるためにはさらに後方散乱が必要となります。その結果、明るい色の髪では、グローバル多重散乱のうち後方散乱を含む部分は非常に少なくなります。ここでは、このような二重(またはそれ以上)の後方散乱経路を無視し、前方散乱放射のみでグローバル多重散乱を近似しています。後方散乱経路はグローバル多重散乱の計算でのみ無視され、ローカル多重散乱には含まれることに注意してください)。その結果、グローバル多重散乱を次のように近似します。

\begin{eqnarray}
\Psi^{G}(x, \omega_d, \omega_i) \approx T_f(x, \omega_d) S_f(x, \omega_d, \omega_i) \tag{4}
\end{eqnarray}

ここで、\(T_f(x, \omega)\)は総透過率で、\(S_f(x, \omega_d, \omega_i)\)はグローバル多重散乱の異なる方向への広がりを考慮しています。したがって、グローバル多重散乱を計算するには、この2つの関数を評価する必要があります。

3.1.1 Forward Scattering Transmittance

透過率関数\(T_f(x, \omega_d)\)は、点\(x\)に到達する前方散乱光路の総減衰量を与えます。したがって、透過率関数は、影路に沿った散乱イベントの数\(n\)と、各前方散乱イベントによって引き起こされる平均減衰量\({\bar a}_f(\theta_d)\)に次のように依存する。

\begin{eqnarray}
T_f(x, \omega_d) = d_f(x, \omega_d) \prod_{k=1}^{n} {\bar a}_f(\theta_d^k) \tag{5}
\end{eqnarray}

ここで、\(d_f(x, \omega_d)\)は密度係数、\(\theta_d^k\)は\(k\)番目の散乱イベントにおける緯度傾斜です。なお,\(n=0\)の場合,点\(x\)は直接照明され,透過率関数は1となります。全ての点\(x\)が密集したクラスター内にあるわけではないことを考慮して、密度係数\(d_f(x, \omega_d)\)を使用しています。したがって,図4に示すように,\(x\)の前面散乱放射照度は,すべての方向のサブセットからのみ得られることになります。密度因子は理論的には毛髪密度と\(x\)の特定の位置に依存しますが、実際には単純に一定の値(0と1の間)を使用して、全体の毛髪密度に基づいてこの因子を近似します。我々の実験では、現実的な人間の髪のモデルの場合、密度係数が0.6から0.8の間であれば、(パストレーシングの基準と比較して)現実的な結果が得られることがわかりました。本稿のすべての例では、密度係数を0.7に設定しています。

ここでは,平均減衰量\({\bar a}_f(\theta_d)\)を繊維散乱関数\(f_s\)から直接計算し,スペキュラーコーンに沿った等方的な放射による前半球の全放射量としました。

\begin{eqnarray}
{\bar a}_f(\theta_d) = \frac{1}{\pi} \int_{\Omega} \int_{-\frac{\pi}{2}}^{\frac{\pi}{2}} f_s((\theta_d, \phi), \omega) \cos \theta_d d \phi d \omega \tag{6}
\end{eqnarray}

ここで、\(\Omega_f\)は前半球上の全方向、\(\theta_d\)は散乱イベントでの直接照明の傾きです。


※図は, [Zinke 2008]より引用

3.1.2 Forward Scattering Spread

発散関数\(S_f(x, \omega_d, \omega_i)\)は、前方散乱光の最終的な角度分布を近似して、方向\(\omega_i\)から点\(x\)に入射する放射輝度の確率を求めます。毛髪繊維は広い方位角の散乱特性を持っているため、前方散乱光はわずか数回の散乱イベントの後、すぐに方位角方向にほぼ等方的になります。しかし、緯度方向の前方散乱の広がりは、依然としてかなり異方的です。そこで、方位方向の広がりには定数項\({\tilde s}_f\)を、緯度方向の成分には狭いガウス分布関数\(g\)を用いて、広がり関数を表現しています。

\begin{eqnarray}
S_f(x, \omega_d, \omega_i) = \frac{{\tilde s}_f(\phi_d, \phi_i)}{\cos \theta_d} g(\theta_d + \theta_i, {{\bar \sigma}_f}^{2}(x, \omega_d)) \tag{7}
\end{eqnarray}

ここで、\({\tilde s}_f(\phi_d, \phi_i)\)は前方散乱方向では\(1/\pi\)、後方散乱方向ではゼロで、\({{\bar \sigma}_f}^2 (x, \omega_d)\)は緯度方向の前方散乱の全分散です。繊維のBCSDFは緯度方向のガウス分布(\(M\))で表されるので,全分散は,シャドウパスに沿ったすべての散乱イベントの分散の合計として計算することができます。

\begin{eqnarray}
{{\bar \sigma}_f}^2(x, \omega_d) = \sum_{k=1}^{n} {{\bar \beta}_f}^2 (\theta_d^k) \tag{8}
\end{eqnarray}

ここで\({{\bar \beta}_f}^2(\theta_d^k)\)は、\(k\)番目の散乱イベントの平均緯度方向の前方散乱分散であり、毛髪繊維のBCSDFから直接取得されます。なお、\(n=0\)のとき、つまり繊維が直接照射されているときの単一のディレクショナルライトでは、拡散関数はデルタ関数\(\delta(\omega_d – \omega_i)\)になります。

3.2 Local Multiple Scattering

ローカル多重散乱関数は,点xの近傍における複数の散乱現象を考慮します。前方散乱のみを通過する光路は,グローバル多重散乱関数に含まれるので,ローカル多重散乱関数の光路には,少なくとも1つの後方散乱が含まれていなければなりません。この後方散乱のため、ローカル多重散乱は髪のボリュームに応じて微妙に変化しながらも、ほとんどが滑らかであるが、特に明るい色の髪のタイプでは、可視的な髪の色に大きく影響します。

我々の二重散乱法では、局所的な多重散乱と毛髪繊維のBCSDFを組み合わせ、その結果を密度係数\(d_b\)と後方散乱関数\(f_{\rm back}\)で次のように近似しています。

\begin{eqnarray}
\Psi^{L}(x, \omega_d, \omega_i) f_s(\omega_i, \omega_o) \approx d_b(x, \omega_d) f_{\rm back}(\omega_i, \omega_o) \tag{9}
\end{eqnarray}

前方散乱密度係数\(d_f\)と同様に、後方散乱密度係数\(d_b\)は、点x周辺の毛髪密度を考慮しており、実際には\(d_f\)に等しい一定の密度項を用いて近似しており、これを0.7に設定しています。なお、\(f_{\rm back}\)は\(x\)の関数ではないので、材質特性としてモデル化されていることになります。\(f_{\rm back}\)は、平均後方散乱減衰関数\({\bar A}_b\)と平均広がり関数\({\bar S}_b\)の積として定式化し、毛髪群の双方向多重後方散乱分布関数を次のように推定しました。

\begin{eqnarray}
f_{\rm back}(\omega_i, \omega_o) = \frac{2}{\cos \theta} {\bar A}_b(\theta) {\bar S}_b(\omega_i, \omega_o) \tag{10}
\end{eqnarray}

ここで,\(\theta = (\theta_o – \theta_i) / 2\)は入射角と出射角の差であり,さらに\(\cos \theta\)因子を加えることで,[Marschner et al 2003]のように光が円錐形に大まかに散乱することを考慮しています。局所的な多重散乱の影響を評価するために、平均後方散乱減衰量\({\bar A}_b\)と平均後方散乱拡散量\({\bar S}_b(\omega_i, \omega_o)\)を計算する必要があります。\(\Psi^G\)と\(\Psi^L f_s\)の定式化は、似た構造を持っていますが、これらの2つの表現は、概念的に異なることに注意してください。\(\Psi^G\)は角度放射分布をモデル化したもので、\(f_{\rm back}\)は曲線散乱項(BCSDF)の役割を果たします。

3.2.1 Average Backscattering Attenuation

制御された髪の毛のクラスタ内の点\(x\)について、平均後方散乱減衰量を計算します。現実的な髪のモデルは、隣接する髪の毛の間に強い類似性があるため、規律ある髪の毛のクラスタに対して計算された平均減衰は、局所的な多重散乱に使用するのに適した近似値です。さらに、後方散乱現象による縦方向の傾斜角のわずかな変化は、縦方向の傾斜角\(|\theta|\)の絶対値がクラスタ内のすべての繊維で同じであると仮定して無視しています。

ローカル多重散乱では、光路が点\(x\)の近傍に到達した後の部分を考慮する必要があります。ここでは、光路のこの部分で後方散乱イベントが奇数回発生する光路のみを考慮します。光路のこの部分に偶数回の後方散乱イベントがある場合、光路は光から遠ざかり、\(x\)に戻ることはありません。したがって、このような光路は局所的多重散乱に寄与しません。1つの後方散乱を含むすべての光路の平均後方散乱減衰量は

\begin{eqnarray}
{\bar A}_1(\theta) = {\bar a}_b \sum_{i=1}^{\infty} {{\bar a}_f}^{2i} = \frac{{\bar a}_b {{\bar a}_f}^2 }{ 1 – {{\bar a}_f}^2 } \tag{11}
\end{eqnarray}

です。ただし,\({\bar a}_f(\theta)\)は平均的な前方散乱減衰量、\({\bar a}_b(\theta)\)は平均的な後方散乱減衰量です。これは、鏡面円錐に沿った等方性の放射照度に対する繊維のBCSDFから、式6と同様に次のように計算されます。

\begin{eqnarray}
{\bar a}_b(\theta_d) = \frac{1}{\pi} \int_{\Omega_b} \int_{-\frac{\pi}{2}}^{\frac{\pi}{2}} f_s((\theta_d, \phi), \omega) \cos \theta_d d\phi d\omega \tag{12}
\end{eqnarray}

ここで,\(\Omega_b\)は後方の半球上の全方向です。つまり、光が\(i\)本の繊維を順方向に散乱した後、一度逆方向に散乱し、再び順方向に散乱して同じ\(i\)本の繊維を戻ってくるような経路をすべて考慮します。なお,前方散乱のない特殊なケース(\(i=0\))は,単一の散乱計算の中で個別に処理されるため,ここでは対象外としています。

3つの後方散乱を持つ光路の平均後方散乱減衰量は、以下の3重和の解析解で近似されます:

\begin{eqnarray}
{\bar A}_3(\theta) = {{\bar a}_b}^3 \sum_{i=1}^{\infty} \sum_{j=0}^{i-1} \sum_{k=j+1}^{\infty} {{\bar a}_f}^{2(i-j-1+k)} = \frac{ {{\bar a}_b}^3 {{\bar a}_f}^2 }{ (1 – {{\bar a}_f}^2 )^3} \tag{13}
\end{eqnarray}

ここでは、光が\(i\)本の繊維を順方向に散乱し、後方散乱し、\(j \lt i\)本のファイバーを順方向に散乱し、後方散乱し、\(k \gt i\)本の繊維を順方向に散乱した後、最後に後方散乱し、再び\(i-j-1+k\)本の繊維を順方向に散乱するという、それぞれのケースを考えます。人の毛髪繊維では\({\bar a}_b(\theta)\)が小さいので、後方散乱イベントが3回以上発生した経路は無視し、平均後方散乱減衰量を式11と式13の和として近似します。

\begin{eqnarray}
{\bar A}_b(\theta) = {\bar A}_1(\theta) + {\bar A}_3(\theta) \tag{14}
\end{eqnarray}

3.2.2 Average Backscattering Spread

式7の前方散乱の広がり関数と同様に、後方散乱の広がりは、一定の方位角項\({\tilde s}_b\)と縦方向の拡散を表すガウス関数の積として、次のように表します。

\begin{eqnarray}
{\bar S}_b(\omega_i, \omega_o) = \frac{{\tilde s}_b(\phi_s, \phi_o)}{\cos \theta} g(\theta_o + \theta_i – {\bar \Delta}_b(\theta), {{\bar \sigma}_b}^2 (\theta)) \tag{15}
\end{eqnarray}

ここで,\({\tilde s}_b(\phi_i, \phi_o)\)は後方散乱方向では\(1/\pi\),前方散乱方向ではゼロで,\({\bar \Delta}_b(\theta)\)は散乱現象による平均的な緯度方向のずれ,\({{\bar \sigma}_b}^2(\theta)\)は後方散乱の平均的な緯度方向の分散です。

平均後方散乱減衰量の計算と同様に、後方散乱イベントが1回と3回のすべての可能な光路を考慮し、すべての可能な光路によるシフトの加重平均を用いて平均縦方向シフト量を計算します。

\begin{eqnarray}
{\bar \Delta}_b = \frac{ {\bar a}_b }{ {\bar A}_b } \sum_{i=1}^{\infty} {{\bar a}_f}^{2i} (2i {\bar \alpha}_f + {\bar \alpha}_b) + \frac{ {{\bar a}_b}^3 }{ {\bar A}_b } \sum_{i, j, k} {{\bar a}_f}^{m}(3 {\bar \alpha}_b + m {\bar \alpha}_f)
\end{eqnarray}

ここで, \(\sum_{i, j, k}\)は\(\sum_{i=1}^{\infty} \sum_{j=0}^{i-1} \sum_{k=j+1}^{\infty}\)を示し, \(m\)は\(2 (i -j – 1 + k)\)で,\({\bar a}_f(\theta)\)と\({\bar \alpha}_b(\theta)\)は,毛髪繊維のBCSDFから得られた平均的な前方および後方散乱シフトです。同様に,平均後方散乱標準偏差は次のように計算されます。

\begin{eqnarray}
{\bar \sigma}_b = \frac{ {\bar a}_b }{ {\bar A}_b } \sum_{i=1}^{\infty} {{\bar a}_f}^{2i} \sqrt{ 2i {{\bar \beta}_f}^2 + {{\bar \beta}_b}^2 } + \frac{ {{\bar a}_b}^3 }{ {\bar A}_b } \sum_{i, j, k} {{\bar a}_f}^m \sqrt{3 {{\bar \beta}_b}^2 + m {{\bar \beta}_f}^2 }
\end{eqnarray}

ここで,\({{\bar \beta}_f}^2(\theta)\)および\({{\bar \beta}_b}^2(\theta)\)は,毛髪繊維BCSDFの平均的な前方および後方散乱分散です。これらの定式化では,個々の散乱広がりのガウス関数の和を,平均値(\({\bar \Delta}_b\))と標準偏差(\({\bar \sigma}_b\))が組み合わされた単一のガウス関数で近似しています。現実的な髪のBCSDFでは、縦方向のシフトは小さく、個々の散乱ローブは同等の標準偏差を持っているので、これは良い近似値です。実際には,上述の和に対して,以下のような解析的な近似式を用います。

\begin{eqnarray}
{\bar \Delta}_b &\approx& {\bar \alpha}_b \left( 1 – \frac{2 {{\bar a}_b}^2 }{(1 – {{\bar a}_f}^2)^2 } \right) + {\bar \alpha}_f \left( \frac{2 (1 – {{\bar a}_f}^2)^2 + 4 {{\bar a}_f}^2 {{\bar a}_b}^2 )}{ (1 – {{\bar a}_f}^2)^3 } \right) \tag{16} \\
{\bar \sigma}_b &\approx& (1 + 0.7 {{\bar a}_f}^2 ) \frac{ {\bar a}_b \sqrt{2 {\bar \beta}_f^2 + {\bar \beta}_b^2 } + {{\bar a}_b}^3 \sqrt{2 {\bar \beta}_f^2 + 3 {\bar \beta}_b^2 } }{ {\bar a}_b + {{\bar a}_b}^3 (2 {\bar \beta}_f + 3 {\bar \beta}_b ) } \tag{17}
\end{eqnarray}

3.3 General Rendering Equation

ここまでに導いた方程式は、毛髪モデルが、\(\omega_d\)が一定であるような単一方向の光源で照らされていることを前提としています。しかし、影の経路に基づいてすべてのグローバルな散乱を推定することが実用的である限り、我々の定式化は任意の光源に拡張することができます。グローバルおよびローカル多重散乱の項を組み込んだレンダリング方程式の一般的な形式を次のように書き換えることができます。

\begin{eqnarray}
L_o(x, \omega_o) = \int_{\Omega} {L_i}^{G}(x, \omega_i) f(\omega_i, \omega_o) \cos \theta_i d\omega_i \tag{18}
\end{eqnarray}

ただし,

\begin{eqnarray}
{L_i}^G(x, \omega_i) = \int_{\Omega} L_d(x, \omega_d) \Psi^G (x, \omega_d, \omega_i) d\omega_d \tag{19}
\end{eqnarray}

ここで、\({L_i}^G\)は、毛髪体積に全方向から入射し、\(x\)で\(\omega_i\)方向に向かって散乱する前のグローバル多重散乱光であり、また

\begin{eqnarray}
f(\omega_i, \omega_o) = f_s(\omega_i, \omega_o) + d_b f_{back} (\omega_i, \omega_o) \tag{20}
\end{eqnarray}

は、単一の毛髪繊維による散乱と、繊維の集合体からの後方散乱の両方を含むBCSDFです。したがって、この一般的なレンダリング方程式は、複数の光源、一般的な形状のエリアライト、全方向からの画像ベースの照明、そして髪の毛の多重散乱を含む完全なグローバルイルミネーションソリューションを扱うことができます。

4 Implementation

二重散乱近似の効率的な実装のために、式18と19の積分の順序を変えて、一般的なレンダリング方程式を次のように書き直します。

\begin{eqnarray}
L_o(x, \omega_o) = \int_{\Omega} L_d(x, \omega_d) F(x, \omega_d, \omega_o) d\omega_d \tag{21}
\end{eqnarray}

ここで,

\begin{eqnarray}
F(x, \omega_d, \omega_o) = \int_{\Omega} \Psi^G(x, \omega_d, \omega_i) f(\omega_i, \omega_o) \cos \theta_i d \omega_i \tag{22}
\end{eqnarray}

\(L_d(x, \omega_d)\)(入射放射輝度)がわかっているので、あとは関数\(F(x, \omega_d, \omega_o)\)を計算するだけで、出射放射輝度を求めることができます。この計算には主に2つのステップがあります。1つ目のステップは、グローバル多重散乱関数\(\Psi^G(x, \omega_d, \omega_i)\)を計算するために必要な情報を集め、2つ目のステップは、上記の積分を計算するシェーディングのステップです。

4.1 Computing Global Multiple Scattering

グローバル多重散乱関数は様々な方法で計算することができ、その方法の選択によって全体的な実装の速度と精度が決まります。グローバル多重散乱は、単一のプロトタイプ光路(シャドーパスに沿って)を分析することで推定されるため、グローバル多重散乱のすべての実装は、さまざまな半透明の髪のシャドーイング技術に非常によく似ています。しかし、シャドーパスに沿って透過率(または不透明度)関数を計算することを目的としたこれらの非物理的シャドーイングアプローチとは異なり、我々の二重散乱法では、他の毛髪ストランドによってブロック(シャドー)されることなく関心点に到達する直接照明の割合とともに,前面散乱透過率\(T_f(x, \omega_d)\)および前面散乱分散\({\bar s}_f^2(x, \omega_d)\)を計算します。

4.1.1 Ray Shooting

レイ・シューティングは、グローバルな多重散乱機能の最もシンプルな実装です。この手順は、レイトレースによる影の計算に非常に似ています。\(\omega_d\)方向からの照明による点\(x\)での前方散乱透過率と拡散を求めるために、\(x\)から\(\omega_d\)方向に光線を放ちます。光線がどの髪の毛とも交差しない場合、\(T_f\)は1、\({\bar \sigma}_f\)は0となり、直接照明の割合は1となる。毛束との交点がある場合には、方向照明率は0となり、式5と式8を用いて透過率と分散の値を更新します。透過率の計算(式5)では、式6の数値積分によって事前に計算された\({\bar a}_f(\theta_d)\)の1次元ルックアップテーブルを使用します。レイ・シューティング法は、正確な二重散乱近似を提供しますが、サンプリング・ノイズを除去するために、ピクセルごとに複数のレイ・サンプルが必要です。

4.1.2 Forward Scattering Maps

グローバル多重散乱の計算を高速化するために、2パスのアプローチを採用しました。まず、髪の毛のジオメトリを囲むボクセルグリッドを生成します。このグリッドの各ボクセルは,\(T_f\) と \({\bar \sigma}_f^2\) の値に加えて,方向性のある照明の割合が記録されています。最初のパスでは、各光源からグリッドに向かって光線をトレースし、その光線に沿って \(T_f\) と \({\bar \sigma}_f^2\) の値を計算します。各ボクセルの値は、そのボクセルと交差する光線に沿った値の平均によって決定されます。2つ目のパスでは,ヘアジオメトリをレンダリングし,ボクセルグリッドからの線形補間を用いてグローバル多重散乱値を求めます.今回の実装では,結果をさらに滑らかにするためにマルチサンプリングも適用しています。

前方散乱マップを使用することで、レイシューティング法に比べてレンダリング時間が大幅に短縮されます。さらに、このボクセルグリッドは、複数の光源のグローバルな多重散乱情報を同一のデータ構造内に保持することができるため、光源の数が増えるほど前方散乱マップの性能向上が顕著になります。一方で、前方散乱マップの精度や性能は、マップの解像度(ボクセルの範囲)に依存する。この論文で紹介するすべての例では、マップの解像度は0.5cmです。

4.1.3 GPU Implementation

今回のGPU実装では、半透明の髪の毛の影を計算するために開発されたディープオパシティマップ法[Yuksel and Keyser 2008]に基づいて、散乱マップを転送する同様のアプローチを使用しました。深層不透明度マップ法は,最小限の計算コストとメモリコストで高品質な結果を得ることができるため,他の選択肢の中からこの方法を選びました。

ディープオパシティマップと同様に、最初のパスではライトの視点からデプスマップをレンダリングします。このデプスマップは2回目の処理で、ヘアスタイルの形状に合わせてマップレイヤーを形成するために使用されます。そのため、光源で照らされた髪のボリュームを、非常に少ない数のレイヤーで正確にサンプリングすることができます。最後の3回目の処理では、マップを使ってグローバル多重散乱値を求め、最終的なヘアイメージをレンダリングします。

ディープオパシティマップ法で提案されているように、各マップピクセルに1つのオパシティ値を保持するのではなく、7つの値を保持します。RGBの各色チャンネルの\(T_f\)と\({\bar \sigma}_f\)の値、および直接照明の割合の7つの値を保存します。そのため、各レイヤーには、7つの値をすべて保存するための2つのテクスチャが必要となります。ディープオパシティマップ法の効率の良さから、8つのテクスチャに格納される4つのレイヤーだけで、高品質な結果を得ることができます。最新のコンシューマーグラフィックスカードは、複数のドローバッファを使用して、これらの8つのテクスチャを1回の処理で生成することをサポートしています。しかし、私たちの(旧世代の)GPU実装では、1パスあたり4つのテクスチャを出力し、2パスでマップを生成しています(オリジナルのディープオパシティマップの実装に比べて1パス追加)。

4.2 Shading Computation

グローバルな多重散乱情報が収集されると、シェーディングステップは式22の残りの積分を計算します。このステップは、二重散乱のすべての実装で同じです。式22の計算は、点\(x\)が他の髪の毛でブロック(影)されることなく直接照明を受けているかどうかに応じて異なり、これはグローバル多重散乱情報の直接照明分数の値によって決定されます。

点\(x\)が直接照明を受ける(すなわち、影の経路に沿って散乱イベントが発生しない)場合、式22の積分は\(f(\omega_d, \omega_o) \cos \theta_d\)と評価されます。ここで\(f(\omega_d, \omega_o)\)は、式20で与えられた単一の散乱成分と平均後方散乱成分\(f_{\rm back}\)の合計です。単一の散乱成分の計算は,[Marschner et al. 2003]および[Zinke et al. 2004]と同じであり,ガウス関数としてモデル化された縦方向の散乱関数\(M\)に,事前に計算された方位方向の散乱関数\(N\)を乗算します。後方散乱成分\(f_{\rm back}\)は,事前に計算された\({\bar A}_b(\theta)\),\({\bar \Delta}_b(\theta)\),\({\bar \sigma}_b^2(\theta)\)のテーブルを用いて,式10から計算されます。

点\(x\)が他の髪の毛で遮られているときは、グローバル多重散乱によって照明を受けます。この場合、\(x\)にかかる方位角方向の前方散乱の広がりは等方的になり、緯度方向の前方散乱の広がりは式7で与えられるような狭いガウス関数で表されます。式22を効率的に計算するために、数値積分法を用いる代わりに、\(S_f\)と\(f\)の方位角成分と緯度方向成分を組み合わせることで結果を近似します。縦方向成分の組み合わせは、狭いガウス関数の場合、\(f_s\)と\(f_{\rm back}\)にそれぞれ組み合わせた分散\(\beta_s^2\)と\(\beta_{\rm back}^2\)を用いることで、次のように簡単に近似することができます。

\begin{eqnarray}\
\beta_s^2(x, \omega_d, \omega_i) &=& {\bar \sigma}_f^2(x, \omega_d) + \beta^2(\theta), \quad and \tag{23} \\
\beta_{\rm back}^2(x, \omega_d, \omega_i) &=& {\bar \sigma}_f^2(x, \omega_d) + {\bar \sigma}_b^2 (\theta) \tag{24}
\end{eqnarray}

ここで,\(\beta^2(\theta)\)はBCSDFの散乱ローブの分散です。方位角方向では、\(f_{\rm back}\)はすでに等方的であるため、等方的な前方散乱はこの成分には影響しません。しかし、\(f_s\)の方位角方向の成分\(N\)は、等方的な方位角方向の放射照度の下で変化します。この成分\(N^G\)を事前に計算し、以下の数値積分を用いて\(N\)と同様の2Dテーブルに格納します。

\begin{eqnarray}
N^G(\theta, \phi) = \int_{-\frac{\pi}{2}}^{\frac{\pi}{2}} {\tilde s}_f (\phi) N(\theta, \phi’) d \phi’ \tag{25}
\end{eqnarray}

なお、この方式では、毛髪繊維の弾性を無視しています。しかし、\({\tilde s}_f = 1 / \pi\)は等方性(一定)であり、\(N^G\)はフロントハーフコーンに沿って\(f_s\)を平均化したものであるため、楕円形のヘアファイバーであっても、この近似式は十分に正確です。

ほとんどの計算を高速化するために、複雑な毛髪繊維の特性を格納する、あらかじめ計算された小さなテーブルを使用しています。これらのテーブルを表1に示します。事前計算は,与えられた方程式の数値積分にすぎません。これらのテーブルに加えて,我々は,[Marschner et al.2003]または[Zinke and Weber 2007]で説明されている技術を用いて計算できる単一繊維散乱の方位角部分のための事前計算されたテーブル,\(N(\theta, \phi)\)を使用しています。


※表は, [Zinke 2008]より引用

図5は、この手順で式22を計算するための疑似コードです。この疑似コードは,BCSDFシェーディング計算を簡単に拡張したものであるため,本手法は既存の物理ベースのヘアレンダリングシステムに容易に組み込むことができます。


※図は, [Zinke 2008]より引用

5 Result

この単純化の妥当性を検証するために、我々の二重散乱近似法の結果を直接パストレーシングと比較しました。図6はそのような比較を金髪の制御されたクラスタについて影で示しています。ここでは多重散乱のみの結果を比較するために、単一散乱成分を除外しています。これらの画像からわかるように、我々の近似法は、入射光の方向に関わらず、パストレーシングと非常に類似した結果を生成します。バイアスのかかっていないパストレーシングで得られた結果と比べると微妙な違いがありますが、一般的な外観は非常に似ており、実際のヘアスタイルで発生する不規則性はそのようなエラーを隠す傾向があります。

図7のグラフは、図6のクラスターの中央部における輝度値の比較を示しています。ここでは、クラスターに沿って緯度方向と方位方向にスイープした場合の多重散乱光の平均BRDFを、様々な吸収係数について示しています。このグラフからわかるように、後方散乱の方位角方向の成分(左グラフの白い領域)はほぼ等方的ですが、緯度方向の成分は我々の定式化でモデル化されたガウス分布に似ています。非常に低い係数では近似値が正確なシミュレーション値をわずかにオーバーシュートするものの、この結果は、我々のアプローチがクラスターからの散乱に対する有効な近似値であることを示しています。


※図は, [Zinke 2008]より引用

また、毛髪繊維の散乱特性が異なる場合の二重散乱法の精度を検証しました。図8と図9は、様々な髪の色と縦方向のガウス幅(標準偏差)に対して、二重散乱が良好な近似値を提供することを示しています。繊維の光学特性(吸収など)のわずかな変化が、全体的なヘアカラーに劇的な影響を与える可能性があります。これらの図に見られるように、我々の近似式はそのような変化を正しく扱うことができます。


※図は, [Zinke 2008]より引用


※図は, [Zinke 2008]より引用

一般的な感覚にもかかわらず、複雑なモデル(細部に問題が隠されている)ではエラーを認識するのが難しく、シンプルなモデルではわずかなエラーでも表示されてしまいます。図10は、複雑なヘアモデルの例です。二重散乱はヘアモデルの局所的な対称性を利用するだけなので、私たちの仮定のほとんどはまだ有効であり、レンダリング時間を大幅に改善しながら、パストレーシングリファレンスに近いものを作成することができます。


※図は, [Zinke 2008]より引用

図11は,二重散乱のオフライン実装を,パストレーシング,単一散乱,およびフォトンマッピング(光線ベースの対局照明法 [Zinke and Weber 2006]を使用)の技術と比較したものである.これらの画像からわかるように,単一散乱では髪の毛の正しい色を再現できない暗い画像が得られる一方で,他のすべての手法ではパストレーシングと同様の結果が得られ,オフラインで実装した二重散乱ではレンダリング速度が大幅に向上しています。


※図は, [Zinke 2008]より引用

図12は,GPUを用いた二重散乱の実装からキャプチャしたフレームと,オフラインの二重散乱(レイ・シューティング)およびパス・トレーシングとの比較を示しています。この図では,3つの散乱コンポーネント(シングル,グローバルマルチプル,ローカルマルチプル)を組み合わせることで,完全な二重散乱ソリューションを実現しています。このヘアスタイルの場合,GPUによる二重散乱の実装(12 fps)は,ディープオパシティマップ[Yuksel and Keyser 2008]の実装(18 fps)と同等の性能を示しています.拡張された複数のドローバッファを使用することで,GPUベースのデュアル・スキャタリングに使用している追加のパスをなくすことができ,本手法と既存の非物理的なリアルタイム・ソリューションとの間の性能差を大幅に縮めることができます。


※図は, [Zinke 2008]より引用

6 Discussion and Conclusion

二重散乱は,毛髪における多重散乱という複雑な現象を物理的に単純化したもので,毛髪繊維の散乱特性(長手方向の狭い散乱と方位角方向の広い散乱など)と,人間の毛髪モデルの一般的な特性(繊維方向の局所的な類似性など)を利用しています。複数の散乱を局所的な部分と全体的な部分に分け、毛髪繊維からの散乱の方向性に関する異なる近似を使用することで、私たちの二重散乱アプローチは、他の正確な技術よりも桁違いに高速です。理論だけでなく、実験的な設定と現実的なケースの両方において、グランドトゥルース(パストレーシング)との比較を行うことで、我々の単純化を正当化しています。

ここで注意して欲しいのは、ここで説明したすべての計算は、物理的な根拠に基づく値に依存しているということです。すべてのパラメータは、仮想シーンにとって基本的なものであるか(\(\omega_i\)などの方向)、正確に測定して記述することができる実際の髪の特性であるか(\(\alpha\)、\(\beta\)、BCSDFの記述など)のいずれかです。唯一「ユーザーが調整可能」な項は密度係数(\(d_f\)と\(d_b\))ですが、これにも物理的な意味があり、選択の幅が限られていますし、理論的には正確に計算することができます。図13は、密度パラメータを変更したときの効果を示しています。


※図は, [Zinke 2008]より引用

この論文で紹介されている多重散乱計算の簡略化は、アドホックの外観に基づく定式化ではなく、理論的な近似値に基づいています。その結果,積極的な簡略化を行ったにもかかわらず,パラメータを調整することなく近似値を得ることができ,計算速度も大幅に向上しました。

一方で、私たちの前提を覆すような特殊な髪型を考え出すこともできます。例えば、平均経路長が大きい場合(ヘアスタイルがまばらな場合)や、減衰係数が非常に小さい場合には、ヘアスタイルのグローバル構造が重要な役割を果たし、結果が偏る傾向があります。さらに、カオスな髪のモデルでは、隣り合う髪の毛が同じような構造をしているという仮定が破られることがあります。しかし、複雑なケースであっても、我々の結果はもっともらしく、参照画像に近いものとなり、計算時間も大幅に短縮されました。

この方式の限界は,シャドーパスをすべての重要な多重散乱パスのプロトタイプとして使用することにあります.したがって,照明の空間的変化が大きい場合には,このプロトタイプパスの仮定が破られる可能性があります.例えば,髪の毛を横切って落ちてくるハードシャドウのエッジは,急激な照明の変化を引き起こすため,我々のプロトタイプ経路近似は,影の境界に沿って精度が低くなります。

ローカルな多重散乱とグローバルな多重散乱を分離することは、非常に一般的な原理であり、ヘアレンダリングの領域だけでなく、現在、雲、織布など、他の高散乱の準均質構造にも適用可能であると考えています。

Acknowledgement

和訳省略。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください