Zip Ties: una extensión de ComfyUI que agrupa los cables en cintas
Extensión de frontend que une los enlaces del lienzo de ComfyUI en una cinta con bridas: Z para atar, clic derecho para recolorear o rotar. Se guarda con el flujo.
Los flujos de trabajo grandes tienen el mismo problema visual en todas partes: una maraña de cables entre los cargadores de un lado y los muestreadores del otro, cada uno dibujado como una curva de Bézier separada que tienes que seguir con la vista. Zip Ties no los oculta ni los desvía alrededor de un obstáculo. Reúne los enlaces que cruzan una línea que dibujas y fija cada enlace a esa línea, tal como una brida sujeta un haz de cables.
La extensión se creó a partir de un prototipo de @cmzw_, y llegó a la portada de r/comfyui y de r/StableDiffusion en menos de un día desde su primera publicación.
Gestos
| Acción | Gesto |
|---|---|
| Atar cables entre sí | Mantén Z y arrastra una línea por encima de los cables |
| Atar cables sin teclado | Haz clic derecho en el lienzo vacío, elige Atar cables y arrastra por encima de los cables |
| Mover una brida | Arrastra la brida |
| Seleccionar varias bridas | Haz clic con Ctrl/Cmd en cada brida, haz clic con Shift para añadir una, o selecciónalas con un recuadro junto con los nodos |
| Rotar una brida | Arrástrala con Shift. Se ajusta en pasos de 15 grados; mantén también Alt para rotar libremente |
| Cambiar el color, rotar 90 o 45 grados, eliminar | Haz clic derecho en la brida |
| Eliminar una brida | Mantén Z y arrastra por encima de la brida, o haz doble clic en ella |
Mientras arrastras, los cables que cruza la línea se vuelven blancos. Si la línea cruza una brida existente, tanto la línea como la brida se vuelven rojas, y al soltar se elimina esa brida. La tecla se puede configurar en Zip Ties → Tecla que mantener al arrastrar sobre los cables, que solo ofrece letras que ComfyUI no usa ya por sí solo: X, C, G, T o Y. Con Alt, Ctrl, Cmd o Shift pulsados, un arrastre conserva su significado habitual, así que Alt+arrastrar sigue clonando un nodo.
Cómo se comporta la cinta
Cada brida nueva recibe un color de brida aleatorio. Zip Ties → Color de las nuevas bridas lo cambia a Igualar cables, que toma el color más común entre los cables de la brida, o a gris simple; hacer clic derecho cambia una sola brida. Los cables conservan sus propios colores y discurren en paralelo entre las bridas, y al pasar el puntero sobre una brida o al arrastrarla se resalta cada cable que contiene.
Un cable puede pasar por varias bridas, y rotar una brida cambia la dirección que toman los cables a través de ella, de modo que las bridas a 0 y 90 grados forman un giro en ángulo recto. También se pueden atar los tramos entre reenrutados: una brida sujeta el segmento sobre el que se dibujó, y un tramo que termina en un reenrutado es compartido por todos los cables que pasan por ese reenrutado.
Las bridas siguen a sus cables. Mover todos los nodos y reenrutados que conecta una brida la arrastra con ellos, mientras que mover solo algunos la deja donde está, la misma regla que sigue un reenrutado. Una brida dentro de un grupo se mueve con el grupo, y arrastrar el marco del grupo con Ctrl/Cmd la deja atrás junto con los nodos. Las bridas seleccionadas se mueven con los nodos seleccionados, y Suprimir elimina ambos en un único paso de deshacer.
Las bridas se almacenan en extra.zipTies del flujo de trabajo, por lo que se guardan, se cargan y se deshacen con el resto del gráfico. Los flujos de trabajo abiertos sin la extensión siguen cargándose y dibujando sus cables con normalidad, y una entrada mal formada se descarta al cargar. Copiar y pegar nodos trae sus bridas cuando cada cable de una brida forma parte de la copia, de nuevo dentro de un único paso de deshacer.
Bajo el capó, y dónde se detiene
La extensión envuelve un puñado de métodos de litegraph en el lienzo: renderLink registra dónde empieza y termina cada tramo de cable y vuelve a dibujar los tramos atados como hebras desplazadas lateralmente desde el centro de la brida, _renderAllLinkSegments mantiene dibujado un cable atado cuando su brida está en pantalla aunque ambos extremos estén fuera de ella, y drawConnections descarta las bridas cuyos cables han desaparecido y mueve las que deben seguirlos. El dibujo de los segmentos se devuelve al propio renderizador de enlaces de ComfyUI, de modo que los colores, los bordes y el comportamiento de resaltado vienen incluidos. El gesto de arrastre se ejecuta en escuchadores en fase de captura sobre window, así que ve los eventos de puntero antes que litegraph, y la línea dibujada se comprueba contra la curva de Bézier de cada cable.
El proyecto enumera dos límites. Un tramo de reenrutado dibujado desde una insignia de enlace, el atajo de enlace oculto, no se puede atar. Y la forma de cinta está ajustada para enlaces spline: los modos de enlace recto y lineal siguen pasando por las bridas, pero la prueba de corte trata cada segmento como una línea recta. Se ha probado en ComfyUI 0.42.0 con frontend 1.57.1, tanto en el lienzo clásico como en el modo de nodos Vue.
Disponibilidad
Instálala buscando "Zip Ties" en ComfyUI-Manager, con comfy node install comfyui-zip-ties, o clonando el repositorio en ComfyUI/custom_nodes y reiniciando. Las versiones y la lista completa de gestos están en GitHub.
Comentarios
Inicia sesión con GitHub para unirte a la conversación.