MayaのBlendShaderをcgfxで書いてみた

徐々~にMaya移行し始めています。いやぁMayaさんは色んなとこでストレス溜まりますね・・・w

 

移行にあたり、少し前にMayaでリアルタイムのエフェクトを作る際に加算や減算などをビューポート上で見るにはどうするのかと思い調べてましたが、たぶんデフォルトの機能にはなさそうだったのでブレンド用のリアルタイムシェーダーを自分で書きました。

SIのようにリアルタイム用のシェーダーノードがあったら楽だったんですが(いくつか前のバージョンからこれもなくなりましたけどね…)

 

ちなみにSIではGLSLシェーダーを軽くいじってたのでMayaでもGLSLでやろうかと思いましたが

MayaでGLSLシェーダーを表示するためにはプリファレンスのレンダリングエンジン設定で

OpenGlでもDirectXでもなく「OpenGL コア プロファイル」にしないといけないというなんかよく分からない制限があったので

もうcgfxシェーダーで書くことにしました。

 

kBlendShaderというファイルをcgfxシェーダーに読み込んでもらうとこんなアトリビュートが表示されます。

複雑なことはしてない比較的シンプルなシェーダーですが、ご興味ある方はファイルの中をご覧ください。

 

加算や減算ごとにファイルを分けてしまっても良かったんですが、

SIと違いMayaの場合はディスプレイの表示状態を テクスチャデカール←→OpenGL などを簡単に切り替えられないみたいだったので、1つのシェーダーファイル内のテクニック部分に詰め込んで切り替えられるようにしました。

 

●テクニック

NoBlend … そのままブレンドなし

Alpha  … アルファブレンド

Addition … 加算合成

Subtraction … 減算合成

CutOut … アルファテストとも呼ばれるもので、一定のアルファ値よりも下だったら描画しない(これでは閾値0.5)

BlendAdd … 名前があってるのか分からないですが、アルファ抜き部分を加算、それ以外をアルファブレンドするやつです。これ1つで加算とアルファ合成を同時にできます。(PhotoshopではPNGだとアルファ抜き部分の色が制御できないので、これをやる場合はTGAなどがおすすめです)

※後ろに「_W」とついているのはそのtechniqueの両面表示(裏面カリングなし)のバージョンです。

 

●パラメータ

use Vertex Color … 頂点カラーを使いたい場合はONにして下さい

BaseMap … テクスチャを選択して下さい

Trans U , Trans V … UVスクロールを使いたい場合はここにキーを設定して下さい

use Diffuse Color … ベースのテクスチャに加えて更にカラーのアニメーションを使いたい場合はここをONにして

             その下のDiffuse Color(RGB)やalphaにキーを設定して下さい。

use X Billboard , use Y Billboard … X軸、Y軸のビルボードを使いたい場合はそれぞれONにして下さい

 

●頂点データ

position … position(デフォルトでpositionと入れてくれるので変更しないで大丈夫です)

texCoord … uv:map1(デフォルトでuv:map1と入れてくれますが、UVセットの名前を変更している場合はmap1の部分をその名前に変更して下さい)

vertexColor … (ここはデフォルト空欄になっています。頂点カラーを使う場合はこちらにcolor:colorSetと入力して下さい。カラーセット名を変更している場合はcolor:の後ろのcolorSetの部分をその名前に変更して下さい。)

 

↑この頂点データのデフォルト値の設定の仕方をご存知の方いましたら教えて下さい。

上の画像の左がビルボードOFF、右がビルボードONです。

 

青と黒のグラデの玉は黒いところまでがアルファありでそれ以外の部分はアルファ抜き設定しているテクスチャで、

テクニックをBlendAddにしています。分かりにくいかもしれないですが水色部分が加算設定になっています。

 

このシェーダーにご興味ある方はこちらからDL下さい。

 

※これらを使用して起きたトラブルや損害等の責任は負いません。

 またMaya2016の日本語版の環境でしか動作確認はしていません。


今回参考にさせてもらったサイト様

・RealtimeShader : リアルタイム・トゥーン・シェーダーを作ろう!!
http://www.comtec.daikin.co.jp/DC/UsersNotes/Ritaro/tutorial/rt_toon_shader_01

・ビルボードシェーダー (日々是実験)
http://xsiprogram.s183.xrea.com/mt/blog/2006/07/post_3.html

 

・The Cg Tutorial(本)


コメントをお書きください

コメント: 3
  • #1

    Gracia Elbert (日曜日, 22 1月 2017 09:14)


    Hi to all, how is everything, I think every one is getting more from this web page, and your views are good for new people.

  • #2

    Erminia Correia (月曜日, 23 1月 2017 11:19)


    Truly no matter if someone doesn't be aware of afterward its up to other viewers that they will help, so here it takes place.

  • #3

    August Duke (火曜日, 24 1月 2017 23:21)


    Thankfulness to my father who informed me regarding this weblog, this blog is really awesome.