⚡
【Unity VFXGraph】稲妻を作ってみた
Visual Effect Graphを使って稲妻の表現を作ってみたので、まとめてみたいと思います。
手順1 : ラインを作る
まずは、2点をラインで結ぶような物を作ります。
- Initialize Particle StripコンテキストやOutput ParticleStrip Quadコンテキストを使ってParticle Stripを作る
- Single Burst でN個のパーティクルを一度に発生させる
- ParticleID (0~N-1)をN-1で割り、アトリビュートPathPositionとして設定
- アトリビュートPathPositionを利用して、2点を線形補間する。
手順2 : ラインに揺らぎを入れる
次に、ラインをうねらせます。
-ライン上の座標にPerlin Curl Noise 3Dで作ったノイズを加算する
-ノイズの座標(Coordinate)を時間経過でスクロールさせる
動画は以下になります。
手順3 : 根元の揺らぎを抑える
稲妻の根元の部分が大きく揺らいでいますが、これは稲妻としては不自然なので調整を加えます。
根元の部分は揺らぎを小さく抑えるようにします。
PathPositionカスタムアトリビュートとSample Curveノードを利用して、
線分の両端に近づくほど0に近づく値を作り、ノイズに乗算します。
動画は以下になります。
実際には、PowerやRemapを使って以下のようなノードを組んでいます。
手順4 : 線の太さにムラを持たせる
線の太さにムラを持たせ、より稲妻らしい見た目に近づけていきます。
ノード構成は以下のようになっています。
動画は以下になります。
手順5 : 点滅させて発光感を強める(完成)
稲妻を点滅させると、稲妻らしさが増します。
Total Timeや、Value Noise 1Dを使うことで、点滅を作ることができます。
Discussion
いつも興味深く拝見しております。
記事中「手順2 : ラインに揺らぎを入れるの部分で、よくわからない(見えない)部分があります。
・2つのVector3の値
・その後の2つのMultiplyそれぞれの3つ目の値
これらはどのような値が入っているのでしょうか?
もしよろしければそれらの値の意味合いもお伺いできますと幸いです。
■ 2つのVector3の値
Vector3 には (1.4, -3.5, 2.7)、(4.2, 2.5, 2.7)付近の値が入っていると思います。 (手元にVFXのデータが残っていないので、正確な数値はちょっと分からないです)
これらは意味のある値ではなく、揺らぎが良い感じに見えるように調整していった結果の値になります。
■ その後の2つのMultiplyそれぞれの3つ目の値
2つの3Dノイズのスクロール速さにバラつきを持たせるために3つの値を入れています。
(異なる速さのノイズを混ぜることで、複雑な動きを作ることができます)
ご丁寧にご回答いただきありがとうございました!
自分でもいろいろな数値で試してみようと思います。
VFXgraphの作例をいくつか発表なさっていますね。
shadergraph cookbookの続編として、
VFXgraph cookbookが上梓されたら大変うれしいです・・・!