今回はUnityのVFXやっていきます。
先週くらいに初めてVFX触りはじめて、Shader GraphやらVFXやら今更感はあります。
けど公開されてすぐだと仕様決まっていないことが多いので、執筆した項目もうないじゃんってこともよくあります。だからちょうどいいのかなっていう言い訳です
先に完成品見せます。
スッと消えていくカッチョいいUnityロゴを作成しました!
Efectは適当にいじっててもそれっぽくなるので、ポイントだけ押さえて説明していきます。
環境
Windows10
HDRP 7.4.1
VFX 7.4.1
GPU NVIDIA GeForce GTX 1650 4GB
VFXはGPUで動くらしいので、GPUも載せときます。そんなにたいしたやつではないです
作成したいもの
今回作成するものは以下の表現を組み合わせています。自分のやりたい表現があれば是非見ていってください。
・ エフェクトをメッシュの形にする
・遷移していく色
・滞留させて最後に散るエフェクト
エフェクトをメッシュの形にする
エフェクトをメッシュの形にするための準備は以下の2つです。
・メッシュを用意する
・PointCacheAssetを用意する
今回用意したメッシュはこちら
Unityのロゴです!
VFX Graphでエフェクトをメッシュの形状にするには、PointCaheノード
を利用します
次にノードにアタッチするための、PointCacheAssetを準備する必要があります。
PointCacheはメッシュの法線や位置情報をTextureにベイクしたものです Window>Visual Effects >Utilities > Point Cache Bake Tool
pCache Toolで、チェックボックスは法線、位置、色を取得するかどうか
今回は法線だけでいいので、Normalだけにチェック。
Point Countで頂点数を決めることができます。pCacheでは元々のメッシュの頂点数は関係ありません。ここのcountで決めた頂点数でエフェクトを均等配置します。メッシュをアタッチしたら、セーブして完了。(メッシュをアタッチしないとセーブボタンは出てきません)
今回は用意されている、ビルドインエフェクトを元に作成していきます。
右クリック>CreateNode
またはスペースを押すとノードを作成することができるのでSimple Swam Particle System
を選択
再生するとこんなエフェクトが出てくるので、これをカスタマイズしていきます。
まず最初にエフェクトをメッシュの形にしていきます。
元々Initialize Particleに存在するPosition(Sphere)
を削除して、Set Position from Mapノード
を生成。
外にPointCacheノード
を配置したら、先ほど作成したPointCacheAssetを割り当てます。
PointCacheノード
とSet Position from Map
のAttribute Mapを繋げます。
Gameを再生すると、これだけでメッシュの形になりました!簡単だ!
Turbulence(後述)が激しくてわかりにくいと思うので、Intensityを0.1くらいにすれば形が確認できます。
色を変化させる
Outputにノードを追加します。
Set Color over Lifeを使用
これはカラーを左から右に徐々に遷移させていくのに使います。
Set Color Random from Gradient
こっちはピッカーの中でランダムな部分が選択されます。
色ノードは人によって好みが違うので、自身で色々カスタマイズしてみてください。
ランダムに動かす・滞留させる
ランダムに動かす部分と最後に散って消える演出は同じノードで行っています。mark
既に存在する、codeUpdate ParticleのTurbulenceノードを調節します
Turbulenceノード
Turbulenceは乱気流という意味で、決まった数式によってランダム風な乱気流を再現します。
乱気流はシュミレートされているので、ランダムではありません。
Positionの中にランダムな値を入れてやることによって、完全に同じ乱気流ができるのを防ぎます。
Turbulenceノード
にはよくわからないパラメーターが多いですが、これはパーリンノイズというノイズの生成時に利用するパラメーターなので、今回説明は省略して以下に設定のみ表示します。
Intensityは乱気流のスケールで、値が大きいほど、大きく動きます。
今回は最後までメッシュの形状を残しておきたいので、Intensityはずっとゼロ推移させて
最後だけ大きくすることで滞留を表現できますよね?
以下のノードを組み合わせます。
・Intensityのプロパティ
・Age Over Life Time
・Sample Curve
・Multiply
Curveの途中、0付近のプラスマイナスをウェーブさせることで波打つように揺れます。
そして、最後にグン!っとあげると滞留&散る演出の完成です。
この方法、先日Unityステーションの「VFX Graphで何か作ろう」っていう動画内で同じ方法でやってるのを見つけて驚きました。
この組み方は、公式も使ってるし色んなところで応用が効くのでおすすめです。
その他設定は以下のとおり
Scale 0.5 0.5 0.5
Dragは調節できるようPropertyに
Octaves = 1
Frequency = 1
Roughness = 0.5
Lacunarity = 1
最後にすっと消えて欲しいのでalfa over lifetimeノードを追加します。
カーブはこんな感じ
最後に完成したノードを全て載せておきます
まとめ
エフェクトをメッシュの形にすること
色の遷移
滞留&時間による変化
短時間でこんなクオリティのものが簡単に!ノードベース最高!
今回初めてyoutebeの埋め込み機能付けてみました、またブログの読みやすさも変わったかな?
というところで今回はここまで
それではまた