From 30d42d047a5a4dc5d136d5d0ec772be35848620f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8B=E3=81=BF=E3=81=AA=E3=83=BC=E5=85=88=E7=94=9F?= Date: Thu, 20 Aug 2026 22:03:34 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=9F=E3=83=8E=E3=83=BC=E3=83=89=E3=81=AE=E8=AA=AC=E6=98=8E?= =?UTF-8?q?=E3=81=A8=E4=BD=BF=E7=94=A8=E6=96=B9=E6=B3=95=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 109 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b7fe0a2..1a0aa08 100644 --- a/README.md +++ b/README.md @@ -44,8 +44,8 @@ - フラットな候補リストから1つ選ぶノード - `Prompt Random Choice Ex` - フラット候補に加えて、`{}` による入れ子の候補展開に対応したノード - - 先にすべての葉候補へ展開し、最後に1回だけランダム選択します - - 展開済み候補リストは `options_text` が変わるまでキャッシュします + - 最終葉候補が均等確率になるように、葉数を数えて1経路だけを選択します + - 完成文字列を事前に全列挙せず、展開済み文字列の大量生成を避けます どちらもノードとしての出力は同じじゃ。 @@ -133,18 +133,122 @@ git clone https://github.com/ruminar/ComfyUI-PromptRandomChoice.git ノード追加メニューの `Prompt Random Choice` カテゴリに、通常版・Runtime版・Safe Random Seedがまとまっています。 -1. `Prompt Random Choice` ノードを置く -2. `options_text` に候補を入れる (入力例を参照) +まず、用途に合うノードを選びます。 + +| やりたいこと | 使うノード | +| --- | --- | +| 単純な候補リストから1つ選びたい | `Prompt Random Choice` | +| 親子関係のある候補を `{}` で書きたい | `Prompt Random Choice Ex` | +| キュー実行中に単純な候補リストを編集したい | `Runtime Prompt Random Choice` | +| キュー実行中に `{}` を含む候補リストを編集したい | `Runtime Prompt Random Choice Ex` | + +1. 上の表から、用途に合うノードを置く +2. `options_text` に候補を入れる([入力例](#入力例)を参照) 3. 必要に応じて `change_every` を選ぶ -4. `selected_text` を `Join String Multi` などの文字列結合ノードへ繋ぎ、ポジティブプロンプトへ足す +4. `selected_text` をString Join系の文字列結合ノードへ繋ぎ、ポジティブプロンプトへ足す 5. キューを好きなだけ積む +`change_every = 1` なら1ジョブごとに選び直し、`change_every = 3` なら同じ候補を3ジョブ続けて使用します。迷った時は `1` のままで大丈夫じゃ。 +
image

image
※ 設定後は折りたたんで使うのもおすすめなのじゃ。 +### Runtime版で、生成を続けながら候補を調整する + +ランダム抽選のままでは、調整したい候補が次にいつ選ばれるか分かりません。Runtime版では、半角の `!` を候補の先頭へ付けることで、その候補を一時的に固定できます。従来版の `Prompt Random Choice` / `Prompt Random Choice Ex` では、`!` は固定記号ではなく通常文字として扱われます。 + +この機能を使うと、次の流れでキューを止めずに候補を育てられます。 + +```text +ランダム候補から調整したいものを決める + ↓ +先頭へ ! を付けて一時固定する + ↓ +生成結果を見ながら候補を書き換える + ↓ +納得できたら ! を外し、ランダム候補へ戻す +``` + +リアルタイム調整を始める時は、先に `change_every = 1` を設定してからキューへ投入してください。これで、入力欄が `LIVE` になった後の次のジョブから、最新候補を評価します。すでに実行中のジョブへ途中から反映するものではありません。 + +#### 1. まずは通常の候補を用意する + +改行、または `|` が候補の区切りです。 + +```text +black hair, straight long hair, +dark brown hair, short cut, +blonde hair, long hair, +``` + +#### 2. 調整したい候補を `!` で固定する + +金髪だけを確認したい場合は、候補のtrim後の先頭へ `!` を付けます。`!` 自体は出力文字列に含まれません。 + +```text +black hair, straight long hair, +dark brown hair, short cut, +!blonde hair, long hair, +``` + +Runtime版は、同じ階層に `!` 候補が複数ある場合、上から最初の1件を選びます。 + +#### 3. キューを動かしたまま内容を調整する + +入力欄の表示が `LIVE` になったことを確認します。そのまま生成結果を見ながら、固定中の候補を書き換えます。 + +```text +black hair, straight long hair, +dark brown hair, short cut, +!gold yellow hair, very long hair, blue eyes, small ahoge, side braid, black ribbon, +``` + +`change_every = 1` なら、サーバーが受理した最新内容が次のジョブの選択時に使われます。キューをいったん削除して積み直す必要はありません。 + +#### 4. 調整が終わったら `!` を外す + +納得できる結果になったら `!` を外します。固定されていた内容が、再び通常のランダム候補の1つとして選ばれるようになります。 + +```text +black hair, straight long hair, +dark brown hair, short cut, +gold yellow hair, very long hair, blue eyes, small ahoge, side braid, black ribbon, +``` + +#### `change_every` を2以上にした場合 + +`change_every` は、現在の選択結果を何回使い続けるかを決めます。たとえば `change_every = 3` の場合、途中で編集したり `!` を追加したりしても、現在の結果を3回出力し終えるまでは切り替わりません。 + +```text +実行1: Aを選択 + ↓ Runtimeで !B を追加 +実行2: A +実行3: A +実行4: 最新候補を評価してBを選択 +``` + +同じ候補で3枚ずつ比較したい時には便利ですが、1ジョブごとに調整結果を確認したい時は `change_every = 1` を使ってください。 + +#### Runtime Exで経路を固定する場合 + +Runtime Exでは、`!` は書かれた階層だけを固定します。親から子まで1本の経路を固定したい場合は、各階層へそれぞれ `!` が必要です。 + +```text +black hair{ + straight long hair + short cut +} +!blonde hair{ + !long hair + wavy long hair +} +``` + +この例では、最上位で `blonde hair`、その子階層で `long hair` を固定するため、`blonde hair, long hair` が出力されます。 + ## 入力例 ### 改行区切り (改行前の`,`は任意です)