background

スポンサーサイト

--年--月--日(--)

上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。


最適化オプション

2012年04月11日(Wed)

DAZの春のとんちき祭りで買ったものをちょろちょろインストールしたり、それまでに落としてたフリーものをぽちぽちインストールしたり、インストールが追いつかないってことはつまり買っても使ってないってことなんだから、溜息つくぐらいなら買わなきゃいいじゃんと思いつつ、イザ使いたいブツが定価売りしてたときの、底値を知ってるからこその葛藤なんてのを考えたら押さえられるモノは押さえておいた方がいいのかなあとか、要するにあんまり目新しいことはしてなくて。

建物アイテムのテストレンダ中に、レンダリングオプションの "HDRI optimized output" って何をしてるのかなあ、とか考えたりして。

120411-01

そういやSponzaってレンダしたことなかったなあ、なんて思いついて、またまた寄り道。

Sponzaは海外のCGサイトの「みんなでGIレンダしようぜ」みたいな企画ページで使われている形状データだ。いろんな形式のファイルがフリー配布されている。よくレンダリング比較に使われていたりするので、目にした事がある人も結構いるんじゃないかな。
Radiosity competition - Sibenik Cathedral / Sponza Atrium

モデルはクロアチアにあるスポンザ宮殿で、現在は古文書館になっているらしい。いいなー。

企画ページには「条件揃えてレンダするときのルール」みたいなのがあって、建物のある緯度経度や年月日から太陽の位置を割り出して指定するようになってるんだけど、面倒臭いのでそういうのは他のソフトに任せることにする。実際、条件揃ってるレンダ画像ってあんまり見ないし。

Wavefront OBJ形式やLWO形式だとアーチ部分の多角ポリゴンがうまく読み込めなかったので、テクスチャ指定つきで読み込めた3DS形式で、41.0105%に縮小して旧Poser単位系からメートルへ換算。実際に寸法が合っているかは確認していない。

120411-02

無限光と拡散IBLの2灯で、拡散IBLには付属のsky.JPGをベタ繋ぎ。IDL使用。レタッチあり。

ちなみにIDLを使わずにライティングしてみると、ざっくりこんな感じ。

120411-03

拡散IBLのマップがベタ塗りなせいもあるけど、こういう大半直接光が当たらないシーンでは陰部分がのっぺりしてて、まともに使える絵にするには補助ライトを入れたり工夫する必要があるだろう。もうIDLのないPoserには戻れないカラダになってしまった、みたいな(笑)。

それはさておき、一枚目のライティングでトーンマッピングもガンマコレクションも使わずにレンダリングするとこんな感じになる。

120411-04

無限光はほんのちょっとだけ黄みがかった白色で400%、拡散IBLは200%。天空光に比べて太陽光が少し弱い感じだけど、あんまり上げても階調が飛びすぎるのでこれぐらいで。

で、このシーンをトーンマッピングとガンマコレクションでそれぞれHDRI optimized outputありなしでレンダし、TIFF形式とHDR形式で保存する。

結果は以下のとおり(クリックででかサイズ)。

120411-05

いっぱいあってわかりにくいかな。画像の並びはだいたいこんな感じになっている。

120411-07

最適化がHDRI optimized outputで、CGはガンマコレクション(値は2.2)。それぞれの上段がトーンマッピングなし、下段がトーンマッピング2.2。左側がTIFFで保存したもの、右側がHDRで保存してPhotoshopで開いてそのまま8ビット変換したもの。トーンマッピングを使用しているときは、テクスチャノードに手製ガンマ補正を挟んでいる。

まずガンマコレクションを使用していない上半分。TIFFとHDRで明るさがだいぶ違っている。

Poserのレンダリングは、内部では通常のPCが表示可能な1677万色を越える広い範囲で計算されている。レンダリングウィンドウの表示は、その1677万色を越えた部分を切り落としているのだ。範囲外の情報はPNGやTIFFなど従来の形式では保存されないが、HDRやOpenEXRではちゃんと保存されている。で、以前のエントリでしつこく確認したように、3DCGソフトのレンダリング結果は人間の目が感じる世界ではなく、物理的な光の量を表している。なのでHDRで保存された画像をOSX上でプレビューすると、その内容をPCが表示できる1677万色の範囲内に収め、なおかつ人間の目の感覚に近くなるよう「明るい歪み」を掛けるのだ。

ちなみにHDRIに対応したCS2以降のPhotoshopでは、HDR画像の明るさや歪み具合を調整することができる。人間の目が可変なように、シーンに応じて露光量を変更することができるわけだ。

というわけでTIFFでは失われている階調が、HDRで保存して開くと明るく歪んで見える。ところがガンマコレクションを使用している左下の4枚は、TIFFとHDRでほぼ違いがない。というかTIFF=レンダリングウィンドウの表示で、十分明るくなっている。ガンマコレクション機能によって、レンダリング結果に明るい歪みを掛けられているからである。

逆に右下の4枚、ガンマコレクションを使用して最適化オプションを使用しない場合、HDRの方は明るくなりすぎてしまっている。開いたときにかかる歪みのせいで、二重に明るくなったからだ。

つまりHDRI optimized outputオプションは、ガンマコレクションを使用した時に「内容にどれだけの歪みが掛かっているか」という情報を埋め込んでいることになる。

じゃあガンマコレクションを使用しない場合、最適化オプションは使わなくていいのかというとそうでもない。上半分の8枚はこの状態だとほとんど分からないが、PhotoshopでHDRの露光量を調整すると、最適化の有無によって暗部の階調(情報量)がずいぶん異なることがわかる。

120411-08

右部分の柱の暗いところ、最適化なしの方は階調がほとんどなくなっている。どうやら最適化オプションは暗部の情報量を多めに保存してくれているっぽい。つまり、ガンマコレクションの有無に関わらず、HDRで保存するときはHDRI optimized outputにチェックを入れてレンダするのがベターというわけだ。

果たして。

これだけ照度に差があるシーンだと、ガンマコレクションとトーンマッピングで歪み方にだいぶ差が出ている。明るさがレンダリングウィンドウで確認できるガンマコレクションの方が、使いやすいと言えば使いやすいかな。ちなみにガンマコレクションの方が色が強く出てるのは、自分のマテリアル組み替えミス。

まあどのみちマテリアルは画像のガンマ指定を総チェックしないといけないし、色味や彩度についてはPhotoshopでポストワークかけるわけで。そういう意味ではこういったいかにもIDLレンダって感じの画像は、HDR形式で保存するようにして調整はPhotoshopに丸投げしてもいいかもしれない。いくらでも色調補正できるし。

Poserのレンダリングウィンドウ上で、Photoshopの露光量みたいなリアルタイムな調整ができたら一番いいのになー。



鉱物SSS。

2012年04月03日(Tue)

デフォルトランタイムの小道具カテゴリに入っているThe Padは、確かPoser 8で追加されたアイテム群だったと思う。ライブラリからロードして、中央に配置した状態だとこんな感じだ。

120403-01

ちなみにライトはPoser 8までのデフォルト。木目の床はマテリアルカテゴリに入ってたやつを地面に適用して、影を落とさない設定にしている。レンダリング設定は自動設定の真ん中ぐらいで「ディスプレイスメントマップ使用」にチェックを入れただけだ。なんというか、色々悲惨な感じ。

120403-02

レンダ設定を手動に切り替えて、レイトレースとIDLを使用してみる。少しドス暗かったところにライトが回ったぐらいで、あんまり差はないと思う。闇雲にレンダ設定を上げる事の無意味さが、よく伝わるんじゃないだろうか。

120403-03

というわけでキチンとライティングしてみた。レイトレースシャドウ使用のスポットライトを2灯、正面と背面から当てている。この段階でIDLの実力を活かすため、手作りガンマ補正ノードをイメージマップノードに挟み込んでトーンマッピングを使用している。なのでライトは二次減衰。レンダ品質は据え置き。

要するに、ライティング超重要。

さらにマテリアルを見直す。SSSを仕込んで鏡面反射をKs_Microfacetに変更し、根本的に間違っていたディスプレイスメントを値はそのまま、ちゃんと窪みができるように演算ノードで繋ぎ直す。また、面が裏向きになっていた右耳を、とりあえず見えるところだけポリゴン編集ツールで反転させる。まだSSSはオンにはしない。

120403-04

むくんだラインがようやくすっきりした。あとはハイライトの現れ方が、エッジ部分とフラットな部分とで変化が出て、よりサラッとした質感になったかな。SSSノードはレンダリングオプションがオフの時は拡散ノードと同じ描画をするっぽい。

というわけでマテリアルも超重要だということ。

120403-05

で、SSSをオンにする。もう言うことはないね。そういえば自分、大理石と石膏を今までずっと同じものだと思い込んでいて、ようやく大理石が石灰岩で石膏は硫酸カルシウムの水和物だということを知りました。いやー、勉強になるなあ(棒

120403-06

レンダ原寸。要するに同じPoserで同じアイテムでも、ライティングとマテリアルとレンダリング設定でずいぶん見栄えが変わるということ。

最後のやつのマテリアルはこんな感じ。

120403-07(クリックででかサイズ)

ディスプレイスメントは、マップをそのまま使うと白の部分を膨張させてしまうので、反転して変位距離をマイナスにすることで、元の黒い部分が凹むようにしている。イメージマップの前に挟まってる二つのノードは以前やった手動ガンマ補正。トーンマッピングを使わないなら特に必要はない。あとは、前回やったScatterノードとKs_Microfacetのみ。

もういっこ翡翠の仏像のマテリアルはこんな感じ。ちなみにあの仏像、縮小してあるけどそれでも約50センチぐらいの大きさがある(笑)。

120403-09(クリックででかサイズ)

表面のツルツルをKs_Microfacetと反射ノードを使って出している。周囲になんにも置かれてないシーンなので、映り込みの反射マップはタイルノードで適当にでっちあげ。状況に応じてそれらしい画像に変更したらいいと思う。翡翠の色は適当に、雲ノードを繋いでムラを加えている。ライティングとレンダリング設定は胸像と同じで、本当はトーンマッピングを使ってるからガンマ補正を挟むべきなんだろうけど、どうせ単色ノードなんで面倒くさくて省略。

レイトレースバウンス4+反射+IDLなので、SSSの計算と描画もそれなりに時間がかかる。

む、難しくはないと思うんだけどなー。



いざSSS・後編

2012年03月29日(Thu)

というわけで前回の続き。

3. Scatterノードの役割

それでは一番使用頻度が高(くなるかもしれな)いScatterノードについて見ていこう。Scatterノードは代替拡散に接続する。間に他のノードを挟むのはいいけど、ルートノードの他のパラメータに接続すると計算結果が反映されないので注意しよう。プリセットのMaterialは、ここではSkin 1を選択している。Use_Material_Colorはプリセットの色を拡散色に使用するので、テクスチャを使用する場合はこのチェックを外すべし。

とりあえずテスト形状。他の値はすべて0にしておく。

120329-01

SSSを試そうとして、いきなり人物フィギュアの複雑なツリーに組み込んで、長時間レンダした挙句「効果がよくわからなーい」とか言ったことがある人は反省しよう。なんでまだ効果すらよく分かってないものに対して、そんな効率の悪い方法で時間を掛けられるのかと。

120329-02

レンダリングオプションのSubsurface Scatteringにチェックを入れると、シャドウマップとIDLの計算後、レンダリング前にSSSノードが存在するマテリアルグループだけの計算が入る。まず表面下つまり物質内部をレンダリングして、その結果を元に本レンダリング時は表面の状態がどう変化するかを計算するのだ。

120329-03

Scatterノードを適用した方は、立方体の角の部分を越えて光が側面に滲み出しているのがわかる。側面は光の当たる側が明るくなっているのに対して、正面は逆に角の周辺がわずかに暗くなっている。正面から入射した光が内部で散乱し、正面ではなく側面へ脱出してしまったためだ。

120329-04

側面(暗部)に現れる散乱光の色と量はプリセットによって異なる。Custom Scatterノードの場合は、Scatter Colorで指定することができる。

120329-05

図を見れば、側面(暗部)に現れる色と正面(明部)周辺で暗くなる色は、補色の関係にあることがわかる。出ていった光の成分だけ暗くなるのだから、当然といえば当然だろう。ということは、私たちが普段見ている肌の色は拡散色と散乱色が合わさったもので、実際の肌の色(表面色)は図の周辺部分のようにもっと青白いことになる。

Texture_Detailでは、表面色と内部色の比率を決定する。値が0のとき、Colorに接続された情報はすべて物質内部の色として扱われる。逆に1の場合、物質内部は白色で計算され、Colorに接続した色で計算された拡散光と乗算される。

120329-06

0の方は中に色が練り込まれているように見える。1の方はプリントされた柄っぽいかな。

内部散乱で決定した色は、表面に出てくる時に表面の拡散色と乗算される。ScatterノードではTexture_Detailが1の時、ちょうど接続されたColorの色を再現するように設計されている。そのためTexture_Detailが1未満の場合、中間色がColorの色よりも若干白っぽくなるので注意しよう。

さて、プリセットの一覧を見ると、散乱色の他にもにじみの幅がそれぞれ異なっていることがわかるだろう。Scatterノードでは、プリセットの材質に応じて散乱光の現れる距離も固定されている。通常のシーンでちょうど物理的に正しいにじみ幅になるように設定されているのだ。

しかし、シーンによってはオブジェクトを拡大縮小して使用する場合もある。例えば小人の世界を作る時、シーンの作りやすさを考えれば、人物フィギュアを縮小するより小道具を拡大した方が扱いやすい。しかしそのままでは、小道具の表面下散乱は拡大された後の寸法を元に計算されてしまう。これでは人物フィギュアが小さくなったようには見えない。

120329-07

このような場合に使用するのがScaleパラメータだ。小道具を二倍に拡大して1/2サイズの小人の世界を作るなら、ScatterノードのScaleを0.5にする。すると散乱光の現れる距離がそれまでの倍になる。逆に巨人の世界(小道具を50%に縮小)の場合はScaleを2.0にすると、散乱光の距離が半分になる。これによって拡大縮小されたシーンでも物理的に正しい距離で計算することができる。

120329-08

オブジェクトを拡大縮小しない場合、Scaleは単なるにじみ幅のパラメータと同じになる。プリセットのにじみ幅が気に入らない場合、このパラメータを調節することになるだろう。

120329-09

MaxErrorは散乱光を描画する時の品質を決定する。値が小さいほど精度が高く、速度が落ちる。値か大きければ精度は落ちるが速度は向上する。具体的にはSSSの計算時間ではなく、レンダリング時の時間が伸びる。特に問題なければ初期値のままでいいだろう。

4.人肌のSSSシェーダ

さて、お待ちかねの実践編。といっても、既にSSSを取り入れて試行錯誤している人にはあまり役に立たないだろう。より複雑なシェーダツリーを構築することがテクニックなら、私がやっていることは初級を通り越して初心者レベルだからだ(毒)。

というわけでM4をロード。標準マテリアル(マテリアルコレクションファイル)を当てている。

120329-10

シェーダツリーはこんな感じ。使ってないところは暗くしている。確かV4はもうちょっと複雑だったような気が……。

120329-11

頑張ってるけどP7以前ってカンジの構造だ。環境色に赤を入れ、暗い部分が赤く浮くようになっている。その分通常の拡散色に青を乗算して、明るい部分の赤色が飽和しないようにしているらしい。明るいシーンではそこそこまともに見えるものの、真っ暗な状況で赤黒い人影が現れるという、正直「使えない」構成だ。これ系のマテリアルが流行ったおかげで、キャラアイテムのMATは当てたらまず全見直しという習慣が通常ルーチンとなった(あ、前からか)。

ちなみに誤解してる人がいるかもしれないけど、私が「加算系のノード」という造語で呼んでいるのは、単なる環境色や代替拡散というわけではない。加算に対しては乗算があるわけで、何に対して乗算かというと、ライトの強度である。ライトの強度が乗算されない=真っ暗な時に真っ黒になっていない=一定の値を底上げ(加算)しているノードのことを加算系と呼んでいる。なので代替拡散に繋がれているノードも、ちゃんと陰影付けされるノードは加算とは呼ばない。マップや固定の値を単純に引っ張っていて、真っ暗闇でも描画されるのが加算系である。

何はともあれ、いらないものをばっさりと落としてみる。

120329-12

すっきりした。拡散色は白に、環境値は0にしておこう。

120329-13

あんまり見栄えが変わらないね。今までのはなんだったんだろうね(笑)。

ではここで、代替拡散にScatterノードを接続する。Scatterノードは拡散成分を計算するものなので、通常の拡散値は0にしておく。で、テクスチャをScatterノードのColorに接続。ルートノードの拡散色に繋いでる見本なんかもあるけど、自分はテクスチャシェーディングは使わないので(いちいちマップの再読み込み入って重くなるだけだし)、特に接続はしていない。鏡面は少しだけ青みがかった明るい灰色にして、元のマップとテクスチャから適当に適当にこしらえたのものを接続。ちゃんとしたスペキュラマップがあるならそれを使えばいい。

120329-14

で、レンダするとこんな感じ。目のマテリアルにも手を入れた。

120329-15

せっかくなので新ノードのKs_Microfacetを代替鏡面に接続。代わりに通常の鏡面値は0にする。

120329-16

で、レンダ。

120329-17

SSSの効果が少しキツいなー、と思ったときはScaleを少し大きくするといい。

120329-18

こんな感じかな。Ks_Microfacetの粗さを制御するマップがあれば、スペキュラももう少し見栄えがよくなると思う。たぶんblinnノードにあれこれ繋いで調整するより効果的なんじゃないかな。

果たして。

SSSで必要なことはこれだけである。何か難しいことがあっただろうか?

SSSの計算にかかる時間は、SSSを使わないときの時間に関係する。SSSを使わないときに時間がかかるなら、SSSの時間もかかるのだ。合計すればよりレンダ時間が増大することになる。マテリアルの調整でテストレンダを繰り返す時は、どうしても必須でない限りレイトレースやIDLなどは使わない方がいい。

Texture_DetailやScaleを部分的に調整したくなったら、マップを作ることになるだろう。自分で描き起こしてもいいし、既存のマップに演算ノードを繋いで作ってもいい。どこをどう調整したいかが頭の中にはっきり浮かんでいれば、無駄にノードを重ねる必要はない。本当に必要なノードだけを追加することができるはずだ。中には「本来、拡散反射と鏡面反射の区別はない」という部分を忠実に再現するため、両者を合成して代替拡散に繋いでいる強者な人もいる。何をどう取捨選択するかは個人の自由である。できるなら無駄なく効果的に、なおかつ思想の感じられるマテリアルを組みたいものである。

5. おまけ(Ks_Microfacetノード)

リクエストがあったので、Ks_Microfacetの値の変化の図。パラメータは粗さと強度しかないのでどれぐらいの値でどれぐらいのハイライトが出るのか把握しておけばいいだろう。

120329-19

中央付近と周辺部のハイライトの現れ方の違いに注目。

120329-20

つやつやな物体とさらさらな物体がこれ一つでカバーできる。応用範囲は広いと思う。

120329-21

以上。さー世界だー(何)



いざ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ノードのパラメータを確認しながら、実際にシェーダを組んでみる予定。



もうちょっと探索。

2012年03月23日(Fri)

自分でパノラマ画像を作ってみるテスト。

ざっくりライティングした背景セットを、だいたい人の目線の高さのドリーカメラで回転しながらレンダリングする。

120323-1

セットはレンダロで売ってるMerlinさんのMedieval Tavern

120323-2

で、Photoshop CS4の自動処理でパノラマ合成する。うまく合成させるためには、ある程度重なった部分がないといけないらしい。自分は画角が90度になるように焦点距離を調整して(ちなみにPoserのカメラのフィルム幅は今も1インチらしい。計算方法は過去記事のこのあたり)、30度ずつカメラを回転させながら撮っている。360度を30度で割るから合計12枚。

さらに真上と真下をレンダリング。

120323-3

極座標フィルタで変形させたものを合成、全天方向のパノラマ画像を作ってみた。

120323-4

で、前回のように球体に貼り付ける。今回はモデラで作成してみた。面は内向きに、UVも内側から見た方向と一致するようにする。

120323-5

で、カメラをぐりぐり動かして悦に入る(笑)。

全天方向をカバーするパノラマ画像にするには、それなりの解像度が必要だ。プレビュー画質で表示できるのが最大4096ピクセルなので、必然的にサイズは幅4096×高さ2048ピクセルになる。画角が90度なら、一枚の画像は高さを2048にするとして幅1024。IDLレンダで12枚撮るのにだいたい2時間ぐらいかかった。まあIDLの品質は結構ざっくりだけど。上下は別の画像を合成するので、厳密に上から下まで撮る必要はないかもしれない。上下の画像は極座標フィルタをかけるので、横方向の画像より大きい方がいい。

120323-6

ちょっと歪んでいるかなー。

メリットは、最初にレンダした画質がプレビューレンダで再現できるところ。普通の画像なのでフィルタかけたり加工したい放題だし、HDRIにすればライティング用にも使えるかもしれない。もちろん、プレビューレンダだからムービーも早い。

上手く貼れてるかなー。

難点はその場所から移動できないこと(笑)。なので本気でムービーに活用するにはどうかな、と思わなくもない。むしろ大量に使い回しできる書き割り背景みたいな感じかなあ。

そういえば初めて気付いたんだけど、Poserでムービーを作ると実際に指定したフレームから少しズレてレンダされてしまった。Poserが吐いたムービーはファイルサイズ的にもイマイチだし、イメージ連番書き出しを使ってQuickTime Pro 7のイメージシーケンスで読み込むのが一番かな。

もうちょっと真面目に合成してみたり。今度はPredatronさんのThe Monastery

120323-7

パノラマ合成をするソフトは、探してみるとそこそこあるっぽい。モノによっては何にも考えずボタンクリックすれば歪みのない画像が作成できるものもあると思う。まあそこまでする気はないので、Photoshopで修正したりするぐらいだけど。

120323-8

真上と真下はプレビュー表示だと難があるっぽい。

いろんなセットで全方位対応のリアル系ライティングさえしてしまえば、結構楽しめるかなと思う。





Menu

Profile

Kyotaro

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

Categories

Calendar

04 | 2012/05 | 06
- - 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非推奨。