UnityのVisual Effect Graphのノード、コンテキストの説明

記事内に広告が含まれています。

前回

UnityのVisual Effect Graphの設定と使い方
Unityで視覚的にエフェクトを作成できるVisual Effect Graphの設定方法と使い方をみていきます。

でVisual Effect Graph(VFX)の設定と使い方についてやりましたが、記事が長くなったので、ノード、コンテキストの説明はこの記事で書くことにしました。

コンテキストに設定するブロックに関してはまた別記事に書いていきます。(^_^;)

説明の順序はVisual Effect Graphのウインドウ内の何もない所でSpaceキーを押した時に出てくる項目を上から見ていっています。

Visual Effect GraphのCreate Text Nodeで表示されるコンテキストメニュー

Visual Effect Graphのバージョンは7.3.1になります。

バージョンによって該当する項目があったりなかったりします。

スポンサーリンク

Context

まずはContextの項目から見ていきます。

VisualEffectGraphのノードのContext項目

同じ設定項目がある場合は説明を省略していきます。

Output系コンテキストほとんどで共通のインスペクタ項目

Output系のコンテキストのほとんどで共通に設定できる項目でVisual Effect Graphのコンテキスト内では設定出来ませんが、Output Particle Cube等を選択した状態でインスペクタで設定出来る項目もあります。

Output Particle Cubeコンテキストのインスペクタ

Spaceはローカル軸かワールド軸か、
CullModeはカリングの設定でDefaultはデフォルトの設定、Frontは視点側のポリゴンをレンダリングしない、Backは視点の反対側を描写しない、Offはカリングを行わないです。
注:Output Particle Cubeコンテキストでは立方体なのでCullModeの確認が難しいので他のOutputコンテキストを利用するとわかりやすいです(正しパーティクルの向きを視点の向きに変更するブロックを使わない事)。
Z Write Modeはパーティクルのピクセルをデプスバッファに保存するかどうかで、Defaultはデフォルト値、Offは行わない、Onは行うです。
Z Testはオブジェクトを描画する時の設定で、Defaultはデフォルト、Lessは表示されてるオブジェクトより手前、Greaterは奥、L Equalは手前か同じ時、G Equalは奥か同じ時、Equalは同じ時、Not Equalは違う時、Alwaysは常にレンダリングします。
Sortはパーティクルの並べ替えを行います。Autoは自動、Offは並べ替えをしない、Onは並べ替えをする。
Indirect Drawは間接的に描画呼び出しを行うかどうかみたいです(意味はわからない)。
Cast Shadowsはパーティクルが影を落とすかどうかです。
Blend Modeはブレンドの仕方で、Additiveは追加、Alphaはアルファブレンディング、Alpha Premultipliedは事前乗算アルファブレンディング、Opaqueはブレンドせず不透明です。
Use Alpha Clippingにチェックを入れると透明度に応じてクリッピング(切り取り)をします。

CullやZWrite、ZTestに関してはUnityマニュアルの

ShaderLab コマンド: Cull - Unity マニュアル
カメラに対するポリゴンの向きに基づいて、GPUがどのポリゴンをカリングするかを設定します。
ShaderLabコマンド: ZWrite - Unity マニュアル
レンダリング時に深度バッファのコンテンツを更新するかどうかを設定します。通常、不透明なオブジェクトには ZWrite が有効で、半透明なオブジェクトには無効です。
ShaderLab コマンド: ZTest - Unity マニュアル
ジオメトリの深度テストの合格/不合格の条件を設定します。

を参照してください。

Event

Eventはパーティクルの生成と停止をさせるコンテキストです。

VFXのOnPlayイベント

既存のイベントはOnPlayやOnStopで、スクリプトのVisualEffectのPlayとStopメソッドにそれぞれ対応していますが、独自のイベント名を設定しSendEventメソッドでそのイベントを送る事も出来ます。

イベントはスクリプトから発生させてEventコンテキストがトリガーとなりパーティクルの生成と停止をする事が出来ます。

例えばOnPlayイベントでパーティクルの生成を開始し、MyEventという名前のイベントでパーティクル生成の停止をする場合は

Eventコンテキストを二つ作成してそれぞれのイベント名をOnPlayとMyEventに変更し、SpawnコンテキストのStartとStopに繋げます。

SpawnコンテキストのStartとStopにEventコンテキストを繋げる

Visual Effectゲームオブジェクトに新しいスクリプトEventTestスクリプトを作成し取り付けます。

VisualEffectコンポーネントを使う為にusingディレクティブでUnityEngine.VFXを指定します。

ゲームオブジェクト開始時にVisualEffectのSendEventメソッドでMyEventを送りパーティクルの生成を停止します。

Updateメソッドではマウスの右ボタンを押したらパーティクルの停止、マウスの中ボタンを押したらパーティクルの生成をするようにしています。

VisualEffectのStopメソッドを呼び出すとOnStopイベントが発生しますが、今回のパーティクルではMyEventイベントでパーティクルの生成を停止させているのでパーティクルは停止しません。

Initialize Particle

Initialize Particleコンテキストはパーティクルの初期化をするコンテキストです。

VisualEffectGraphのInitialize Particleコンテキスト

Capacityはパーティクルの最大量です。
Boundsで中心とサイズを設定し、この範囲がカメラの描画範囲を超えたらパーティクルが見えなくなります(シーンビューの場合は見えている範囲外になった時)。

Output Mesh

Output Meshはメッシュを出力します。

VisualEffectGraphのOutput Meshコンテキスト

Shaderは使用するシェーダーです。
Meshは出力するメッシュを指定します。
Transform項目はメッシュを表示する時のTransformの設定で、
Positionは位置
Angleは角度
Scaleは規模です。
Sub Mesh Maskはサブとして使うメッシュのマスクを指定します。

Shader項目で設定したシェーダーのプロパティが項目として表示されるので、選択したシェーダーによって項目が変わります。

Output Particle Cube

Output Particle CubeコンテキストはCube(立方体)のパーティクルを出力します。

Output Particle Cubeコンテキスト

UVModeはUVがどのように処理されるかで

DefaultはUVを変更せずそのまま
FlipbookはFlip Book Sizeを指定してパラパラ漫画のように処理します。
FlipbookBlendはFlipbookと同じですが、texIndex(パラパラ漫画の1コマとして使用する部分の番号)の小数部に応じてセル間をブレンドするようです。
ScaleAndBiasはUVScaleとUVBiasの値でタイリングを行います。
Flipbook Motion Blendはちょっとわかりません。

Use Soft Particleにチェックを入れるとパーティクルデプスとシーンデプスのテストを行う事が出来ます。

Blend Modeはブレンドの仕方の設定で

Additiveは色を追加するブレンド方法でアルファ値はブレンドする前に乗算されます。
Alphaはテクスチャのアルファ部分を透明にするブレンド方法です。
AlphaPremultipliedはAdditiveブレンドとAlphaブレンドの両方を使用することが出来ます。
Opaqueはブレンドせずアルファも使用しません。

Use Alpha Clippingにチェックを入れるとAlpha Threshold項目が表示され設定した透明度以下の場合クリッピングを行います。

Main Textureはパーティクルに使用するテクスチャの設定です。

Output Particle Cubeを使うと以下のような感じのパーティクルが表示されます。

Output Particle Cubeの出力結果

FlipbookとFlipbookBlendで1枚のテクスチャをFlip Book Sizeで分割してパラパラ漫画のようにアニメーションをさせますが、このtexIndexの値を更新するのがUpdateコンテキストで設定するFlipbook Playerブロックで、そこでフレームレートを指定し切り替える頻度を変更します。

以下はわかりやすくする為にOutput Particle CubeではなくOutput Particle Quadを使用しています。

Flipbookの出力をする為の設定

Flip Book Sizeでxとvを2にしたので設定したテクスチャから4コマ作成されそれが順番に表示されます。

使用したテクスチャは以下のようなものです。

Flipbookに使用したテクスチャ

パーティクルが生存している期間はUpdateコンテキストのFlipbook Playerのフレームレートでコマが変換されアニメーションされています。

Flipbookの出力のサンプル

ほとんどのOutputコンテキストはここの設定項目と同じ為、以下同様の内容のものは省略していきます。

Output Particle Forward Decal

Output Particle Forward Decalコンテキストは転写して出力します。

VisualEffectGraphのOutput Particle Forwad Decalコンテキスト

Color MappingのDefaultは通常のカラー、Gradient Mappedはグラディエーションカラーを使用します。
その他の項目はOutput Particle Cubeと同じです。

Output Particle Forward Decalコンテキストを使うと例えばCubeゲームオブジェクトを置いてその表面に作成したエフェクトを表示することが出来ます。

Output Particle Forward Decalコンテキストの結果

以前人型のキャラクターに弾痕を残す機能を作成しましたが、あれだとコライダの上にゲームオブジェクトを貼り付けていたので綺麗に出来ませんでしたが、これを使うとうまく作れそうですね。

Output Particle Line

Output Particle Lineコンテキストは線を出力します。

VisualEffectGraphのOutput Particle Lineコンテキスト

Use Target Offsetにチェックを入れるとローカル軸の原点から、設定したTarget Offsetへと線を引きます。チェックを入れない場合はエフェクト発生地点からエフェクトの到達点へと線を伸ばします。
インスペクタでUse Native Linesというチェックがありますがこれはよくわかりません。

Output Particle Lineコンテキストの出力は以下のようになります。

VisualEffectGraphのOutput Particle Lineの出力結果

Output Particle Mesh

Output Particle Meshは設定したテクスチャを設定したMeshに表示し出力します。

VisualEffectGraphのOutput Particle Meshコンテキスト

設定はOutput Particle Cubeを参照してください。

Output Particle Meshを使うと以下のような感じになります。

MeshにCapsuleでMain TextureにはDefaultParticleを設定しています。

VisualEffectGraphのOutput Particle Meshの出力結果

Output Particle Octagon

Output Particle OctagonはCrop Factorの数値によって8角形の出力をします。

VisualEffectGraphのOutput Particle Octagonコンテキスト

Crop Factorが0だと何もせず出力で、デフォルトの0.293でほぼ八角形、0.293~1の間でさらに間の頂点を動かし星型から何も表示されなくなります。

Crop Factorを0.6にした場合のOutput Particle Octagonの出力は以下のような感じになります。

VisualEffectGraphのOutput Particle Octagonの出力結果

Output Particle Point

Output Particle Pointコンテキストは点のパーティクルを出力します。

VisualEffectGraphのOutput Particle Pointコンテキスト

設定項目の説明はOutput Particle Cubeをご覧ください。

Output Particle Pointの出力は以下のような感じになります。

VisualEffectGraphのOutput Particle Pointの出力結果

Output Particle Quad

Output Particle QuadはQuad(四面)を出力します。

VisualEffectGraphのOutput Particle Quadコンテキスト

設定項目の説明はOutput Particle Cubeをご覧ください。

Output Particle Quadの出力は以下のような感じになります。

VisualEffectGraphのOutput Particle Quadの出力結果

Output Particle Triangle

Output Particle Triangleは三角形の出力をします。

VisualEffectGraphのOutput Particle Triangleコンテキスト

設定項目はOutput Particle Cubeをご覧ください。

Output Particle Triangleの出力は以下のような感じになります。

VisualEffectGraphのOutput Particle Triangleの出力結果

Spawn

Spawnコンテキストはパーティクルを生成します。

VisualEffectGraphのSpawnコンテキスト

StartとStopにはイベントコンテキストを繋げ、イベントが発生した時にSpawnコンテキストを実行と停止が出来ます。

SpawnコンテキストはSpawnEventを出力し、Initializeコンテキスト等の入力に繋げることが出来ます。

Update Particle

Update Particleコンテキストはフレームレートで実行されるコンテキストでパーティクルが更新されます。

VisualEffectGraphのUpdate Particleコンテキスト

毎フレームパーティクルに何らかの処理をさせたい場合はこのコンテキスト内にブロックを追加します。

Operator

Operatorを見ていきます。

VisualEffectGraphのOperator項目

Operator内でも細かく分岐されています。

Attribute

Attributeを見ていきます。

VisualEffectGraphのAttribute項目

Age Over Lifetime

Age Over Lifetimeは生存期間内の年齢を0~1の間で取得出来ます。

VisualEffectGraphのAge Over Lifetimeノード

Get Attribute

Get Attributeノード系は値の取得をすることが出来ます。

Get Attribute 取得する属性

となるものは選択した状態でインスペクタで属性を変更出来ます。

Visual Effect GraphのGet Attributeノード

上はGet Attribute ageの画像ですが、選択した状態でインスペクタで属性を変えることが出来ます。

Get Attribute系のグラフ上での設定項目はLocationが共通なので、この後はそれぞれ何を取得出来るか?だけで画像は省略します。

Location項目は

Currentで現在のシミュレーションの値を取得します。その属性を使用していない場合はデフォルト値が返るようです。
Sourceはパーティクルの生成をしたイベントの事で、Initializeコンテキストのみで使用できるようです。

Sourceに関しては今のところ使い道がわからないのでスルーしておきます。

Get Attribute age

パーティクルの年齢を取得します。

Get Attribute alive

生存しているかどうかのboolを取得します。

Get Attribute alpha

アルファ値を取得します。

Get Attribute angle

角度を取得します。

Maskにxyzを記述する事で対応した軸のみを表示することが出来ます。

Get Attribute angularVelocity

角速度を取得します。

Maskにxyzを記述する事で対応した軸のみを表示することが出来ます。

Get Attribute axisX

軸をX軸にした角度を取得します。

Get Attribute axisY

軸をY軸にした角度を取得します。

Get Attribute axisZ

軸をZ軸にした角度を取得します。

Get Attribute color

色を取得します。

Get Attribute direction

方向を取得します。

Get Attribute lifetime

生存期間を取得します。

Get Attribute mass

質量を取得します。

Get Attribute oldPosition

以前の位置を取得します。

Get Attribute particleCountInStrip

パーティクルの断片の数

Get Attribute particleId

パーティクルIDを取得します。

Get Attribute particleIndexInStrip

パーティクルの断片の何番目なのかの番号

Get Attribute pivot

ピポット点を取得します。

Maskにxyzを記述する事で対応した軸のみを表示することが出来ます。

Get Attribute position

位置を取得します。

Get Attribute scale

スケールを取得します。

Maskにxyzを記述する事で対応した軸のみを表示することが出来ます。

Get Attribute seed

シード(種)を取得します。

Get Attribute size

サイズを取得します。

Get Attribute spawnIndex

生成された番号を取得します。

Get Attribute spawnTime

生成された時間を取得します。

Get Attribute stripIndex

断片の番号を取得します。

Get Attribute targetPosition

ターゲット位置を取得します。

Get Attribute texIndex

texIndex(パラパラ漫画の1コマとして使用する部分の番号)を取得します。

Get Attribute velocity

速度を取得します。

Bitwise

Bitwiseについて見ていきます。

VisualEffectGraphのBitwise項目

設定項目はほとんどがXとYのみで、ComplementだけX項目になりますが、ほぼ同じなので画像はAddだけになります。

And

AndはAとBの入力のビット単位の論理積(両方1ならば1を返しそれ以外は0を返す)を出力します。

Aに6(2進数で110)Bに5(2進数で101)を入力すると出力は4(2進数で100)となります。

VisualEffectGraphのAddオペレーターアトリビュート

Complement

ComplementはXで指定した値のビットを反転します。

試しにやってみましたが、正しい値返ってこない?(謎)

7(0111)を設定すると8(1000)が返ってくるはずです。

Left Shift

Left ShiftはAで指定した値をBで指定したビット数分左シフトします(マイナス数値が使えないのでおそらく論理シフト)。

例えばAに6(2進数で110)でBに2を指定すると110を2ビット左にシフトするので、11000になり、結果として2⁴ + 2³ = 24となります。

Or

OrはAとBの入力のビット単位の論理和(どちらかが1ならば1を出力、共に0ならば0を出力)を出力します。

Aに6(2進数で110)Bに5(2進数で101)を入力すると出力は7(2進数で111)となります。

Right Shift

Right ShiftはAで指定した値をBで指定したビット数分右シフトします(マイナス数値が使えないのでおそらく論理シフト)。

例えばAに6(2進数で110)でBに2を指定すると110を2ビット右にシフトするので、001になり、結果として2⁰ = 1となります。

Xor

Xorはビット単位の排他的論理和を出力します(お互いのビットが違う場合は1、同じ場合は0)。

例えばAに36(2進数で100100)、Bに28(2進数で011100)を入力すると56(2進数で111000)が出力されます。

BuiltIn

BuiltInを見ていきます。

VisualEffectGraphのBuiltIn項目

DeltaTime

DeltaTimeはコンテキスト実行時のDeltaTimeを出力します。

Visual Effect GraphのDeltaTimeノード

おそらく前回のUpdateコンテキスト実行から現在のUpdateコンテキストが実行されるまでの時間。

Frame Index

Frame Indexはフレームのインデックスを返すと思われます(ちょっとわからないです)。

LocalToWorld

LocalToWorldはローカル軸からワールド軸へと変換した行列を出力します。

VisualEffectGraphのLocalToWorldノード

Main Camera

Main Cameraはメインカメラの情報を出力します。

VisualEffectGraphのMainCameraブロック

SystemSeed

SystemSeedは現在のシードを出力します。

VisualEffectGraphのSystemSeedノード

TotalTime

TotalTimeは最後のPlayイベントからの経過時間を出力します。

Visual Effect GraphのTotalTimeノード

WorldToLocal

WorldToLocalはワールド軸からローカル軸へと変換した行列を出力します。

VisualEffectGraphのWorldToLocalノード

Color

Colorについて見ていきます。

VisualEffectGraphのColor項目

Color Luma

Color Lumaは指定した色から輝度を出力します。

VisualEffectGraphのColor Lumaノード

HSV to RGB

HSVからRGBへと変換し出力します。

VisualEffectGraphのHSV to RGBノード

RGB to HSV

RGBからHSVへと変換し出力

VisualEffectGraphのRGB to HSVノード

Inline

Inlineについて見ていきます。

VisualEffectGraphのInline項目

AABox

AABox(Axis-Aligned-Box)はCenterで中心位置、Sizeでボックスのサイズを指定し出力します。

VisualEffectGraphのAABoxノード

AnimationCurve

AnimationCurveはグラフを使って値を変化させ出力します。

VisualEffectGraphのAnimationCurveノード

ArcCircle

ArcCircleはCenterで中心位置、Radiusで半径、Arcで角度(ラジアンで指定)を指定して円を出力します。

VisualEffectGraphのArcCircleノード

ArcCone

ArcConeはCenterで中心位置、Radius0で下部分の円の半径、Radius1で上部分の円の半径、Heightで高さ、Arcで角度を指定し円錐?を出力します。

VisualEffectGraphのArcConeノード

ArcSphere

ArcSphereはCenterで中心位置、Radiusで半径、Arcで角度を指定し球を出力します。

VisualEffectGraphのArcSphereノード

ArcTorus

ArcTorusはCenterで中心位置、Major Radiusで全体の半径、Minor Radiusでドーナツの半径、Arcで角度を計算しドーナツデータの出力をします。

VisualEffectGraphのArcTorusノード

bool

boolは真偽値を出力します。

VisualEffectGraphのboolノード

Camera

Cameraはカメラデータを設定し出力します。

VisualEffectGraphのCameraブロック

Circle

CircleはCircleデータを設定し出力します。

VisualEffectGraphのCircleノード

Color

ColorはColorデータを設定し出力します。

VisualEffectGraphのColorノード

Cone

ConeはConeデータを設定し出力します。

VisualEffectGraphのConeノード

Cubemap

CubemapはCubemapを指定し出力します。

VisualEffectGraphのCubemapノード

CubemapArray

CubemapArrayはCubemapArrayを指定し出力します。

VisualEffectGraphのCubemapArrayノード

Cylinder

CylinderはCenterで中心位置、Radiusで半径、Heightで高さを指定し円柱を作成し出力します。

VisualEffectGraphのCylinderノード

Direction

Directionは方向を設定し、出力します。

VisualEffectGraphのDirectionノード

FlipBook

FlipBookはflipBook(パラパラ漫画)用のデータを設定し出力します。

VisualEffectGraphのFlipbookノード

float

floatは浮動小数点値を設定し出力します。

VisualEffectGraphのfloatノード

Gradient

Gradientはグラディエーションカラーを設定し出力します。

VisualEffectGraphのGradientノード

int

intはint値を設定し出力します。

VisualEffectGraphのintノード

Line

LineはStartでスタート位置、Endでエンド位置を設定し線を出力します。

VisualEffectGraphのLineノード

Matrix4×4

Matrix4×4は4×4の行列を設定し出力します。

VisualEffectGraphのMatrix4×4ノード

Mesh

Meshはメッシュを指定し出力します。

VisualEffectGraphのMeshノード

OrientedBox

OrientedBoxはCenterで中心位置、Anglesで角度、Sizeでサイズを指定してCubeを作成し出力します。シーン上でハンドルを操作して回転させることが可能です。

VisualEffectGraphのOrientedBoxノード

Plane

PlaneはPositionで位置、Normalで面の向きを指定したPlaneを作成し出力します。

VisualEffectGraphのPlaneノード

Position

Positionは位置を設定し出力します。

VisualEffectGraphのPositionノード

Sphere

SphereはCenterで中心位置、Radiusで半径を設定し円を出力します。

VisualEffectGraphのSphereノード

Terrain Type

Terrain Typeはちょっとわかりません。

VisualEffectGraphのTerrain Typeオペレーター

Texture2D

Texture2Dはテクスチャを指定し出力します。

VisualEffectGraphのTexture2Dノード

Texture2DArray

Texture2DArrayはTexture2DArrayを指定し出力します。

VisualEffectGraphのTexture2DArrayノード

Texture3D

Texture3DはTexture3Dを指定し出力します。

VisualEffectGraphのTexture3Dノード

Torus

TorusはCenterで中心位置、Major Radiusでドーナツ全体の半径、Minor Radiusでドーナツの半径を指定しドーナツを出力します。

VisualEffectGraphのTorusノード

Transform

TransformはTransform情報を設定し出力します。

VisualEffectGraphのTransformノード

uint

uintは符号なしintを設定し出力します。

VisualEffectGraphのuintノード

Vector

Vector系はまとめて記述します。(^_^;)

VisualEffectGraphのVector系ノード

VectorとVector3は同じ?でXYZの値を設定し出力します。

Vector2はXYを設定し出力します。

Vector4はXYZWを設定し出力します。

Logic

Logicを見ていきます。

VisualEffectGraphのLogic項目

And

Andは入力Aと入力Bの論理積を出力します。

VisualEffectGraphのAndノード

Branch

BranchはPredicateにチェックが入っていればtrueに設定した値、チェックが入っていなければfalseに設定した値を出力します。

Visual Effect GraphのBranchノード

Compare

CompareはConditionで指定した比較方法でLeftとRightに指定した値を比較し、真偽値を出力します。

VisualEffectGraphのCompareノード

ConditionはEqualで同値、NotEqualで同値ではない、LessはLeftが小さい時、LessOrEqualはLeftがRightと同じか小さい時、GreaterはLeftがRightより大きい時、GreaterOrEqualはLeftがRightと同じか大きい時にtrue、それ以外はfalseを返します。

Nand

Nandは入力AとBの否定論理積を出力します。

VisualEffectGraphのNandノード

論理積の反転したものが出力されるので、AとBが共にtrueの時はfalse、それ以外はtrueを返します。

Nor

Norは入力AとBの否定論理和を出力します。

VisualEffectGraphのNorノード

AとBが共にfalseの時だけtrue、それ以外はfalseを出力します。

Not

Notは入力Aの否定を出力します。

VisualEffectGraphのNotノード

Or

Orは入力AとBの論理和を出力します。

VisualEffectGraphのOrノード

Probability Sampling

Probability Samplingの

SeedでPerParticleでパーティクル毎、PerComponentでコンポーネント事。
Constantにチェックを入れるとコンスタンツに変更されます。
Entry Countに設定した数分のWeightとデータが表示されます。

おそらく確率によって使用するデータを変更する時等に使えると思います。

VisualEffectGraphのProbability Samplingノード

Weightの数値が大きければ大きいほどそのデータを利用する確率が高くなります。
Hashはハッシュ値の設定?

Probability Samplingの右上の歯車をクリックするとデータの選択が出来ます。

Probability Samplingの歯車を押す

選択出来るデータはVector3やColor等があり、選択した後に再度歯車を押すと最初のデータが表示されます。

Switch

Switchはデータをスイッチさせるノードです。

VisualEffectGraphのSwitchノード

Entry Countでデータ数を設定。
Test Valueでは選択するデータの数値
Value0~が設定するデータになります。
DefaultはTest Valueで指定したデータのインデックスがない場合に出力する値になります。

上の画像の例でいえば、Test Valueを0としている為Value0のデータであるRGBが0.5のデータが出力されます。

Probability Samplingと同じようにSwitchで扱うデータは右上の歯車を押して変更する事が出来ます。

Math

Mathを見ていきます。

VisualEffectGraphのMath項目

Arithmetic

Arithmeticを見ていきます。

Visual Effect GraphのArithmetic項目

ここからは設定する項目が2入力または3入力でほぼ同じ為、画像は省略します。(´Д`)

Add等は入力ポートを増やすことが出来4入力以上の計算もすることが出来ます。

またノードの右上にある歯車を押すことで設定するデータ型を入力毎に変更する事が出来ます(入力AとBは別のデータ型にする)。

VisualEffectGraphのAddノードで入力毎にデータを変える

データを選択する他に入力データのタイトルも変更出来ます。

Absolute

Absoluteは設定した数値の絶対値を出力します。

Add

Addは設定した入力A、Bを足して出力します。

Divide

Divideは入力Aを入力Bで割った値を出力します。

Fractional

Fractionalは設定した値の小数部分を出力します。

Inverse Lerp

Inverse Lerpは入力X、Yとし値SがXとYの値に対してどの割合になるかを0~1の間の割合で得られます。

VisualEffectGraphのInverse Lerpオペレーター

例えばXに0、Yに10を入力とした時、Sを8とした時の入力XとYの間のどの割合になるかが出力になり、結果0.8が得られます。
Xを10、Yを0とした時に、Sを8とすれば0.2が得られます。

Lerp

Lerpは入力X、Yに設定した数値の割合をSに設定します。割合は0~1の間で割り当て、それを超えた場合は比率で増減します。

例えば入力Xに10、入力Yに0を設定して、Sに0.3を設定すると7が出力されます。

Modulo

Moduloは入力Aを入力Bで割った余りを出力します。

Multiply

Multiplyは入力Aに入力Bを掛けます。

Negate

Negateは設定した数値を反転しマイナスにし出力します(マイナスの場合はプラスに)。

One Minus

One Minusは1から設定した数値を引いて出力します。

Power

Powerは入力Aの入力B乗を計算します。

例えば入力Aが2で入力Bが4の場合は2の4乗を計算するので16が出力されます。

Reciprocal

Reciprocalは1を入力値で割った値(逆数)が出力されます。

例えば入力が10であれば1/10で0.1が出力されます。

Sign

Signは入力した値が正なら1、負なら-1を出力します。

SmoothStep

SmoothStepは入力Xから入力YへSで設定した数値でスムーズに移行が行われ出力されます。

Square Root

Square Rootは入力した値の平方根を計算し出力します。

Step

StepはValueで設定した値がThresholdで設定した値を超えた時は1、それ以下の時は0を出力します。

Subtract

Subtractは入力AからBを引いて出力します。

Clamp

Clampを見ていきます。

VisualEffectGraphのClamp項目

こちらも画像は省略します。

Ceiling

Ceilingは設定した数値以上の最大の整数を出力します。

Clamp

ClampはInputに設定した値をMinとMaxの間の数値に制限して出力します。

Discretize

Discretizeは入力Aの値を入力Bで与えたステップで離散化し出力します。

Floor

Floorは設定した値以下の整数を出力します。

Maximum

Maximumは入力値で最大の値を出力します。

Minimum

Minimumは入力値で最小の値を出力します。

Round

Roundは設定した値に一番近い整数を出力します(小数点以下を四捨五入)。

Saturate

Saturateは入力値を0~1の間に制限します。

Constants

Constantsを見ていきます。

VisualEffectGraphのConstants項目

Epsilon

Epsilonはイプシロン(計算機で取り扱える最小値)を出力します。

VisualEffectGraphのEpsilonノード

Pi

Piはπ、2π、π/2、π/3を出力出来ます。πは円周率です。

VisualEffectGraphのPiノード

Coordinates

Coordinatesを見ていきます。

VisualEffectGraphのCoordinates項目

Polar to Rectangular

Polar to Rectangularは極座標から長方形を出力します。

VisualEffectGraphのPolar to Rectangular

Angleで角度Distanceで距離を指定し、そこから座標が求まります。

Rectangular to Polar

Rectangular to Polarは長方形から極座標を出力します。

VisualEffectGraphのRectangular to Polarノード

XY座標からAngleとDistanceが求まります。

Rectangular to Spherical

Rectangular to Sphericalは長方形から球形を出力します。

VisualEffectGraphのRectangular to Sphericalノード

Spherical to Rectangular

Spherical to Rectangularは球形から長方形を出力します。

VisualEffectGraphのSpherical to Rectangularノード

Geometry

Geometryを見ていきます。

VisualEffectGraphのGeometry項目

個々の設定値は見てすぐわかるものばかりなので画像は省略します。

Area(Circle)

Area(Circle)は設定した円の面積を出力します。

Change Space

Change SpaceはLocalとWorldを切り替えます。

Distance(Line)

DistanceはPositionで指定した点からStartからEndに引いた線までの距離と最短位置を出力します。

Distance(Plane)

Distance(Plane)はPositionで指定した点からPlaneまでの距離と最短位置を出力します。

Distance(Sphere)

Distance(Sphere)はPositionで指定した点からSphereまでの距離と最短位置を出力します。

InvertTRS(Matrix)

InvertTRS(Matrix)は4×4の行列を作成し、それを反転して出力します。

VisualEffectGraphのInvertTRSオペレーター

Transform(Direction)

以下Transform系ですが参考サイトのUnityWiki等を調べましたがよくわかりませんでした。

Transform(Direction)はTransformの情報にDirectionで設定した方向へ移動させたベクトルを出力します。

Transform、Direction共にWとLを切り替える事が出来、ワールド軸とローカル軸の変換が出来ます。

Transform(Matrix)

Transform(Matrix)はTransformの情報にMatrixの情報を使って行列を出力します(よくわかりません)。

Transform(Position)

Transform(Position)はTransform情報からPositionの位置分動かした先のベクトルを出力します。

Transform(Direction)と同じようにTransform、Positionのワールド軸とローカル軸をW、Lを切り替えることで行えます。

Transform(Vector)

Transform(Vector)はTransform情報にVector情報を足したベクトルを出力します。

Transform(Direction)と同じようにTransform、Positionのワールド軸とローカル軸をW、Lを切り替えることで行えます。

Transpose(Matrix)

Transpose(Matrix)は入力した行列の行と列を転置(交換)した行列を出力します。

Volume(Axis Aligned Box)

Volume(Axis Aligned box)は設定したボックスの体積を出力します。

Volume(Cone)

Volume(Cone)は設定した円錐の体積を出力します。

Volume(Cylinder)

Volume(Cylinder)は設定した円柱の体積を出力します。

Volume(Oriented Box)

Volume(Oriented Box)は方向付けされたボックスの体積を出力します。

Volume(Sphere)

Volume(Sphere)は設定した球の体積を出力します。

Volume(Torus)

Volume(Torus)は設定したドーナツの体積を出力します。

Remap

Remapを見ていきます。

VisualEffectGraphのRemap項目

Remap

RemapはClampにチェックを入れるとNew Range MinとNew Range Maxの間の数値に出力を制限することが出来ます。
Old Range MinとOld Range Maxは割合であるInputの制限値で、
New Range MinとNew Range Maxは出力の制限値になります。

VisualEffectGraphのRemapノード

Remap[0..1] => [-1..1]

Remap[0..1] => [-1..1]は0~1の値を-1~1の値に変換します。

Clampにチェックを入れていれば-1~1の値に制限されますが、チェックしない場合は(input * 2)- 1の計算になります。

Remap[-1..1] => [0..1]

Remap[-1..1] => [0..1]は―1~1の値を0~1の値に変換します。

Clampにチェックを入れていれば0から1の値に制限されますが、チェックしない場合は(input * 0.5)+ 0.5の計算になります。

Trigonometry

Trigonometryを見ていきます。

VisualEffectGraphのTrigonometry項目

Acos

ACosはアークコサインのラジアン値を出力します。

ASin

ASinはアークサインのラジアン値を出力します。

ATan

ATanはアークタンジェントのラジアン値を出力します。

ATan2

ATan2はTanがY/X になる角度をラジアンで返します。

説明だけだとわからないですが、X軸と原点から(X, Y)に向かって出来たベクトルで作られる角度をラジアン値で出力します。

なので、ATan2のXに1、Yに1を入力し、ラジアン値を計算できますが、これだけだとどの程度の角度かわからないので、それに360/(PI * 2)をかけることで度で表すと45度が得られます。

試しにVisualEffectGraphでそれを計算すると45が求められました。

VisualEffectGraphのATan2の簡単なサンプル

図に表すとこんな感じです。

ATan2で計算できるもの

Cosine

Cosineはコサインのラジアン値を出力します。

Sine

Sineはサインのラジアン値を出力します。

Tangent

Tangentはタンジェントのラジアン値を出力します。

Vector

Vectorを見ていきます。

VisualEffectGraphのVector項目

Append Vector

Append Vectorは任意の数のスカラーやベクトルから多成分ベクトルを作成します。

使い方はわかりません。

Construct Matrix

Construct Matrixは行列を作成します。

Cross Product

Cross Productは二つのベクトルの外積を出力します。

Distance

Distanceは二つのベクトルの距離を出力します。

Dot Product

Dot Productは二つのベクトルの内積を出力します。

Length

Lengthはベクトルの長さを出力します。

Look At

Look AtはFromで指定した位置からToで指定した位置を見たTransform情報を出力します。

Upは表の向きを表しています。

例えばFromを(0, 0, 0)、Toを(1, 0, 0)とし、Upを(0, 1, 0)とすると出力されるTransformは

Position(0, 0, 0)、Angles(0, 90, 0)、Scale(1, 1, 1)となります。

Normalize

Normalizeはベクトルを正規化します。

Rotate2D

Rotate2DはPositionの位置をRotation Centerを中心にAngle角度回転した位置を出力します。

Rotate3D

Rotate3DはPositionの位置をRotation Centerを中心にRotation Axisを軸にしてAngle角度回転した位置を出力します。

Sample Bezier

Sample BezierはABCDに設定した位置をの補間位置をTで指定して出力する事が出来ます。

VisualEffectGraphのSampleBezier

Tが0ならAの場所、1ならDの場所になり、その間は補間位置が出力されます。

Squared Distance

Squared Distanceは2点間の距離の2乗を出力します。

Squared Length

Squared Lengthはベクトルの長さの2乗を出力します。

Swizzle

SwizzleはVector4のベクトルからMaskで指定したxyzwの入力に応じて対応するベクトルを出力します。

Maskにxyzだけを書くとVector4からVector3に変換します。

Wave

Waveを見ていきます。

VisualEffectGraphのWave項目

Sawtooth Wave

Sawtooth WaveはInputで入力Frequencyで周波数、Minで最小値、Maxで最大値を設定し、のこぎり波を出力します。

VisualEffectGraphのSawtooth Waveノード

Sine Wave

Sine WaveはInputで入力Frequencyで周波数、Minで最小値、Maxで最大値を設定し、サイン波を出力します。

Square Wave

Square WaveはInputで入力Frequencyで周波数、Minで最小値、Maxで最大値を設定し、方形波を出力します。

Triangle Wave

Triangle WaveはInputで入力Frequencyで周波数、Minで最小値、Maxで最大値を設定し、三角波を出力します。

Sequential 3D

Sequential 3Dに関してはわかりませんでした。

VisualEffectGraphのSequential 3D

Sequential Sphere

Sequential Sphereに関してはわかりませんでした。

VisualEffectGraphのSequential Circle

Sequential Line

Sequential LineはStartでスタート位置、Endでエンド位置を設定した線を引き、Countで割合の分割数を指定し、indexでその番号を指定します(indexは0から)。

VisualEffectGraphのSequential Line

例えば上の例で言うとindexが0の時はXYZが(0, 0, 0)、indexが9の時は(-1, 5, 0)が出力されます。

Noise

Noiseを見ていきます。

VisualEffectGraphのNoise項目

Noize項目はDimensionsとTypeを変更するだけで設定する項目はほとんど同じです。

VisualEffectGraphのCellular Noise 1D

Cellular Noise

Cellular Noise系は市松のノイズを出力します。

Dimensionsで次元、Typeでノイズのタイプを指定します。
Coordinateは座標
Frequencyは周波数
Octavesはノイズレイヤーの数
Roughnessは粗さ
Lacunarityはフラクタルの空間の密度
Rangeは幅

を指定します。

Cellular Noise 2D、Cellular Noise 3Dは座標軸が増えただけで設定は同じです。

Perlin Curl Noise

Perlin Curl Noise系はパーリンノイズとカール(巻く)したものを出力します。

Perlin Curl Noise 3Dは軸が増えただけです。

設定項目はほとんどCellular Noise 1Dと同じです。

Amplitudeは振幅を設定します。

Perlin Noise

Perlin Noise系はパーリンノイズを出力します。

設定はCellular Noiseと同じです。

Value Curl Noise

Value Curl Noise系はバリューノイズとカールしたものを出力します。

設定値はPerlin Curl Noiseと同じです。

Value Noise

Value Noise系はバリューノイズを出力します。

設定値はCellular Noiseと同じです。

VoroNoise2D

VoroNoise2Dはボロノイのノイズを出力します。

Coordinateで座標
Amplitudeで振幅
Frequencyで周波数
Warpはセルの形の歪みの設定
Smoothnessはセル間の端のスムーズ差の設定

Random

Randomを見ていきます。

VisualEffectGraphのRandom項目

Random Number

Random Numberはランダムな数値を出力します。

VisualEffectGraphのRandom Numberノード

SeedのPerParticleはパーティクル毎、PerComponentはコンポーネント毎。
Constantにチェックを入れるとコンスタントに実行します。
Minは最小値
Maxは最大値
Seedはランダムの種の設定

Sampling

Samplingを見ていきます。

VisualEffectGraphのSampling項目

Load Texture2D

Load Texture2Dは指定した2DテクスチャからXとYで指定した座標からサンプリングされた値を出力します。

Load Texture2DArray

Load Texture2DArrayは指定した2DテクスチャからXとYとZで指定した座標からサンプリングされた値を出力します。

Load Texture3D

Load Texture3Dは指定した3DテクスチャからXとYとZで指定した座標からサンプリングされた値を出力します。

Sample Curve

Sample Curveはアニメーションカーブで値、Timeで抽出する時間を設定し、Timeにおけるアニメーションカーブの値を出力します。

VisualEffectGraphのSample Curveノード

Sample Gradient

Sample GradientはGradientにグラディエーションカラーを設定し、Timeで抽出するカラーを選択し出力します。

VisualEffectGraphのSample Gradientノード

Sample Texture2D

Sample Texture 2DはTextureに設定したテクスチャをUVで設定した位置とMip Level(ミップマップレベル)で抽出した値を出力します。

VisualEffectGraphのSample Texture 2Dノード

Sample Texture2DArray

Sample Texture2DArrayはSample Texture 2Dとほとんど同じで、Sliceでテクスチャを切り取ったインデックス番号を指定し二次元配列を抽出し出力します。

Sample Texture3D

Sample Texture3DはSample Texture2Dの3D版です。

Sample TextureCube

Sample TextureCubeはSample Texture2DのCube版です。

Sample TextureCubeArray

Sample TextureCubeArrayはSample Texture2DArrayのCube版です。

Time

Timeを見ていきます。

VisualEffectGraphのTime項目

Periodic Total Time

Periodic Total TimeはRangeで与えられた範囲内をPeriodで指定した時間で取得し出力します。

VisualEffectGraphのPeriodic Total Timeノード

例えばRangeのxに0、vに1、Periodに5を設定すると、5秒間で0~1へと値が遷移します。

Total Time

Total Timeはパーティクル毎にランダム化されたデルタタイムの割合で合計時間を出力するそうです。(^_^;)

高速シミュレーションをしているパーティクルが類似の属性を取得しないのに役立つそうです。

VisualEffectGraphのTotal Timeノード

Utility

Utilityを見ていきます。

VisualEffectGraphのUtility項目

Point Cache

Point Cacheはパーティクルの位置や属性等を保存する時に使用します。

VisualEffectGraphのPoint Cacheノード

Point Cacheに設定するアセットはUnityメニューのWindow→Visual Effect Graph→Utilities→Point Cache Bake Toolから作成出来ます。

Point Cache Bake Toolの開き方

Point Cache Bake Toolを選択するとウインドウが開きます。

Point Cache Bake Toolウインドウ

上はBake ModeをMeshにしてMeshにCapsuleを指定した時の画像です。

Save to pCache file…ボタンを押すとPoint Cacheノード用のアセットファイルを作成する事が出来ます。

Point Cacheノード用のアセットファイル

ファイルが出来たらPoint Cacheノードにドラッグ&ドロップするか、Asset右側の◎を押して作成したファイルを選択します。

Point Cacheの使い方についてはUnity BlogのSample #2にあります。

VFX Graph samples in 2018.3 | Unity Blog
Visual Effect Graph empowers you to author next-generation visual effects through its node-based behaviors and GPU-based...

System

Systemを見ていきます。

VisualEffectGraphのSystem項目

Empty Particle System

Empty Particle Systemは空のコンテキストの流れを作成します。

VisualEffectGraphのCreate Empty System

Simple Particle System

Simple Particle Systemはコンテキストのフローと各コンテキストにシンプルなブロックを設定したものを作成します。

VisualEffectGraphのSimple Particle System

Simple Heads & Sparks

Simple Heads & Sparksは花火が上がるようなシンプルなエフェクトが作られます。

VisualEffectGraphのSimple Heads & Sparksのサンプル

Simple Heads & Trails

Simple Heads & TrailsはわたくしのパソコンだとUnityが落ちてしまうのでサンプル画像を載せる事が出来ません。((+_+))

Simple Mesh Output

Simple Mesh OutputはコンテキストのOutput MeshにMain Texture項目が追加されたものが表示されます。

タイトルも同じなので違いはそこだけかもしれません。

Meshにテクスチャを貼り付けて出力します。

Simple Particle System

Simple Particle SystemはVisual Effect Graphのテンプレートファイルを作成した時にデフォルトで作られているエフェクトが作られます。

Simple Ribbon

Simple RibbonもわたくしのパソコンだとUnityが落ちてしまうのでサンプル画像を載せる事が出来ません。((+_+))

Simple Swarm Particle System

Simple Swarm Particle SystemはシンプルなSwarm(群れ)のパーティクルを発生するコンテキストとブロックを作成します。

VisualEffectGraphのSimple Swarm Particle System

Simple Swarm Particle Systemで作成されたデフォルトのパーティクルは

VisualEffectGraphのSimpleSwarmParticleSystemのデフォルトのパーティクル

上のような感じでそのままですごいエフェクトになってますね。(^^)/

Misc

Miscを見ていきます。

VisualEffectGraphのMisc項目

Group Node

Group Nodeはノードをグループ分けする時に使用します。

VisualEffectGraphのGroup Nodeノード

グループ名はタイトル部分をダブルクリックして編集する事が出来ます。

Gropu Nodeを選択した状態でSpaceキーまたは右クリックからCreate Nodeでグループに属するノードの作成が出来ます。

他のやり方としては、例えばEmpty Particle System全体をグループ分けしたい時に、Empty Particle Systemで作成されたノードを全部選択した状態で右クリックからGroup Selectionを選択すればグループ分けされます。

終わりに

Visual Effect GraphのVer.7.3.1の全てのノードを見てきました。

途中から画像の省略やら説明の省略やらがだいぶありますが・・・・(^_^;)

こういった全部の機能を見ていく記事は今後やめようかな・・・非常に時間がかかる・・・(´Д`)

参考サイト

Unity-Visual Effect Graph Manual-

タイトルとURLをコピーしました