2013年3月13日水曜日

Maya ParticleのOpacityをランダム明滅させる方法

カメラに水玉みたいな光の反射が入り込んだりする時とかに使います。
その他にも色々使えるけど、よく方法忘れるのでメモ。

-----------------------------------------------------------------

MayaでParticleを適当に作り、フワフワさせる。(Turbulenceとかで)

あまり数多く作ると面倒なのでRateは少な目に。

Particle AttributeからAdd Dynamic AttributeのOpacityを選択。
・Add Per Parti le Attributeを選択。

Per Particle(Array)AttributesにOpacityが現れるのでエクスプレッションエディターで選択。
・CreationとRuntime after dynamicの両方に下記エクスプレッションを加える。

seed(particleId);
opacityPP = (noise(time * 1 + particleId *1000) - 0.66) * 3 * rand(0,1);

-----------------------------------------------------------------

解説していくと。。。

seed(particleId); //値を確定するもの

opacityPP = (noise(time * 1 + particleId *1000) - 0.66) * 3 * rand(0,1);
        *1              *2                *3               *4

*1 ノイズ 明滅させる為
*2 明滅の速度
*3 Particleの1粒1粒で明滅度合いを変えるもの。
*4 明滅速度のランダム度合い

更に詳しく説明付け加えると、、


ノイズを時間×速度をParticle毎に変化を付け加え、1000はParticleの明滅に同じ値を出さないようにする為に値を増やす為で、-6.6は明滅に差をつける為。

* 3 * rand(0,1);は3の速度で1~0のランダム値を付けてParticle毎に差を出す為。


多分こんな感じです。

これをレンダリングして使う場合はParticle sampler nodeでシェーダーに繋げば良いです。

多分というのは、実はこのエクスプレッション、よく使うには使うのですが、最初に書いた人は先輩で行き詰った時に一瞬で作って頂いたものだからです。

それを自分なりに回答してみた感じなので、解説もあってるかはわかりません。
あくまで自分なりの解釈です。。すみません。

もっと自分で勉強してこういうの一瞬で作れるようにならないとですね。
頑張ります。



※もし間違っていたらご指摘頂けると大変有難いです。

こちらを参考にする方がいれば完全に正しい知識ではなく不確定な知識である事を認識してご参考下さるよう宜しくお願い致します。


あと先ほど作っている最中に気になった事を一つ。


このエクスプレッションをシェーダーに繋ぐ場合には
Particle SamplerのOpacityPPをシェーダーのTransparencyに突っ込めばOKのはずなのですが、それでは上手くいかなかったので
Particle SamplerのoutTransparencyをシェーダーのTransparencyに突っ込んだら上手くいきました。

これもOpacityPPにエクスプレッションを入れてそれを繋いだはずなのに、何故上手くいかなかったのかイマイチわかりません・・・
何かご存知の方がいらっしゃればご教授頂けると大変有難いです。


0 件のコメント:

コメントを投稿