Replies: 8 comments 3 replies
-
Note suggestion in #170 |
Beta Was this translation helpful? Give feedback.
-
I also thought a hierarchy of priorities could solve this. But I was not entirely sure on how that would work exactly ... Perhaps a new EU? node with an extra widget, for priorities ? And in the widget I would set: 1, 2, 3 ..., according to the group's position in sequence ? |
Beta Was this translation helpful? Give feedback.
-
[note - crosspost with the one immediately above] @JorgeR81 I love this idea - its generality appeals to me. But it may be harder to implement than you would think - I'll explain more below. Would @DrJKL 's idea (an explicit priority) solve your problem? The complication: Although it's easy to think of UE nodes as sending, the way it works is from the other end: unconnected inputs fetching. The code builds a list of available UE sources, and each unconnected node finds one that works for it - and if there is more than one, picks the one with the highest priority score. (https://github.com/chrisgoringe/cg-use-everywhere?tab=readme-ov-file#priorities). So the logic "send to A, but if it is muted, send to B" is a slight mismatch. Not impossible by any means; the node would have to choose from its list of regexes based on some rule (maybe "if there are no unmuted groups matching regex A, use regex B ... C ... D"). Whereas "give this UE a priority of X" is hooking into the existing approach. Also more intuitive, perhaps? So my first thought would be to add an optional priority. |
Beta Was this translation helpful? Give feedback.
-
Nodes currently have a priority - highest wins. The priority scores are:
These are modified with +1 for group restrictions, and +1 for colour restrictions. Easy enough to add to the UE? node a "priority boost". I'd put it on the right-click menu, and it would just be a list of possible boosts (0, +1, +2, ...). I would reduce the group and color modifiers to 0.1, so that they are only ever used as a tie-break. I can do this in ten minutes, I think - so why don't I do it, and you can see if it solves the problem! |
Beta Was this translation helpful? Give feedback.
-
Sure, I will see if "priority boost" helps with that. Even if it's not applicable to that workflow in particular, I will try another workflow configuration. I believe @DrJKL's problem is the same as mine. It's about being able to mute one group in a sequence of groups connected by UE? links, without breaking the UE? sequence. |
Beta Was this translation helpful? Give feedback.
-
Take a look at the version just pushed. |
Beta Was this translation helpful? Give feedback.
-
"Priority Boost" is working ! This is very easy to use and it opens the door for a whole new type of workflow solutions ! I wonder if there could be a way to display the priority value on the node ... |
Beta Was this translation helpful? Give feedback.
-
I think I've found a way to solve this problem with "priority boost" ! 4 groups, in a workflow A->B->C->D. I want to mute C, without breaking the sequence at B. EDIT: @chrisgoringe suggested a way to further improve this method. See his answer below the images. A = Basic Prompt Here C is muted, and B is still sent do D. All groups can work together, by giving "priority boost" to the UE? nodes, in group C. The "Sampler" UE? nodes in group C, have priority over the ones in group B. |
Beta Was this translation helpful? Give feedback.
-
Summary
I'd like to be able to type something like: "ControlNet>Sampler", in the [ group_regex ] of a UE? node.
If the [ ControlNet ] group is available in the workflow, then the UE? link will go to this group.
If the [ ControlNet ] group is muted, the UE? link will go to the "Sampler" groups, instead.
I will explain the problem in more detail, in case you can come up with a better solution.
( there some are hidden images to help visualising it ... )
Problem
In my workflow, I start with the main prompt / conditioning distributed with a [ Prompts Everywhere ] node.
Then I have a group named "Combine Prompt", where the main prompt is combined with another prompt.
This group will send the conditioning to a "ControlNet" group, via UE?.
And, finally the "ControlNet" group, will send to "Sampler" groups, also via UE?.
The "Combine Prompt" and "ControlNet" groups are not essential, so they can be muted.
But, if only the "ControlNet" is muted, the sequence breaks, and "Combine Prompt" is not sent to the samplers.
The workflow this works, but only with the basic prompt, form the [ Prompts Everywhere ] node.
So, I need to delete "ControlNet" and type "Sampler", in the UE? ( via Simple String node ), for [ Combine Prompt ] group, every time I mute the [ ControlNet ] group.
And If I enable the [ ControlNet ] group, I need to change it back again, every time.
Here are some images to help visualising it:
Workflow with all groups enabled
Workflow with non essential groups muted
Combine Prompt muted
ControlNet muted ( the sequence breaks )
ControlNet Muted and [ group_regex ] adjusted
Workaround
What I do now, is to bypass specific nodes, inside the non essential groups.
The UE links are transmitted across these groups, but the group has no effect in the final image.
As you know, we can't bypass the whole group, because this also breaks UE links.
Workflow with non essential nodes bypassed
Potential solution
I want to have a rule like this: "CombineP>ControlNet>Sampler" in the [ group_regex ], for the UE? nodes to follow.
So, in the [ CombineP ] group, I would type: "ControlNet>Sampler", in the UE? [ group_regex ] widget.
And if the [ ControlNet ] group is muted, the UE? node in the [ CombineP ] group, would send the link to "Sampler" instead.
This would also be useful for more complex workflows:
If I want or have have a rule like this: "CombineP>ControlNet_1>ControlNet_2>Sampler"
In the [ CombineP ] group's UE? widget, I would type: "ControlNet_1>ControlNet_2>Sampler"
In the [ ControlNet_1 ] group's UE? widget, I would type: "ControlNet_2>Sampler"
In the [ ControlNet_2 ] group's UE? widget, I will just type: "Sampler", ( like I would do now ).
Advantages of this solution
We can just use the [ Fast Groups Muter ( rgthree ) ] node, without any additional adjustments in the workflow.
This allows me to have a "control panel" for all the extra functionality, in the non essential groups.
Muting groups is a better solution ( vs bypassing nodes ), because when we enable UE link visualization, we can have a more clear picture of what the workflow is doing.
I can save these extra groups as a templates, and if I load them in a new workflow, they can connect automatically !
Beta Was this translation helpful? Give feedback.
All reactions