【コラム】

3Dグラフィックス・マニアックス

59 表面下散乱によるスキンシェーダ(3)~表面下散乱とスキンシェーダ(1)

 

59/99

ハーフライフ2の方法はあくまで簡易的でそれらしく見せるための工夫であった。

実際の人間の皮膚の陰影は、表皮に当たった光が単純に反射したり拡散したりするだけで決まらない。入射した光は表皮で反射、拡散するだけでなく、皮膚の下に浸透して皮膚下で乱反射して再び表皮から飛び出してくるものもある。皮膚の陰影は非常に複雑な光の経路の集大成によるものなのだ。

この光が皮膚下で散乱する現象を「皮下散乱」(Subskin Scattering)といい、こうした半透明物体に光が浸透して内部で散乱してから飛び出してくるような一般現象を「表面下散乱」(Subsurface Scattering)という。

また、人間の皮膚の陰影処理向けに特別設計したシェーダを「スキン・シェーダ」と呼び、このスキンシェーダの実装には表面下散乱の何らかの実装が避けられないとしている。

なお、前回までで紹介したハーフ・ランバート・ライティングと鏡面反射分布の調整による疑似的な皮膚表現は、皮下散乱こそ無視しているが、皮膚表現向けにチューニングしたということで広義にはスキンシェーダといっても間違いではないかもしれない。

表皮における反射、皮下における散乱

表面下散乱をまじめに実装しての人肌の陰影処理はとても複雑そうに思える。

しかし、要素の一つ一つを分けて考え、それぞれの要素を近似モデルや簡易的に再現していくことでなんとか実現できるかもしれない。NVIDIAはこう考え、同社のGeForce 8800シリーズ用のデモ「Adrianne」向けのスキンシェーダの開発に乗り出したのだという。

さて、皮膚は大まかに考えると、下図のように薄い脂質部分、表皮、真皮という層に分かれる。

人間の皮膚の断面図

測定によれば入射した光の6%までが脂質層までで反射してしまい、残りの94%が皮下の影響を受けるのだという。

大ざっぱに考えれば皮膚の最表層における反射と、皮膚下散乱の2つの処理に分けて考えれば実装できるのではないか、と思えてくる。

皮下散乱の概念図

脂質層における反射

まずは脂質層までに起こる反射について考えてみる。

脂質層での反射の陰影処理は、リアルタイム3Dグラフィックスでは、フォン(Phong)シェーディングやブリン(Bling)シェーディングといった反射方程式を用いるのが一般的だ。

しかし、NVIDIAによれば、皮膚面を掠めるような角度で見た場合のハイライトの出方が、ブリンシェーディングやフォンシェーディングでは、人肌の実物とは違いすぎるため、「人肌の表現には適さない」としている。

そこで、NVIDIAが選択したのはCsaba Kelemen、Laszlo Szirmay-Kalosらが2001年に発表した「A Microfacet Based Coupled Specular-Matte BRDF Model with Importance Sampling」の論文ベースのKS BRDF法だ。KSはKelemenとSzirmay-Kalosの頭文字、BRDFはBidirectional Reflectance Distribution Functionの略で、日本語訳では双方向反射率分布関数となる。

BRDFとは簡単にいうと、光がどう反射するかを光学現象に沿った考え方で一般化したものだ。BRDFの実装法としては「どう反射するか」を1つの方程式で表すことが困難な場合は、測定器を使って測定しデータテーブル(テクスチャデータ)を作成し、これをレンダリング時に参照して陰影計算に用いる方法がよくみられる。NVIDIAが実装した鏡面反射のBRDFは超微細な凹凸を表面にもつ材質の表現に適したベックマン分布(Beckmann Distribution)で、計算負荷低減のためにベックマン分布を事前計算してテクスチャデータに落とし込んでいる。

光と3Dモデルの位置関係は同じにして、見る位置を変えた場合のフォンシェーディングとKS BRDF法との比較図。正面から見た場合(上段)はあまり違いが見られないが、ハイライトの出る面を掠める角度で見た場合(下段)では明らかにハイライトの出方が違う。KS BRDF法の方がリアルだ

結局、NVIDIAの実装では、皮膚の表面の陰影計算には法線ベクトル(N)、視線ベクトル(V)、光源ベクトル(L)という三大要素の他に、鏡面反射強度(ρs)、面の粗さ(m)、屈折率(η)に配慮することになる。

ρsとmは前節でも登場したが、鏡面反射強度はハイライトの強さに相当し、面の粗さは超微細面の傾きを表す。感覚的には面の粗さは値が小さいほどハイライトが狭く鋭くなる傾向がある。屈折率ηは後述するフレネル反射の計算に用いる。

ρsとmは前節で紹介した「Analysis of Human Faces using a Measurement-Based Skin Reflectance Model」(Tim Weyrich,SIGGRAPH 2006)の顔の10個のエリアについての測定情報を参考にすればよいわけだが、NVIDIAの実装では、かなり大ざっぱにこの測定結果から適当に見繕った平均値ρs=0.18、m=0.3という定数を利用したとしている。

左が鏡面反射強度ρsの分布テクスチャ、右が面の粗さmの分布テクスチャ

左が適当に設定した平均値を用いた定数ρs,mによる結果。右は測定値ベースでρs,mの分布テクスチャを元にした結果。NVIDIAのBRDFベースの実装ではあまり大きな差はないと判断した

フレネル反射は、この連載では水面編にて解説しているが、もう一度簡単に概念をおさらいすると、水面の見え方で言えば、「水面上の映り込みと水底の見え具合いを調整するもの」という処理に相当する。一般的には入射した光が視線に対してどういう角度の時にどれだけ反射するか/屈折するかを表すものになる。

人の顔でも光と視線の角度関係によってハイライトの出方が異なるのでこれに配慮しようというわけだ。この計算には屈折率ηが大きく関わってくるうえに、実際の人間の顔では人によって部位によっても異なるとされる。NVIDIAの実装では全体の平均とされるη=1.4(法線入射での反射率としては0.028)を使用したとしている。細かいことを言えばフレネル反射の方程式は定義通りではなく、よく用いられるフレネル反射の高速近似形であるSchlickの近似式を用いている。

左が定義通りのフレネル反射計算を行った結果。右がSchlickのフレネル近似計算による結果

なお、算出したハイライトの色は、顔の画像テクスチャの色に配慮する必要はなく光源色そのままでよいとしている。つまり、光源が白色光ならばハイライトは明るい肌色ではなく、その白色でいいということになる。(続く)

(トライゼット西川善司)

59/99

インデックス

連載目次
第99回 3D立体視の解体新書 - 立体視という知覚(4)~単眼立体視と両眼立体視の有効範囲の考察
第98回 3D立体視の解体新書 - 立体視という知覚(3)~両眼立体視
第97回 3D立体視の解体新書 - 立体視という知覚(2)~単眼立体視(2)
第96回 3D立体視の解体新書 - 立体視という知覚(1)~単眼立体視(1)
第95回 人工知性でコンテンツを生成するプロシージャル技術(19)
第94回 人工知性でコンテンツを生成するプロシージャル技術(18)
第93回 人工知性でコンテンツを生成するプロシージャル技術(17)
第92回 人工知性でコンテンツを生成するプロシージャル技術(16)
第91回 人工知性でコンテンツを生成するプロシージャル技術(15)
第90回 人工知性でコンテンツを生成するプロシージャル技術(14)
第89回 人工知性でコンテンツを生成するプロシージャル技術(13)
第88回 人工知性でコンテンツを生成するプロシージャル技術(12)
第87回 人工知性でコンテンツを生成するプロシージャル技術(11)
第86回 人工知性でコンテンツを生成するプロシージャル技術(10)
第85回 人工知性でコンテンツを生成するプロシージャル技術(9)
第84回 人工知性でコンテンツを生成するプロシージャル技術(8)
第83回 人工知性でコンテンツを生成するプロシージャル技術(7)
第82回 人工知性でコンテンツを生成するプロシージャル技術(6)
第81回 人工知性でコンテンツを生成するプロシージャル技術(5)
第80回 人工知性でコンテンツを生成するプロシージャル技術(4)
第79回 人工知性でコンテンツを生成するプロシージャル技術(3)
第78回 人工知性でコンテンツを生成するプロシージャル技術(2)
第77回 人工知性でコンテンツを生成するプロシージャル技術(1)
第76回 3Dモデルの変形までが可能な動的PRT(5)~SH Exp演算の大胆な近似による高速化
第75回 3Dモデルの変形までが可能な動的PRT(4)~SH Log演算とSH Log次元における遮蔽の統合
第74回 3Dモデルの変形までが可能な動的PRT(3)~帯域調和関数(Zonal Harmonics)の導入
第73回 3Dモデルの変形までが可能な動的PRT(2)~SH LogとSH Expとは?
第72回 3Dモデルの変形までが可能な動的PRT(1)~3Dモデルの変形に対応した動的PRT技術の台頭
第71回 限定条件付き動的PRT(2)~PSF技法におけるライティング
第70回 限定条件付き動的PRT(1)~動的PRT第一段階PSF技法とは?
第69回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(4)
第68回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(3)
第67回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(2)
第66回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(1)
第65回 事前計算放射輝度伝搬(PRT)~PRTとは?
第64回 表面下散乱によるスキンシェーダ(8)~表面下散乱とスキンシェーダ(6)
第63回 表面下散乱によるスキンシェーダ(7)~表面下散乱とスキンシェーダ(5)
第62回 表面下散乱によるスキンシェーダ(6)~表面下散乱とスキンシェーダ(4)
第61回 表面下散乱によるスキンシェーダ(5)~表面下散乱とスキンシェーダ(3)
第60回 表面下散乱によるスキンシェーダ(4)~表面下散乱とスキンシェーダ(2)
第59回 表面下散乱によるスキンシェーダ(3)~表面下散乱とスキンシェーダ(1)
第58回 表面下散乱によるスキンシェーダ(2)~ハーフライフ2で採用の疑似ラジオシティライティング(2)
第57回 表面下散乱によるスキンシェーダ(1)~ハーフライフ2で採用の疑似ラジオシティライティング(1)
第56回 水面の表現(5)~大きな波
第55回 水面の表現(4)~水面のライティング(2)
第54回 水面の表現(3)~水面のライティング(1)
第53回 水面の表現(2)~動的なさざ波
第52回 水面の表現(1)~水面表現の歴史
第51回 HDRレンダリング(11)~トーンマッピング
第50回 HDRレンダリング(10)~HDRブルーム/グレア処理
第49回 HDRレンダリング(9)~HDRテクスチャ
第48回 HDRレンダリング(8)~HDRレンダーターゲット
第47回 HDRレンダリング(7)~HDRレンダリングのプロセス
第46回 HDRレンダリング(6)~HDRレンダリングの歴史と動向(2)
第45回 HDRレンダリング(5)~HDRレンダリングの歴史と動向(1)
第44回 HDRレンダリング(4)~HDRレンダリングの第三の効能
第43回 HDRレンダリング(3)~HDRレンダリングの第二の効能
第42回 HDRレンダリング(2)~HDRレンダリングの第一の効能
第41回 HDRレンダリング(1)~HDRレンダリングとは?
第40回 ジオメトリシェーダ(11)~ジオメトリシェーダを活用した新表現(7)
第39回 ジオメトリシェーダ(10)~ジオメトリシェーダを活用した新表現(6)
第38回 ジオメトリシェーダ(9)~ジオメトリシェーダを活用した新表現(5)
第37回 ジオメトリシェーダ(8)~ジオメトリシェーダを活用した新表現(4)
第36回 ジオメトリシェーダ(7)~ジオメトリシェーダを活用した新表現(3)
第35回 ジオメトリシェーダ(6)~ジオメトリシェーダを活用した新表現(2)
第34回 ジオメトリシェーダ(5)~ジオメトリシェーダを活用した新表現(1)
第33回 ジオメトリシェーダ(4)~ジオメトリシェーダのアクセラレーション的活用(4)
第32回 ジオメトリシェーダ(3)~ジオメトリシェーダのアクセラレーション的活用(3)
第31回 ジオメトリシェーダ(2)~ジオメトリシェーダのアクセラレーション的活用(2)
第30回 ジオメトリシェーダ(1)~ジオメトリシェーダのアクセラレーション的活用・ステンシルシャドウボリューム技法の影生成を加速する
第29回 影の生成(10)~改良型デプスシャドウ技法(5)
第28回 影の生成(9)~改良型デプスシャドウ技法(4)
第27回 影の生成(8)~改良型デプスシャドウ技法(3)
第26回 影の生成(7)~改良型デプスシャドウ技法(2)
第25回 影の生成(6)~改良型デプスシャドウ技法(1)
第24回 影の生成(5)~デプスシャドウ技法
第23回 影の生成(4)~ステンシルシャドウボリューム技法(2)
第22回 影の生成(3)~ステンシルシャドウボリューム技法(1)
第21回 影の生成(2)~投射テクスチャマッピング技法
第20回 影の生成(1)~3Dグラフィックスにおける2つのカゲの存在
第19回 バンプマッピングの先にあるもの(3)~セルフシャドウ付き視差遮蔽マッピング
第18回 バンプマッピングの先にあるもの(2)~視差遮蔽マッピング
第17回 バンプマッピングの先にあるもの(1)~視差マッピング
第16回 微細凹凸表現の基本形「法線マップ」(3)
第15回 微細凹凸表現の基本形「法線マップ」(2)
第14回 微細凹凸表現の基本形「法線マップ」(1)
第13回 3Dグラフィックスの概念とレンダリングパイプライン(5)
第12回 3Dグラフィックスの概念とレンダリングパイプライン(4)
第11回 3Dグラフィックスの概念とレンダリングパイプライン(3)
第10回 3Dグラフィックスの概念とレンダリングパイプライン(2)
第9回 3Dグラフィックスの概念とレンダリングパイプライン(1)
第8回 GPUとシェーダ技術の基礎知識(8)
第7回 GPUとシェーダ技術の基礎知識(7)
第6回 GPUとシェーダ技術の基礎知識(6)
第5回 GPUとシェーダ技術の基礎知識(5)
第4回 GPUとシェーダ技術の基礎知識(4)
第3回 GPUとシェーダ技術の基礎知識(3)
第2回 GPUとシェーダ技術の基礎知識(2)
第1回 GPUとシェーダ技術の基礎知識(1)

もっと見る

関連キーワード

人気記事

一覧

新着記事