Operation(判定と制御)

AIと読む
全ドキュメントを1ファイルで(llms-full.txt)

値を判定して流れを分けたり、数え上げたり、選んだりするノードです。全13種。 Math が「値を変える」のに対して、Operation は「どちらへ流すか」を決めます。

論理演算(4種)

すべて float を受け、1 か 0 を返します。

ノード結果が 1 になる条件
AndA と B が両方とも 1.0 以上
OrA と B のどちらかが 1.0 以上
XorA と B の片方だけが 1.0 以上
NotA が 1.0 未満

真偽の境界は 0 ではなく 1.0 です。 A >= 1.0f で判定しているため、0.5 は「偽」になります。 0〜1 の連続値(Slider や LFO の出力)をそのまま挿すと、1.0 に到達した瞬間しか真になりません。 手前に Math の Ceil や Round を挟むか、IFFilter でしきい値を明示してください。

Not の B ポートも使われません。 二項演算の基底クラスを継承しているため生えているだけで、 実装は A しか見ていません(Math の Abs と同じ事情です)。

判定と分岐

IFFilter

A と B を比べて、結果によって出力先を切り替えます。 比較の種類はノード上のドロップダウンで選びます: > < == != >= <=。

ポート中身
True Output / False Output判定結果に応じて、どちらも A の値が出ます
True Trigger / False Trigger同じタイミングでトリガーが出ます

出るのは常に A です。B は比較にしか使われません。 「条件を満たしたら B を流す」という動きにはならないので、値そのものを切り替えたいときは Switch を使ってください。 == / != は浮動小数の比較なので Mathf.Approximately(近似一致)で判定しています。

判定は A・B の変化、Trigger、条件の変更のいずれでも走ります。

Switch

Index で A / B / C … のスロットから1つを選び、Selected へ流します。 型は何でも通ります(float・文字列・RenderTexture・トリガーなど)。映像も文字も、同じノードで切り替えられます。

  • スロットは既定で A〜D の4つ。全部埋まると空きが1つ自動で増え、最大16(A〜P)まで伸びます。末尾の空きが2つ以上になると自動で詰まります(4つより減ることはありません)
  • 型は最初に繋いだスロットの相手の型が全スロットと Selected に付きます。以後、別の型は繋げません。全部外すと元の「何でも可」に戻ります
  • Index は小数を切り捨て、0 〜 スロット数−1 に丸めます(-5 なら A、99 なら末尾)。Counter の出力をそのまま挿しても事故になりません
  • 選んだ先が未接続のときは、直前の出力を保ちます(映像を繋いだ下流が黒くなるより、前の絵が残るほうが事故が小さいため)
  • トリガーは、選択中のスロットに来たものだけが通ります

出力には Index(丸め後の現在の番号)と Count(接続がある最後のスロットまでの数。未接続なら 0)もあります。Count を Counter の折り返し値に刺すと、繋いだ数だけ巡回するセレクタになります。ノード上のラベルには A (1/4) float のように選択中のスロット・スロット数・型が出ます。

以前の float 専用の Switch で作ったプロジェクトは、そのまま開いて動きます。

数え上げとタイミング

Counter

Count Trigger が来るたびに数え、Count Output へ整数を出します。 Reset Trigger で Min Value に戻ります(0 ではありません)。

Max が Min より小さいと減っていきます。 カウントの向きは Max と Min の大小関係で決まります。

Loop が OFF のとき、値は止まりません。 範囲外に出たときの処理はループ時にしか実装されていないため、Loop OFF では Max を超えて増え続けます。上限で止めたい場合は、後ろに Math の Min / Max を置いて挟んでください。

Init Trigger

プロジェクトのロード/ノード生成から Delay 秒後に1回だけ発火します。 初期値の流し込みや状態のリセットの入口として使います。 Delay はロード直後の数フレームのゴタつきを避けるためのもので、負の値は 0 に丸められます。

Random

Trigger が来たときに、A 〜 B の範囲から乱数を1つ出します。

A や B を動かしても振り直されます。 二項演算の基底クラスを継承しているため、入力が変化した時点でも出力が更新されます。 Trigger のタイミングだけで振りたい場合は、A / B は動かさない値にしておいてください。

文字列とメディア

Combine

2つの文字列を Separator で繋ぎ、末尾に Suffix を足して出します。 B が空のときは Separator も付きません(A と Suffix だけになります)。 ファイルパスの組み立てに使えます。

Text Format

ノード本体に書いたテンプレートの {0} {1} {2} {3} に、A / B / C / D の文字列を差し込んで Out へ出します。 置き換えはこの4つの綴りの完全一致だけで、書式指定({0:F2} など)は使えません。 URL encode をONにすると、各入力値だけをURLエンコードしてから差し込みます(テンプレート側は触りません)。 詳しくは Text Format を参照してください。

JSON Path

JSON に来たJSON文字列から、パス(key / [0].key / a.b[2].c のように . と [n] で掘る)で1つの値を抜き、 Out(文字列)・Number(数値)・Found(取れたか)に出します。パスが空ならJSON全体が Out に出ます。 取れなかったときは Out が空文字・Number が 0・Found が false になります。 詳しくは JSON Path を参照してください。

MediaBrowserIndex

ドロップダウンで選んだ MediaBrowser のフォルダに対し、Index 番目の ファイルパスと、そのフォルダのアイテム数を出します。 Counter と組み合わせると、拍ごとに素材を切り替える流れが作れます。

関連

このページへのリンク

同じページを参照しているページ