Math(数式)ノード
Math(数式)ノード は、数学的演算を実行します。
入力
ノードの入力は動的です。一部の入力は、特定の操作でのみ使用できます。例えば、 Addend 入力は Multiply Add(積和算) 演算子でのみ使用できます。
- Value(値)
入力値。三角関数は、この値をラジアンとして読み取ります。
- Addend
Addendの入力。
- Base(ベース)
Base(ベース)の入力。
- Exponent(指数)
Exponent(指数)の入力。
- Epsilon(イプシロン)
Epsilon(イプシロン)の入力。
- Distance(距離)
Distance(距離)の入力。
- Min(最小)
Minimum(最小)の入力。
- Max(最大)
Maximum(最大)の入力。
- Increment(増分)
Increment(増分)の入力。
- Scale(スケール)
Scale(スケール)の入力。
- Degrees(度)
Degrees(度)の入力。
- Radians(ラジアン)
Radians(ラジアン)の入力。
Properties(プロパティ)
- Operation(処理)
入力値に適用される数学演算子:
- Functions(関数)
- Add(追加)
2つの値の合計。
- Subtract(減算)
2つの値の差。
- Multiply(乗算)
2つの値の積。
- Divide(除算)
最初の値を2番目の値で除算。
- Multiply Add(積和算)
Addend による、2つの値の積の合計。
- Power(パワー)
Base(底) が Exponent(指数) 乗となる。
- Logarithm(Log)
Base(底) をベースとする値のlog。
- Square Root(平方根)
値の平方根。
- Inverse Square Root(逆平方根)
値の平方根で割った値。
- Absolute(絶対)
入力値が、符号に関係なく読み取られ、負の値が正の値に変わります。
- Exponent(指数)
オイラー数 を値の乗数に。
- Comparison(比較)
- Minimum(最小)
入力値の最小値を出力。
- Maximum(最大)
2つの入力値の最大値を出力。
- Less Than(小さい)
最初の値が2番目の値より小さい場合、1.0を出力。それ以外の場合、出力は0.0。
- Greater Than(大きい)
最初の値が2番目の値より大きい場合、1.0を出力。それ以外の場合、出力は0.0。
- Sign(符号)
入力値の符号の抽出。 正の数は1.0を出力します。負の数は-1.0を出力します。0.0は0.0を出力します。
- Compare(比較)
2つの入力値の差が Epsilon(イプシロン) 以下の場合、1.0を出力します。
- Smooth Minimum
- Smooth Maximum
- Rounding(丸め)
- Round(丸め)
入力値を最も近い整数に丸める。
- Floor(床)
入力値を最も近い整数に切り捨て。
- Ceil(天井)
入力値を最も近い整数に切り上げ。
- Truncate(切り捨て)
値 の整数部分を出力。
- Fraction(小数部)
- Modulo(剰余)
最初の値を2番目の値で除算した、余りを出力。
- Wrap(ラップ)
入力値と、その値より小さい Max(最大) の整数倍に最も近い値との絶対差に基づき、Min(最小) と Max(最大) 間の値を出力します。
- Snap(スナップ)
入力値を Increment(増分) の最も近い整数倍に切り捨てます。
- Ping-pong(ピンポン)
出力値は、入力値に基づいて、0.0と Scale(スケール) の間で移動します。
- Trigonometric(三角関数)
- Sine(サイン)
入力値の Sine 。
- Cosine(コサイン)
入力値の Cosine 。
- Tangent(タンジェント)
入力値の Tangent 。
- Arcsine(アークサイン)
入力値の Arcsine 。
- Arccosine(アークコサイン)
入力値の Arccosine 。
- Arctangent(アークタンジェント)
入力値の Arctangent 。
- Arctan2(アークタンジェント2)
ラジアンで測定した2番目の値で割った最初の値の Inverse Tangent の出力。
- Hyperbolic Sine(双曲線サイン)
入力値の Hyperbolic Sine 。
- Hyperbolic Cosine(双曲線コサイン)
入力値の Hyperbolic Cosine 。
- Hyperbolic Tangent(双曲線タンジェント)
入力値の Hyperbolic Tangent 。
- Conversion(変換)
- To Radians(ラジアンへ)
入力を度からラジアンに変換。
- To Degrees(度へ)
入力をラジアンから度に変換。
- Clamp(範囲制限)
出力を(0.0〜1.0)の範囲に制限。 Clamp(範囲制限) を参照してください。
出力
- Value(値)
数値出力。
例
手動での Z-マスク
この例では、カメラから約10ユニット離れた立方体を持つ、上段の Render Layers(レンダーレイヤー) ノードによって入力された1つのシーンがあります。下段の Render Layers(レンダーレイヤー) ノードは、ビューの左半分をカバーし、カメラから7ユニット離れた平面を持つシーンを入力します。両方とも、それぞれの Map Value(値マッピング) ノードを介して供給され、Zバッファを20で除算し(サイズフィールドに表示されているように0.05を掛けます)、それぞれ最小/最大が0.0/1.0になるようにクランプされます。
Minimum(最小) 関数の場合、ノードは、対応するピクセルがカメラに近いZ値を選択します。そのため、平面と立方体の一部のZ値を選択します。背景のZ値は無限であるため、1.0にクランプされます(白で表示)。Maximum(最大) の例では、立方体のZ値が平面よりも大きいため、左側に選択されますが、平面のレンダリングレイヤーZは右側に無限(1.0にマッピング)であるため、選択されます。
脈動のためのサイン関数の使用
この例には、101フレームの間に0から1までの線形シーケンスを出力する Time(時間) ノードがあります。フレーム25では、出力値は0.25です。その値は 2 × pi(6.28) で乗算され、サイン関数によって1.0に変換されます。 \(sin(2 × pi/ 4) = sin(pi/ 2) = +1.0\)
サイン関数は (-1.0 から 1.0) の間の値を出力できるため、 Map Value(値マッピング) ノードは、入力 (-1 から 1) を取得し、1を加算 (0 から 2になる) し、結果に1/2を掛ける(こうして、出力を 0 から 1 にスケール)ことにより、0.0 から 1.0 にスケールします。デフォルトの Color Ramp(カラーランプ) は、これらの値をグレースケールに変換します。こうして、サイン関数により、ミディアムグレーは 出力 0.0 に対応し、黒は -1.0 に、白は 1.0 に対応します。ご覧のように、 \(sin(pi/ 2) = 1.0\) 。 あなた自身の視覚的な色計算機を持っているように!このノード設定をアニメーション化すると、グレーの範囲全体でスムーズな循環シーケンスが提供されます。
この機能を使用して、例えば、画像のアルファチャンネルを変更して、フェードイン/フェードアウト効果を生成します。Zチャンネルを変更して、シーンの焦点を合わせたり外したりします。カラーチャンネル値を変更して、カラーを "パルス" にします。
チャンネルを明るくする(スケールする)
この例には、画像の輝度チャンネル(Y)を増やして明るくする Math(数式) (Multiply(乗算)) ノードがあります。出力を有効な値にクランプするには、min() と max() を有効にして Map Value(値マッピング) ノード を使用する必要があることに注意してください。このアプローチでは、対数関数を使用してハイダイナミックレンジ画像を作成できます。この特定の例では、明るさをより簡単に制御できる Bright/Contrast(輝度/コントラスト) ノード もあります。
色の選択を制限(ポスタリゼーション)
この例では、色の値を 0、0.2、0.4、0.6、0.8、1の6つの値のいずれかに制限します。
0 から 1 までの値の連続範囲を特定の値セットに分割するには、次の関数を使用します。\(round(x × n - 0.5) / (n - 1)\) ここで、 "n" は可能な出力値の個数、 "x" は入力ピクセルの色です。 この関数の詳細をご覧ください 。
この関数をBlenderに実装するには、上記のノード設定を検討してください。Math(数式) ノードを、各色(0から1の値)を取り、それを希望する分割数 6 を掛け(値は0から6になります)、0.5でオフセットし(-0.5から5.5)、値を最も近い整数に丸め(0、1、2、3、4、5を生成)、次に画像のピクセルカラーを5で除算します(0.0、0.2、0.4、0.6、0.8、1.0)。
カラー画像の場合、Separate/Combine RGBA(RGBA分離/合成) ノードを使用して、画像を個別のRGBチャンネルに分割し、各チャンネルでこの操作を個別に実行する必要があります。