このページでは、SetノードとSequenceノードについて説明し、FX-Mapのコンテキストでの使用例について説明します。
概要
FX-Mapで関数を操作していると、あるパラメータの関数グラフから値を出力して、別のパラメータで使用したい場合があります。 しかし、デフォルトでは、関数グラフは1つの値しか出力しません:関連するパラメータを駆動するものです。
この場合、SetノードとSequenceノードを組み合わせて使用することで、単一または複数の関数にまたがる変数を制御することができます。
このプロセスには2つのステップがあります。
- Setノードでは、新しい変数を作成して、その変数を他の場所で呼び出し、値を代入することができます。
- Sequenceノードは、グラフの別の分岐を実行する前に、ステップ1のロジックをそのまま実行するために使用されます - 例:現在の関数グラフの予測値を出力するために実際に関与するロジック
Setノード
Setノードでは、新しい変数を設定し、ノードの入力に接続された型と値を代入することができます。
変数名は、ユーザがノードのプロパティに入力します。
デフォルトでは、このノードで設定された変数は、この関数グラフの親のスコープ(例えば、関数で定義されたパラメータをホストするノード)内でしかアクセスできません。
この例では、変数名をmyVariableとし、その値を1としています。
Sequence ノード
Sequenceノードは、関数グラフの実行フローを制御し、最初のブランチが2番目のブランチの前に完全に実行されるようにします。そして、2番目の分岐の出力は、ノードの出力に渡されます。
この例では、Sequenceノードが関数グラフの出力として設定されています。したがって、関数の出力は、Floatノードが出力する0.5という値です。
しかし、その前にmyVariable変数にfloat値1.0が設定されます。この変数は、ノードのコンテキストの他の場所で使用することができます。
Sequenceノードはグラフの実行フローを制御するために連結することができます。
例えば、最初に変数を設定し、後でその値を更新し、最終的な値を読み取るという動作を、特定の順序で行うことができます。
変数の表示
宣言された変数は、どこからでもアクセスできるわけではないことに注意しましょう。
親レベルで宣言された変数は子レベルでもアクセス可能ですが、その逆はできません。
したがって、ノードに設定された変数はグラフレベルではアクセスできないが、グラフレベルで設定された変数は、そのノードのパラメータ関数でアクセスすることができます。
例えば、パラメータを公開する場合、このルールが核となります。公開するためには、実際には次のような手順をとります。
- グラフ入力パラメータの作成
- パラメータの関数グラフでアクセス
- その値を関数の出力として設定する
例えば、Quadrant ノードの「Rotation」の値が「Color/Luminosity」の値の影響を受けることを想像してください。
ここで行うのは、すべての計算をColor/Luminosityパラメータ関数で行うことです。このパラメータは最初に計算されるため、このパラメータに設定された変数は他のノードパラメータで利用できます。
luminosity は0から1の間のランダムな値で、この値を変数myRotationに格納し、その値を関数の出力として設定するというシンプルな関数になる予定です。
これは、Color/Luminosityパラメータの値がランダムになり、myRotation変数に格納されることを意味します。
なお、Positionプロパティはすでにランダムな値で定義されており、Iterateノードはランダムに配置された複数のパターンを取得するために使用されます。
myRotation変数が存在し、値を持つようになったので、Pattern Rotationプロパティのファンクショングラフにアクセスしてみます。
この関数では、Get Float ノードを使って myRotation パラメータの値を読み取り(この変数には float 値が含まれていることが分かっています)、それを関数の出力として設定します。
luminosity がRotationまで制御するようになりました。