CGで生き物の肌などを表現するときによく使われるSubsurface Scattering(以後SSSと記載)について書いていきます。
このアトリビュートをうまく扱えるとCGアセットの表現の幅が広がります。
今回のサンプルです。下の方にSSSを使ってないレンダー画像との比較も載せてます。
SSSとは?
光が半透明な物体の表面を透過し、内部で散乱した後に表面から出て行くメカニズムのこと。表面下散乱という訳語で呼ばれる事もある。by Wikipedia
手~のひらを太陽に~♪
上の画像の指と指の隙間など赤くなってるように見えると思います。これは肌の表面が赤いわけではないです。
肌の表面は半透明なので光が侵入し、内部で光が拡散して出てきた結果になります。
多くの場合内部組織の色に近い色が出ると思います。(人間の場合は体内組織の色から赤色)
これをCGで再現するのがSubsurface Scatteringです。
生き物の肌以外にも植物、大理石、ミルクなどの液体、光を通すプラスチックなどに使われます。
使用ソフトウェアとデータ
Maya 2022.5
Arnold MtoA5.3.3.1
Model Data digital emily 2
https://vgl.ict.usc.edu/Data/DigitalEmily2/
モデルはこちらからお借りしてます。
SSSの項目の紹介
Ai Standard SurfaceのSubsurface項目を見ていきましょう!
Weight
SSSをどれくらい効かせるかのパラメーターです。基本0か1かになると思います。肌に汚れがついてる場合などマスクで数値を下げる等あると思いますが、数値入力で0.5みたいな小数値を入れると現実の質感とは違ったものになってしまうので非推奨です。
Subsurface Color
表面の色を決める項目です。カラーテクスチャとよく呼ばれる、BaseのBase Colorを刺すテクスチャと同じものを刺すことが多いです。
テクスチャの作り方も無機物と同じくAlbedoと呼ばれる、影要素の入っていないテクスチャの作り方で問題ないです。
Radius
SSSの光の散乱の強度を調整する項目です。色を入れる項目ですが、RGBチャンネルの数値を見て動作しているのでテクスチャのカラースペースはsRGBではなくRawのほうがよいかと考えます。しかし見た目で調整する項目ではあるので厳格にRawである必要があるわけではないとも思います。
Scale
上記のRadiusに掛け算してSSSの強さの調整をできます。
アセット制作の際には1、または0.1等仕様のシーンスケールに合わせて固定値にしてしまった方がいいと思っています。
質感調整の際にScaleとRadiusを両方いじると沼るので注意です。
Type
現状3種類準備されています。
デフォはRandomwalkです。だいたいの場合これでいいかなと思います。
上の画像は左からDiffusion,Randomwalk,Randomwalk.v2でのレンダリング比較です。
横で並べるとrandomwalkよりrandomwalk.v2のほうが明るく光が通っているようですが、レンダー時間は二倍くらいかかっているのがわかります。
Diffusionは淵の部分が少し色が暗く混ざって濁っているように見えてしまいますね。
Randomwalkの画像だと下の板は緑色が混ざって濁っていますが、こういうのはプロダクションだとRadius Colorを調整して濁らないようにします。
Anistoropy
この項目はRandomwalkのみで動作するようです。生き物の肌を再現する場合は使わない方が自然になると思います。
ここでは説明を省きます。
業務でもかなり特殊な場合(演出的に表現を調整したい場合)くらいしか使ったことはありません。
詳しく知りたい方はArnold User Guideを見てみてください。
SSSを使って人をレンダリングしてみる
比較画像を準備してみました。
左がSSSをつけていないもの、Diffuseでレンダリングしています。
右がSSSを設定しているものです。
このスキャンモデルは少し肌の赤身が書かれているテクスチャではあるのですが、耳や鼻の影の部分を見るとSSSの方が柔らかく光が拡散してるように見えると思います。
以上がSSSの初級編になります。
上の画像をレンダーするためのSSS、Displacementの設定方法は別記事で紹介しています。
SSSもかなり調整が難しいアトリビュートです。
うまく使いこなしてアセットをよりいいものにしていけるよう勉強していきましょう!
また次回!