¿Te encanta este nodo? ¡Cómprame un café!
¿Empezando? Descargue el flujo de trabajo de prueba a continuación y vea cómo funciona.
¿Problemas? Saltar a registro y depuración
Ideas sobre cómo mejorar los nodos (o informes de errores): plantear un problema
Enchufe descarado para mis otros nodos -> Consulte el Selector de imágenes para conocer otra forma de hacer que algunos flujos de trabajo sean más fluidos. ¡Y deja una estrella si te gusta algo!
Este flujo de trabajo utiliza los cinco nodos y se puede utilizar para probar (¡y comprender!) los nodos. No lo construirías así, es sólo un ejemplo... | Aquí hay una imagen con el flujo de trabajo en |
---|---|
O el flujo de trabajo como json
Hay algunas situaciones que los nodos UE no pueden afrontar en la actualidad. Éstos son algunos de los que conozco y posibles soluciones.
Los nodos personalizados de Pythonsssss son excelentes, pero existen algunas limitaciones al usarlos con nodos UE. En particular, no puede enviar la salida de un nodo de texto preestablecido directamente a un nodo UE (consulte el punto 154).
Los nodos UE trabajan principalmente con nodos de grupo. Pero hay un par de cosas importantes a tener en cuenta:
5.0 (6 de agosto de 2024)
4.9 (2 de mayo de 2024)
4.8 (18 de marzo de 2024)
send to unmatched
4.7 (1 de marzo de 2024)
Anything Everywhere?
nodos4.6
Anything Everywhere?
nodo4.5
convert to real links
4.4
Anything Everywhere?
nodo con entradas (solo funciona si el enlace es de un nodo que es una fuente de cadena simple)4.3
4.2
4.1.2
4.1.1
4.1
Los nodos v1 se han eliminado por completo. Si estaba usando uno, puede reemplazarlo con un nodo Anything Everywhere
.
Utilice Comfy Manager. Si realmente desea hacerlo manualmente, simplemente clone este repositorio en su directorio custom_nodes.
El nodo Anything Everywhere
tiene una única entrada, inicialmente denominada "cualquier cosa". Conecte cualquier cosa (directamente, no mediante un redireccionamiento) y el nombre de la entrada cambiará para coincidir con el tipo de entrada. Desconecta y vuelve a "cualquier cosa".
Cuando ejecuta el mensaje, cualquier entrada no conectada, en cualquier parte del flujo de trabajo, que coincida con ese tipo, actuará como si estuviera conectada a la misma entrada.
Para visualizar a qué se está conectando, haga clic derecho en el lienzo de fondo y seleccione Toggle UE Link Visibility
.
Este nodo agrega dos widgets: title_regex y input_regex. Solo enviará a las entradas que coincidan. Entonces, en el ejemplo, title_regex es 'Vista previa', por lo que la imagen se envía al nodo Vista previa de imagen pero no al nodo Guardar imagen. Tenga en cuenta que puede cambiar el nombre de los títulos de entrada y nodo, ¡lo cual puede ayudar!
(A partir de 4.6, también puede especificar una expresión regular de grupo para que solo coincida con las entradas de los nodos que están en grupos que coincidan con la expresión regular).
Las coincidencias son expresiones regulares, no coincidencias de cadenas. La mayoría de las cadenas simples funcionarán (que coinciden con cualquier parte del título o nombre de entrada), pero algunos caracteres tienen significados especiales (incluidos varios tipos de corchetes, ^, $, / y . en particular), así que evítelos si no lo está. inclinado a expresiones regulares.
Usar expresiones regulares significa que puede usar ^prompt
para hacer coincidir prompt
al principio del título únicamente, para evitar que coincida con negative_prompt
.
Regex 101 - ^
significa 'el comienzo', $
significa 'el final' .
coincide con cualquier carácter, .*
coincide con cualquier longitud de cualquier longitud (incluido cero). Para obtener más información, visite regex101 (la versión que desea es ECMAScript, aunque probablemente no importe).
Más o menos.
Debido a que es necesario conocer la expresión regular antes de enviar el flujo de trabajo (para calcular los enlaces), no se puede pasar una cadena a Anything Everywhere?
nodo y esperar que funcione. Lo único que se admite es si la entrada proviene directamente de un nodo que la configura con un widget de cadena. El nodo Simple String
que se incluye en este paquete funcionará.
Esto funciona | Esto no es así. Y nunca lo haré. |
---|---|
Seed Everywhere se conecta a cualquier entrada INT no conectada con seed
en el nombre de la entrada (seed, noise_seed, etc.) y tiene la función control_after_generate. Entonces, si convierte los widgets de semillas en entradas, puede usar la misma semilla en todas partes.
En realidad, solo tres nodos Anything Everywhere
empaquetados juntos. Diseñado para las salidas de Checkpoint Loader.
Prompt Everywhere tiene dos entradas. Se enviarán con reglas de coincidencia de expresiones regulares de (^prompt|^positive)
y neg
respectivamente. Estos deben coincidir con las distintas versiones de nombres que se utilizan para indicaciones y indicaciones o condicionamientos negativos.
instrumentos de cuerda | condicionamientos |
---|---|
Los nodos UE no funcionan con primitivas y COMBO (el tipo de datos utilizado para las listas desplegables, que también son un tipo de primitiva dentro de Comfy). Es poco probable que alguna vez lo hagan.
Si desea utilizar UE para controlar sampler o sigma, puede hacerlo con los nodos SamplerCustom
integrados:
Para obtener más información sobre esto, consulte esta discusión.
Haga clic derecho en un nodo y podrá configurarlo para que rechace enlaces UE
Si desea ver los enlaces UE, puede activarlos y desactivarlos haciendo clic derecho en el lienzo. Para un control más preciso, el menú de configuración principal tiene opciones para mostrar enlaces cuando el mouse se mueve sobre el nodo en cualquiera de los extremos, o cuando se selecciona uno de esos nodos.
Los enlaces se pueden animar para distinguirlos de los enlaces normales; esta animación puede tomar la forma de puntos en movimiento, un brillo pulsante o ambos. Esto puede afectar el rendimiento en algunos casos; tenga en cuenta que la animación del pulso requiere menos procesamiento que los puntos en movimiento. Controle esto en el menú de configuración principal.
De forma predeterminada, las animaciones se apagan cuando se ejecuta el flujo de trabajo para minimizar el impacto en la CPU/GPU; también puedes cambiar esto en la configuración.
Si desea compartir un flujo de trabajo sin que se requieran nodos UE, o guardar una versión API de un flujo de trabajo, puede reemplazar los enlaces virtuales creados por los nodos UE con enlaces reales (y eliminar los nodos UE).
Esto se puede hacer para un solo nodo haciendo clic derecho sobre él y seleccionando Convert to real links
, o para todos los nodos UE en un flujo de trabajo haciendo clic derecho en el fondo y seleccionando Convert all UEs to real links
.
Haga clic con Mayús en un nodo de salida y arrastre y luego suelte para obtener un menú de creación automática. Esto reemplaza el comportamiento predeterminado (que le brinda un cuadro de búsqueda), por lo que puede desactivarlo con la configuración Anything Everywhere replace search
.
Los nodos UE pueden restringirse para enviar solo a nodos del mismo color o solo a nodos que no son del mismo color.
También se pueden restringir para enviar solo a nodos del mismo grupo (cualquier grupo en común) o solo a nodos que no están en el mismo grupo.
Haga clic derecho en el nodo y seleccione Group restrictions
o Color restrictions
. Los nodos UE que están restringidos (en una o ambas formas) tienen un círculo verde en la esquina superior izquierda.
Los nodos Highway de Trung 0246 son una forma genial de canalizar datos. ¿Puedes apuntar a ellos con Anything Everywhere?
nodo usando un input_regex
que haga coincidir el nombre de la entrada no conectada con el '+', así:
Esto es nuevo, ¡así que informa cualquier problema!
De forma predeterminada, los flujos de trabajo se verifican en busca de bucles antes de enviarlos (porque UE puede introducirlos y un bucle genera un resultado incorrecto en Python). Si se detecta un bucle, recibirá una advertencia de JavaScript que le mostrará los ID de los nodos involucrados. Sin embargo, especialmente si hay otros nodos personalizados involucrados, es posible que la verificación pierda un bucle o marque uno que no sea real.
Si recibe una advertencia y no cree que haya un bucle (¡después de haber verificado los ID de los nodos enumerados!), puede desactivar la verificación del bucle en el menú de configuración principal. Si algo marcado como un bucle funciona bien, plantee un problema e incluya el flujo de trabajo en el informe (guarde el json y comprímalo, porque GitHub no acepta archivos .json). Lo mismo ocurre si no se atrapa un bucle.
He escrito código para el backend central de Comfy para capturar bucles, tal vez se incluya (PR para ComfyUI) o tal vez tengan otro plan.
Si hay más de un nodo emisor que coincide con una entrada, la regla básica es que gana el nodo más específico. El orden de prioridades es:
Anything Everywhere?
Seed Everywhere
e Prompts Everywhere
Anything Everywhere
Anything Everywhere3
Para nodos del mismo tiempo, se priorizan aquellos con restricciones de color y restricción de grupo (color+grupo > color > grupo > ninguno).
Si dos nodos con la misma prioridad coinciden, ninguno se conectará ; es mejor fallar rápidamente que tener un resultado ambiguo. Si hay coincidencias ambiguas, puede mostrarlas usando Show UE broadcast clashes
(haga clic con el botón derecho en el fondo; la opción solo aparece si hay conflictos).
Los nodos que solo tienen una salida también pueden obtener un cuadro de texto que muestra exactamente lo que pasó a través del nodo. Debes activar esto si lo deseas; está en la configuración principal, 'Detalles del nodo Anything Everywhere'.
La consola de JavaScript (presione f12 en algunos navegadores) tiene información de registro sobre lo que se está conectando. Puede cambiar el nivel de detalle buscando el archivo [comfy_install]/custom_nodes/cg-use-everywhere/js/use_everywhre_utilities.js
y cerca de la parte superior buscando este bit:
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
Cambie LEVEL
a Logger.INFORMATION
para obtener más, o Logger.DETAIL
para obtener aún más; establezca TRACE
en true
para obtener otra información de depuración.
Si tiene un problema, presionar F12 para ver la consola de JavaScript a menudo puede resultar útil. Los siguientes pasos son realmente útiles para realizar un buen informe de error:
La otra cosa que vale la pena intentar es borrar todo el javascript del nodo personalizado desde donde se copia cuando se inicia ComfyUI:
core
. Dejar core
(son cosas de ComfyUI)Si encuentra un error, plantee un problema; si puede incluir el flujo de trabajo, será de gran ayuda (deberá guardarlo como .txt o comprimir el archivo .json, porque GitHub no acepta .json). .
Omitir y deshabilitar nodos funciona, pero con un inconveniente. Si tiene nodos UE que coinciden ( Anything Everywhere?
y Prompt Everywhere
) y omite el nodo con el que coincide, no se realizará el enlace. Entonces
Si usas un ? nodo para enviar a un nodo... | ...y omite al destinatario, no se conecta |
---|---|
Es poco probable que esto se solucione, ¡pero debería ser bastante fácil de evitar!