前: 値モジュール 次: 色彩関数モジュール

4. 関数モジュール

「関数」カテゴリのモジュールには1つかそれ以上の数値入力ポートと、1つの数値出力ポートがあります。出力値は、入力値に関数を適用して計算します。

このモジュールには任意の数式を入力できます。これで、3つの入力の関数として出力を計算します。また手続きの評価のため、現在の位置や時間が直接影響します。モジュールをダブルクリックするとウインドウが開き、数式を編集できます。

数式には以下の要素をどれでも利用できます。

バイアス関数とゲイン関数について詳しくは後述します。また、いくつかの関数は以下で解説するように、少し標準的ではない振る舞いをするものがあります。例えば x がマイナスのとき、sqrt(x) は虚数を返すのではなく、-sqrt(x) となります。

グラフ

入力値を出力値にマッピングする、ユーザ定義の関数 y(x) を表します。このモジュールをダブルクリックするとウインドウが開き、関数を編集できます。関数を定義するには、入力値 x(0〜1の間)で出力値 y(x) を指定します。0〜1より外側の範囲での振る舞いは、「周期的関数」をチェックボックスで決めます。ここを ON にすると関数は繰り返し、x=0.2, 1.2, 1000.2, -0.8 などで同じ出力値となります。このオプションを OFF にすると、関数は、x<0 のとき関数は f(x) = f(0) の定数に、x>1 のときは f(x) = f(1) の定数になります。

「曲線を滑らかに」オプションを ON にすると、ユーザが設定した数値を補間した、滑らかに変化する関数が使えます。OFF にすると、区分的線形関数となります。

一次変換

入力を線形マッピングした値を出力します。

y(x) = A*x + B

2つの定数 AB は設定可能です。

加算


2つの入力の合計を出力します。

減算

「1番目の入力−2番目の入力」を出力します。

乗算

2つの入力のかけ算を出力します。

除算

「1番目の入力÷2番目の入力」を出力します。

絶対値

入力の絶対値を出力します。

にじみ

入力の「平滑化された」あるいは「にじんだ」ものを出力します。つまり、特定の幅の領域で入力値を平均化し、その平均を出力します。このモジュールの入力ポートは2つで、左側はにじませる情報(Input(0))、下は平均化する領域のサイズ(Blur)です。固定パラメータではなく入力ポートなので、テクスチャや材質の部分によってにじみの量を変えることができます。

Blur = 0.0Blur = 0.05Blur = 0.2

区間制限

固定した範囲で入力を切り抜きます。

y(x) = Xminx<最小 のとき
x最小<x<最大 のとき
Xmaxx>最大 のとき

最大・最小を設定するには、モジュールをダブルクリックします。

比較

入力は2つあります。上の入力値が下の入力値より大きければ1を、そうでなければ0を出力します。

比較関数モジュールが「……より大きい」しかないことを疑問に思われるかもしれませんが、「……より小さい」モジュールはありません。ヒント: 入力を逆にしてみてください。

最小値

2つの入力の最小値を出力します。

最大値

2つの入力値の最大値を出力します。

中間値

入力は3つあります。左側の入力は Fraction(比率) 入力で、Value1(数値1)Value2(数値2) の入力の中間の値を取ります。比率<0のとき、出力は値1に等しくなります。比率>1のときは、出力値は2になります。比率が0と1の間のとき、出力は値1と値2での重み平均化されたものになります。

余り

以下に沿って出力を計算します。

y(x) = x Mod M

入力値 x と係数 M は2つの入力ポートから得ます。

サイン

入力のサインを出力します。

コサイン

入力のコサインを出力します。

平方根

入力の平方根を出力します。正確には、出力は以下で与えられます。

y(x) = sqrt(x)x>0 のとき
-sqrt(-x)x<0 のとき

指数

入力の指数を出力します。

対数

入力の自然対数を出力します。正確には、出力は以下で与えられます。

y(x) = log(x)x>0 のとき
-log(-x)x<0 のとき

べき乗

左側の入力値を、上の入力値でべき乗したものを出力します。正確には、出力は以下で与えられます。

y(x) = x^px>0 のとき
-(x^(-p))x<0 のとき

x と p は2つの入力です。

バイアス

Ken Perlin のバイアス関数を計算します。0と1の間の入力値を与えると、以下の条件に沿って0と1の間の出力を計算します。

y(x) = x^(log(B)/log(0.5))

このとき入力値 x とバイアス B は2つの入力ポートに相当します。B=0.5 なら y(x)=x になります。B の値が0.5より小さければ、出力を小さい方の値に押しやります。B の値が0.5より大きければ、出力を大きい方の値に押しやります。

ゲイン

Ken Perlin のゲイン関数を計算します。0と1の間の入力値を与えると、以下の条件に沿って0と1の間の出力を計算します。

y(x) = Bias(2*x, 1-G)/2x<0.5 のとき
1-Bias(2-2*x, 1-G)/2x>0.5 のとき

このとき入力値 x とゲイン G は2つの入力ポートに相当し、Bias(x, B) は上述のバイアス関数です。G=0.5 なら y(x)=x になります。G が0.5より小さければ、出力を0.5に押しやって入力を平滑化します。また G が0.5より大きければ、出力を0か1に押しやって入力値を強調します。

前: 値モジュール 次: 色彩関数モジュール