【Unity】そろそろVFXGraphを始めてみる
Unityの次世代パーティクルシステムVisual Effect Graph(以下:VFXGraph)をそろそろ触っていこうと思い、VFXGraphを使うためのプロジェクト作成方法から基本的な構成の理解を進めていきます。
本記事で得られること
- VFXGraphの始め方
- VFXGraphの基礎、基本的な構成の理解
1. HDRPでプロジェクトを作成
VFXGraphを使うためにはHDRPである必要があるため、UnityHubからHDRPのテンプレートを使うのがてっとり早いです。
2. PackageManagerからVFXGraphをインストール
VFXGraphをPackageManagerからインストールします。
3. .vfxファイルの作成
Create > Visual Effects > Visual Effect Graphを選択して、.vfx
ファイルを作成します。
ここではNewVFX.vfx
を作成。
この.vfxファイルにVFXGraphのノード情報などが格納されています。
4. .vfxファイルをシーンに配置
ProjectからHierarchyにNewVFX.vfxをドラッグアンドドロップします。
するとこのようにパーティクルが放出されるようになります。これで準備完了。
5. Visual Effect Graphエディタで編集する
ヒエラルキに配置したvfxオブジェクトのインスペクタからEditボタンをクリックする事で、Visual Effect Graphエディタ
(以下 : VFXGraphエディタ)が表示されます。
ここからは各ノードの説明に入ります。
VFXGraphの基本的な全体構成
- Spawn
- Initialize Particle
- Update Particle
- Output Particle
これらはコンテキストノードと呼ばれています。
Spawn(SpawnContextノード)
パーティクルを生み出すためのノードです。
Initialize Particle(Initialize Particle Contextノード)
パーティクルを初期化するためのノードです。
Update Particle(Update Particle Contextノード)
パーティクルの舞フレーム更新処理、パーティクルの挙動を作るためのノードです。
Output Particle(OutputParticle Context ノード)
パーティクルをレンダリングするためのノードです。様々なOutputが用意されています。
コンテキストノードの中身はブロック
各コンテキストノードの中にブロックを追加していき、処理を定義していきます。
例えばSpawn ContextノードにはデフォルトでConstant Spawn Rateブロック
が定義されています。
ここから.vfx
ファイルを作成したデフォルト状態のブロックについて調査していきます。
Spawn Contextノード内のブロック
Constant Spawn Rateブロック
指定された数(Rateの数)が毎フレーム放出されます。
Initialize Particle Contextノード内のブロック
必須ブロック
Capacityとバウンディングボックス情報を持った、Initialize particle Contextノードの必須ブロック。
Capacityは最大表示パーティクル数で、Boundsはバウンディングボックスです。
Boundsは何に使うのかというと、フラスタムカリングで使用されます。
Sset Velocity Random(Per-Component)ブロック
Vector3型の最大値と最小値のランダム値のVelocity(速度)の定義をしています。
Set Lifetime Random(Uniform)ブロック
パーティクルの寿命をランダムに決めるブロックです。
Update Particle Contextノード内のブロック
デフォルト状態ではUpdate Particle Contextノード内のブロックは存在しません。
Output Particle Quad Contextノード内のブロック
必須ブロック
- Color Mapping
- Uv Mode
- Use Soft Particle
- Blend Mode
- Use Alpha Clipping
- MainTexture
Output Particle Quad Contextノード
の必須ブロックです。
Orient : Face Camera Planeブロック
パーティクルがカメラの方を向くように回転させるブロックです。
Set Size over Life
パーティクルの寿命によってパーティクルのサイズを変更するブロックです。
Set Color over Life
パーティクルのカラーをパーティクルの寿命によって変更するブロックです。
ここまでがVFXGraphの始め方と基本構成の説明となります。ここから各Contextノードに対してブロックを追加したり、ブロックに対してノードをつなげていくといった作業が発生していきます。
次回は少しずつパーティクルの動きを制御していきたいと思います。
環境
- Unity2020.1.6f1
- macOS Catalina 10.15.5
- Visual Effect Graph 8.2.0
Discussion