Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tutorials for the cloud node please :) #24

Open
stephantual opened this issue Feb 7, 2024 · 2 comments
Open

Tutorials for the cloud node please :) #24

stephantual opened this issue Feb 7, 2024 · 2 comments

Comments

@stephantual
Copy link

With all the good will in the word (and you know I love your work) - i can' wrap my head around 'hub' and now the new 'cloud' node. ANY tutorial, even a video on YT without sound with a simple worfklow woud be useful at this point.

Thank you for your undertanding!

@Trung0246
Copy link
Owner

Trung0246 commented Feb 8, 2024

Technically I did have a example workflow in the README ;)

But honestly the feature set for the "Cloud" node is kinda poor right now with only a couple of basic prompt manipulation functionality and currently mainly deal with raw text/prompt. It basically a personal node that made public since I don't like typing. Conveniently it support other stuff like randomize/sequencing words and merging other cloud nodes.

So here's some very bare bone docs 😅


In the workflow you can pick a "cloud object" by clicking on it then hold Shift to drag it to desired location.

Recording.2024-02-07.210629.mp4

Clicking in a cloud object will reveal related widgets which can be changed OR convert to a input just a typical comfy widget.

Hold left click to empty space of the main widget then drag mouse over will reveal the group id that are associated with each "cloud object".

All cloud nodes should be paired with "0246.Stringify" to convert then to the final prompt.

Right clicking on the node itself will reveal more stuff:

  • 🗑️ Picked Clouds: delete all picked "cloud".

  • ✔️ All Clouds: pick all "cloud".

  • 🗑️ Unpick All Clouds.

  • ✔️ first_group_id ➡️ Picked Clouds: assign group from first_group_id to all picked clouds.

  • 🗑️ second_group_id ➡️ Picked Clouds: unassign group from second_group_id to all picked clouds.

  • ✔️ first_group_id ➡️ second_group_id: assign all nodes (with group second_group_id) with first_group_id.

  • 🗑️ first_group_id ➡️ second_group_id: unassign first_group_id with all nodes that have group second_group_id).

  • ✔️ Cloud ➡️ 🗑️ Preview: Supposed to convert all "cloud objects" to text format but feels like it useless since 0246.Beautify already showing the final prompt so not implemented yet.

  • ✔️ Preview ➡️ 🗑️ All Clouds: Convert the entire text within preview to multiple "cloud object". Optionally can be specified on how to read the prompt using regex but for now that pop-up regex doesn't do anything.

    • This is very bare bone and only support the exact format of something like masterpiece, (beautiful: 1.25) and very dependent on how comfy.sd1_clip.parse_parentheses parsing the prompt.
  • ✔️ Preview ➡️ Cloud: Supposed to convert the entire text within preview to a single "cloud object" (not implemented yet).

Recording.2024-02-07.210453.mp4

So there's current 5 different type of "cloud object":

  • text

    • Basic text object.
  • weight

    • For all text object that are associated with this weight object (by using ✔️ first_group_id ➡️ Picked Clouds and verifying that the text object and weight object have same group id).

image

  • rand
    • For all text object that are associated with this rand object, it will randomly pick certain cloud based on seed, count, order and mode.
    • seed
      • Well it just that, seed for replicable outputs.
    • count
      • How many cloud object should be returned.
    • order
      • false to ignore order, true will attempt to keep original relative order.
    • mode
      • seed
        • Generate new seed since I don't want a separate widget to do this.
      • fix
        • Fixed replicable generation with same seed.
      • rand
        • Same seed will retain across prompt execution but internally will do just that and randomize things based on the seed.
      • add, sub
        • Increase or decrease the seed value.
Recording.2024-02-07.212057.mp4

Notice that a cloud object can have multiple group id and make things like only apply weight to exact text object like dfg and therefore cloud object order is important (since it is topologically sorted).

  • cycle
    • For all text object that are associated with this cycle object, it will sequentially pick certain cloud based on offset, count, order and mode.
    • offset
      • No need to explain :)
    • step
      • Basically offset + step for each prompt queue execution.
    • space
      • Only relevant if count >= 2. Basically offset + step + (space * count).
    • count
      • How many associated cloud objects should be returned.
Recording.2024-02-07.213524.mp4

Even better cycle and rand can be associated with weight or merge for that "nested" effect.

image

  • merge

image

  • pin
    • Cannot be created manually. You can see why.
Recording.2024-02-07.214406.mp4

Bonus stuff that related to widget inputs. Currently the type must be converted to *. Did not test how CastReroute would handle this by picking * so there's that.

Recording.2024-02-07.215551.mp4

Since this node technically still in beta I may change the cloud object names to something else and could cause breakage but I could theoretically migrate automatically with JS stuff.

With the future topological execution pull, rand and cycle could execute multiple times within a single loop with a single prompt queue.


Planned features:

  • Load text directly from files such as style.csv or style.json and allowing to pick specific stuff from there.

@stephantual
Copy link
Author

Thank you so much, this is great!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants