Нравится этот узел? Купи мне кофе!
Начиная? Загрузите рабочий процесс тестирования ниже и посмотрите, как он работает.
Проблемы? Перейти к ведению журнала и отладке
Идеи о том, как улучшить узлы (или отчеты об ошибках) — поднять проблему
Бесстыдный плагин для других моих узлов -> Проверьте Image Picker, чтобы узнать еще один способ сделать некоторые рабочие процессы более плавными. И оставьте звезду, если вам что-то нравится!
В этом рабочем процессе используются все пять узлов, и его можно использовать для тестирования (и понимания!) узлов. Вы бы не построили его так, это просто пример... | Вот изображение с рабочим процессом в |
---|---|
Или рабочий процесс в формате json
Есть некоторые ситуации, с которыми узлы UE в настоящее время не могут справиться. Вот некоторые из них, о которых я знаю, и возможные обходные пути.
Пользовательские узлы pythonsssss хороши, но есть некоторые ограничения при их использовании с узлами UE. В частности, вы не можете передать выходные данные узла Preset Text непосредственно в узел UE (см. № 154).
Узлы UE в основном работают с узлами группы. Но стоит отметить пару важных вещей:
5.0 (6 августа 2024 г.)
4,9 (2 мая 2024 г.)
4,8 (18 марта 2024 г.)
send to unmatched
режим.4,7 (1 марта 2024 г.)
Anything Everywhere?
узлы4.6
Anything Everywhere?
узел4,5
convert to real links
4.4
Anything Everywhere?
узел с входами (работает только в том случае, если ссылка исходит от узла, который является простым источником строки)4.3
4.2
4.1.2
4.1.1
4.1
Узлы v1 были полностью удалены. Если вы использовали его, вы можете просто заменить его узлом Anything Everywhere
.
Используйте удобный менеджер. Если вы действительно хотите сделать это вручную, просто клонируйте этот репозиторий в каталог custom_nodes.
Узел Anything Everywhere
имеет один вход, изначально помеченный как «что угодно». Подключите к нему что-нибудь (напрямую, а не через перенаправление), и имя входа изменится в соответствии с типом входа. Отключитесь, и он вернется к «чему угодно».
При запуске приглашения любой неподключенный вход в любом месте рабочего процесса, соответствующий этому типу, будет действовать так, как если бы он был подключен к тому же входу.
Чтобы визуализировать то, к чему оно подключено, щелкните правой кнопкой мыши фоновое полотно и выберите Toggle UE Link Visibility
.
Этот узел добавляет два виджета — title_regex и input_regex. Он будет отправлять только те входы, которые совпадают. Итак, в этом примере title_regex имеет значение «Предварительный просмотр», поэтому изображение отправляется в узел предварительного просмотра изображения, но не в узел сохранения изображения. Обратите внимание, что вы можете переименовывать узлы и вводить заголовки, что может помочь!
(Начиная с версии 4.6 вы также можете указать групповое регулярное выражение, чтобы сопоставлять входные данные только на узлах, которые находятся в группах, соответствующих регулярному выражению.)
Совпадения представляют собой регулярные выражения, а не совпадения строк. Подойдут самые простые строки (соответствующие любой части заголовка или входного имени), но некоторые символы имеют особое значение (включая различные виды скобок, в частности ^, $, / и .), поэтому просто избегайте их, если вы этого не сделаете. склонен к регулярным выражениям.
Использование регулярного выражения означает, что вы можете использовать ^prompt
для сопоставления prompt
только в начале заголовка, чтобы избежать совпадения negative_prompt
.
Regex 101 - ^
означает «начало», $
означает «конец», .
соответствует любому одиночному символу, .*
соответствует чему угодно любой длины (включая нулевую). Более того, посетите regex101 (нужный вам вариант — ECMAScript, хотя это, вероятно, не имеет значения).
Вроде того.
Поскольку регулярное выражение должно быть известно до отправки рабочего процесса (чтобы вычислить ссылки), вы не можете передать строку в Anything Everywhere?
node и ожидайте, что он сработает. Единственное , что поддерживается, — это если входные данные поступают непосредственно от узла, который устанавливает их с помощью строкового виджета. Узел Simple String
, включенный в этот пакет, будет работать.
Это работает | Это не так. И никогда не будет. |
---|---|
Seed Everywhere подключается к любому несвязанному входу INT с seed
в имени входа (seed, Noise_seed и т. д.) и имеет функцию control_after_generate. Поэтому, если вы преобразуете начальные виджеты во входные данные, вы можете использовать одно и то же начальное значение везде.
На самом деле всего три узла Anything Everywhere
собранные вместе. Предназначен для выходов Checkpoint Loader.
Подсказка Everywhere имеет два входа. Они будут отправлены с правилами соответствия регулярных выражений (^prompt|^positive)
и neg
соответственно. Они должны соответствовать различным версиям имен, которые используются для подсказок и отрицательных подсказок или условий.
струны | условности |
---|---|
Узлы UE не работают с примитивами и COMBO (тип данных, используемый для раскрывающихся списков, которые также являются типом примитивов в Comfy). Вряд ли они когда-нибудь это сделают.
Если вы хотите использовать UE для управления сэмплером или сигмой, вы можете сделать это с помощью встроенных узлов SamplerCustom
:
Подробнее об этом смотрите в этом обсуждении
Щелкните правой кнопкой мыши узел, и вы можете настроить его на отклонение ссылок UE.
Если вы хотите видеть ссылки UE, вы можете включать и выключать их, щелкнув правой кнопкой мыши на холсте. Для более точного управления в главном меню настроек есть параметры, позволяющие отображать ссылки, когда указатель мыши перемещается по узлу с любого конца или когда выбран один из этих узлов.
Ссылки можно анимировать, чтобы отличить их от обычных ссылок — эта анимация может иметь форму движущихся точек, пульсирующего свечения или того и другого. В некоторых случаях это может повлиять на производительность — обратите внимание, что анимация пульса требует меньше обработки, чем движущиеся точки. Управляйте этим в главном меню настроек.
По умолчанию анимация отключается во время выполнения рабочего процесса, чтобы минимизировать влияние на процессор/графический процессор — вы также можете изменить это в настройках.
Если вы хотите поделиться рабочим процессом без необходимости узлов UE или сохранить версию API рабочего процесса, вы можете заменить виртуальные ссылки, созданные узлами UE, реальными ссылками (и удалить узлы UE).
Это можно сделать для одного узла, щелкнув его правой кнопкой мыши и выбрав Convert to real links
, или для всех узлов UE в рабочем процессе, щелкнув правой кнопкой мыши фон и выбрав Convert all UEs to real links
.
Нажмите клавишу Shift на выходном узле и перетащите, а затем отпустите, чтобы получить меню автоматического создания. Это заменяет поведение по умолчанию (которое дает вам окно поиска), поэтому вы можете отключить его с помощью параметра Anything Everywhere replace search
.
Узлы UE могут быть ограничены для отправки только узлам одного и того же цвета или только узлам разного цвета.
Им также можно запретить отправку только узлам в одной группе (любой общей группе) или только узлам, которые не входят в одну и ту же группу.
Щелкните правой кнопкой мыши узел и выберите Group restrictions
или Color restrictions
. Узлы UE, которые ограничены (в любом или обоих направлениях), отмечены зеленым кружком в верхнем левом углу.
Узлы шоссе Trung 0246 — это довольно крутой способ передачи данных. Вы можете настроить на них таргетинг с помощью Anything Everywhere?
node, используя input_regex
, который соответствует имени несвязанного входа со знаком «+», например:
Это новинка, поэтому сообщайте о любых проблемах!
По умолчанию рабочие процессы проверяются на наличие циклов перед отправкой (поскольку UE может их ввести, а цикл приводит к плохому результату Python). Если обнаружен цикл, вы получите предупреждение JavaScript, показывающее задействованные идентификаторы узлов. Однако, особенно если задействованы другие пользовательские узлы, возможно, что проверка пропустит цикл или отметит тот, который не является реальным.
Если вы получили предупреждение и не верите, что существует цикл (проверив перечисленные идентификаторы узлов!), вы можете отключить проверку цикла в главном меню настроек. Если что-то, помеченное как цикл, работает нормально, поднимите проблему и включите рабочий процесс в отчет (сохраните JSON и заархивируйте его, поскольку GitHub не принимает файлы .json). Аналогично, если цикл не пойман.
Я написал код для основного бэкэнда Comfy, чтобы ловить петли, возможно, он будет включен — пиар для ComfyUI — или, может быть, у них есть другой план.
Если существует более одного отправляющего узла, соответствующего входному сигналу, основные правила заключаются в том, что побеждает более конкретный узел. Порядок приоритетов следующий:
Anything Everywhere?
Seed Everywhere
и Prompts Everywhere
Anything Everywhere
Anything Everywhere3
Для узлов одного и того же времени приоритет имеют узлы с ограничениями по цвету и группировке (цвет+группа > цвет > группа > нет).
Если два узла с одинаковым приоритетом совпадают, ни один из них не соединится — лучше быстро потерпеть неудачу, чем получить неоднозначный результат. Если есть неоднозначные совпадения, вы можете отобразить их с помощью функции Show UE broadcast clashes
(щелкните правой кнопкой мыши по фону — опция появляется только в случае наличия конфликтов).
Узлы, которые имеют только один выход, также могут получить текстовое поле, показывающее, что именно прошло через узел. Вам нужно включить это, если вы этого хотите — это в основных настройках, «Подробности узла Anything Everywhere».
Консоль JavaScript (в некоторых браузерах нажмите клавишу F12) содержит информацию о том, что подключается. Вы можете изменить уровень детализации, найдя файл [comfy_install]/custom_nodes/cg-use-everywhere/js/use_everywhre_utilities.js
и найдя вверху этот бит:
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
Измените LEVEL
на Logger.INFORMATION
чтобы получить больше, или Logger.DETAIL
, чтобы получить еще больше; установите для TRACE
значение true
для получения другой отладочной информации.
Если у вас возникла проблема, часто может помочь нажатие клавиши F12, чтобы открыть консоль JavaScript. Следующие шаги действительно помогут составить хороший отчет об ошибках:
Еще одна вещь, которую стоит попробовать, — это очистить весь javascript пользовательского узла, откуда он копируется при запуске ComfyUI:
core
. Оставить core
(это ComfyUI)Если вы обнаружите ошибку, поднимите проблему — если вы сможете включить рабочий процесс, это очень поможет (вам нужно будет сохранить его как .txt или заархивировать файл .json, поскольку GitHub не принимает .json). .
Обход и отключение узлов работает, но с одной загвоздкой. Если у вас есть узлы UE, которые выполняют сопоставление ( Anything Everywhere?
и Prompt Everywhere
), и вы обходите узел, которому он соответствует, ссылка не будет создана. Так
Если вы используете ? узел для отправки на узел... | ...и обойти получателя, он не подключается |
---|---|
Это вряд ли будет исправлено, но избежать этого довольно легко!