LoginSignup
8
3

More than 1 year has passed since last update.

[Unity]VisualEffectGraphを使ってひこうき雲をつくる(追記)

Last updated at Posted at 2022-06-28

はじめに

ジェットエンジンから尾を引く雲を作りたい
はじめはVFXgraphのStrip機能を使えばすぐできるだろうと考えたがちょっとコツがいることがわかった

ひこうき雲とはどんなもの?

  • ジェットエンジンから吹き出している
    • 座標Pに追随するエミッタを持つトレイル
    • エミッタから放出されるトレイルはマイナスベクトルのVelocityで移動する
  • 飛行機の軌跡を描く
    • トレイルを構成するパーティクルはワールド座標に追従する

まずはStripのテンプレートを使ってみる

nodefx

テンプレートをそのまま使うとこんな感じ↑
それをひこうき雲風に調整するとこうなる↓
fxfx

見た目はそれっぽくなった
ポイントは...

  • Set Velocity でZ方向にトレイルを伸ばす
  • Set Size over Life でライフタイムに合わせてスケールするアトリビュートを作り、Strip側のパーティクルにInherit Source Size で継承する

早速動かしてみると↓
202206_HDRP---20220623_VFXtest---Windows,-Mac,-Linux---Unity-2021.gif
飛行機のローカル座標に追従してしまった
ワールド座標に追従するようにしなくてはいけない
ここをクリックするとローカル座標とワールド座標を切り替えることができる
fx

切り替えてから動かしてみると...
202206_HDRP---20220623_VFXtest---Windows,-Mac,-Linux---Unity-2021.gif
ワールドにはなったけれどコレジャナイ感
Stripのテンプレートをそのままカスタマイズすると、普通にSpawnされたパーティクルからさらにパーティクルを飛ばしてトレイルするのでうまくいかない。
坂野サーカス的なミサイル演出を作るにはこれでいいかもしれないが、今回やりたいのはゲームオブジェクトの移動に追従させたいのでStripのテンプレートをもとにくんでいくのは向いていないようだ。

Spawnから直接Stripのシステムにつなげる

SpawnしたパーティクルをもとにEventを発生させStripを生成する方法はどうやらひと手間多そうだということがわかった。
であればSpawnしたものを直接Stripのシステムに流し込んでトレイルさせればうまくいくはずだ。

このようにSpawnに直接つなぐシンプルなシステムに組み変えてみた↓

fx

202206_HDRP---20220623_VFXtest---Windows,-Mac,-Linux---Unity-2021.gif

うまくいった!

おわりに

結局とてもシンプルな方法でできた。
移動する物体にトレイルさせることはよくある表現だ。
でも意外とVFXgraphでのやりかたが見つからず苦労した。

(追記) 別のやり方

VFXgraphのStripテンプレートをベースにして同じことができることがわかった。
組み方は以下↓
fx

  • "Spawn"ブロックのSingle Burstを初期ポジションにする
  • LifeTimeを設定せず寿命を無限にする
  • Initialize ParticleとUpdate ParticleのSpaceをWorldに設定する
  • Intialize Particle\Capacity\BoundsのSpaceをLocalに設定する
  • UpdateParticle\SetPositionのSpaceをLocalに設定する

001.gif
直接Particle Stripにつなぐ方法と同じ結果になった

しかもこちらのほうがVFXgraphの本来のやり方に基づいており、より拡張性が高い
例えば以下のような組み方をしてみる↓

fx

先程のシステムに少し手を加えた

  • Single BurstのCountを20にする
  • UpdateのSet Positionにランダムな値を入れる

testing.gif

同時に複数のトレイルが同じポジションを起点に発生している
起点のポジションをパーティクルで指定しているから可能な表現だ
前述の方法ではこのような表現が難しい

このVFXを使って道路を走る自動車のラインのような表現を試した

おわりに(再)

前述した組み方も間違えではないが、ストレートではないし拡張性に乏しい
オリジナルでより良く的確な表現を効率的に探るためにも後述した方法をおすすめしたい

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3