2010/12/13

アルファでアルファ抜き

リアクション: 
前回、Spriteの恐ろしさを書きましたが、今回は、比較的新しく追加されたCard/Opacityシェーダーについて書いてみようと思います。

Card/Opacity(mip)シェーダーの一部マニュアルを見てみましょう。

透明度に関連する他のシェーダを使用するときは、最終レンダリングでは木が正しく見え、枝の間から家が見える状態であったとしても、ほとんどの場合Z深度(および他のフレームバッファ)は平面の深度を含むことになります。たいていの後工程の作業では、これは望ましくありません。

この問題を解決するために、mental ray APIにはmi_trace_continueという機能が備わっています。この機能は最初のオブジェクトにヒットしたときの交差がなかったかのように、レイを継続します。カード/不透明度(mip_card_opacity)シェーダはこの機能を内部的に使用し、「標準」の透明度とmi_trace_continueの使用を切り替えて、与えられたしきい値で透明オブジェクトを作成します。


所見だけだとなんのこっちゃあまりよく分かりません。
でも、真剣に読んでいくと、なんとなくすごいシェーダーなんじゃないかと思えてきます。

要するに、レンダリング時に、透明でないといけないところが、オブジェクトの形でレンダリングされてりまう問題を、mi_trace_continueという機能で透けさせるってことがいいたいみたいです。

なので、もしかしたら。と思い試してみたところ、テクスチャのアルファで、アルファ抜きが出来ました!

2枚の板を出して、上の板に、おなじみのXSIロゴアルファ付きをPickerしてアルファを抜き出し、Card/Opacityのopacityノードに差すと抜けます。



アルファ表示では、結果はこんなありさま!



Card/Opacity(mip)シェーダーすげっす。
以前は、マスク出さないと出来なかったのに・・・。便利になったもんだ、Mental Ray。
バージョンアップしているんだなぁ。とひさびさに実感しましたw

とはいえ、あまり使うタイミングは無いかも知れませんが。

では、次は、Ambient Occlusionのアルファ抜きを書きます。

0 件のコメント: