Lieben Sie diesen Knoten? Kauf mir einen Kaffee!
Erste Schritte? Laden Sie den Test-Workflow unten herunter und sehen Sie, wie er funktioniert.
Probleme? Gehen Sie weiter zum Protokollieren und Debuggen
Ideen zur Verbesserung der Knoten (oder Fehlerberichte) – werfen ein Problem auf
Schamloser Plug für meine anderen Knoten -> Schauen Sie sich Image Picker an, um eine andere Möglichkeit zu finden, einige Arbeitsabläufe reibungsloser zu gestalten. Und hinterlassen Sie einen Stern, wenn Ihnen etwas gefällt!
Dieser Workflow verwendet alle fünf Knoten und kann zum Testen (und Verstehen!) der Knoten verwendet werden. So würde man es nicht bauen, es ist nur ein Beispiel ... | Hier ist ein Bild mit dem Workflow |
---|---|
Oder der Workflow als JSON
Es gibt einige Situationen, die UE-Knoten derzeit nicht bewältigen können. Hier sind einige, die ich kenne, und mögliche Problemumgehungen.
Benutzerdefinierte Pythonsssss-Knoten sind großartig, es gibt jedoch einige Einschränkungen bei der Verwendung mit UE-Knoten. Insbesondere können Sie die Ausgabe eines Preset-Text-Knotens nicht direkt in einen UE-Knoten einspeisen (siehe Nr. 154).
UE-Knoten arbeiten meist mit Gruppenknoten zusammen. Es gibt jedoch ein paar wichtige Dinge zu beachten:
5,0 (6. August 2024)
4,9 (2. Mai 2024)
4,8 (18. März 2024)
send to unmatched
-Modus4,7 (1. März 2024)
Anything Everywhere?
Knoten4.6
Anything Everywhere?
Knoten4.5
convert to real links
hinzu4.4
Anything Everywhere?
Knoten mit Eingaben (funktioniert nur, wenn der Link von einem Knoten stammt, der eine einfache String-Quelle ist)4.3
4.2
4.1.2
4.1.1
4.1
Die v1-Knoten wurden vollständig entfernt. Wenn Sie einen verwenden, können Sie ihn einfach durch einen Anything Everywhere
-Knoten ersetzen.
Verwenden Sie Comfy Manager. Wenn Sie es wirklich manuell tun möchten, klonen Sie dieses Repository einfach in Ihrem Verzeichnis „custom_nodes“.
Der Anything Everywhere
-Knoten verfügt über einen einzelnen Eingang, der zunächst mit „anything“ gekennzeichnet ist. Verbinden Sie etwas damit (direkt – nicht über eine Umleitung), und der Eingabename ändert sich entsprechend dem Eingabetyp. Trennen Sie die Verbindung und es geht zurück zu „Alles“.
Wenn Sie die Eingabeaufforderung ausführen, verhält sich jede nicht verbundene Eingabe irgendwo im Workflow, die diesem Typ entspricht, so, als ob sie mit derselben Eingabe verbunden wäre.
Um zu visualisieren, womit es verbunden ist, klicken Sie mit der rechten Maustaste auf die Hintergrundleinwand und wählen Sie Toggle UE Link Visibility
aus.
Dieser Knoten fügt zwei Widgets hinzu: title_regex und input_regex. Es wird nur an Eingaben gesendet, die übereinstimmen. Im Beispiel ist title_regex also „Vorschau“, sodass das Bild an den Knoten „Vorschaubild“ gesendet wird, nicht jedoch an den Knoten „Bild speichern“. Beachten Sie, dass Sie Knoten- und Eingabetitel umbenennen können, was hilfreich sein kann!
(Ab 4.6 können Sie auch einen Gruppen-Regex angeben, um nur Eingaben auf Knoten zuzuordnen, die in Gruppen sind, die mit dem Regex übereinstimmen.)
Bei den Übereinstimmungen handelt es sich um reguläre Ausdrücke, nicht um Zeichenfolgenübereinstimmungen. Die meisten einfachen Zeichenfolgen funktionieren (sie passen zu jedem Teil des Titels oder Eingabenamens), aber einige Zeichen haben eine besondere Bedeutung (einschließlich verschiedener Arten von Klammern, insbesondere ^, $, / und .), also vermeiden Sie sie einfach, wenn dies nicht der Fall ist regex-geneigt.
Die Verwendung von Regex bedeutet, dass Sie ^prompt
verwenden können, um prompt
nur am Anfang des Titels zu finden, um eine Übereinstimmung mit negative_prompt
zu vermeiden.
Regex 101 – ^
bedeutet „der Anfang“, $
bedeutet „das Ende“, .
entspricht jedem einzelnen Zeichen, .*
entspricht allem beliebiger Länge (einschließlich Null). Für mehr als das besuchen Sie regex101 (die gewünschte Variante ist ECMAScript, obwohl das wahrscheinlich keine Rolle spielt).
Irgendwie.
Da der reguläre Ausdruck bekannt sein muss, bevor der Workflow übermittelt wird (um die Links zu berechnen), können Sie keine Zeichenfolge an Anything Everywhere?
übergeben. Knoten und erwarten Sie, dass es funktioniert. Das Einzige , was unterstützt wird, ist, wenn die Eingabe direkt von einem Knoten kommt, der sie mit einem String-Widget festlegt. Der in diesem Paket enthaltene Simple String
Knoten funktioniert.
Das funktioniert | Das ist nicht der Fall. Und das wird auch nie der Fall sein. |
---|---|
Seed Everywhere stellt eine Verbindung zu jedem nicht verbundenen INT-Eingang mit seed
im Eingabenamen her (seed, Noise_seed usw.) und verfügt über die Funktion control_after_generate. Wenn Sie also die Seed-Widgets in Eingaben umwandeln, können Sie überall denselben Seed verwenden.
Eigentlich nur drei Anything Everywhere
Knoten, die zusammengepackt sind. Entwickelt für die Ausgänge des Checkpoint Loader.
Prompt Everywhere verfügt über zwei Eingänge. Sie werden mit den Regex-Übereinstimmungsregeln (^prompt|^positive)
bzw. neg
gesendet. Diese sollten mit den verschiedenen Namensversionen übereinstimmen, die für Aufforderungen und negative Aufforderungen oder Konditionierungen verwendet werden.
Saiten | Konditionierungen |
---|---|
UE-Knoten funktionieren nicht mit Grundelementen und COMBOs (dem Datentyp, der für Dropdown-Listen verwendet wird, die auch eine Art Grundelement in Comfy sind). Es ist unwahrscheinlich, dass sie es jemals tun werden.
Wenn Sie UE zur Steuerung von Sampler oder Sigma verwenden möchten, können Sie dies mit den integrierten SamplerCustom
Knoten tun:
Weitere Informationen hierzu finden Sie in dieser Diskussion
Klicken Sie mit der rechten Maustaste auf einen Knoten und Sie können ihn so einstellen, dass UE-Links abgelehnt werden
Wenn Sie die UE-Links sehen möchten, können Sie sie aktivieren und deaktivieren, indem Sie mit der rechten Maustaste auf die Leinwand klicken. Für eine genauere Steuerung verfügt das Haupteinstellungsmenü über Optionen zum Anzeigen von Links, wenn die Maus an einem der Enden über den Knoten bewegt wird oder wenn einer dieser Knoten ausgewählt wird.
Die Links können animiert werden, um sie von normalen Links zu unterscheiden – diese Animation kann in Form von sich bewegenden Punkten, einem pulsierenden Leuchten oder beidem erfolgen. Dies kann in einigen Fällen Auswirkungen auf die Leistung haben. Beachten Sie, dass die Pulsanimation weniger Verarbeitung erfordert als die sich bewegenden Punkte. Steuern Sie dies im Haupteinstellungsmenü.
Standardmäßig werden die Animationen ausgeschaltet, wenn der Workflow ausgeführt wird, um die Auswirkungen auf CPU/GPU zu minimieren – Sie können dies auch in den Einstellungen ändern.
Wenn Sie einen Workflow freigeben möchten, ohne dass UE-Knoten erforderlich sind, oder eine API-Version eines Workflows speichern möchten, können Sie die von UE-Knoten erstellten virtuellen Links durch echte Links ersetzen (und die UE-Knoten entfernen).
Dies kann für einen einzelnen Knoten erfolgen, indem Sie mit der rechten Maustaste darauf klicken und Convert to real links
auswählen, oder für alle UE-Knoten in einem Workflow, indem Sie mit der rechten Maustaste auf den Hintergrund klicken und Convert all UEs to real links
auswählen.
Klicken Sie bei gedrückter Umschalttaste auf einen Ausgabeknoten, ziehen Sie ihn und lassen Sie ihn dann los, um ein Menü zum automatischen Erstellen aufzurufen. Dies ersetzt das Standardverhalten (das Ihnen ein Suchfeld bietet), sodass Sie es mit der Anything Everywhere replace search
deaktivieren können.
UE-Knoten können darauf beschränkt werden, nur an Knoten derselben Farbe oder nur an Knoten, die nicht dieselbe Farbe haben, zu senden.
Sie können auch darauf beschränkt werden, nur an Knoten in derselben Gruppe (jeder gemeinsamen Gruppe) oder nur an Knoten zu senden, die nicht zur selben Gruppe gehören.
Klicken Sie mit der rechten Maustaste auf den Knoten und wählen Sie Group restrictions
oder Color restrictions
aus. UE-Knoten, die (auf eine oder beide Arten) eingeschränkt sind, haben einen grünen Kreis in der oberen linken Ecke.
Die Highway-Knoten von Trung 0246 sind eine ziemlich coole Möglichkeit, Daten weiterzuleiten. Sie können sie mit „ Anything Everywhere?
gezielt ansprechen. Knoten mithilfe eines input_regex
, der den nicht verbundenen Eingabenamen mit dem „+“ übereinstimmt, wie folgt:
Das ist neu, also melden Sie bitte alle Probleme!
Standardmäßig werden Arbeitsabläufe vor der Übermittlung auf Schleifen überprüft (da UE diese einführen kann und eine Schleife zu einem schlechten Python-Ergebnis führt). Wenn eine Schleife erkannt wird, erhalten Sie eine JavaScript-Warnung mit den beteiligten Knoten-IDs. Insbesondere wenn jedoch andere benutzerdefinierte Knoten beteiligt sind, ist es möglich, dass bei der Prüfung eine Schleife übersehen wird oder eine Schleife markiert wird, die nicht real ist.
Wenn Sie eine Warnung erhalten und nicht glauben, dass es sich um eine Schleife handelt (nachdem Sie die aufgelisteten Knoten-IDs überprüft haben!), können Sie die Schleifenprüfung im Haupteinstellungsmenü deaktivieren. Wenn etwas, das als Schleife gekennzeichnet ist, einwandfrei läuft, melden Sie bitte ein Problem und fügen Sie den Workflow in den Bericht ein (speichern Sie die JSON-Datei und komprimieren Sie sie, da GitHub keine JSON-Dateien akzeptiert). Ebenso, wenn eine Schleife nicht gefangen wird.
Ich habe Code für das Kern-Comfy-Backend geschrieben, um Schleifen abzufangen. Vielleicht ist er enthalten – PR für ComfyUI – oder vielleicht haben sie einen anderen Plan.
Wenn es mehr als einen sendenden Knoten gibt, der mit einer Eingabe übereinstimmt, gilt als Grundregel, dass der spezifischere Knoten gewinnt. Die Reihenfolge der Prioritäten ist:
Anything Everywhere?
Seed Everywhere
und Prompts Everywhere
Anything Everywhere
Anything Everywhere3
Für Knoten derselben Zeit werden diejenigen mit Farbbeschränkungen und Gruppenbeschränkungen priorisiert (Farbe+Gruppe > Farbe > Gruppe > keine).
Wenn zwei Knoten mit der gleichen Priorität übereinstimmen , stellt keiner eine Verbindung her – es ist besser, schnell zu scheitern, als ein mehrdeutiges Ergebnis zu erzielen. Wenn mehrdeutige Übereinstimmungen vorliegen, können Sie diese mit Show UE broadcast clashes
anzeigen (klicken Sie mit der rechten Maustaste auf den Hintergrund – die Option wird nur angezeigt, wenn es Kollisionen gibt).
Die Knoten, die nur einen Ausgang haben, können auch ein Textfeld erhalten, das genau anzeigt, was durch den Knoten passiert ist. Sie müssen dies aktivieren, wenn Sie es möchten – es befindet sich in den Haupteinstellungen unter „Anything Everywhere-Knotendetails“.
Die JavaScript-Konsole (drücken Sie in einigen Browsern F12) verfügt über Protokollierungsinformationen darüber, was verbunden wird. Sie können den Detaillierungsgrad ändern, indem Sie die Datei [comfy_install]/custom_nodes/cg-use-everywhere/js/use_everywhre_utilities.js
suchen und oben dieses Bit finden:
static ERROR = 0 ; // actual errors
static PROBLEM = 1 ; // things that stop the workflow working
static INFORMATION = 2 ; // record of good things
static DETAIL = 3 ; // details
static LEVEL = Logger . PROBLEM ;
static TRACE = false ; // most of the method calls
Ändern Sie LEVEL
für mehr in Logger.INFORMATION
oder für noch mehr Logger.DETAIL
. Setzen Sie TRACE
für einige andere Debugging-Informationen auf true
.
Wenn Sie ein Problem haben, kann es oft hilfreich sein, F12 zu drücken, um die JavaScript-Konsole anzuzeigen. Die folgenden Schritte sind wirklich hilfreich, um einen guten Fehlerbericht zu erstellen:
Die andere Sache, die einen Versuch wert ist, besteht darin, das gesamte benutzerdefinierte Knoten-Javascript von dort zu löschen, wo es beim Start von ComfyUI kopiert wird:
core
. core
verlassen (es ist ComfyUI-Zeug)Wenn Sie einen Fehler finden, melden Sie bitte ein Problem – wenn Sie den Workflow einbinden können, ist das eine große Hilfe (Sie müssen ihn als .txt speichern oder die .json-Datei komprimieren, da GitHub .json nicht akzeptiert). .
Das Umgehen und Deaktivieren von Knoten funktioniert, allerdings mit einem Haken. Wenn Sie einen UE-Knoten haben, der einen Abgleich durchführt ( Anything Everywhere?
und Prompt Everywhere
) und Sie den Knoten umgehen, mit dem er übereinstimmt, wird die Verknüpfung nicht hergestellt. Also
Wenn Sie ein ? Knoten zum Senden an einen Knoten... | ...und den Empfänger umgehen, er wird nicht verbunden |
---|---|
Es ist unwahrscheinlich, dass dies behoben werden kann, aber es sollte ziemlich einfach zu vermeiden sein!