[blender]パーティクルで放出したオブジェクトを寿命に近づくにつれ透明にする方法[ノード]

blender2.82a使用
パーティクルを使ってオブジェクトを放出出来ますが、通常だとパーティクルの寿命が来るとパッと消えてしまいます。でも、徐々に消えて欲しい場合もあるかと思います。今回はその方法を紹介します。



パーティクルの準備
今回は平面にパーティクルを設定します。
平面を追加しパーティクル新規で追加します。
設定は適当ですが、今回はパーティクルを上に飛ばしたいので、重力の影響は切っておきましょう。

パーティクルで飛ばすオブジェクトを設定
このままだとレンダリングしても平面しか表示されません。

レンダーがハローになっていますがCyclesやEeveeではレンダリング出来ません。
疑問に思っているのですが現在のCyclesやEeveeはハローやラインには対応していませんよね?ハローやラインは2.5~2.79までのblenderレンダーには対応していましたが、blenderレンダーが廃止された今何故残っているのでしょうかね?

まあそんな疑問はさておき、パーティクルのレンダリングに使えるのはオブジェクトかコレクションです。
なので飛ばすオブジェクト用にUV球を追加します。
原点にあると邪魔なので見えない所に移動させましょう。

そして平面を選択しパーティクルのレンダーでオブジェクトにしてインスタンスオブジェクトにUV球を選択しましょう。
後はお好みでオブジェクトの拡大縮小を設定したりランダム設定をしてください。



マテリアル設定
UV球のマテリアルを設定します。
先ほどの動画を見ての通り寿命が来るとパッと消えています。
それを解消するマテリアルを設定します。

UV球を選択してシェーダーエディターにします。
新規マテリアルを作ります。
今回は放射と透過をシェーダーミックスに繋いでいますが、大事なのは透過です。
シェーダーミックスの下側に透過を繋ぎます。
続いて入力→パーティクル情報ノードを追加します。
更に数式ノードを追加します。
数式ノードの上にパーティクル情報ノードのAge、下側に寿命を繋ぎ除算にしてシェーダミックスの係数に繋ぎます。
これは個々のパーティクルの発生から寿命に近づくにつれて0から1に近づくという事です。
3Dビューに戻りレンダープレビューで確認するとだんだん透明になっていくのが分かります。

マテリアルの応用
Ageを寿命で割るとだんだん1に近づきます。
しかし間にカラーランプを挟むと直線状に推移していく値を自由にコントロール出来ます。

その他にもカラーランプでパーティクルの寿命までの期間によって色を変える事も出来ます。


今回の趣旨からは若干ずれますが、ランダムに色をつけたりパーティクルの発生順に色を変える事も出来ます。
パーティクルにランダムな色をつける方法

発生順に色を変えるにはインデックスをパーティクルの総数で割った値をカラーランプに繋ぎます。今回なら数式ノードで上にインデックス、下には1000の値で除算にします。要するに0~1の値に収めるわけです。