rn.log

備忘録など

【シェーダーグラフメモ その41】流れるLEDライトのような表現を作る

はじめに

シェーダーグラフを利用して、流れるLEDライトのようなものを作る方法を解説します。

f:id:r-ngtm:20190113134141g:plain


サンプル

github.com

 

解説

今回の表現ですが、3枚の板を組み合わせて作っています。

f:id:r-ngtm:20190113134744g:plain

ノード全体

f:id:r-ngtm:20190113155354p:plain

作り方解説

準備: 板を作る

以下のような板を作り、 

f:id:r-ngtm:20190113142016p:plain

 

シェーダーグラフから作成したマテリアルを板に登録しておきます

f:id:r-ngtm:20190113142220p:plain

シェーダーグラフから作成したマテリアルを登録しておく

 

STEP1: 円を並べる

f:id:r-ngtm:20190113135455p:plain

 

UVに8を乗算します。

これにFractionを適用してEllipseノードのUVとして使用します。

f:id:r-ngtm:20190113135839p:plain

 

STEP2 : 円とグラデーションを乗算する

f:id:r-ngtm:20190113140639p:plain

 

UVにPosterizeノード(Steps = 8) を適用し、x成分を取り出してSTEP1の円と乗算します。

f:id:r-ngtm:20190113140714p:plain

 

STEP3 : グラデーションを動かす

f:id:r-ngtm:20190113141324g:plain

 

X座標から時間を減算し、Fractionをかけるとグラデーションがスクロールするようになります。

f:id:r-ngtm:20190113141500p:plain

 

STEP4 : 板を3倍に引き延ばす

板のx方向のスケールを3に設定します。

f:id:r-ngtm:20190113142557p:plain

当然ですが、円も引き延ばされてしまいました。

 

STEP5 : 模様を1/3倍に縮小する

x方向に3倍に引き延ばされた円を1/3倍に縮小するため、UVのx座標を3倍します。

f:id:r-ngtm:20190113142838p:plain

f:id:r-ngtm:20190113144232p:plain

STEP6 : 色を付ける(シェーダーグラフ完成)

模様に色を付けます。

f:id:r-ngtm:20190113145211g:plain

 

f:id:r-ngtm:20190113144822p:plain

 

板を正三角形のように並べれば今回の表現の基礎の完成となります。

f:id:r-ngtm:20190113150447g:plain 

 

微調整

調整1 : グラデーションを2値化する

f:id:r-ngtm:20190113150251g:plain

 

グラデーションにStepをかけると、グラデーションがくっきりとした感じになります。

f:id:r-ngtm:20190113145536p:plain

 

調整2: 円の数を変更する

PosterizeノードとMultiplyノードの数値を変更することで、円の数を変更することができます。

先ほどは8を設定していましたが、24に設定すると以下のようになります。

f:id:r-ngtm:20190113150959g:plain

f:id:r-ngtm:20190113150809p:plain

 

 

Vector1などの定数はプロパティ化すると便利

Vector1ノードをプロパティ化すると、マテリアルのInspector上から変更できるようになるので便利です。

f:id:r-ngtm:20190113151937g:plain

 

f:id:r-ngtm:20190113151911g:plain



調整3 : LEDをランダムにずらす

f:id:r-ngtm:20190113152938g:plain

 

Y座標でノイズを生成し、X座標に足すことでグラデーションがランダムにズレます。

f:id:r-ngtm:20190113152744p:plain


調整4: ランダム値を調整

バラつきが大きすぎてうるさいので、

SimpleNoiseに数値を乗算して、スクロールのバラつきを調整します。

 

0.3を乗算した場合は以下のようになります。

f:id:r-ngtm:20190113153626p:plain

 

ノードは以下のように組んでいます。

f:id:r-ngtm:20190113153434p:plain

調整5 : 円の大きさを調整(調整終わり)

円の大きさが0.5だったものを、0.4に設定すると以下のようになります。

f:id:r-ngtm:20190113154904p:plain

 

ノードは以下のように組んでいます。

f:id:r-ngtm:20190113154801p:plain