background

いざSSS・前編

2012年03月27日(Tue)

さて。焦らしプレイも堪能したことだし、そろそろSSSの話でもやろうかな(ぉ

先日のPoser 9とPoser Pro 2012の半額セールで、晴れて最新バージョンのオーナーになったという方も多いだろう。レンダが早くなった人もいるだろうし、ウェイトマップを試してみた、という人もいると思う。そんな中で、ひょっとしたら期待の割に大したことなかった、などと誤解されているかもしれない新機能の一つがSSSなんじゃないだろうか。

自分の所感でいいなら、SSSはかなり劇的で、しかもお手軽で、わりと速くて、要するに効果的だ。正直なところIDLでライティングするより、SSSを組み込んだ方がコストパフォーマンスは高い気がする。IDLはポテンシャルを完全に引き出すにはガンマ補正が必須だし(ガンマコレクションにチェックを入れたら薄毛になったという人、ウチの過去記事を10回音読するように!)。まあSSSは適用しない材質にとってはあまり関係ないし、速度についてはマシン依存なんであくまで所感にすぎないんだけど。

そんなわけで、ざっくりと解説っぽいもの。

1. SSSとは

いままで3DCGに触れてきた人に改めて「SSSってナニ?」と尋ねたら、大抵は「えーと、よくわからないんだけど光が皮膚の中で広がって……」といった風に答えるんじゃないだろうか。それが正解で、さらに言うと、ほぼそれがすべてなんである(笑)。皮膚に限らず、外から入った光が物質の中で散乱し、表面に影響を与えるのがSubsurface Scatter(表面下散乱)だ。略してSSS。

図にするとこんな感じ。

120327-1

現実の物質には、拡散色や鏡面値といったパラメータはない。あるのは表面の粗さと反射率だ。この反射率というのは色(波長)によって異なり、どの波長をどれだけ反射するかで反射光の色、すなわち物質の色が決定する。

120327-2

表面が粗ければ拡散する光が増え、滑らかな表面ではまっすぐに反射する光が増える。これを3DCGでは拡散反射と鏡面反射に分け、それぞれのパラメータでコントロールしているわけだ。さらに、光を透過する物質ならそこに透過率と屈折率が加わる。

120327-3

光は物質に当たるといくらか反射する。表面の微細な凹凸で、鏡面反射したり拡散反射したりする。反射しなかった残りは物質の内部に入る。光がすべて物質に吸収されてしてしまえば、それは不透明な材質ということになるし、吸収されずに反対側まで進んでいけば透明な物質だ。そして光は物質の中に入るとき(というか物質と物質の境界を越えるとき)、物質の屈折率によって屈折する。光というものは直進するものだから、屈折したあとはまっすぐに進んでいくはずだ。

しかし、物質の中に不純物が含まれていると、光はそこでも反射し、または屈折し、あるいは吸収される。さらに反射した光がまた別の不純物に当たって反射し……と、光が完全に吸収されるか外部に出て行くまで、延々と反射を繰り返すことになる。

物質の内部で何度も反射した光の中のうち、何%かはもう一度物質の表面に到達する。すると、物質の表面には鏡面反射と拡散反射以外にも、考慮しなければならない成分があることになる。これが表面下散乱である。

120327-4

この表面下散乱の一番のポイントは、光が入射したところとは異なる地点から出てくる、という点だろう。何度も乱反射を繰り返す(散乱する)うちに、入射した地点から少し離れた地点まで到達しているのだ。すると、光が当たっていない部分、ほとんど当たらない部分も若干明るくなる。ただしあんまり遠い地点までは、光が吸収されてしまうのでなかなか届かない。

120327-5

表面下散乱が発生するのは、なにも人間の肌だけとは限らない。牛乳など透明度の低い液体、翡翠や大理石といった鉱物からプラスチックなど、ざまざま物質が実は内部で散乱を起こしている。

120327-6

でまあ、こういう事をざっくり言うと肌の中でなんか光が広がって……ということになるのだ。

2. PoserのSSSノードと使い分け

PoserでSSSを使用するための手順は2ステップ。

  1. SSSを使用する専用のノードをルートノードの代替拡散に接続する。
  2. レンダリングオプションでSubsurface Scatteringにチェックを入れる。
120327-7

これだけである。では、SSSを使用するノードとはどのノードだろうか。現在Poser 9(とPoser Pro 2012)のSSS関連ノードは5つある。

  • Custom Scatter
  • Scatter
  • Subsurface Skin
  • Ks_Microfacet
  • Fast Scatter

この中で、上から4つまでが今回新しく追加されたノード。Subsurface Scatteringを使用するノードは上の3つだ。Ks_Microfacet以外はLighting>Specialカテゴリの中に分類されている。順に確認していこう。

一番の大本になるのがCustom Scatterノードだ。細かいパラメータを設定することができ、自由度が高いが若干扱いにくい。SSSがどうやって計算されているかを把握していないと、狙った効果を出すのが難しい。

Custom Scatterノードに対し、より直感的に設定できるパラメータに置き換えて難しさを取り払ったのがScatterノードだ。果物、大理石、人肌、牛乳など11種類のプリセットを備え、少ない試行錯誤で手軽にSSSを扱うことができる。

Subsurface Skinノードは、Scatterノードからさらに突き詰めて人間の肌に特化したノードだ。テクスチャを繋げばそのまま使えるだけでなく、なんと鏡面反射光まで一緒に計算してくれる。

Ks_Microfacetは、実はSSSを実現するためのノードではない。Lighting>Specularカテゴリに分類されていることからも分かるように、鏡面反射のノードである。列挙したのは、Subsurface Skinノードの鏡面反射成分と同じ計算方法を使用してるからだ。上にも書いた通り、現実の物質に鏡面反射というパラメータはない。表面の粗さと反射率で鏡面反射か拡散反射かが決定する。このノードは粗さと反射率をパラメータに持ち、従来のフォンノードやブリンノードより物理的に正確な方法で鏡面反射を計算する。

Fast ScatterはPoser 6から実装されていたノードだ。SSSを計算するのではなく、シャドウマップがオブジェクトからずれて発生するという原理を利用し、SSSに似た効果を描画する。言ってみればなんちゃってSSSである。「なんちゃって○○」というと、まるで出来損ないだ、騙されたみたいな反応をするユーザもいるけど、それはお門違いだ。最初からマニュアルに「SSSを擬似的な手法でより高速に再現する機能」と書いてある。名前も高速皮下散乱だし。拡散IBLIBLと混同するのと似た勘違いである。

それはさておき。

そんなわけで、SSSを実現するには複数の方法が用意されている。人間の肌のシェーダを作るなら、だいたい次の方法になるだろう。

  • (A)Subsurface Skinノード
  • (B)Scatter+鏡面反射を計算するノード
  • (C)Custom Scatter+鏡面反射を計算するノード

この内、(C)のCustom Scatterノードはちょっと面倒くさいので、(A)か(B)を使う事になる。今のところ(B)のScatter+鏡面反射という手法を用いているのが多いかな。

というわけで、長くなったので続きは次回。
Scatterノードのパラメータを確認しながら、実際にシェーダを組んでみる予定。



Comments

ぷ、プレイだったのか(ガクガク

Name
ManiHoni #0ecWsDRU
Site
URL
Post Date
2012-03-27
Post Hour
23:20:33

Edit

わははははは~ ウソデスゴメンナサイ

Name
Kyotaro #NWbyPjWY
Site
URL
Post Date
2012-03-28
Post Hour
19:44:53

Edit

手のひらを太陽に透かしてみれば

今日幸い良い天気だったので昨晩この解説を読んでいたのを思い出し、手のひらを太陽にかざして見てみました。
なるほどこの感じをPoser(や他のCGソフト)で表現するのがSSSであったのかと確認できました。

子供の頃、鳥の羽越しに指を見るとまるでレントゲン写真で骨が透けたように見えるの思い出し、それがFast Scatterによる擬似的SSSだったのかとも(←絶対違うと思う)。

Vue関連でSSSの簡単な解説は読んだ事があったのですが、今回の解説が一番分かりやすかったです、すっきりしました。
実はPoserPro2012のWacroに付いているAdd Skin・・・というのでSSSはどんなものか試してはいました。
どうも適応前との違いが分からなかったのですが、それも解説を読んだ後見たらはっきり効果が分かりました。
之でも照明によっては充分かもと思ったくらいですが、きっと仕組みを理解して設定すればもっと良い結果が得られるのだと思います、楽しみです。
私としてはビーナスの胸像やヒスイの仏像の設定がとても興味深いです。

Name
sannzi #u2lyCPR2
Site
URL
Post Date
2012-03-30
Post Hour
00:01:07

Edit

オケラだーってミミズだーって(だったかな?

>sannziさん
そろそろ暖かくなって来ましたね~。昨日今日と、関西地方もいい陽気で太陽がまぶしいです。SSSの効果は逆光だとよく観察できますね。指先だったり耳たぶだったり。けどそれだけじゃなくて、普通に正面から光が当たっていても自然な雰囲気になるのが一番の利点だと思います。

SSSは単独での説明はそれなりに見かけますが、やはり入射光からどんな経路を辿っていくのか総括的考えていくのが一番の理解に繋がるんじゃないかな、と思います。
鳥の羽は透かして見たことがないので、どんな風にみえるのか……こんど試してみます(笑)。

胸像や仏像は全然変わった設定はしてないんですよ。
でもせっかくなので、次回にでも取り上げてみると思います。(せ、世界選手権が終わったら……)

Name
Kyotaro #NWbyPjWY
Site
URL
Post Date
2012-03-30
Post Hour
08:27:46

Edit

Post Comment

管理者にだけ表示を許可する


Trackback

※このブログにトラックバックを送信する場合、お手数ですが本文中にブログ該当記事へのリンクを含めてください。

トラックバックURL:http://rutenshikai.blog63.fc2.com/tb.php/501-eab47978



Menu

Profile

Kyotaro

確定名:Kyotaro
ネタを探しているらしい。

Categories

Calendar

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

Comments

Archives

Track back

RSS feed

Links

Search

※2011年4月6日のサーバ障害の為、エントリのアドレスが以前のものからズレています。当Blogのエントリにリンクを張っておられた方は、お手数ですがアドレスのご確認をお願い致します。

※Internet Explorer非推奨。