Visual Effect Graph 論理
Visual Effect Graph は、2 つの明確なワークフローを使います。
カスタマイズ可能なステージをリンクして束ね、システムの生存期間を定義する処理 (垂直) 論理。
異なる コンテキスト を繋げ、パーティクルの外観と動作を定義するプロパティ (水平) 論理。
処理ワークフロー (垂直論理)
処理ワークフローは、カスタマイズ可能な一連のステージをリンクして束ね、完全なシステム論理を定義します。ここでは、エフェクト中にいつパーティクルがスポーン、初期化、更新、そしてレンダリングするかを決定できます。
処理ワークフローは、コンテキストノードの上部および下部に位置するフロースロットを使い、コンテキストを繋げます。
処理論理は、ビジュアルエフェクトの様々な処理ステージを定義します。各ステージは、コンテキスト と呼ばれる大きな色付きコンテナで形成されます。コンテキストはそれぞれ、互換性のある別のコンテキストと接続し、次の処理ステージが現在のコンテキストをどのように利用するかを定義します。
コンテキストには、ブロック と呼ばれる要素が含まれています。各ブロックは、1 つの操作を担当する積み重ね可能なノードです。ブロックを並べ替えて、Unity がビジュアルエフェクトを処理する順序を変更することができます。Unity はコンテキストにあるブロックを、上から順に実行します。
プロパティワークフロー (水平論理)
水平のプロパティワークフローでは、ビジュアルエフェクトを向上させる数学的演算を定義できます。これはパーティクルの外観および動作に影響を与えます。
プロパティワークフローは、ブロックの Property Slots を使ってコンテキストを繋げます。左側は入力、右側は出力です。
Visual Effect Graph には、ビジュアルエフェクトの動作を定義できる、大規模なブロックとノードのライブラリが含まれています。作成するノードのネットワークは、レンダーパイプラインがグラフのコンテキスト内にあるブロックにパスする、データの水平フローを制御します。
パーティクルの動作をカスタマイズするには、水平ノードをブロックに接続して、カスタム数式を作成します。これは、Create Node コンテキストメニューを使ってノードを追加し、値を変更してから、ノードをブロックプロパティに接続して実行します。
グラフ要素
Visual Effect Graph には、グラフ要素を作成し、それらを繋げてエフェクトの動作を定義できる、ワークスペースがあります。Visual Effect Graph にはワークスペースに当てはまる、多くの様々なグラフ要素が含まれています。
ワークスペース
Visual Effect Graph には、グラフ要素を作成し、それらを繋げてエフェクトの動作を定義できる、Workspace があります。
Systems
System (システム) は、Visual Effect の主要コンポーネントです。すべてのシステムは、レンダーパイプラインがシミュレーションし、その他のシステムと共にレンダリングする、ある部分を定義します。グラフでは、一連のコンテキストに定義されるシステムは、破線で表示されます (上の画像を参照)。
- Spawn System は、単一のスポーンコンテキストから形成されます。
- Particle System は、初期化、更新、そして出力コンテキストの一連から形成されます。
- Mesh Output System は、単一のメッシュ出力コンテキストから形成されます。
Context
Context (コンテキスト) は、処理ステージを定義するシステムの構成部分です。複数のコンテキストが接続し、1 つのシステムを定義します。
Visual Effect Graph における、4 つの最も一般的なコンテキストは以下の通りです。
- Spawn - 有効の場合、Unity はすべてのフレームで呼び出して、スポーンするパーティクル数を計算します。
- Initialize - Unity は各パーティクルの “誕生” 時に呼び出します。パーティクルの初期ステートを定義します。
- Update - Unity は各フレームですべてのパーティクルに対して呼び出して、例えばフォースや衝突など、シミュレーションの実行に使います。
- Output - Unity は各フレームですべてのパーティクルに対して呼び出します。パーティクルの形状を決定し、レンダリング前の変換を実行します。
ノート: 例えばメッシュ出力など、コンテキストの中には、他のシステムと関連がないために、他のコンテキストに接続しないものがあります。
Block
Block (ブロック) は、コンテキスト内で積み重ねられるノードです。各ブロックは、1 つの操作を担当します。例えば、フォースを速度に適用したり、スフィアと衝突したり、またはランダムカラーを設定したりできます。
ブロックを作成すると、現在のコンテキスト内で並び替えたり、互換性のある別のコンテキストへ移動することができます。
ブロックをカスタマイズする方法は、以下の通りです。
プロパティを調節します。これは、プロパティポートをエッジを持つ別のノードに接続して実行します。
プロパティの設定を調節します。設定は他のノードに接続できないポートを持たない、編集可能な値です。
Operator
Operator はプロパティワークフローの低レベルな操作を構成する、ノードです。ノードを繋げると、カスタム動作を生成できます。ノードネットワークは、ブロックまたはコンテキストに属するポートへ接続します。
グラフの一般要素
グラフ要素は様々ですが、コンテンツおよび動作は同様である傾向があります。グラフ要素は、以下の特徴とレイアウトアイテムを共有します。
設定
設定は、プロパティワークフローを使って接続することができない、フィールドです。グラフ要素はそれぞれ、設定を表示します。
- Graph : グラフ内のタイトルとプロパティコンテナの間です。
- Inspector : ノードを選択すると、インスペクターがその他の上級者向け設定を表示します。
設定の値を変更する場合は、グラフを再コンパイルする必要があります。
プロパティ
プロパティ は、プロパティワークフローを使って編集および接続できるフィールドです。他のグラフ要素に含まれる、別のプロパティに接続することができます。
その他のグラフ要素
Group
ノードは Group (グループ) にまとめて、グラフを整理することができます。グループになったノードは、まとめてドラッグしたり、グループ内容を説明するタイトルを付けることもできます。グループは、複数のノードを選択し、右クリックしてから Group Selection を選択すると追加できます。
Sticky Note
Sticky Note (付箋) は、同僚や自分に向けて説明やリマインダーを書き残せる、ドラッグ可能なコメント要素です。