[関数](Function)サブオペレータは、1 つまたは 2 つの入力値またはオペランドの 1 つまたは複数の算術計算を行います。このサブオペレータはさまざまな関数を提供します。入力のタイプに応じて特定の計算が使用できます。
注: [関数](Function)サブオペレータの出力タイプは、2 つのオペランドのうちのより複雑なタイプです。たとえば、実数および整数オペランドを使用する関数は実数データを出力します。異なるデータ タイプを出力する必要がある場合は、[変換](Convert)サブオペレータを[関数](Function)サブオペレータの出力にワイヤリングします。
インタフェース
[最初のオペランド]領域
最初のオペランドは常に使用できます。この領域のラベル(「最初のオペランド」)の次にはそれぞれのサブオペレータ入力のラベルが続きます。たとえば、上の図に示されているように、サブオペレータのベクトル入力 V1 と「(X)」が続きます。後者は、選択した関数で入力値が X に置き換えられることを意味します。たとえば、[タイプ](Type)が[整数](Integer)で、[2 番目のオペランドを使用](Use Second Operand)がオフになっているときに、(この場合の)既定の関数[二乗 X*X](Square X*X)を使用する場合は、入力値が最初のオペランドとして使用されて、[関数](Function)サブオペレータがその二乗を出力します。
- タイプ(Type)
- 最初のオペランドのデータ タイプを選択します。[複合](Complex)、[オブジェクト](Object)、[ペア](Pair)、および[等しい](Equal)を除いて、Advanced Data Manipulation ツールがサポートするすべてのデータ タイプがドロップダウン リストから選択できます。この選択によって、領域のラベルとそれぞれのサブオペレータの入力接続タイプが決定されます。
- 事前の係数(Pre-Factor)
- 実数値を指定します。関数が適用される前に、この実数値により最初のオペランドが乗算されます。既定値は 1.0 です。
特定の状況では、[事前の係数](Pre-Factor)パラメータが他の 2 つのパラメータの 1 つに切り替わります。
- ミックス係数(Mix-Factor)
- [補間](Interpolation)関数が選択されている場合にのみ使用できます。[ミックス係数](Mix-Factor)は、2 つのオペランドの補間の比率を定義します。たとえば、[ミックス係数](Mix-Factor)が 0.5 の場合、両方の入力は等しいとみなされます。補間すると、共有の合計は 1.0 になります。[ミックス係数](Mix-Factor)は最初の入力の共有です。合計が 1.0 なので、2 番目の入力は 1.0 の[ミックス係数](Mix-Factor)値になります。
- [オフセット]:
- [アイデンティティ](Identity)関数で[整数](Integer)または[実数](Real)タイプの単一オペランド([最初のオペランド](First Operand))を使用する場合にのみ使用できます。[オフセット](Offset)パラメータは、追加のサブオペレータを作成せずに、固定量によってデータ チャネル内の値をすばやく増減する方法です。
- R3
- オンになっている場合、R3 入力がサブオペレータに追加されます。実数値を出力するサブオペレータを R3 入力に接続することができます。明示的な[事前の係数](Pre-Factor)の値がこの入力事前係数に置き換えられ、関数が適用される前に最初のオペランドによって乗算されます。
- 2 番目のオペランドを使用(Use Second Operand)
- オンになっている場合、関数が 2 つのオペランドを使用します。その結果、[関数](Function)ドロップダウン リストで異なる関数のセットが使用できます。オフになっている場合、[最初のオペランド](First Operand)の入力のみが使用されます。
[2 番目のオペランド]領域
これらのコントロールは、[2 番目のオペランドを使用](Second Operand) (前述を参照)がオンになっている場合にのみ使用できます。この状況では、[関数](Function)サブオペレータが 2 つの入力値の計算を実行します。最初のオペランドのタイプに応じて、2 番目のオペランドが選択される場合とそうでない場合があります。たとえば、最初のオペランドが[時間](Time)タイプの場合、2 番目のオペランドも[時間](Time)タイプである必要があります。これに応じて、サブオペレータの入力接続が設定されます。
この領域のラベル(「2 番目のオペランド」)の次にはそれぞれのサブオペレータ入力のラベルが続きます。たとえば、上の図に示されているように、ラベルには、行列の入力 M2 と「(Y)」が含まれます。後者は、選択した関数で入力値が Y に置き換えられることを意味します。たとえば、両方の入力タイプが[時間](Time)で、関数[加算 X+Y](Addition X+Y)を使用する場合、T2 入力値が T1 入力値に追加されます。
- タイプ(Type)
- 必要に応じて、2 番目のオペランドのデータ タイプを選択します。ドロップダウン リストは、最初のオペランド タイプが[整数](Integer)、[クォータニオン](Quaternion)、[実数](Real)、または[ベクトル](Vector)の場合にのみ使用できます。そうでない場合は、最初のオペランドと同じデータ タイプが設定され、[タイプ](Type)が読み込み専用フィールドになります。ドロップダウン リストから使用できるデータ タイプは、最初のオペランドのタイプによって異なります。たとえば、最初のオペランドのタイプが[整数](Integer)の場合、2 番目のオペランドは[整数](Integer)または[実数](Real)だけになります。
- 事前の係数(Pre-Factor)
- 実数値を指定します。関数が適用される前に、この実数値により 2 番目のオペランドが乗算されます。既定値は 1.0 です。
- R4
- オンになっている場合、R4 入力がサブオペレータに追加されます。実数値を出力するサブオペレータを R4 入力に接続することができます。明示的な[事前の係数](Pre-Factor)の値がこの入力事前係数に置き換えられ、関数が適用される前に 2 番目のオペランドによって乗算されます。
- 機能
- ベース出力値の計算に使用する数式を選択します。ドロップダウン リストの内容は、最初のオペランドのデータ タイプと、存在する場合は、2 番目のオペランドのデータ タイプによって異なります。関数には一目瞭然の名前が付いています。剰余オペレータと除算オペレータでは、負の値への対応が異なります。除算オペレータでは、結果の符号が被除数の符号と同じになります。 剰余オペレータでは、結果の符号が除数の符号と同じになります。 除算オペレータは Fortran、C (C99 標準)、および C++ (C++11 標準)の基準に従います。
[結果]領域
- タイプ(Type)
- [関数](Function)サブオペレータの出力データ タイプです。単一のオペランドおよび同じタイプの 2 つのオペランドの場合、このデータ タイプは、最初のオペランドのデータ タイプと常に同じです。2 つの異なるタイプのオペランドの場合、出力タイプは、2 つのオペランドのうちのより複雑なタイプです。たとえば、実数および整数オペランドを使用する関数は実数データを出力します。異なるデータ タイプを出力する必要がある場合は、[変換](Convert)サブオペレータを[関数](Function)サブオペレータの出力にワイヤリングします。
- 事後の係数(Post-Factor)
- 結果のタイプの値を指定します。関数が適用された後、この値により結果が乗算されます。既定値は 1.0 または 1 です。
- [アニメーション同期パラメータ](Parameters Animation Sync)
- サブオペレータ パラメータをアニメートする場合、アニメーションの開始フレームまたは現在のイベントの開始フレームからすべてのパーティクルに対してこのアニメーションの適用を開始するか、エージに基づいて各パーティクルに適用することができます。オプションは次のとおりです。
- E5
- オンにすると、アニメーション同期パラメータをユーザが選択できるように、[パラメータ](Parameter)サブオペレータで公開できます。この設定をパーティクル ビュー インタフェースで使用できるようにするには、[E5]をオンにし、[タイプ](Type)が[アニメーション同期](Animation Sync)に設定された[パラメータ](Parameter)サブオペレータを追加します。次に、そのサブオペレータを[関数](Function)サブオペレータの[E5]入力にワイヤリングしてから、[パラメータをエクスポーズ](Expose Parameters)を使用します。
- グループ ID 別制限(Restrict By Group ID)
- オンになっている場合、[関数](Function)サブオペレータを実行するグループ ID 整数データ チャネルを指定できます。[グループ ID データ チャネル](Group ID Data Channel)ボタンをクリックして、データ チャネルを指定します。
このオプションは、次の状態の場合にのみ使用できます。
- [2 番目のオペランドを使用](Use Second Operand)がオフになっているときに[関数](Function)ドロップダウン リストに表示される[すべて](All)タイプの関数の場合
- 1 つまたは 2 つのオペランドを使用するときに[関数](Function)ドロップダウン リストに表示される[平均](Average)タイプの関数の場合
- [グループ ID 別制限](Restrict By Group ID)がオンになっていて、グループ ID を設定している場合、指定した関数は、そのグループ ID のみを持つすべてのパーティクルで実行されます。
このオプションが機能する方法を次に示します。
パーティクル データ = 1 2 3 4 5 1 2 3 4 5
関数 = 平均: 結果 = 3 3 3 3 3 3 3 3 3 3
ここで、[グループ ID 別制限](Restrict By Group ID)がオンになっていて、指定した[グループ ID データ チャネル](Group ID Data Channel)設定のデータが「1 1 1 2 4 4 4 4 4 8」だとします。
グループ ID は、平均値が計算される方法を制限します。つまり、同じグループ ID のパーティクルに対して計算されます。したがって、関数の結果は、「2 2 2 4 3 3 3 3 3 5」になります(元のパーティクル データから)。
この元の例には次のユース ケースがあります。パーティクルには、親に基づいたグループ ID が与えられます。パーティクルが同じ親からスポーンした場合、パーティクルは同じグループ ID を持ちます。この場合、パーティクルが移動してメッシュと衝突します。パーティクルがメッシュと衝突すると、同じグループ ID を持つすべてのパーティクルが次のイベントにジャンプします。
これは次の方法で達成されます。パーティクルが衝突すると、そのデータが False から True に変わります。次に、[グループ ID 別制限](Restrict By Group ID)がオンになっている場合に[OR/全パーティクル](OR / All Particles)が使用されます。したがって、同じグループで[OR]を使用すると、True 値が同じグループのすべてのパーティクルに伝達されます。