2010/12/15

Ambient Occlusionのアルファ抜き

リアクション: 
アルファシリーズ第3弾は、テクスチャアルファで切り取ったオブジェクトにAmbient Occlusionを適用させるには。です。

下の図は、左から、BA_raylengthを使用したもの。
真ん中は、Card/Opacityで切り取ったものに対して、AO。
一番右は、オブジェクトの形を切り取って、AO。



当然、一番右のくりぬいた結果が正解です。

左の、BA_raylengthでは、Tracing Depthに限界が見えます。Far planeを調節して、下の方までAOを行き渡らせることが出来るみたいですが、結果があまり良くありません。

真ん中は、一見良さそうに見えるのですが、Ambient Occlusionシェーダーは、テクスチャの透明を判断しません。オブジェクトの形を見て結果を出しています。
ですので、これは正しくありません。

そこで、Final Gatheringを使用したAmbient Occlusionを設定します。
比較的新しく投入された、mib_fg_occlusionシェーダーを使用します。
このシェーダーは、FGを使い正しくray判定を行い、AOを出力するシェーダーです。



わざわざAOを出すためにFGを使用するのはバカバカしいと思いがちですが、物凄い軽いです。
Number of Raysの値は、300くらいでキャラクターアニメーションにも耐えられると思います。
もし、fgmapを出したくないのであれば、ModeをExactにすればfgmapを出力せず、ガチで計算します。
Number of Raysの値は、同じく300くらい。でも、このやり方は、重たいです。オススメしません。

シェーダーのインプット、result_when_fg_is_offは、レンダ設定のFGのチェックがオフになっている場合、このインプットを使うということがマニュアルに書いてあります。
一応、上記の画像では、Ambient Occlusionシェーダーが刺さっていますが、特に必要が無ければ、何も付けなくてもOKです。

以前、調べたときは、Softimageの記事が全く無く、mayaの記事を発見してこうやって使うんだ…。でも、FGかぁ…。
と思ってしまったのですが、骨さんのKさんに存在を教えてもらい見直したら、これでいいじゃんって事になりました。
Kさんどうもありがとう!この場を借りて感謝です。

というわけで、新しいシェーダーもなかなか使えるものがあるなぁ。と思いつつ、少しずつ解析してますが、全く何やってんだかさっぱりわからないものだらけで、マニュアルの書き方をもう少しデザイナよりにしてくれないかなぁ。と儚い願いを毎日していますw

ではでは、アルファシリーズはこの辺で終了です。
また何かあったら、書きますねー。

0 件のコメント: