Attribute
Attribute (属性) とはシステム内の要素に付随するデータを指します。例えば、パーティクルの色、パーティクルの位置、またはスポーンシステムが作成するパーティクルの量はすべて Attribute です。
システムは特殊な動作を実行したり要素を区別するために、 Attribute から読み込んだり、あるいは Attribute に書き込むことが可能です。
システムは必要な時だけ Attribute を保存します。つまり、システムは不要なデータは保存しないため、メモリーの節約になります。
Attribute の使用
Attribute への書き込み
Attribute に書き込むには、Block (ブロック) を使用します。 Attribute をシステムに書き込めるグラフ要素は、ブロックだけです。
Visual Effect Graph は、後の Context が Attribute を読み込む場合に、シミュレーションデータで書き込まれた Attribute のみを保存します。つまり、以下のことが言えます。
- Initialize Context または Update Context で Attribute に書き込みをする際、後の Update Context や Output Context が Attribute から読み込む場合は、Visual Effect Graph はシミュレーションデータの Attribute のみを保存します。
- Output Context で Attribute に書き込む際は、Visual Effect Graph はシミュレーションデータに Attribute を保存せず、レンダリングのためだけに Attribute を使います。
Attribute の読み込み
Attribute から読み込むには、Operator またはブロックを使います。
- Get Attribute Operator を使う。
Attribute の以前の値に依存する Set Attribute ブロックで、さまざまな混合モードを使います。
ノート:
Visual Effect Graph がシミュレーションデータに保存していない Attribute を読み込む場合は、 Attribute はデフォルトの定数値を渡します。
- Attribute は現在、Particle および ParticleStrip のシステムのみで読み込みが可能です。Spawn システムで Attribute を読み込む際は、Spawner Callbacks を使います。
Attribute の Location (保存場所)
すべてのシステムは、特定のデータコンテナに Attribute を保存します。ただし、既存のシミュレーションデータプールや、システムが依存している別のデータプールから、 Attribute を読み込むことができます。
Current
Current の Attribute Location は、値を読み込む 現在の システムデータコンテナを指します。例えば以下の通りです。
- Particle システムからの、Particle データ
- ParticleStrip システムからの ParticleStrip データ
- Spawn Context の SpawnEvent データ、または、SendEvent や EventAttribute ペイロードから送信される、SpawnEvent データ
Source
Source (ソース) Attribute の Location (保存場所) は、値を読み込む 以前の システムデータコンテナを指します。システムデータが変更されると、ソース Attribute は、システムの最初の Context でのみ読み込みが可能です。例えば、EventAttributes および GPU EventAttributes にアクセスできるのは、Particle または ParticleStrip システムの Initialize Context のみです。
- Initialize Particle Context または Initialize Particle Strips Context において
- 受信 Spawn Context から
- GPUEvent スポーンを介して、その他の Particle システムから
可変個引数 Attribute
Attribute の中には Variadic (可変個引数) プロパティを持つものがあります。これらの Attribute は、シミュレーションやレンダリングに必要なコンポーネントに応じて、スカラーまたはさまざまな次元のベクトルにすることができます。
可変個引数 Attribute から読み込みをする際は、デフォルト値を使い、他のすべての暗示的コンポーネントから読み込みます。
例えば、Quad Particle の スケール は Vector2 (クアッドの幅および長さ) として、 Box Particle の スケール は、Vector3 (キューブの幅、長さ、深度) として表現することができます。可変個引数 Attribute を設定する際は、あらゆるチャンネルの組み合わせのドロップダウンから、必要なチャンネルにのみ書き込むことができます。
別の例としては、法線周りのスプライトの回転が挙げられます。必要となるのは角度 Attribute の Z コンポーネント (角度 Z) のみですので、角度 X および 角度 Y を保存する必要はありません。