ポーザーSSSの問題点 ぱあと1
あけましておめでとうございます…なんだけど、このblogはやることは変わらない。
同じようなことを同じようにやるのである(笑)
ところで全くココログ、何を考えたのか突然設定を変えたのかなんなのか、ウチのblog半分ぐらい画像が表示されません。まーちょっとワルサな設定をしていたワタクシが悪い気もするんだけど、黙って設定いじるなよ畜生。
現在、最新版から過去に遡って修正中である。あまりに面倒で泣きそう…なのだがついでにファイルの整理も出来て万歳だと思うことにしている(苦笑)
なんて話はともかくとして、今回はワリとハードな話である。
ポーザーには"Sub Surface Scattering"なるノードが搭載されており、こいつは今までのあらゆるCGソフトのSSSと比較して圧倒的に高速なレンダリングでリアルでカッチョイイエフェクトを得られることになっているのだが、どーにもセットアップされるシェーダーツリーが変で挙動が怪しく思われたので詳しく調査したところ、ポーザーの"SSS"は驚きのなんちゃってSSSだって結論が得られてしまったのだ。
というかこれをSSSと呼ぶことが許されるのか? といってもいいレベルではなかろうか…という代物である。
その分析なぞ書こうというわけだが、SSSがなんぞやってことがわかっていなければ、当然「なんちゃって」な理由もわからない。
そこでまず「それなりにまともにSSSが実装されている」Carraraを例にとってSSSとはナンゾヤという話をしておこうってわけである。
SSSつーのは、面下拡散…などと訳されるが、これがポーザーでは「表面下分散」で珍訳の一つである(なお名誉のために書いておくと一応誤訳ではない)。
CGの世界での意味を解説すると「透明じゃないように見えても光を当てると透明度…つーか光が内部を伝って内部の色が外に滲むモノ」をシミュレーションするためのもんである。
具体的には左の図のように奇々怪々な反射とも拡散とも透過ともつかない挙動を示す代物である(図が下手なことについては文句を言わないように)。
分かりやすい例でいうと、歌ではないが手のひらを太陽に透かすと、真っ赤に流れる僕の血潮の血潮として見える赤色がSSSである。
なんでこんなもんがいるのかというと、身の回りにあるほとんどあらゆるものがこの反射つーか透過つーかともかくSSSだから。
金属とか鏡とか密度の高い特殊な物体をのぞく…言い換えるならポーザーで扱われる中心物体、すなわち有機素材のほとんどは色水の袋みたいなもんで、光が複雑怪奇な吸収・反射・屈折をしており、それをリアルに再現するために必須の処理がSSSなのだ。
ところでこのSSSはCGの世界では大変に重い処理である。当たり前のことだが、単純な反射・屈折・透明ではなく光のにじみを再現する演算なのだから今までの単純なモデルとは比較の対象にならない面倒な代物なのはすぐわかる。
ワタクシの知っている限りでコストパフォーマンスを考えると圧倒的な性能を誇るD|S+pwSurfaceでも、Carraraでも、こいつを使うと破壊的に重くなる。
つーかこれが速い演算を出来るわきゃーねえって代物でレンダラーはどうよなポーザーで今までと比べると圧倒的に高速な…とか書いてあるのを(;°ロ°)だったのだ。
実際にどんな効果を得ることが出来るかというと、たとえば左のようなシーンがあるとする。これ環境光0%になっており、上の三角がポーザーでいうスポットライトで、光は面の中央に垂直に当たっている。
こいつを左のような材質設定でSSSなしでザックリレンダリングすると、味も素っ気もない円がレンダリングされるだけである。当たり前だ。
追記しておくと、このレンダリングではスポットライトはソフトライトオフ、つまり影はシャッキリである。
これにSSSを適用するのだが、左のセットアップのようにSSSは普通内部色と呼ばれるモノを指定する(高級なソフトだともうちょっとイロイロ出来る)。
内部色は表面材質を通り越して光が滲み行ったときに現れる、人で言えば血とか組織の色ということになる(だから人の体の内部色はビミョーな暗い赤色が設定されていることが多い)。
ここでは効果をわかりやすくするために外の赤の補色として純色の緑が内部色だということにする。
デフォルト状態でレンダリングすると、左のごとき状態になる。
簡単に理解できるだろうが光が直接当たっているところは「緑+赤」で黄色になり、内部色の緑が影の部分に滲み出ている。
これを前述の図を利用して説明すると、黄色は拡散色(赤)に内部色(緑)が加算され、黄色になり、縁ではオレンジになっているわけだ。
そして拡散色が出ない(すなわち影)の部分には内部色の緑が現れる。
下に行くと緑が暗くなっていくのは"Translucency(透光度)"の数値によって光が減衰しているからである。
わかりやすく他の数値はいじらず"Translucency"だけを100%にして下から見ると、左のようにボックスの一番下まで光が透過するようになる。
このあたりのCarraraの設定は大変にわかりにくく、マニュアルにも元のobjのサイズに依存するかんね、あとはテキトーに設定しなと書いてあるだけである。テストした限りでは元のobjのバウンディングボックスに依存してこの数字は決まるらしい。
Carraraを使っていてイライラする瞬間はこのあたり。屈折率もなにもかも%表記でVueとかで水とかガラスの屈折率を物理定数で入力出来るのに慣れていると、数字がワケわかめなのには参る(とは言っても、今度はVueは移動とかで単位がわかんなくてイライラするわけだが)。
まあ、それはともかくとしてちょっとやそっとでは得られない微妙な材質感をSSSを適用することで得ることが出来るわけだ。
強い光が当たっている人の耳たぶや、はたまたミルク、それとも不透明度の高い宝石などなど極めて様々なモノに適用出来る技術なのはわかると思う。
そしてポーザーでの話をするなら透明感のある肌…なんてまさしくこれなしでは考えられないような代物で、全くもってまさにポーザーのためにあるような技術でP6で実装された時には嬉しかったのだが、反面、理論をそれなりにわかっているはずのワタクシには多大な疑問があった。
それは「どうにもポーザーのSSSは納得がイカン」ということである。
というところで長くなってきたので、他の事を書きたくならなければ次回に続く。
あと追記だけどリアル系Aiko 2日目でインジェクションの作り方の説明がいい加減で、あちこちで間違いが多発しているっぽいので説明を追加させていただいた。
何かの役に立つようなら幸いである。


Comments
あけましておめでとうございます。
昨年は、大変お世話になりました。お礼ばっかりで情けないことこの上ありませんが…(汗
今年もよろしくお願いいたします。
Posted by: おやたた | January 05, 2007 at 07:54 AM
あけましておめでとうございます(^^
INJ作成、私も当初目玉飛び出し体験しました。
まあ失敗があったから何度も試して逆に作り方の勉強になったようにも思いますw
今年もよろしくおねがいいたします。
Posted by: Henriette | January 06, 2007 at 05:38 PM
あけましておめでとうございますつーかなんつーか(笑)
なんもかわらんblogですが今年もよろしくです。エエ。
Posted by: ほげほげ | January 07, 2007 at 09:04 PM