【Unity】そろそろVFXGraphを始めてみる

公開:2020/10/02
更新:2020/10/05
5 min読了の目安(約4700字TECH技術記事

Unityの次世代パーティクルシステムVisual Effect Graph(以下:VFXGraph)をそろそろ触っていこうと思い、VFXGraphを使うためのプロジェクト作成方法から基本的な構成の理解を進めていきます。

本記事で得られること

  • VFXGraphの始め方
  • VFXGraphの基礎、基本的な構成の理解

VFXGraphの便利機能ポイントキャッシュを使ってみる記事を書きました。コチラもどうぞ。
【Unity】VFXGraphのポイントキャッシュを使って少しリッチに表現してみる

1. HDRPでプロジェクトを作成

image

VFXGraphを使うためにはHDRPである必要があるため、UnityHubからHDRPのテンプレートを使うのがてっとり早いです。

2. PackageManagerからVFXGraphをインストール

image

VFXGraphをPackageManagerからインストールします。

3. .vfxファイルの作成

image

Create > Visual Effects > Visual Effect Graphを選択して、.vfxファイルを作成します。
ここではNewVFX.vfxを作成。

この.vfxファイルにVFXGraphのノード情報などが格納されています。

4. .vfxファイルをシーンに配置

image

ProjectからHierarchyにNewVFX.vfxをドラッグアンドドロップします。

image

するとこのようにパーティクルが放出されるようになります。これで準備完了。

5. Visual Effect Graphエディタで編集する

image

ヒエラルキに配置したvfxオブジェクトのインスペクタからEditボタンをクリックする事で、Visual Effect Graphエディタ(以下 : VFXGraphエディタ)が表示されます。

ここからは各ノードの説明に入ります。

VFXGraphの基本的な全体構成

image

  • Spawn
  • Initialize Particle
  • Update Particle
  • Output Particle

これらはコンテキストノードと呼ばれています。

Spawn(SpawnContextノード)

パーティクルを生み出すためのノードです。

Initialize Particle(Initialize Particle Contextノード)

パーティクルを初期化するためのノードです。

Update Particle(Update Particle Contextノード)

パーティクルの舞フレーム更新処理、パーティクルの挙動を作るためのノードです。

Output Particle(OutputParticle Context ノード)

パーティクルをレンダリングするためのノードです。様々なOutputが用意されています。

コンテキストノードの中身はブロック

各コンテキストノードの中にブロックを追加していき、処理を定義していきます。
image
例えばSpawn ContextノードにはデフォルトでConstant Spawn Rateブロックが定義されています。

ここから.vfxファイルを作成したデフォルト状態のブロックについて調査していきます。

Spawn Contextノード内のブロック

Constant Spawn Rateブロック

image

指定された数(Rateの数)が毎フレーム放出されます。

Initialize Particle Contextノード内のブロック

必須ブロック

image

Capacityとバウンディングボックス情報を持った、Initialize particle Contextノードの必須ブロック。
Capacityは最大表示パーティクル数で、Boundsはバウンディングボックスです。

Boundsは何に使うのかというと、フラスタムカリングで使用されます。

Sset Velocity Random(Per-Component)ブロック

image

Vector3型の最大値と最小値のランダム値のVelocity(速度)の定義をしています。

Set Lifetime Random(Uniform)ブロック

image

パーティクルの寿命をランダムに決めるブロックです。

Update Particle Contextノード内のブロック

image

デフォルト状態ではUpdate Particle Contextノード内のブロックは存在しません。

Output Particle Quad Contextノード内のブロック

必須ブロック

image

  • Color Mapping
  • Uv Mode
  • Use Soft Particle
  • Blend Mode
  • Use Alpha Clipping
  • MainTexture

Output Particle Quad Contextノードの必須ブロックです。

Orient : Face Camera Planeブロック

image

パーティクルがカメラの方を向くように回転させるブロックです。

Set Size over Life

image

パーティクルの寿命によってパーティクルのサイズを変更するブロックです。

Set Color over Life

image

パーティクルのカラーをパーティクルの寿命によって変更するブロックです。

ここまでがVFXGraphの始め方と基本構成の説明となります。ここから各Contextノードに対してブロックを追加したり、ブロックに対してノードをつなげていくといった作業が発生していきます。

vfxgraph

次回は少しずつパーティクルの動きを制御していきたいと思います。

環境

  • Unity2020.1.6f1
  • macOS Catalina 10.15.5
  • Visual Effect Graph 8.2.0

参考