Files
2023-10-10 17:45:02 -04:00

50 lines
2.0 KiB
Markdown

# ComfyUI Stable Wildcards
## Overview
ComfyUI has an amazing feature that saves the workflow to reproduce an image in the image itself. In theory, you can
import the workflow and reproduce the exact image. Unfortunately, this does not work with wildcards. The goal of this
node is to implement wildcard support using a seed to stabilize the output to allow greater reproducibility.
## Use
### Wildcards
Wildcards are supported via brackets and pipes.
Example:
`A painting of a {boat|fish} in the {sea|lake}`
The first pair of words will randomly select `boat` or `fish`, and the second will either be `sea` or `lake`.
The following is a list of possible random output using the above prompt:
* A painting of a boat in the sea
* A painting of a boat in the lake
* A painting of a fish in the sea
* A painting of a fish in the lake
_Note:_ Everything including the brackets are replaced with the final word.
Include spaces around your ` {} ` to prevent words from running together, or use it
to modify words.
Ex: `{cat|dog}fish` outputs `catfish` or `dogfish`.
### Node
The node requires three inputs
1) a string - Your prompt
2) a seed - This is what makes your prompt reproducible
3) a version - Allows for future changes to not break backwards compatibility
The node has one output
1) a string - Your final prompt with wildcards processed
### Bonus Node
An additional node is included that disabled the default dynamicPrompt behavior of multiline inputs.
## Opinions
Below are *my opinions* and as such will probably not be changed.
### CLIP
Many other implementations combine this feature with the CLIP node. I chose not to do this to keep the wildcard code and
CLIP implementation separate and more re-usable.
### Wildcard Files
Probably won't be implemented. Files are external to the workflow, so there is no guarantee that (1) the file exists on
another system and (2) the file content has not been modified. File wildcards are not an appropriate approach if you are
looking to create repeatable output.