単純な計算

画像のサイズを綺麗に半分にしたり、バッチサイズを調整したりと、単純な四則演算をする場面はしばしばあります。 そのためのノードを見ていきましょう。

おすすめのカスタムノード

単純な機能なので、これを実装するものは探せばいくらでもありますが、以下のどちらかのカスタムノードがあれば十分です。(コアノードとして実装されるといいんですがね…)

ここでは、ComfyUI_essentialsSimple Mathノード を例に解説します。


Simple Math

Simple_Math.json

a, b, c にそれぞれ数値を入れられます。 その変数を利用して、a * b - c のように書けば、単純に算数を行うことができます。

また、これはPythonの式をそのまま使ったものなので、もう少し高度な計算も行えます。

a // b       # 整数除算(小数点以下切り捨て)
a % b        # 剰余(割り算の余り)
a ** b       # 累乗(べき乗)
(a + b) * c  # 括弧で優先順位を指定

abs(a - b)   # 絶対値を求める
min(a, b)    # 最小値を返す
max(a, b)    # 最大値を返す
round(a / b) # 四捨五入

(a > b) * 1  # 論理式:条件を数値化(a > bなら1, そうでなければ0)
(a == b) * 1 # 論理式:等しいかどうか判定
(a != b) * 1 # 論理式:異なるかどうか判定

int型とfloat型

数字には「型(タイプ)」があります。 ComfyUIでは主に intfloat の2種類を使います。

  • int型:整数のみ(例:512, 32, 1
    • バッチサイズや画像の解像度など
  • float型:小数を扱える(例:0.7, 1.5, 24.0
    • KSamplerのstrengthや動画のfpsなど

適切な型で入出力しないとノードに接続できません。 「全部floatでええやん」というツッコミが聞こえてきそうですが、計算の効率や精度のために区別されているんですね…慣れてしまいましょう。

型の変換

ちなみに、値を一度 Simple Math ノードに通すと、intfloat の変換を行えます。

入力がfloatでも、出力先がintなら自動的に変換してくれます。

Simple_Math_FloatInt.json

【小技】入力欄での簡易計算

ノードを使うほどでもない簡単な計算なら、入力欄で直接計算式を書くと、計算された値が入力されます。


Power Puter (rgthree)

rgthree-comfy で追加される Power Puter を使うと、画像のサイズを取得できたりif文が使えたりと、もはやほぼプログラミングですが、より複雑な処理をすることができます。

Power_Puter.json