チカチカと明滅するマテリアル
マテリアルグラフの全体像は以下の画像の通り。
各ノードの役割
Timeノード
毎フレーム更新される「経過時間」を返すノード。秒単位でカウントアップされる。
Multiplyノード
入力ピンAと入力ピンBを乗算した結果を返却するノード。
今回は入力ピンAに数値を入れ、入力ピンBにTime
ノードの出力をつなげる。
入力ピンAの数値を大きくすると明滅のスピードを調節することが可能(例:0.2→ゆっくりと明滅、10.0→素早く明滅)。
Sineノード
入力値θに対して sin(θ)
を返すノード。正弦波なので-1~1の間の値を返却する。
Addノード
入力ピンAと入力ピンBの値を加算するノード。
Sine
ノードで-1~1の間になった値を0~2の間にするため、今回は1.0を加算。
Multiplyノード(2つ目)
0~2の間になった値を0~1の間に変更するため、0.5を乗算。
Powerノード
Base
ピンの値をExp
ピンの値で累乗するノード。
今回はBase
ピンの値が0~1の間なので、数値を1よりも大きくすることで光の立ち上がり/減衰を鋭くすることができる。逆に1よりも小さい値をExp
ピンに入力すると緩やかな光の減衰にすることができる。
Lerpノード
以下の式に従って入力ピンAと入力ピンBの値をスライドしながら出力を制御するノード。
Output = A * (1 - Alpha) + B * Alpha
今回は1から10の間をPower
ノードからの出力にしたがって毎フレーム行き来する。したがって、少し光っている状態とかなり光っている状態を行き来しながら繰り返すようなマテリアルになる。
Aの値を0にすると、この後のMuliply
ノードに0が出力されるため、完全に消灯する瞬間を作ることができる。
Multiplyノード(3つ目)
入力ピンAにはLerpノードの出力ピンをつなぎ、入力ピンBにはConstant3Vector
ノードをつなげる。
Constant3Vector
は発光させたい色を設定する。ベクトルの大きさを大きくすれば発光は強くなる。
Constant3Vectorノード(ベースカラー用)
Lerp
ノードの入力ピンAを0にしている場合、エミッシブカラーの入力がなくなったときに表示される色。黒くすれば発光がなくなった時に暗くなり、点滅している感じになる。
Lerp
ノードの入力ピンAを0以上にしている場合はエミッシブカラーの影響であまり関係なくなる。
終わりに
あとは各ノードの数値を好みに合わせて調整すれば点滅するマテリアルの完成。
今回の構成は基本的な構成なので点滅のタイミングや光の減衰・増加パターンの変化を加えたい場合はノードを追加したり、一部を入れ替えたりすることでより多彩な表現ができるはず。