From 2dfcdff463d60b8e0ce012186753a8cfc7459162 Mon Sep 17 00:00:00 2001 From: Satadal Dhara Date: Sun, 31 Aug 2025 19:31:38 +0530 Subject: [PATCH] Initial clean commit --- .gitignore | 9 + LICENSE | 21 +++ README.md | 115 +++++++++++++ __init__.py | 17 ++ example_workflows/IC_Light_animation.json | 1 + example_workflows/Img2video.json | 1 + example_workflows/Prompt_schedule.json | 1 + .../Reference-images-animation.json | 1 + example_workflows/SDlightning_animediff.json | 1 + example_workflows/Text2Video.json | 1 + example_workflows/cacheanimation.json | 1 + .../workflow-evolution-final.json | 1 + nodes/prompt_machine.py | 90 ++++++++++ nodes/upscale_machine.py | 158 ++++++++++++++++++ prompts/prompts.csv | 74 ++++++++ prompts/styles.csv | 3 + requirements.txt | 2 + web/prompt_machine.js | 30 ++++ web/touchpad_pan_zoom.js | 40 +++++ 19 files changed, 567 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 __init__.py create mode 100644 example_workflows/IC_Light_animation.json create mode 100644 example_workflows/Img2video.json create mode 100644 example_workflows/Prompt_schedule.json create mode 100644 example_workflows/Reference-images-animation.json create mode 100644 example_workflows/SDlightning_animediff.json create mode 100644 example_workflows/Text2Video.json create mode 100644 example_workflows/cacheanimation.json create mode 100644 example_workflows/workflow-evolution-final.json create mode 100644 nodes/prompt_machine.py create mode 100644 nodes/upscale_machine.py create mode 100644 prompts/prompts.csv create mode 100644 prompts/styles.csv create mode 100644 requirements.txt create mode 100644 web/prompt_machine.js create mode 100644 web/touchpad_pan_zoom.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6731d2b --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +__pycache__/ +nodes/__pycache__/ +*.pyc +*.pth +*.pt +*.onnx +.env/ +.vscode/ +.idea/ \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a371e6c --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Satadal Dhara + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..aea6354 --- /dev/null +++ b/README.md @@ -0,0 +1,115 @@ +# SATA Utility Node Suite for ComfyUI + +**Author:** Satadal +**Version:** 1.0 +**License:** MIT +**Repository:** https://github.com/SatadalAI/SATA_UtilityNode + +--- + +## 🚀 Overview + +SATA Utility Node Suite is a collection of custom nodes for [ComfyUI](https://github.com/comfyanonymous/ComfyUI) designed to enhance your image processing and workflow experience. +It includes: + +- **Upscale Machine:** High-quality model-based image upscaling with aspect-ratio preserving rescale. +- **Prompt Machine:** Easy prompt selection from a CSV for positive/negative prompt workflows. +- **Touchpad Pan & Zoom:** Seamless navigation for large images in the ComfyUI preview panel. + +--- + +## 🧩 Node Features + +### 🖼️ Upscale Machine + +- **Model-based Upscaling:** Uses custom or pre-trained models from the `upscale_models` folder. +- **Aspect Ratio Preserving Rescale:** Output size is always original size × rescale factor. +- **CPU-based Rescaling:** Efficient resizing using OpenCV. +- **Supersampling:** Optional detail preservation for downscaling/fractional resizing. +- **Rounding Modulus:** Ensures output dimensions align with model/UI constraints. +- **Dual Output:** Returns both the processed image and a help/documentation link. + +### 💬 Prompt Machine + +- **CSV-based Prompt Selection:** Select prompt sets from a CSV file (`prompts.csv`). +- **Positive/Negative Output:** Outputs both positive and negative prompts as strings. +- **Easy Integration:** Designed for use in prompt-driven workflows. + +### 🖱️ Touchpad Pan & Zoom + +- **Preview Navigation:** Enables smooth pan and zoom for large images in the ComfyUI preview panel. +- **User Experience:** Makes inspecting high-res outputs fast and intuitive. + +--- + +## 📦 Installation + +1. Clone or download this repository into your ComfyUI `custom_nodes` directory: + + ```sh + git clone https://github.com/SatadalAI/SATA_UtilityNode.git + ``` + +2. (Optional) Install dependencies if not already present: + + ```sh + pip install -r requirements.txt + ``` + +3. Restart ComfyUI. + +--- + +## 📚 Node Inputs & Outputs + +### Upscale Machine + +| Name | Type | Description | +|------------------|--------|--------------------------------------------------| +| `image` | IMAGE | Input image tensor | +| `upscale_model` | STRING | Model filename from `upscale_models` folder | +| `rescale_factor` | FLOAT | Scaling factor (aspect ratio preserved) | +| `supersample` | STRING | `"true"` or `"false"` | +| `rounding_modulus` | INT | Ensures dimensions are divisible by this value | + +**Outputs:** + +| Name | Type | Description | +|-------------|--------|------------------------------------| +| `IMAGE` | IMAGE | The upscaled and resized image | +| `show_help` | STRING | Link to documentation/help | + +--- + +### Prompt Machine + +| Name | Type | Description | +|-------------|--------|------------------------------------| +| `selection` | STRING | Prompt set name from CSV | + +**Outputs:** + +| Name | Type | Description | +|-------------|--------|------------------------------------| +| `positive` | STRING | Positive prompt | +| `negative` | STRING | Negative prompt | + +--- + +### Touchpad Pan & Zoom + +- **No node configuration required.** +- Enables pan/zoom in the ComfyUI preview panel for large images. + +--- + +## 📝 License + +MIT License + +--- + +## 🔗 Links + +- [ComfyUI](https://github.com/comfyanonymous/ComfyUI) +- [SATA Utility Node GitHub](https://github.com/SatadalAI/SATA_UtilityNode) \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..6b60cd7 --- /dev/null +++ b/__init__.py @@ -0,0 +1,17 @@ +from .nodes.upscale_machine import Upscale_Machine +from .nodes.prompt_machine import Prompt_Machine + + +NODE_CLASS_MAPPINGS = { + "Upscale_Machine": Upscale_Machine, + "Prompt_Machine": Prompt_Machine, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "Upscale_Machine": "Upscale Machine", + "Prompt_Machine": "Prompt Machine", +} + +WEB_DIRECTORY = "./web" + +__all__ = ["WEB_DIRECTORY", "NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"] \ No newline at end of file diff --git a/example_workflows/IC_Light_animation.json b/example_workflows/IC_Light_animation.json new file mode 100644 index 0000000..e1a186e --- /dev/null +++ b/example_workflows/IC_Light_animation.json @@ -0,0 +1 @@ +{"last_node_id":179,"last_link_id":483,"nodes":[{"id":131,"type":"GetNode","pos":[2336.9398943525775,1313.165402577607],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":0,"mode":0,"outputs":[{"name":"VAE","type":"VAE","links":[368],"slot_index":0}],"properties":{},"widgets_values":["VAE"],"color":"#322","bgcolor":"#533"},{"id":132,"type":"GetNode","pos":[607.6898641929773,1218.7900557422067],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":1,"mode":0,"outputs":[{"name":"INT","type":"INT","links":[446,450],"slot_index":0}],"properties":{},"widgets_values":["width"],"color":"#232","bgcolor":"#353"},{"id":135,"type":"GetNode","pos":[607.6898641929773,1328.7900557422067],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":2,"mode":0,"outputs":[{"name":"INT","type":"INT","links":[447,451],"slot_index":0}],"properties":{},"widgets_values":["high"],"color":"#232","bgcolor":"#353"},{"id":70,"type":"SetNode","pos":[1145.2684894163226,330.715075192013],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":19,"mode":0,"inputs":[{"name":"VAE","type":"VAE","link":227}],"outputs":[{"name":"*","type":"*","links":[],"label":"output"}],"title":"Set_VAE","properties":{"previousName":"VAE"},"widgets_values":["VAE"],"color":"#322","bgcolor":"#533"},{"id":90,"type":"LatentBatchSeedBehavior","pos":[1915.2684894163226,578.7150751920133],"size":{"0":315,"1":58},"flags":{"collapsed":false},"order":30,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":478,"slot_index":0,"label":"Latent"}],"outputs":[{"name":"LATENT","type":"LATENT","links":[466],"shape":3,"slot_index":0,"label":"Latent"}],"properties":{"Node name for S&R":"LatentBatchSeedBehavior"},"widgets_values":["fixed"]},{"id":72,"type":"GetNode","pos":[2223.2684894163217,-241.2849248079867],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":3,"mode":0,"outputs":[{"name":"VAE","type":"VAE","links":[290],"slot_index":0}],"properties":{},"widgets_values":["VAE"],"color":"#322","bgcolor":"#533"},{"id":100,"type":"VHS_VAEDecodeBatched","pos":[2510.268489416322,-256.28492480798667],"size":{"0":315,"1":78},"flags":{"collapsed":false},"order":35,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":461,"label":"Latent"},{"name":"vae","type":"VAE","link":290,"label":"VAE"}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[483],"shape":3,"label":"image"}],"properties":{"Node name for S&R":"VHS_VAEDecodeBatched"},"widgets_values":{"per_batch":32}},{"id":147,"type":"GetNode","pos":[1138,539],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":4,"mode":0,"outputs":[{"name":"LATENT","type":"LATENT","links":[475],"slot_index":0}],"properties":{},"widgets_values":["FBC latent"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":134,"type":"SetNode","pos":[4805.009828204129,1275.874729252059],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":28,"mode":0,"inputs":[{"name":"INT","type":"INT","link":373}],"outputs":[{"name":"*","type":"*","links":[],"label":"output"}],"title":"Set_INT","properties":{"previousName":"high"},"widgets_values":["high"],"color":"#232","bgcolor":"#353"},{"id":133,"type":"SetNode","pos":[4805.009828204129,1145.874729252059],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":27,"mode":0,"inputs":[{"name":"INT","type":"INT","link":372}],"outputs":[{"name":"*","type":"*","links":[],"label":"output"}],"title":"Set_INT","properties":{"previousName":"width"},"widgets_values":["width"],"color":"#232","bgcolor":"#353"},{"id":130,"type":"GetNode","pos":[4015.855771966626,1369.3987581993865],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":5,"mode":0,"outputs":[{"name":"VAE","type":"VAE","links":[468],"slot_index":0}],"properties":{},"widgets_values":["VAE"],"color":"#322","bgcolor":"#533"},{"id":141,"type":"SetNode","pos":[5405.855771966628,1371.3987581993865],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":31,"mode":0,"inputs":[{"name":"LATENT","type":"LATENT","link":470}],"outputs":[{"name":"*","type":"*","links":[],"label":"output"}],"title":"Set_LATENT","properties":{"previousName":"FC latent"},"widgets_values":["FC latent"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":145,"type":"GetNode","pos":[1094,441],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":6,"mode":0,"outputs":[{"name":"LATENT","type":"LATENT","links":[474],"slot_index":0}],"title":"Get_FC latent","properties":{},"widgets_values":["FC latent"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":39,"type":"ImageResize+","pos":[4365.855771966628,953.3987581993856],"size":{"0":315,"1":218},"flags":{},"order":20,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":440,"label":"image"}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[393,467],"shape":3,"slot_index":0,"label":"image"},{"name":"width","type":"INT","links":[372],"shape":3,"slot_index":1,"label":"width"},{"name":"height","type":"INT","links":[373],"shape":3,"slot_index":2,"label":"high"}],"properties":{"Node name for S&R":"ImageResize+"},"widgets_values":[512,512,"lanczos","fill / crop","always",32]},{"id":140,"type":"PreviewImage","pos":[5343.855771966628,982.3987581993858],"size":{"0":326.2891540527344,"1":345.7071838378906},"flags":{},"order":25,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":393,"label":"image"}],"properties":{"Node name for S&R":"PreviewImage"}},{"id":103,"type":"VHS_VAEEncodeBatched","pos":[2605.6409889054685,1212.7178670187502],"size":{"0":315,"1":78},"flags":{"collapsed":false},"order":32,"mode":0,"inputs":[{"name":"pixels","type":"IMAGE","link":443,"label":"image"},{"name":"vae","type":"VAE","link":368,"slot_index":1,"label":"VAE"}],"outputs":[{"name":"LATENT","type":"LATENT","links":[399],"shape":3,"slot_index":0,"label":"Latent"}],"properties":{"Node name for S&R":"VHS_VAEEncodeBatched"},"widgets_values":{"per_batch":32}},{"id":146,"type":"SetNode","pos":[3004.6409889054685,1303.7178670187502],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":34,"mode":0,"inputs":[{"name":"LATENT","type":"LATENT","link":399}],"outputs":[{"name":"*","type":"*","links":[],"label":"output"}],"title":"Set_LATENT","properties":{"previousName":"FBC latent"},"widgets_values":["FBC latent"],"color":"#233","bgcolor":"#355"},{"id":139,"type":"ImageBatch","pos":[2329.4659313158463,1720.8871329873152],"size":{"0":210,"1":46},"flags":{},"order":7,"mode":0,"inputs":[{"name":"image1","type":"IMAGE","link":null,"label":"image1"},{"name":"image2","type":"IMAGE","link":null,"label":"image2"}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[],"shape":3,"label":"image","slot_index":0}],"properties":{"Node name for S&R":"ImageBatch"}},{"id":114,"type":"PreviewAnimation","pos":[2605.6409889054685,1439.7178670187502],"size":{"0":359.4771423339844,"1":573.9273071289062},"flags":{},"order":33,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":444,"label":"image"},{"name":"masks","type":"MASK","link":null,"label":"遮罩"}],"title":"Preview Animation 32x512x512","properties":{"Node name for S&R":"PreviewAnimation"},"widgets_values":[8,null]},{"id":112,"type":"ImageAddMulti","pos":[2327.6409889054685,1489.7178670187502],"size":{"0":210,"1":126},"flags":{},"order":29,"mode":0,"inputs":[{"name":"image_1","type":"IMAGE","link":448,"label":"image_1"},{"name":"image_2","type":"IMAGE","link":452,"label":"image_2"}],"outputs":[{"name":"images","type":"IMAGE","links":[443,444],"shape":3,"slot_index":0,"label":"image"}],"properties":{"Node name for S&R":"ImageAddMulti"},"widgets_values":[2,"add",null]},{"id":94,"type":"AlignYourStepsScheduler","pos":[1911.2684894163226,409.71507519201305],"size":{"0":315,"1":106},"flags":{},"order":8,"mode":0,"outputs":[{"name":"SIGMAS","type":"SIGMAS","links":[465],"shape":3,"label":"Sigmas"}],"properties":{"Node name for S&R":"AlignYourStepsScheduler"},"widgets_values":["SD1",15,1]},{"id":169,"type":"CreateShapeImageOnPath","pos":[2238,1945],"size":{"0":315,"1":318},"flags":{},"order":22,"mode":0,"inputs":[{"name":"coordinates","type":"STRING","link":449,"widget":{"name":"coordinates"}},{"name":"size_multiplier","type":"FLOAT","link":null,"widget":{"name":"size_multiplier"}},{"name":"frame_width","type":"INT","link":450,"widget":{"name":"frame_width"}},{"name":"frame_height","type":"INT","link":451,"widget":{"name":"frame_height"}}],"outputs":[{"name":"image","type":"IMAGE","links":[452],"shape":3,"slot_index":0},{"name":"mask","type":"MASK","links":null,"shape":3}],"properties":{"Node name for S&R":"CreateShapeImageOnPath"},"widgets_values":["circle","",512,512,120,120,"cyan","black",100,6,[1]]},{"id":2,"type":"CheckpointLoaderSimple","pos":[563,233],"size":{"0":461.322998046875,"1":98},"flags":{},"order":9,"mode":0,"outputs":[{"name":"MODEL","type":"MODEL","links":[202],"shape":3,"slot_index":0,"label":"model"},{"name":"CLIP","type":"CLIP","links":[454,455],"shape":3,"slot_index":1,"label":"CLIP"},{"name":"VAE","type":"VAE","links":[227,473],"shape":3,"slot_index":2,"label":"VAE"}],"properties":{"Node name for S&R":"CheckpointLoaderSimple"},"widgets_values":["epicrealism_naturalSinRC1VAE.safetensors"]},{"id":144,"type":"SetNode","pos":[4596,1522],"size":{"0":210,"1":58},"flags":{"collapsed":false},"order":21,"mode":0,"inputs":[{"name":"INT","type":"INT","link":482}],"outputs":[{"name":"*","type":"*","links":[],"label":"output"}],"title":"Set_frame","properties":{"previousName":"frame"},"widgets_values":["frame"],"color":"#233","bgcolor":"#355"},{"id":174,"type":"VHS_VAEEncodeBatched","pos":[4808,970],"size":{"0":315,"1":78},"flags":{},"order":26,"mode":0,"inputs":[{"name":"pixels","type":"IMAGE","link":467},{"name":"vae","type":"VAE","link":468},{"name":"per_batch","type":"INT","link":481,"widget":{"name":"per_batch"}}],"outputs":[{"name":"LATENT","type":"LATENT","links":[470],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"VHS_VAEEncodeBatched"},"widgets_values":{"per_batch":16}},{"id":170,"type":"CLIPTextEncode","pos":[1146,66],"size":{"0":210,"1":84.4018325805664},"flags":{},"order":18,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":455}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[456,471],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["Detailed face, detailed eyes, highly detailed,"],"color":"#232","bgcolor":"#353"},{"id":171,"type":"CLIPTextEncode","pos":[1147,205],"size":{"0":210,"1":76},"flags":{},"order":17,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":454}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[453,472],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["bad quality"],"color":"#322","bgcolor":"#533"},{"id":175,"type":"ICLightConditioning","pos":[1474,229],"size":{"0":342.5999755859375,"1":138},"flags":{},"order":24,"mode":0,"inputs":[{"name":"positive","type":"CONDITIONING","link":471},{"name":"negative","type":"CONDITIONING","link":472},{"name":"vae","type":"VAE","link":473},{"name":"foreground","type":"LATENT","link":474},{"name":"opt_background","type":"LATENT","link":475}],"outputs":[{"name":"positive","type":"CONDITIONING","links":[476],"shape":3,"slot_index":0},{"name":"negative","type":"CONDITIONING","links":[477],"shape":3,"slot_index":1},{"name":"empty_latent","type":"LATENT","links":[478],"shape":3,"slot_index":2}],"properties":{"Node name for S&R":"ICLightConditioning"},"widgets_values":[0.182]},{"id":173,"type":"SamplerCustom","pos":[2353,85],"size":{"0":355.20001220703125,"1":230},"flags":{},"order":37,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":460},{"name":"positive","type":"CONDITIONING","link":476},{"name":"negative","type":"CONDITIONING","link":477},{"name":"sampler","type":"SAMPLER","link":480,"slot_index":3},{"name":"sigmas","type":"SIGMAS","link":465},{"name":"latent_image","type":"LATENT","link":466}],"outputs":[{"name":"output","type":"LATENT","links":[461],"shape":3,"slot_index":0},{"name":"denoised_output","type":"LATENT","links":null,"shape":3}],"properties":{"Node name for S&R":"SamplerCustom"},"widgets_values":[true,1054226694411268,"fixed",3]},{"id":177,"type":"KSamplerSelect","pos":[1919,289],"size":{"0":315,"1":58},"flags":{},"order":10,"mode":0,"outputs":[{"name":"SAMPLER","type":"SAMPLER","links":[480],"shape":3}],"properties":{"Node name for S&R":"KSamplerSelect"},"widgets_values":["dpmpp_2m"]},{"id":9,"type":"LoadImage","pos":[4015.8305683332883,943.6943166671205],"size":{"0":315,"1":314.0000305175781},"flags":{},"order":11,"mode":0,"outputs":[{"name":"IMAGE","type":"IMAGE","links":[440],"shape":3,"slot_index":0,"label":"image"},{"name":"MASK","type":"MASK","links":[],"shape":3,"label":"遮罩"}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["backiee-260634.jpg","image"]},{"id":167,"type":"CreateShapeImageOnPath","pos":[1272,1958],"size":{"0":315,"1":318},"flags":{},"order":23,"mode":0,"inputs":[{"name":"coordinates","type":"STRING","link":445,"widget":{"name":"coordinates"}},{"name":"size_multiplier","type":"FLOAT","link":null,"widget":{"name":"size_multiplier"}},{"name":"frame_width","type":"INT","link":446,"widget":{"name":"frame_width"}},{"name":"frame_height","type":"INT","link":447,"widget":{"name":"frame_height"}}],"outputs":[{"name":"image","type":"IMAGE","links":[448],"shape":3,"slot_index":0},{"name":"mask","type":"MASK","links":null,"shape":3}],"properties":{"Node name for S&R":"CreateShapeImageOnPath"},"widgets_values":["circle","",512,512,128,128,"red","black",100,6,[1]]},{"id":178,"type":"INTConstant","pos":[4426,1399],"size":[200,58],"flags":{},"order":12,"mode":0,"outputs":[{"name":"value","type":"INT","links":[481,482],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"INTConstant"},"widgets_values":[32],"color":"#1b4669","bgcolor":"#29699c"},{"id":168,"type":"SplineEditor","pos":[1622,1468],"size":{"0":557,"1":942},"flags":{},"order":13,"mode":0,"outputs":[{"name":"mask","type":"MASK","links":null,"shape":3},{"name":"coord_str","type":"STRING","links":[449],"shape":3,"slot_index":1},{"name":"float","type":"FLOAT","links":null,"shape":3},{"name":"count","type":"INT","links":null,"shape":3},{"name":"normalized_str","type":"STRING","links":null,"shape":3}],"properties":{"Node name for S&R":"SplineEditor","points":"SplineEditor"},"widgets_values":["[{\"x\":3.299999999999993,\"y\":47.299999999999905},{\"x\":114.39999999999976,\"y\":53.89999999999989},{\"x\":7,\"y\":0},{\"x\":0,\"y\":507},{\"x\":13,\"y\":56,\"fix\":null}]","[{\"x\":3.299999952316284,\"y\":47.29999923706055},{\"x\":43.45511245727539,\"y\":52.23886489868164},{\"x\":83.7318344116211,\"y\":56.02983474731445},{\"x\":111.95841217041016,\"y\":45.35007095336914},{\"x\":93.31864166259766,\"y\":9.492488861083984},{\"x\":69.1175765991211,\"y\":-22.844762802124023},{\"x\":34.577850341796875,\"y\":-40.83236312866211},{\"x\":10.169815063476562,\"y\":-10.878332138061523},{\"x\":1.5226486921310425,\"y\":28.592769622802734},{\"x\":-2.977689027786255,\"y\":68.79351043701172},{\"x\":-5.64639949798584,\"y\":109.16171264648438},{\"x\":-7.214633941650391,\"y\":149.5886688232422},{\"x\":-8.021150588989258,\"y\":190.03843688964844},{\"x\":-8.255964279174805,\"y\":230.49575805664062},{\"x\":-8.036226272583008,\"y\":270.95318603515625},{\"x\":-7.437242031097412,\"y\":311.4068603515625},{\"x\":-6.508581638336182,\"y\":351.8543395996094},{\"x\":-5.282466888427734,\"y\":392.2939453125},{\"x\":-3.7703018188476562,\"y\":432.72381591796875},{\"x\":-1.9533134698867798,\"y\":473.1410827636719},{\"x\":0.47440534830093384,\"y\":500.8625183105469},{\"x\":1.9073594808578491,\"y\":460.429931640625},{\"x\":3.134626865386963,\"y\":419.9903259277344},{\"x\":4.301876544952393,\"y\":379.54888916015625},{\"x\":5.438269138336182,\"y\":339.106689453125},{\"x\":6.544669151306152,\"y\":298.6635437011719},{\"x\":7.64905309677124,\"y\":258.2204284667969},{\"x\":8.73477554321289,\"y\":217.77676391601562},{\"x\":9.810837745666504,\"y\":177.33290100097656},{\"x\":10.876806259155273,\"y\":136.88864135742188},{\"x\":11.938403129577637,\"y\":96.44432067871094},{\"x\":13,\"y\":56}]",512,512,32,"path","cardinal",0.5,1,"list",0,1,null,null]},{"id":166,"type":"SplineEditor","pos":[614,1461],"size":[557,942],"flags":{},"order":14,"mode":0,"outputs":[{"name":"mask","type":"MASK","links":null,"shape":3},{"name":"coord_str","type":"STRING","links":[445],"shape":3,"slot_index":1},{"name":"float","type":"FLOAT","links":null,"shape":3},{"name":"count","type":"INT","links":null,"shape":3},{"name":"normalized_str","type":"STRING","links":null,"shape":3}],"properties":{"Node name for S&R":"SplineEditor","points":"SplineEditor"},"widgets_values":["[{\"x\":447.94704320246694,\"y\":492.4797901875075},{\"x\":471,\"y\":15},{\"x\":505.5776569478136,\"y\":424.3708830339161}]","[{\"x\":447.9470520019531,\"y\":492.47979736328125},{\"x\":448.7847595214844,\"y\":463.7584228515625},{\"x\":449.64208984375,\"y\":435.03759765625},{\"x\":450.5211181640625,\"y\":406.31744384765625},{\"x\":451.4240417480469,\"y\":377.5980529785156},{\"x\":452.35357666015625,\"y\":348.8794860839844},{\"x\":453.3127136230469,\"y\":320.16192626953125},{\"x\":454.304931640625,\"y\":291.4454650878906},{\"x\":455.33746337890625,\"y\":262.7304382324219},{\"x\":456.4206237792969,\"y\":234.0172882080078},{\"x\":457.5553283691406,\"y\":205.30609130859375},{\"x\":458.763427734375,\"y\":176.59791564941406},{\"x\":460.0601806640625,\"y\":147.89358520507812},{\"x\":461.47900390625,\"y\":119.19503784179688},{\"x\":463.07427978515625,\"y\":90.5058364868164},{\"x\":464.95733642578125,\"y\":61.834224700927734},{\"x\":467.4859619140625,\"y\":33.21382141113281},{\"x\":474.662841796875,\"y\":23.389923095703125},{\"x\":478.7037048339844,\"y\":51.831092834472656},{\"x\":481.6573486328125,\"y\":80.41204833984375},{\"x\":484.2221374511719,\"y\":109.03079223632812},{\"x\":486.5671081542969,\"y\":137.66848754882812},{\"x\":488.7646484375,\"y\":166.31785583496094},{\"x\":490.8570556640625,\"y\":194.9752197265625},{\"x\":492.8660583496094,\"y\":223.6384735107422},{\"x\":494.8100891113281,\"y\":252.30624389648438},{\"x\":496.7001647949219,\"y\":280.9776306152344},{\"x\":498.5423583984375,\"y\":309.652099609375},{\"x\":500.34722900390625,\"y\":338.3288879394531},{\"x\":502.1192932128906,\"y\":367.0078125},{\"x\":503.86181640625,\"y\":395.6885681152344},{\"x\":505.5776672363281,\"y\":424.3708801269531}]",512,512,32,"path","cardinal",0.5,1,"list",0,1,null,null]},{"id":37,"type":"LoadAndApplyICLightUnet","pos":[1069,-261],"size":{"0":381.3333740234375,"1":58},"flags":{},"order":16,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":202,"label":"model"}],"outputs":[{"name":"MODEL","type":"MODEL","links":[287],"shape":3,"slot_index":0,"label":"model"}],"properties":{"Node name for S&R":"LoadAndApplyICLightUnet"},"widgets_values":["iclight_sd15_fbc.safetensors"]},{"id":176,"type":"ADE_BatchedContextOptions","pos":[1129,-129],"size":{"0":317.4000244140625,"1":106},"flags":{},"order":15,"mode":0,"inputs":[{"name":"prev_context","type":"CONTEXT_OPTIONS","link":null}],"outputs":[{"name":"CONTEXT_OPTS","type":"CONTEXT_OPTIONS","links":[479],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"ADE_BatchedContextOptions"},"widgets_values":[32,0,1]},{"id":172,"type":"ADE_UseEvolvedSampling","pos":[1600,-158],"size":{"0":315,"1":118},"flags":{},"order":36,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":457},{"name":"m_models","type":"M_MODELS","link":null},{"name":"context_options","type":"CONTEXT_OPTIONS","link":479,"slot_index":2},{"name":"sample_settings","type":"SAMPLE_SETTINGS","link":null}],"outputs":[{"name":"MODEL","type":"MODEL","links":[460],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"ADE_UseEvolvedSampling"},"widgets_values":["linear (AnimateDiff-SDXL)"]},{"id":179,"type":"VHS_VideoCombine","pos":[2898,-260],"size":[952.1240836732622,1291.9622222089884],"flags":{},"order":38,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":483},{"name":"audio","type":"AUDIO","link":null},{"name":"meta_batch","type":"VHS_BatchManager","link":null},{"name":"vae","type":"VAE","link":null}],"outputs":[{"name":"Filenames","type":"VHS_FILENAMES","links":null,"shape":3}],"properties":{"Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":8,"loop_count":0,"filename_prefix":"IC-Light","format":"image/gif","pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{}}}}],"links":[[202,2,0,37,0,"MODEL"],[227,2,2,70,0,"*"],[290,72,0,100,1,"VAE"],[368,131,0,103,1,"VAE"],[372,39,1,133,0,"*"],[373,39,2,134,0,"*"],[393,39,0,140,0,"IMAGE"],[399,103,0,146,0,"*"],[440,9,0,39,0,"IMAGE"],[443,112,0,103,0,"IMAGE"],[444,112,0,114,0,"IMAGE"],[445,166,1,167,0,"STRING"],[446,132,0,167,2,"INT"],[447,135,0,167,3,"INT"],[448,167,0,112,0,"IMAGE"],[449,168,1,169,0,"STRING"],[450,132,0,169,2,"INT"],[451,135,0,169,3,"INT"],[452,169,0,112,1,"IMAGE"],[453,171,0,44,1,"CONDITIONING"],[454,2,1,171,0,"CLIP"],[455,2,1,170,0,"CLIP"],[456,170,0,44,0,"CONDITIONING"],[457,37,0,172,0,"MODEL"],[460,172,0,173,0,"MODEL"],[461,173,0,100,0,"LATENT"],[465,94,0,173,4,"SIGMAS"],[466,90,0,173,5,"LATENT"],[467,39,0,174,0,"IMAGE"],[468,130,0,174,1,"VAE"],[470,174,0,141,0,"LATENT"],[471,170,0,175,0,"CONDITIONING"],[472,171,0,175,1,"CONDITIONING"],[473,2,2,175,2,"VAE"],[474,145,0,175,3,"LATENT"],[475,147,0,175,4,"LATENT"],[476,175,0,173,1,"CONDITIONING"],[477,175,1,173,2,"CONDITIONING"],[478,175,2,90,0,"LATENT"],[479,176,0,172,2,"CONTEXT_OPTIONS"],[480,177,0,173,3,"SAMPLER"],[481,178,0,174,2,"INT"],[482,178,0,144,0,"INT"],[483,100,0,179,0,"IMAGE"]],"groups":[{"title":"Background","bounding":[560,1132,2688,1353],"color":"#3f789e","font_size":24,"locked":false},{"title":"Foreground","bounding":[3997,861,1796,777],"color":"#3f789e","font_size":24,"locked":false},{"title":"Group","bounding":[512,-376,3412,1454],"color":"#3f789e","font_size":24,"locked":false}],"config":{},"extra":{"ds":{"scale":0.7289098513126373,"offset":[-453.4764480118474,1171.3614599878076]},"workspace_info":{"id":"qaXZw5PbCo3ZcjpQ5oRsL"}},"version":0.4} \ No newline at end of file diff --git a/example_workflows/Img2video.json b/example_workflows/Img2video.json new file mode 100644 index 0000000..bc4e153 --- /dev/null +++ b/example_workflows/Img2video.json @@ -0,0 +1 @@ +{"last_node_id":408,"last_link_id":899,"nodes":[{"id":394,"type":"Florence2Run","pos":[-460.4669435259534,74.57069819241624],"size":{"0":400,"1":352},"flags":{},"order":16,"mode":2,"inputs":[{"name":"image","type":"IMAGE","link":887},{"name":"florence2_model","type":"FL2MODEL","link":886,"slot_index":1}],"outputs":[{"name":"image","type":"IMAGE","links":null,"shape":3},{"name":"mask","type":"MASK","links":null,"shape":3},{"name":"caption","type":"STRING","links":[884],"shape":3,"slot_index":2},{"name":"data","type":"JSON","links":null,"shape":3}],"properties":{"Node name for S&R":"Florence2Run"},"widgets_values":["","more_detailed_caption",true,false,1024,3,true,"",1,"randomize"]},{"id":395,"type":"DownloadAndLoadFlorence2Model","pos":[-794.4669435259534,93.57069819241624],"size":{"0":315,"1":106},"flags":{},"order":0,"mode":2,"inputs":[{"name":"lora","type":"PEFTLORA","link":null}],"outputs":[{"name":"florence2_model","type":"FL2MODEL","links":[886],"shape":3}],"properties":{"Node name for S&R":"DownloadAndLoadFlorence2Model"},"widgets_values":["microsoft/Florence-2-large","fp16","sdpa"]},{"id":393,"type":"ShowText|pysssss","pos":[-794.4669435259534,415.57069819241605],"size":{"0":734.8970947265625,"1":152.5744171142578},"flags":{},"order":21,"mode":2,"inputs":[{"name":"text","type":"STRING","link":884,"widget":{"name":"text"}}],"outputs":[{"name":"STRING","type":"STRING","links":null,"shape":6}],"properties":{"Node name for S&R":"ShowText|pysssss"},"widgets_values":["","The image is a digital illustration of a young woman with long dark hair and blue eyes. She is wearing a blue and gold corset with intricate gold designs on the bodice and skirt. The corset has a high neckline and thin straps that cross over her chest. The woman is standing in front of a circular frame with a fiery orange and yellow background. Her hair is styled in loose waves and cascades over her shoulders. She has a serious expression on her face and is looking directly at the viewer. The overall mood of the image is intense and powerful."]},{"id":357,"type":"chaosaiart_SaveImage","pos":[1645.7921931060323,685.6948446383807],"size":{"0":261.47406005859375,"1":290},"flags":{},"order":28,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":875},{"name":"restart","type":"RESTART","link":823}],"properties":{"Node name for S&R":"chaosaiart_SaveImage"},"widgets_values":["animation/chaosaiart"]},{"id":368,"type":"Reroute","pos":[1735.7921931060325,593.6948446383813],"size":[98.8,26],"flags":{},"order":23,"mode":0,"inputs":[{"name":"","type":"*","link":822}],"outputs":[{"name":"RESTART","type":"RESTART","links":[823],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":389,"type":"Note","pos":[-687,663],"size":{"0":599.0360107421875,"1":175.36549377441406},"flags":{},"order":1,"mode":0,"properties":{"text":""},"widgets_values":["You have to Create 150 Image by this Workflow.\nuse \"Batch count\" ( \"Extra Options\" Checkbox : on, under Queue Prompt )\n\nIf you use the \n\"🔶Restart & Activ Frame - Advanced\", then you can restart form every frame you want, \nby using last Img -> Img2img and new version. \nJust delete failed frame and use \"🔶Merge_Folder\".\n\nThen \"🔶Convert img2video\" to create a video."],"color":"#432","bgcolor":"#653"},{"id":6,"type":"chaosaiart_restarter","pos":[492.79219310603065,84.69484463838063],"size":{"0":315,"1":98},"flags":{},"order":2,"mode":0,"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[416],"shape":3,"slot_index":0},{"name":"RESTART","type":"RESTART","links":[890],"shape":3,"slot_index":1},{"name":"Info","type":"STRING","links":[883],"shape":3,"slot_index":2}],"properties":{"Node name for S&R":"chaosaiart_restarter"},"widgets_values":[3]},{"id":203,"type":"Reroute","pos":[1082.792193106033,102.69484463838066],"size":[98.8,26],"flags":{},"order":12,"mode":0,"inputs":[{"name":"","type":"*","link":890}],"outputs":[{"name":"RESTART","type":"RESTART","links":[819],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":370,"type":"Reroute","pos":[1040.792193106033,305.69484463838114],"size":[132.39999999999998,26],"flags":{},"order":18,"mode":0,"inputs":[{"name":"","type":"*","link":829}],"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[899],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":391,"type":"chaosaiart_Show_Info","pos":[1198.7921931060325,190.69484463838083],"size":{"0":383.6625061035156,"1":130.77523803710938},"flags":{},"order":13,"mode":0,"inputs":[{"name":"info","type":"STRING","link":883,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["","Activ Frame 120\nRestart = No\n\nIf you change the version parameter, all nodes connected via restart will be restarted (restart = 1), and the Activ_Frame will be reset to the start (Activ_Frame = 1)."]},{"id":367,"type":"Reroute","pos":[1431.7921931060323,100.69484463838066],"size":[98.8,26],"flags":{},"order":19,"mode":0,"inputs":[{"name":"","type":"*","link":819}],"outputs":[{"name":"RESTART","type":"RESTART","links":[822,866],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":403,"type":"VHS_VideoCombine","pos":[2407.4405218787465,102.84603410118656],"size":[315,874.0833333333334],"flags":{},"order":20,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":896},{"name":"audio","type":"AUDIO","link":null},{"name":"meta_batch","type":"VHS_BatchManager","link":null},{"name":"vae","type":"VAE","link":null}],"outputs":[{"name":"Filenames","type":"VHS_FILENAMES","links":null,"shape":3}],"properties":{"Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":30,"loop_count":0,"filename_prefix":"animation/AnimateDiff","format":"video/nvenc_h264-mp4","pix_fmt":"yuv420p","bitrate":10,"megabit":true,"save_metadata":true,"pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{"filename":"AnimateDiff_00004.mp4","subfolder":"animation","type":"output","format":"video/nvenc_h264-mp4","frame_rate":30}}}},{"id":401,"type":"ShowText|pysssss","pos":[2030.440521878749,792.8460341011864],"size":{"0":335.5395202636719,"1":185.50906372070312},"flags":{},"order":14,"mode":0,"inputs":[{"name":"text","type":"STRING","link":894,"widget":{"name":"text"}}],"outputs":[{"name":"STRING","type":"STRING","links":null,"shape":6}],"properties":{"Node name for S&R":"ShowText|pysssss"},"widgets_values":["","Video Size: 480x856\nFPS: 10\nOutput: E:\\AI\\ComfyUI_windows_portable\\ComfyUI\\output\\video\\chaosaiart.mp4"]},{"id":399,"type":"chaosaiart_img2video","pos":[2046.440521878747,619.8460341011864],"size":{"0":315,"1":106},"flags":{},"order":3,"mode":0,"inputs":[{"name":"merge_folders","type":"PATH","link":null,"slot_index":0}],"outputs":[{"name":"Info","type":"STRING","links":[894],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_img2video"},"widgets_values":["E:\\AI\\ComfyUI_windows_portable\\ComfyUI\\output\\animation\\chaosaiart\\v_0000","video",10]},{"id":405,"type":"RIFE VFI","pos":[2030.440521878749,368.84603410118694],"size":{"0":364.171875,"1":199.66001892089844},"flags":{},"order":15,"mode":0,"inputs":[{"name":"frames","type":"IMAGE","link":895},{"name":"optional_interpolation_states","type":"INTERPOLATION_STATES","link":null}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[896],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"RIFE VFI"},"widgets_values":["rife47.pth",10,3,true,true,1]},{"id":404,"type":"VHS_LoadImages","pos":[2059.4405218787465,108.84603410118656],"size":[243.60000610351562,194],"flags":{},"order":4,"mode":0,"inputs":[{"name":"meta_batch","type":"VHS_BatchManager","link":null}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[895],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3},{"name":"frame_count","type":"INT","links":null,"shape":3}],"properties":{"Node name for S&R":"VHS_LoadImages"},"widgets_values":{"directory":"v_0001","image_load_cap":0,"skip_first_images":0,"select_every_nth":1,"choose folder to upload":"image","videopreview":{"hidden":false,"paused":false,"params":{"frame_load_cap":0,"skip_first_images":0,"filename":"v_0001","type":"input","format":"folder","select_every_nth":1}}}},{"id":382,"type":"chaosaiart_forPreview","pos":[1634,88],"size":{"0":210,"1":80},"flags":{},"order":29,"mode":0,"inputs":[{"name":"restart","type":"RESTART","link":866},{"name":"image","type":"IMAGE","link":876}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[898],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_forPreview"},"widgets_values":[30]},{"id":408,"type":"PreviewImage","pos":[1642,218],"size":{"0":210,"1":26},"flags":{},"order":30,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":898}],"properties":{"Node name for S&R":"PreviewImage"}},{"id":361,"type":"chaosaiart_Show_Info","pos":[1275,861],"size":{"0":324.0455017089844,"1":101.6712417602539},"flags":{},"order":27,"mode":0,"inputs":[{"name":"info","type":"STRING","link":879,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["","Use Cache Image\nFrame: 120\nactiv_seed: 13473828595417\n"]},{"id":387,"type":"chaosaiart_KSampler_a1","pos":[1284,404],"size":{"0":315,"1":394},"flags":{},"order":26,"mode":0,"inputs":[{"name":"activ_frame","type":"ACTIV_FRAME","link":899},{"name":"model","type":"MODEL","link":870},{"name":"positive","type":"CONDITIONING","link":871},{"name":"negative","type":"CONDITIONING","link":872},{"name":"vae","type":"VAE","link":873},{"name":"start_Image","type":"IMAGE","link":882},{"name":"zoom_frame","type":"ZOOM_FRAME","link":null}],"outputs":[{"name":"Info","type":"STRING","links":[879],"shape":3,"slot_index":0},{"name":"IMAGE","type":"IMAGE","links":[875,876],"shape":3,"slot_index":1},{"name":"SAMPLER","type":"LATENT","links":null,"shape":3}],"properties":{"Node name for S&R":"chaosaiart_KSampler_a1"},"widgets_values":["Portrait (Smartphone) / 9:16","480p","resize",-1,"fixed - 0.50 - SD1.5",25,0.5,12,"dpmpp_2m","karras"]},{"id":2,"type":"chaosaiart_Prompt","pos":[12,73],"size":{"0":420,"1":200},"flags":{},"order":5,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"MAIN_PROMPT","type":"MAIN_PROMPT","links":[76],"shape":3,"slot_index":0},{"name":"LORA","type":"LORA","links":null,"shape":3},{"name":"POSITIV_TXT","type":"STRING","links":null,"shape":3},{"name":"NEGATIV_TXT","type":"STRING","links":null,"shape":3}],"properties":{"Node name for S&R":"chaosaiart_Prompt"},"widgets_values":["8k, 4k, best quality, highres","nfsw, nude, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,","masterpiece, best quality, highres","nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,"]},{"id":7,"type":"Reroute","pos":[508,199],"size":[132.39999999999998,26],"flags":{},"order":17,"mode":0,"inputs":[{"name":"","type":"*","link":826}],"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[9],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":202,"type":"Reroute","pos":[846,86],"size":[132.39999999999998,26],"flags":{},"order":11,"mode":0,"inputs":[{"name":"","type":"*","link":416}],"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[826,829],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":1,"type":"chaosaiart_CheckpointPrompt","pos":[911,421],"size":{"0":300,"1":120},"flags":{},"order":25,"mode":0,"inputs":[{"name":"lora","type":"LORA","link":1},{"name":"positiv_txt","type":"STRING","link":2,"widget":{"name":"positiv_txt"}},{"name":"negativ_txt","type":"STRING","link":3,"widget":{"name":"negativ_txt"}}],"outputs":[{"name":"MODEL","type":"MODEL","links":[870],"shape":3,"slot_index":0},{"name":"POSITIV","type":"CONDITIONING","links":[871],"shape":3,"slot_index":1},{"name":"NEGATIV","type":"CONDITIONING","links":[872],"shape":3,"slot_index":2},{"name":"VAE","type":"VAE","links":[873],"shape":3,"slot_index":3}],"properties":{"Node name for S&R":"chaosaiart_CheckpointPrompt"},"widgets_values":["revAnimated_v2RebirthVAE.safetensors","",""]},{"id":388,"type":"LoadImage","pos":[916,609],"size":{"0":320,"1":314},"flags":{},"order":6,"mode":0,"outputs":[{"name":"IMAGE","type":"IMAGE","links":[882,887],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["ComfyUI_00004_.png","image"]},{"id":11,"type":"chaosaiart_Show_Info","pos":[532,575],"size":{"0":330,"1":276},"flags":{},"order":24,"mode":0,"inputs":[{"name":"info","type":"STRING","link":16,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["Frame: 2,\nPositiv: masterpiece, best quality, highres,1 girl,\nNegativ: nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\nLora:","Frame: 2,\nPositiv: masterpiece, best quality, highres,1 girl,\nNegativ: nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\nLora:","Frame: 2,\nPositiv: masterpiece, best quality, highres,1 girl,\nNegativ: nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\nLora:","Frame: 2,\nPositiv: masterpiece, best quality, highres,1 girl,\nNegativ: nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\nLora:","Frame: 2,\nPositiv: masterpiece, best quality, highres,1 girl,\nNegativ: nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\nLora:","Frame: 120,\nPositiv: 8k, 4k, best quality, highres,1 girl,Vampiere , dark, moonlight, blood , empty, alone, handprints, factory, bats, red glowing eyes,white hair, gothic,\nNegativ: nfsw, nude, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\nLora:"]},{"id":4,"type":"chaosaiart_Prompt_Frame","pos":[16,341],"size":{"0":210,"1":274.7899169921875},"flags":{},"order":7,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[861],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[1,"1girl, blue eyes, light blue hair, cimeatic light, blue and gold corset, fiery circle in the background of head, glowing earrings,","","",""]},{"id":195,"type":"chaosaiart_Prompt_Frame","pos":[16,673],"size":{"0":210,"1":293.85980224609375},"flags":{},"order":8,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null,"slot_index":0},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[881],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[50,"1girl, cat eyes, magical cat women, Fantasy world,","","",""]},{"id":192,"type":"chaosaiart_Prompt_Frame","pos":[246.57686789626368,674.4796841349788],"size":{"0":221.20755004882812,"1":292.3800964355469},"flags":{},"order":9,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[880],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[90,"1 girl,Vampiere , dark, moonlight, blood , empty, alone, handprints, factory, bats, red glowing eyes,white hair, gothic","","",""]},{"id":5,"type":"chaosaiart_Prompt_Frame","pos":[249,341],"size":{"0":214.70220947265625,"1":270.70770263671875},"flags":{},"order":10,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[78],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[20,"1girl, glowing blue eyes, waving hair, blue and gold corset, fiery rotating wheel in the background of head, glowing earrings, Fantasy world,","","",""]},{"id":3,"type":"chaosaiart_Prompt_mixer_byFrame","pos":[533,280],"size":{"0":330,"1":230},"flags":{},"order":22,"mode":0,"inputs":[{"name":"activ_frame","type":"ACTIV_FRAME","link":9},{"name":"main_prompt","type":"MAIN_PROMPT","link":76},{"name":"frame_prompt_1","type":"FRAME_PROMPT","link":861},{"name":"frame_prompt_2","type":"FRAME_PROMPT","link":78},{"name":"frame_prompt_3","type":"FRAME_PROMPT","link":881},{"name":"frame_prompt_4","type":"FRAME_PROMPT","link":880},{"name":"frame_prompt_5","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_6","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_7","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_8","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_9","type":"FRAME_PROMPT","link":null}],"outputs":[{"name":"Info","type":"STRING","links":[16],"shape":3,"slot_index":0},{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":null,"shape":3},{"name":"LORA","type":"LORA","links":[1],"shape":3,"slot_index":2},{"name":"POSITIV_TXT","type":"STRING","links":[2],"shape":3,"slot_index":3},{"name":"NEGAITV_TXT","type":"STRING","links":[3],"shape":3,"slot_index":4}],"properties":{"Node name for S&R":"chaosaiart_Prompt_mixer_byFrame"}}],"links":[[1,3,2,1,0,"LORA"],[2,3,3,1,1,"STRING"],[3,3,4,1,2,"STRING"],[9,7,0,3,0,"ACTIV_FRAME"],[16,3,0,11,0,"STRING"],[76,2,0,3,1,"MAIN_PROMPT"],[78,5,0,3,3,"FRAME_PROMPT"],[416,6,0,202,0,"*"],[819,203,0,367,0,"*"],[822,367,0,368,0,"*"],[823,368,0,357,1,"RESTART"],[826,202,0,7,0,"*"],[829,202,0,370,0,"*"],[861,4,0,3,2,"FRAME_PROMPT"],[866,367,0,382,0,"RESTART"],[870,1,0,387,1,"MODEL"],[871,1,1,387,2,"CONDITIONING"],[872,1,2,387,3,"CONDITIONING"],[873,1,3,387,4,"VAE"],[875,387,1,357,0,"IMAGE"],[876,387,1,382,1,"IMAGE"],[879,387,0,361,0,"STRING"],[880,192,0,3,5,"FRAME_PROMPT"],[881,195,0,3,4,"FRAME_PROMPT"],[882,388,0,387,5,"IMAGE"],[883,6,2,391,0,"STRING"],[884,394,2,393,0,"STRING"],[886,395,0,394,1,"FL2MODEL"],[887,388,0,394,0,"IMAGE"],[890,6,1,203,0,"*"],[894,399,0,401,0,"STRING"],[895,404,0,405,0,"IMAGE"],[896,405,0,403,0,"IMAGE"],[898,382,0,408,0,"IMAGE"],[899,370,0,387,0,"ACTIV_FRAME"]],"groups":[{"title":"f2p","bounding":[-821,-1,794,598],"color":"#3f789e","font_size":24,"locked":false},{"title":"Video","bounding":[1992,3,756,989],"color":"#3f789e","font_size":24,"locked":false},{"title":"generate pic","bounding":[-8,0,1933,995],"color":"#3f789e","font_size":24,"locked":false}],"config":{},"extra":{"ds":{"scale":0.9798620905975504,"offset":{"0":417.54425299467357,"1":-166.2368542328622}},"workspace_info":{"id":"Paho5KaoV1ysRQeu99PyT","saveLock":false,"cloudID":null,"coverMediaPath":null}},"version":0.4} \ No newline at end of file diff --git a/example_workflows/Prompt_schedule.json b/example_workflows/Prompt_schedule.json new file mode 100644 index 0000000..2b6e42b --- /dev/null +++ b/example_workflows/Prompt_schedule.json @@ -0,0 +1 @@ +{"last_node_id":37,"last_link_id":59,"nodes":[{"id":27,"type":"CR Aspect Ratio","pos":[-35,610],"size":{"0":315,"1":322},"flags":{},"order":0,"mode":0,"outputs":[{"name":"width","type":"INT","links":null,"shape":3},{"name":"height","type":"INT","links":null,"shape":3},{"name":"upscale_factor","type":"FLOAT","links":null,"shape":3},{"name":"prescale_factor","type":"FLOAT","links":null,"shape":3},{"name":"batch_size","type":"INT","links":[39],"shape":3,"slot_index":4},{"name":"empty_latent","type":"LATENT","links":[38],"shape":3,"slot_index":5},{"name":"show_help","type":"STRING","links":null,"shape":3}],"properties":{"Node name for S&R":"CR Aspect Ratio"},"widgets_values":[512,768,"custom","Off",1,1,30]},{"id":25,"type":"ADE_AnimateDiffUniformContextOptions","pos":[365,610],"size":{"0":315,"1":270},"flags":{},"order":1,"mode":0,"inputs":[{"name":"prev_context","type":"CONTEXT_OPTIONS","link":null},{"name":"view_opts","type":"VIEW_OPTS","link":null}],"outputs":[{"name":"CONTEXT_OPTIONS","type":"CONTEXT_OPTIONS","links":[34],"shape":3}],"properties":{"Node name for S&R":"ADE_AnimateDiffUniformContextOptions"},"widgets_values":[16,1,4,"uniform",false,"flat",false,0,1,""]},{"id":12,"type":"VAEDecode","pos":[1198,977],"size":{"0":210,"1":46},"flags":{},"order":12,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":12},{"name":"vae","type":"VAE","link":13}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[53],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"VAEDecode"}},{"id":10,"type":"CLIPTextEncode","pos":[845,969],"size":{"0":291.6876220703125,"1":150.9140625},"flags":{},"order":7,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":49,"slot_index":0}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[9],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["NSFW, cartoon, painting, illustration, worst quality, low quality, normal quality, embedding:EasyNegative, camera"],"color":"#322","bgcolor":"#533"},{"id":11,"type":"VAELoader","pos":[-42,1165],"size":{"0":315,"1":58},"flags":{"collapsed":false},"order":2,"mode":0,"outputs":[{"name":"VAE","type":"VAE","links":[13],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"VAELoader"},"widgets_values":["vae-ft-mse-840000-ema-pruned.ckpt.vae.pt"]},{"id":6,"type":"ADE_AnimateDiffLoaderWithContext","pos":[718,617],"size":{"0":342.5999755859375,"1":230},"flags":{},"order":6,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":48},{"name":"context_options","type":"CONTEXT_OPTIONS","link":34,"slot_index":1},{"name":"motion_lora","type":"MOTION_LORA","link":40,"slot_index":2},{"name":"motion_model_settings","type":"MOTION_MODEL_SETTINGS","link":null,"slot_index":3},{"name":"sample_settings","type":"SAMPLE_SETTINGS","link":null,"slot_index":4},{"name":"ad_keyframes","type":"AD_KEYFRAMES","link":null}],"outputs":[{"name":"MODEL","type":"MODEL","links":[56],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"ADE_AnimateDiffLoaderWithContext"},"widgets_values":["animatediff_lightning_4step_comfyui.safetensors","sqrt_linear (AnimateDiff)",1,false],"color":"#223","bgcolor":"#335"},{"id":32,"type":"LoraLoader","pos":[-31,984],"size":{"0":315,"1":126},"flags":{},"order":5,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":46},{"name":"clip","type":"CLIP","link":47}],"outputs":[{"name":"MODEL","type":"MODEL","links":[48],"shape":3},{"name":"CLIP","type":"CLIP","links":[49,50],"shape":3}],"properties":{"Node name for S&R":"LoraLoader"},"widgets_values":["add_detail.safetensors",1,1]},{"id":34,"type":"RIFE VFI","pos":[875,1300],"size":{"0":443.4000244140625,"1":198},"flags":{},"order":13,"mode":0,"inputs":[{"name":"frames","type":"IMAGE","link":53},{"name":"optional_interpolation_states","type":"INTERPOLATION_STATES","link":null,"slot_index":1}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[54],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"RIFE VFI"},"widgets_values":["rife47.pth",10,2,true,true,1]},{"id":28,"type":"ADE_AnimateDiffLoRALoader","pos":[347,453],"size":{"0":355.20001220703125,"1":82},"flags":{},"order":3,"mode":0,"inputs":[{"name":"prev_motion_lora","type":"MOTION_LORA","link":null}],"outputs":[{"name":"MOTION_LORA","type":"MOTION_LORA","links":[40],"shape":3}],"properties":{"Node name for S&R":"ADE_AnimateDiffLoRALoader"},"widgets_values":["v2_lora_PanRight.ckpt",0.3,""]},{"id":5,"type":"CheckpointLoaderSimple","pos":[-390,984],"size":{"0":315,"1":98},"flags":{"collapsed":false},"order":4,"mode":0,"outputs":[{"name":"MODEL","type":"MODEL","links":[46],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[47],"shape":3,"slot_index":1},{"name":"VAE","type":"VAE","links":null,"shape":3}],"properties":{"Node name for S&R":"CheckpointLoaderSimple"},"widgets_values":["dreamshaper_8.safetensors"]},{"id":8,"type":"KSampler","pos":[1102,620],"size":{"0":315,"1":262},"flags":{},"order":11,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":59},{"name":"positive","type":"CONDITIONING","link":36,"slot_index":1},{"name":"negative","type":"CONDITIONING","link":9},{"name":"latent_image","type":"LATENT","link":38}],"outputs":[{"name":"LATENT","type":"LATENT","links":[12],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"KSampler"},"widgets_values":[219964034757582,"increment",4,2.5,"dpmpp_sde","karras",1]},{"id":36,"type":"RescaleCFG","pos":[762,476],"size":{"0":315,"1":58},"flags":{},"order":9,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":56}],"outputs":[{"name":"MODEL","type":"MODEL","links":[58],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"RescaleCFG"},"widgets_values":[0.7]},{"id":37,"type":"FreeU_V2","pos":[1116,431],"size":{"0":315,"1":130},"flags":{},"order":10,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":58}],"outputs":[{"name":"MODEL","type":"MODEL","links":[59],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"FreeU_V2"},"widgets_values":[1.3,1.4,0.9,0.2]},{"id":26,"type":"BatchPromptSchedule","pos":[334,935],"size":{"0":461.7410888671875,"1":398.6525573730469},"flags":{},"order":8,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":50},{"name":"max_frames","type":"INT","link":39,"widget":{"name":"max_frames"}}],"outputs":[{"name":"POS","type":"CONDITIONING","links":[36],"shape":3,"slot_index":0},{"name":"NEG","type":"CONDITIONING","links":null,"shape":3}],"properties":{"Node name for S&R":"BatchPromptSchedule"},"widgets_values":["\"0\" :\"a lady wearing crop top (detailed eyes:1.2)\",\n\"16\" :\"a lady wearing sleeveless crop top, (detailed eyes:1.2)\",\n\"26\" :\"a lady wearing bra, (detailed eyes:1.2)\",",30,false,"RAW photo, best quality, masterpiece, in a (historical:1.3) monument,\n\n\n\n","",0,0,0,0,0,0],"color":"#232","bgcolor":"#353"},{"id":33,"type":"MMakerColorEnhance","pos":[1102,1178],"size":{"0":315,"1":58},"flags":{},"order":14,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":54}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[52],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"MMakerColorEnhance"},"widgets_values":[0.7000000000000001]},{"id":18,"type":"VHS_VideoCombine","pos":[1484,435],"size":[489.7938232421875,1028.6907348632812],"flags":{"collapsed":false},"order":15,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":52},{"name":"audio","type":"VHS_AUDIO","link":null},{"name":"meta_batch","type":"VHS_BatchManager","link":null},{"name":"vae","type":"VAE","link":null}],"outputs":[{"name":"Filenames","type":"VHS_FILENAMES","links":null,"shape":3}],"properties":{"Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":8,"loop_count":0,"filename_prefix":"animation/Pschedul","format":"video/h264-mp4","pix_fmt":"yuv420p","crf":20,"save_metadata":true,"pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{"filename":"Pschedul_00001.mp4","subfolder":"animation","type":"output","format":"video/h264-mp4","frame_rate":8}}}}],"links":[[9,10,0,8,2,"CONDITIONING"],[12,8,0,12,0,"LATENT"],[13,11,0,12,1,"VAE"],[34,25,0,6,1,"CONTEXT_OPTIONS"],[36,26,0,8,1,"CONDITIONING"],[38,27,5,8,3,"LATENT"],[39,27,4,26,1,"INT"],[40,28,0,6,2,"MOTION_LORA"],[46,5,0,32,0,"MODEL"],[47,5,1,32,1,"CLIP"],[48,32,0,6,0,"MODEL"],[49,32,1,10,0,"CLIP"],[50,32,1,26,0,"CLIP"],[52,33,0,18,0,"IMAGE"],[53,12,0,34,0,"IMAGE"],[54,34,0,33,0,"IMAGE"],[56,6,0,36,0,"MODEL"],[58,36,0,37,0,"MODEL"],[59,37,0,8,0,"MODEL"]],"groups":[],"config":{},"extra":{"workspace_info":{"id":"9bf5b66d-779f-4290-b042-a1ea3fec1969","name":"ComfyUI FizzNodes Workflow","saveLock":false,"cloudID":null,"coverMediaPath":"AnimateDiff_00006.mp4"},"ds":{"scale":1.0380665725469589,"offset":[-123.97016810141577,-462.25726805145257]}},"version":0.4} \ No newline at end of file diff --git a/example_workflows/Reference-images-animation.json b/example_workflows/Reference-images-animation.json new file mode 100644 index 0000000..eb2f1b0 --- /dev/null +++ b/example_workflows/Reference-images-animation.json @@ -0,0 +1 @@ +{"last_node_id":116,"last_link_id":210,"nodes":[{"id":8,"type":"VAEDecode","pos":[1265,231],"size":{"0":140,"1":60},"flags":{},"order":20,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":182}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[207],"slot_index":0}],"properties":{"Node name for S&R":"VAEDecode"}},{"id":84,"type":"PrepImageForClipVision","pos":[121,978],"size":{"0":315,"1":106},"flags":{},"order":15,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":151}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[159],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"PrepImageForClipVision"},"widgets_values":["LANCZOS","top",0]},{"id":93,"type":"IPAdapterAdvanced","pos":[516,676],"size":{"0":315,"1":278},"flags":{},"order":16,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":173},{"name":"ipadapter","type":"IPADAPTER","link":157},{"name":"image","type":"IMAGE","link":159},{"name":"image_negative","type":"IMAGE","link":null},{"name":"attn_mask","type":"MASK","link":null},{"name":"clip_vision","type":"CLIP_VISION","link":158}],"outputs":[{"name":"MODEL","type":"MODEL","links":[174],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"IPAdapterAdvanced"},"widgets_values":[0.35000000000000003,"linear","concat",0,1,"V only"]},{"id":72,"type":"CLIPVisionLoader","pos":[113,552],"size":{"0":315,"1":58},"flags":{},"order":0,"mode":0,"outputs":[{"name":"CLIP_VISION","type":"CLIP_VISION","links":[158],"shape":3}],"properties":{"Node name for S&R":"CLIPVisionLoader"},"widgets_values":["clip_vision_vit_h.safetensors"]},{"id":71,"type":"IPAdapterModelLoader","pos":[114,434],"size":{"0":343.06768798828125,"1":60.125640869140625},"flags":{},"order":1,"mode":0,"outputs":[{"name":"IPADAPTER","type":"IPADAPTER","links":[157],"shape":3}],"properties":{"Node name for S&R":"IPAdapterModelLoader"},"widgets_values":["ip-adapter-plus_sd15.safetensors"]},{"id":50,"type":"ADE_AnimateDiffLoaderWithContext","pos":[21,675],"size":{"0":435.9092102050781,"1":231.1949920654297},"flags":{},"order":10,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":202},{"name":"context_options","type":"CONTEXT_OPTIONS","link":null},{"name":"motion_lora","type":"MOTION_LORA","link":null},{"name":"motion_model_settings","type":"MOTION_MODEL_SETTINGS","link":null},{"name":"sample_settings","type":"SAMPLE_SETTINGS","link":null},{"name":"ad_keyframes","type":"AD_KEYFRAMES","link":null}],"outputs":[{"name":"MODEL","type":"MODEL","links":[173],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"ADE_AnimateDiffLoaderWithContext"},"widgets_values":["animatediff_lightning_8step_comfyui.safetensors","sqrt_linear (AnimateDiff)",1,true]},{"id":81,"type":"ImageBatch","pos":[210,1179],"size":{"0":210,"1":46},"flags":{},"order":14,"mode":0,"inputs":[{"name":"image1","type":"IMAGE","link":177},{"name":"image2","type":"IMAGE","link":178}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[151],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"ImageBatch"}},{"id":74,"type":"RepeatImageBatch","pos":[-188,982],"size":{"0":210,"1":58},"flags":{},"order":8,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":175}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[177],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"RepeatImageBatch"},"widgets_values":[8]},{"id":76,"type":"RepeatImageBatch","pos":[-189,1127],"size":{"0":210,"1":58},"flags":{},"order":9,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":176}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[178],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"RepeatImageBatch"},"widgets_values":[8]},{"id":86,"type":"FreeU_V2","pos":[859,682],"size":{"0":210,"1":130},"flags":{},"order":17,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":174}],"outputs":[{"name":"MODEL","type":"MODEL","links":[172],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"FreeU_V2"},"widgets_values":[1.2,1.3,0.9,0.5]},{"id":75,"type":"LoadImage","pos":[-578,920],"size":{"0":315,"1":314.0000305175781},"flags":{},"order":3,"mode":0,"outputs":[{"name":"IMAGE","type":"IMAGE","links":[176],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["ComfyUI_00006_.png","image"]},{"id":87,"type":"RescaleCFG","pos":[858,872],"size":{"0":210,"1":58},"flags":{},"order":18,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":172}],"outputs":[{"name":"MODEL","type":"MODEL","links":[148],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"RescaleCFG"},"widgets_values":[0.7]},{"id":6,"type":"CLIPTextEncode","pos":[411,-23],"size":{"0":370,"1":160},"flags":{},"order":12,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":203}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[125,187],"slot_index":0}],"title":"CLIP Text Encode (Positive)","properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["a beautiful girl wearing a hat,"],"color":"#232","bgcolor":"#353"},{"id":7,"type":"CLIPTextEncode","pos":[411,208],"size":{"0":370,"1":160},"flags":{},"order":13,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":204}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[126,188],"slot_index":0}],"title":"CLIP Text Encode (Negative)","properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["blurry, horror, naked, dark"],"color":"#322","bgcolor":"#533"},{"id":11,"type":"VAELoader","pos":[918,505],"size":{"0":300,"1":60},"flags":{},"order":4,"mode":0,"outputs":[{"name":"VAE","type":"VAE","links":[182,189],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"VAELoader"},"widgets_values":["kl-f8-anime2.ckpt"]},{"id":111,"type":"UpscaleModelLoader","pos":[919,67],"size":{"0":315,"1":58},"flags":{},"order":5,"mode":0,"outputs":[{"name":"UPSCALE_MODEL","type":"UPSCALE_MODEL","links":[195],"shape":3}],"properties":{"Node name for S&R":"UpscaleModelLoader"},"widgets_values":["4x-UltraSharp(gen).pth"]},{"id":103,"type":"MMakerColorEnhance","pos":[1662,371],"size":[216.38017130600247,58],"flags":{},"order":23,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":199}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[200],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"MMakerColorEnhance"},"widgets_values":[0.5]},{"id":3,"type":"KSampler","pos":[917,200],"size":{"0":300,"1":262},"flags":{},"order":19,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":148},{"name":"positive","type":"CONDITIONING","link":125},{"name":"negative","type":"CONDITIONING","link":126},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"properties":{"Node name for S&R":"KSampler"},"widgets_values":[81734648716512,"increment",8,5,"dpmpp_sde","karras",1]},{"id":112,"type":"RIFE VFI","pos":[1446,94],"size":[336.57367645243585,198],"flags":{},"order":22,"mode":0,"inputs":[{"name":"frames","type":"IMAGE","link":208},{"name":"optional_interpolation_states","type":"INTERPOLATION_STATES","link":null,"slot_index":1}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[199],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"RIFE VFI"},"widgets_values":["rife47.pth",10,2,true,true,1]},{"id":4,"type":"CheckpointLoaderSimple","pos":[-585,358],"size":{"0":340,"1":100},"flags":{},"order":6,"mode":0,"outputs":[{"name":"MODEL","type":"MODEL","links":[202,209],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[203,204],"slot_index":1},{"name":"VAE","type":"VAE","links":[],"slot_index":2}],"properties":{"Node name for S&R":"CheckpointLoaderSimple"},"widgets_values":["dreamshaper_8.safetensors"]},{"id":116,"type":"LoraLoaderModelOnly","pos":[431,-165],"size":{"0":315,"1":82},"flags":{},"order":11,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":209}],"outputs":[{"name":"MODEL","type":"MODEL","links":[210],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"LoraLoaderModelOnly"},"widgets_values":["Hyper-SD15-8steps-CFG-lora.safetensors",1]},{"id":109,"type":"UltimateSDUpscale","pos":[1308,369],"size":{"0":315,"1":614},"flags":{},"order":21,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":207},{"name":"model","type":"MODEL","link":210},{"name":"positive","type":"CONDITIONING","link":187},{"name":"negative","type":"CONDITIONING","link":188},{"name":"vae","type":"VAE","link":189},{"name":"upscale_model","type":"UPSCALE_MODEL","link":195,"slot_index":5}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[208],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"UltimateSDUpscale"},"widgets_values":[2,481820931840879,"increment",8,5,"dpmpp_sde","karras",0.3,"Linear",512,512,8,32,"None",1,64,8,16,true,false]},{"id":5,"type":"EmptyLatentImage","pos":[541,446],"size":{"0":220,"1":106},"flags":{},"order":7,"mode":0,"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"properties":{"Node name for S&R":"EmptyLatentImage"},"widgets_values":[512,768,16]},{"id":30,"type":"VHS_VideoCombine","pos":[1961,-308],"size":[908.6898193359375,1657.0347290039062],"flags":{},"order":24,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":200},{"name":"audio","type":"VHS_AUDIO","link":null},{"name":"meta_batch","type":"VHS_BatchManager","link":null},{"name":"vae","type":"VAE","link":null}],"outputs":[{"name":"Filenames","type":"VHS_FILENAMES","links":null,"shape":3}],"properties":{"Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":8,"loop_count":0,"filename_prefix":"AnimateDiff","format":"video/h264-mp4","pix_fmt":"yuv420p","crf":20,"save_metadata":true,"pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{"filename":"AnimateDiff_00008.mp4","subfolder":"","type":"output","format":"video/h264-mp4","frame_rate":8}}}},{"id":73,"type":"LoadImage","pos":[-577,551],"size":{"0":315,"1":314.0000305175781},"flags":{},"order":2,"mode":0,"outputs":[{"name":"IMAGE","type":"IMAGE","links":[175],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["ComfyUI_00004_.png","image"]}],"links":[[2,5,0,3,3,"LATENT"],[7,3,0,8,0,"LATENT"],[125,6,0,3,1,"CONDITIONING"],[126,7,0,3,2,"CONDITIONING"],[148,87,0,3,0,"MODEL"],[151,81,0,84,0,"IMAGE"],[157,71,0,93,1,"IPADAPTER"],[158,72,0,93,5,"CLIP_VISION"],[159,84,0,93,2,"IMAGE"],[172,86,0,87,0,"MODEL"],[173,50,0,93,0,"MODEL"],[174,93,0,86,0,"MODEL"],[175,73,0,74,0,"IMAGE"],[176,75,0,76,0,"IMAGE"],[177,74,0,81,0,"IMAGE"],[178,76,0,81,1,"IMAGE"],[182,11,0,8,1,"VAE"],[187,6,0,109,2,"CONDITIONING"],[188,7,0,109,3,"CONDITIONING"],[189,11,0,109,4,"VAE"],[195,111,0,109,5,"UPSCALE_MODEL"],[199,112,0,103,0,"IMAGE"],[200,103,0,30,0,"IMAGE"],[202,4,0,50,0,"MODEL"],[203,4,1,6,0,"CLIP"],[204,4,1,7,0,"CLIP"],[207,8,0,109,0,"IMAGE"],[208,109,0,112,0,"IMAGE"],[209,4,0,116,0,"MODEL"],[210,116,0,109,1,"MODEL"]],"groups":[],"config":{},"extra":{"workspace_info":{"id":"8f865cd2-f72a-4fd0-a3c3-6a8e5736f6c7","saveLock":false,"cloudID":null,"coverMediaPath":null},"ds":{"scale":0.5118697669108705,"offset":{"0":-439.4807838503493,"1":-8.215160427135402}}},"version":0.4} \ No newline at end of file diff --git a/example_workflows/SDlightning_animediff.json b/example_workflows/SDlightning_animediff.json new file mode 100644 index 0000000..b24994b --- /dev/null +++ b/example_workflows/SDlightning_animediff.json @@ -0,0 +1 @@ +{"last_node_id":56,"last_link_id":87,"nodes":[{"id":38,"type":"ADE_AnimateDiffUniformContextOptions","pos":{"0":665,"1":-76},"size":{"0":315,"1":270},"flags":{},"order":0,"mode":0,"inputs":[{"name":"prev_context","type":"CONTEXT_OPTIONS","link":null},{"name":"view_opts","type":"VIEW_OPTS","link":null}],"outputs":[{"name":"CONTEXT_OPTIONS","type":"CONTEXT_OPTIONS","links":[79],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"ADE_AnimateDiffUniformContextOptions"},"widgets_values":[60,1,4,"uniform",false,"flat",false,0,1,""]},{"id":9,"type":"EmptyLatentImage","pos":{"0":1080.0133056640625,"1":311.7891540527344},"size":{"0":315,"1":106},"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[39],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"EmptyLatentImage"},"widgets_values":[512,768,32]},{"id":7,"type":"KSampler","pos":{"0":1546,"1":546},"size":{"0":315,"1":262},"flags":{},"order":10,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":77},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":5},{"name":"latent_image","type":"LATENT","link":39},{"name":"seed","type":"INT","link":70,"widget":{"name":"seed"}}],"outputs":[{"name":"LATENT","type":"LATENT","links":[71],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"KSampler"},"widgets_values":[645099360392978,"fixed",4,2,"dpmpp_sde","karras",1]},{"id":32,"type":"CheckpointLoaderSimple","pos":{"0":582,"1":628},"size":{"0":434.4290466308594,"1":105.58047485351562},"flags":{},"order":2,"mode":0,"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[84],"slot_index":0,"shape":3},{"name":"CLIP","type":"CLIP","links":[86],"slot_index":1,"shape":3},{"name":"VAE","type":"VAE","links":[64],"slot_index":2,"shape":3}],"properties":{"Node name for S&R":"CheckpointLoaderSimple"},"widgets_values":["dreamshaper_8.safetensors"]},{"id":4,"type":"CLIPSetLastLayer","pos":{"0":676,"1":501},"size":{"0":315,"1":58},"flags":{},"order":6,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":87}],"outputs":[{"name":"CLIP","type":"CLIP","links":[82,83],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"CLIPSetLastLayer"},"widgets_values":[-1]},{"id":56,"type":"ADE_AnimateDiffLoaderGen1","pos":{"0":1073,"1":-59},"size":{"0":315,"1":242},"flags":{},"order":5,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":85},{"name":"context_options","type":"CONTEXT_OPTIONS","link":79,"slot_index":1},{"name":"motion_lora","type":"MOTION_LORA","link":null},{"name":"ad_settings","type":"AD_SETTINGS","link":null},{"name":"ad_keyframes","type":"AD_KEYFRAMES","link":null},{"name":"sample_settings","type":"SAMPLE_SETTINGS","link":null},{"name":"scale_multival","type":"MULTIVAL","link":null},{"name":"effect_multival","type":"MULTIVAL","link":null},{"name":"per_block","type":"PER_BLOCK","link":null}],"outputs":[{"name":"MODEL","type":"MODEL","links":[80],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"ADE_AnimateDiffLoaderGen1"},"widgets_values":["animatediff_lightning_4step_comfyui.safetensors","autoselect"]},{"id":51,"type":"Seed (rgthree)","pos":{"0":1125,"1":479},"size":{"0":210,"1":130},"flags":{},"order":3,"mode":0,"inputs":[],"outputs":[{"name":"SEED","type":"INT","links":[70],"slot_index":0,"shape":3,"dir":4}],"properties":{"Node name for S&R":"Seed (rgthree)"},"widgets_values":[-1,null,null,null]},{"id":3,"type":"CLIPTextEncode","pos":{"0":1055,"1":680},"size":{"0":377.43798828125,"1":157.185546875},"flags":{},"order":8,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":82}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["(masterpiece, best quality,hires,high resolution:1.2), a girl dancing in joy\n"],"color":"#232","bgcolor":"#353"},{"id":6,"type":"CLIPTextEncode","pos":{"0":1055,"1":901},"size":{"0":376.8983459472656,"1":107.18814086914062},"flags":{},"order":9,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":83}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[5],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["nude, nsfw, (worst quality, low quality: 1.4), cropped, out of frame"],"color":"#322","bgcolor":"#533"},{"id":10,"type":"VAEDecode","pos":{"0":1598,"1":417},"size":{"0":210,"1":46},"flags":{},"order":11,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":71},{"name":"vae","type":"VAE","link":64}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[72],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"VAEDecode"},"widgets_values":[]},{"id":55,"type":"FreeU_V2","pos":{"0":1479,"1":221},"size":{"0":315,"1":130},"flags":{},"order":7,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":80}],"outputs":[{"name":"MODEL","type":"MODEL","links":[77],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"FreeU_V2"},"widgets_values":[1.3,1.4,0.9,0.2]},{"id":53,"type":"RIFE VFI","pos":{"0":1448,"1":-55},"size":{"0":443.4000244140625,"1":198},"flags":{},"order":12,"mode":0,"inputs":[{"name":"frames","type":"IMAGE","link":72},{"name":"optional_interpolation_states","type":"INTERPOLATION_STATES","link":null}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[73],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"RIFE VFI"},"widgets_values":["rife47.pth",10,2,true,true,1]},{"id":35,"type":"VHS_VideoCombine","pos":{"0":2008,"1":-55},"size":[560.4826049804688,1062.7239074707031],"flags":{},"order":13,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":73},{"name":"audio","type":"VHS_AUDIO","link":null},{"name":"meta_batch","type":"VHS_BatchManager","link":null},{"name":"vae","type":"VAE","link":null}],"outputs":[{"name":"Filenames","type":"VHS_FILENAMES","links":[],"slot_index":0,"shape":3}],"properties":{"Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":8,"loop_count":0,"filename_prefix":"aaa_readme","format":"image/gif","pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{"filename":"aaa_readme_00001.gif","subfolder":"","type":"output","format":"image/gif","frame_rate":8}}},"color":"#223","bgcolor":"#335"},{"id":39,"type":"LoraLoader","pos":{"0":666,"1":260},"size":{"0":315,"1":126},"flags":{},"order":4,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":84,"slot_index":0},{"name":"clip","type":"CLIP","link":86,"slot_index":1}],"outputs":[{"name":"MODEL","type":"MODEL","links":[85],"slot_index":0,"shape":3},{"name":"CLIP","type":"CLIP","links":[87],"slot_index":1,"shape":3}],"properties":{"Node name for S&R":"LoraLoader"},"widgets_values":["SD1.5\\add_detail.safetensors",0.2,1]}],"links":[[4,3,0,7,1,"CONDITIONING"],[5,6,0,7,2,"CONDITIONING"],[39,9,0,7,3,"LATENT"],[64,32,2,10,1,"VAE"],[70,51,0,7,4,"INT"],[71,7,0,10,0,"LATENT"],[72,10,0,53,0,"IMAGE"],[73,53,0,35,0,"IMAGE"],[77,55,0,7,0,"MODEL"],[79,38,0,56,1,"CONTEXT_OPTIONS"],[80,56,0,55,0,"MODEL"],[82,4,0,3,0,"CLIP"],[83,4,0,6,0,"CLIP"],[84,32,0,39,0,"MODEL"],[85,39,0,56,0,"MODEL"],[86,32,1,39,1,"CLIP"],[87,39,1,4,0,"CLIP"]],"groups":[{"title":"Latents = Animation length","bounding":[1058,235,327,150],"color":"#3f789e","font_size":24,"flags":{}},{"title":"Change this to match your model reqs","bounding":[616,402,416,165],"color":"#3f789e","font_size":24,"flags":{}}],"config":{},"extra":{"workspace_info":{"id":"62877d74-839d-4807-bc4b-cc3ebe8e5169","saveLock":false,"cloudID":null,"coverMediaPath":null},"ds":{"scale":0.5586995062956376,"offset":[-246.5470258173309,426.39671695425955]}},"version":0.4} \ No newline at end of file diff --git a/example_workflows/Text2Video.json b/example_workflows/Text2Video.json new file mode 100644 index 0000000..0f298a6 --- /dev/null +++ b/example_workflows/Text2Video.json @@ -0,0 +1 @@ +{"last_node_id":444,"last_link_id":1024,"nodes":[{"id":368,"type":"Reroute","pos":[5751.787486808904,608.3536858748263],"size":[98.8,26],"flags":{},"order":25,"mode":0,"inputs":[{"name":"","type":"*","link":822}],"outputs":[{"name":"RESTART","type":"RESTART","links":[823],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":419,"type":"chaosaiart_convert_Prompt","pos":[1499.3571851245697,569.1243200860812],"size":{"0":280,"1":94},"flags":{},"order":27,"mode":0,"inputs":[{"name":"add_frame_prompt","type":"FRAME_PROMPT","link":989},{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"MAIN_PROMPT","type":"MAIN_PROMPT","links":[981],"shape":3,"slot_index":0},{"name":"Info","type":"STRING","links":[1006],"shape":3,"slot_index":1}],"properties":{"Node name for S&R":"chaosaiart_convert_Prompt"},"widgets_values":["",""]},{"id":432,"type":"chaosaiart_Show_Info","pos":[1500,700],"size":{"0":280,"1":320},"flags":{},"order":32,"mode":0,"inputs":[{"name":"info","type":"STRING","link":1006,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["","Positiv:\n8k, 4k, best quality, highres,1 girl,Vampiere , dark, moonlight, blood , empty, alone, handprints, factory, bats, red glowing eyes,white hair, gothic\n\nnegativOUT:\nnfsw, nude, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\n\nLora:\n"]},{"id":407,"type":"Reroute","pos":[1810,480],"size":[98.8,26],"flags":{},"order":26,"mode":0,"inputs":[{"name":"","type":"*","link":941}],"outputs":[{"name":"RESTART","type":"RESTART","links":[992,996],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":422,"type":"Reroute","pos":[3480,480],"size":[98.8,26],"flags":{},"order":30,"mode":0,"inputs":[{"name":"","type":"*","link":992}],"outputs":[{"name":"RESTART","type":"RESTART","links":[993],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":417,"type":"Reroute","pos":[3780,300],"size":[82,26],"flags":{},"order":33,"mode":0,"inputs":[{"name":"","type":"*","link":969}],"outputs":[{"name":"ARRAY","type":"ARRAY","links":[970,971],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":409,"type":"Reroute","pos":[5060,300],"size":[75,26],"flags":{},"order":41,"mode":0,"inputs":[{"name":"","type":"*","link":1008}],"outputs":[{"name":"*","type":"*","links":[949],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":405,"type":"Reroute","pos":[1530,350],"size":[98.8,26],"flags":{},"order":21,"mode":0,"inputs":[{"name":"","type":"*","link":938}],"outputs":[{"name":"RESTART","type":"RESTART","links":[941],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":420,"type":"Reroute","pos":[950,570],"size":[140.8,26],"flags":{},"order":23,"mode":0,"inputs":[{"name":"","type":"*","link":988}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[989],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":435,"type":"Reroute","pos":[1110,-70],"size":[98.8,26],"flags":{},"order":12,"mode":0,"inputs":[{"name":"","type":"*","link":1010}],"outputs":[{"name":"RESTART","type":"RESTART","links":[1011],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":202,"type":"Reroute","pos":[900,-70],"size":[132.39999999999998,26],"flags":{},"order":11,"mode":0,"inputs":[{"name":"","type":"*","link":416}],"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[826],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":367,"type":"Reroute","pos":[5770,90],"size":[98.8,26],"flags":{},"order":20,"mode":0,"inputs":[{"name":"","type":"*","link":819}],"outputs":[{"name":"RESTART","type":"RESTART","links":[822,866],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":203,"type":"Reroute","pos":[1310,90],"size":[98.8,26],"flags":{},"order":17,"mode":0,"inputs":[{"name":"","type":"*","link":1011}],"outputs":[{"name":"RESTART","type":"RESTART","links":[819,938],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":426,"type":"Reroute","pos":[1450,1090],"size":[75,26],"flags":{},"order":29,"mode":0,"inputs":[{"name":"","type":"*","link":998}],"outputs":[{"name":"VAE","type":"VAE","links":[1015],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":437,"type":"chaosaiart_Ksampler_attribut","pos":[3890,550],"size":{"0":230,"1":200},"flags":{},"order":43,"mode":0,"inputs":[{"name":"latent","type":"LATENT","link":1012}],"outputs":[{"name":"MAIN_K_ATTRIBUT","type":"K_ATTRIBUT","links":[1014],"shape":3,"slot_index":0},{"name":"LATENT","type":"LATENT","links":[1013],"shape":3,"slot_index":1}],"properties":{"Node name for S&R":"chaosaiart_Ksampler_attribut"},"widgets_values":[26,"No","No","No","No","No"]},{"id":411,"type":"chaosaiart_reloadLatent_Save","pos":[4880,450],"size":{"0":260.3999938964844,"1":80},"flags":{},"order":47,"mode":0,"inputs":[{"name":"latent","type":"LATENT","link":950}],"outputs":[{"name":"LATENT","type":"LATENT","links":[951],"shape":3,"slot_index":0},{"name":"Info","type":"STRING","links":null,"shape":3}],"properties":{"Node name for S&R":"chaosaiart_reloadLatent_Save"},"widgets_values":[1]},{"id":410,"type":"VAEDecode","pos":[5220,450],"size":{"0":210,"1":46},"flags":{},"order":49,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":951},{"name":"vae","type":"VAE","link":949}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[953,955],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"VAEDecode"}},{"id":427,"type":"Reroute","pos":[2880,1090],"size":[75,26],"flags":{},"order":34,"mode":0,"inputs":[{"name":"","type":"*","link":1015}],"outputs":[{"name":"VAE","type":"VAE","links":[1000],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":436,"type":"Note","pos":[2260,910],"size":{"0":210,"1":58},"flags":{},"order":1,"mode":0,"properties":{"text":""},"widgets_values":["Start Input"],"color":"#432","bgcolor":"#653"},{"id":401,"type":"chaosaiart_Show_Info","pos":[4210,810],"size":{"0":250,"1":150},"flags":{},"order":46,"mode":0,"inputs":[{"name":"info","type":"STRING","link":925,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["","Start_at_step: 0\nend_at_step: 13\nsteps: 26\ndenoise: 0.5\nseed: 12456456\ncfg: 12.0\nsampler_name: dpmpp_2m\nscheduler: karras"]},{"id":400,"type":"chaosaiart_Show_Info","pos":[4560,750],"size":{"0":250,"1":150},"flags":{},"order":48,"mode":0,"inputs":[{"name":"info","type":"STRING","link":924,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["","Start_at_step: 13\nend_at_step: 26\nsteps: 26\ndenoise: 1.0\nseed: 12456733\ncfg: 12.0\nsampler_name: dpmpp_2m\nscheduler: karras"]},{"id":398,"type":"chaosaiart_KSampler_expert_1","pos":[4210,490],"size":{"0":250,"1":282},"flags":{},"order":44,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":926},{"name":"positive","type":"CONDITIONING","link":927},{"name":"negative","type":"CONDITIONING","link":928},{"name":"k_attribut","type":"K_ATTRIBUT","link":1014},{"name":"latent","type":"LATENT","link":1013}],"outputs":[{"name":"SUB_K_ATTRIBUT","type":"K_ATTRIBUT","links":[923],"shape":3,"slot_index":0},{"name":"SAMPLER","type":"LATENT","links":[986],"shape":3,"slot_index":1},{"name":"Info","type":"STRING","links":[925],"shape":3,"slot_index":2}],"properties":{"Node name for S&R":"chaosaiart_KSampler_expert_1"},"widgets_values":[12456456,"fixed",13,0.5,12,"dpmpp_2m","karras"]},{"id":399,"type":"chaosaiart_KSampler_expert_1","pos":[4560,430],"size":{"0":250,"1":282},"flags":{},"order":45,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":929},{"name":"positive","type":"CONDITIONING","link":930},{"name":"negative","type":"CONDITIONING","link":931},{"name":"k_attribut","type":"K_ATTRIBUT","link":923},{"name":"latent","type":"LATENT","link":986}],"outputs":[{"name":"SUB_K_ATTRIBUT","type":"K_ATTRIBUT","links":null,"shape":3},{"name":"SAMPLER","type":"LATENT","links":[950],"shape":3,"slot_index":1},{"name":"Info","type":"STRING","links":[924],"shape":3,"slot_index":2}],"properties":{"Node name for S&R":"chaosaiart_KSampler_expert_1"},"widgets_values":[12456737,"increment",26,1,12,"dpmpp_2m","karras"]},{"id":424,"type":"LoadImage","pos":[2640,640],"size":[320,314],"flags":{},"order":2,"mode":4,"outputs":[{"name":"IMAGE","type":"IMAGE","links":[997],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["img__00001_ (8).png","image"]},{"id":425,"type":"VAEEncode","pos":[3020,690],"size":{"0":140,"1":50},"flags":{},"order":39,"mode":4,"inputs":[{"name":"pixels","type":"IMAGE","link":997},{"name":"vae","type":"VAE","link":1000}],"outputs":[{"name":"LATENT","type":"LATENT","links":[1019],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"VAEEncode"}},{"id":406,"type":"chaosaiart_reloadLatent_Load","pos":[3480,550],"size":{"0":350,"1":130},"flags":{},"order":40,"mode":0,"inputs":[{"name":"restart","type":"RESTART","link":993},{"name":"preSave_Latent_override","type":"LATENT","link":1021}],"outputs":[{"name":"LATENT","type":"LATENT","links":[1012],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_reloadLatent_Load"},"widgets_values":[1,"Widescreen / 16:9","480p"]},{"id":439,"type":"Reroute","pos":[3364,570],"size":[90.4,26],"flags":{},"order":36,"mode":0,"inputs":[{"name":"","type":"*","link":1020}],"outputs":[{"name":"LATENT","type":"LATENT","links":[1021],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":438,"type":"Reroute","pos":[3364,607],"size":[90.4,26],"flags":{},"order":42,"mode":4,"inputs":[{"name":"","type":"*","link":1019}],"outputs":[{"name":"LATENT","type":"LATENT","links":null}],"properties":{"showOutputText":true,"horizontal":false}},{"id":382,"type":"chaosaiart_forPreview","pos":[5741.787486808904,198.3536858748265],"size":{"0":210,"1":80},"flags":{},"order":50,"mode":0,"inputs":[{"name":"restart","type":"RESTART","link":866},{"name":"image","type":"IMAGE","link":953}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[954],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_forPreview"},"widgets_values":[20]},{"id":383,"type":"PreviewImage","pos":[5740,320],"size":{"0":210,"1":250},"flags":{},"order":52,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":954}],"properties":{"Node name for S&R":"PreviewImage"}},{"id":7,"type":"Reroute","pos":[504,79],"size":[132.39999999999998,26],"flags":{},"order":16,"mode":0,"inputs":[{"name":"","type":"*","link":826}],"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[9],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":3,"type":"chaosaiart_Prompt_mixer_byFrame","pos":[490,192],"size":{"0":330,"1":230},"flags":{},"order":19,"mode":0,"inputs":[{"name":"activ_frame","type":"ACTIV_FRAME","link":9},{"name":"main_prompt","type":"MAIN_PROMPT","link":76},{"name":"frame_prompt_1","type":"FRAME_PROMPT","link":1016},{"name":"frame_prompt_2","type":"FRAME_PROMPT","link":78},{"name":"frame_prompt_3","type":"FRAME_PROMPT","link":1017},{"name":"frame_prompt_4","type":"FRAME_PROMPT","link":880},{"name":"frame_prompt_5","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_6","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_7","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_8","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_9","type":"FRAME_PROMPT","link":null}],"outputs":[{"name":"Info","type":"STRING","links":[16],"shape":3,"slot_index":0},{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[988],"shape":3,"slot_index":1},{"name":"LORA","type":"LORA","links":[1],"shape":3,"slot_index":2},{"name":"POSITIV_TXT","type":"STRING","links":[2],"shape":3,"slot_index":3},{"name":"NEGAITV_TXT","type":"STRING","links":[3],"shape":3,"slot_index":4}],"properties":{"Node name for S&R":"chaosaiart_Prompt_mixer_byFrame"}},{"id":1,"type":"chaosaiart_CheckpointPrompt","pos":[1010,300],"size":{"0":300,"1":120},"flags":{},"order":24,"mode":0,"inputs":[{"name":"lora","type":"LORA","link":1},{"name":"positiv_txt","type":"STRING","link":2,"widget":{"name":"positiv_txt"}},{"name":"negativ_txt","type":"STRING","link":3,"widget":{"name":"negativ_txt"}}],"outputs":[{"name":"MODEL","type":"MODEL","links":[932],"shape":3,"slot_index":0},{"name":"POSITIV","type":"CONDITIONING","links":[933],"shape":3,"slot_index":1},{"name":"NEGATIV","type":"CONDITIONING","links":[934],"shape":3,"slot_index":2},{"name":"VAE","type":"VAE","links":[935,998],"shape":3,"slot_index":3}],"properties":{"Node name for S&R":"chaosaiart_CheckpointPrompt"},"widgets_values":["aniverse_v50.safetensors","",""]},{"id":11,"type":"chaosaiart_Show_Info","pos":[497,481],"size":{"0":330,"1":280},"flags":{},"order":22,"mode":0,"inputs":[{"name":"info","type":"STRING","link":16,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["Frame: 2,\nPositiv: masterpiece, best quality, highres,1 girl,\nNegativ: nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\nLora:","Frame: 2,\nPositiv: masterpiece, best quality, highres,1 girl,\nNegativ: nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\nLora:","Frame: 71,\nPositiv: 8k, 4k, best quality, highres,1 girl,Vampiere , dark, moonlight, blood , empty, alone, handprints, factory, bats, red glowing eyes,white hair, gothic,\nNegativ: nfsw, nude, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,\nLora:"]},{"id":2,"type":"chaosaiart_Prompt","pos":[16,75],"size":{"0":420,"1":200},"flags":{},"order":3,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"MAIN_PROMPT","type":"MAIN_PROMPT","links":[76],"shape":3,"slot_index":0},{"name":"LORA","type":"LORA","links":null,"shape":3},{"name":"POSITIV_TXT","type":"STRING","links":null,"shape":3},{"name":"NEGATIV_TXT","type":"STRING","links":null,"shape":3}],"properties":{"Node name for S&R":"chaosaiart_Prompt"},"widgets_values":["8k, 4k, best quality, highres","nfsw, nude, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,","masterpiece, best quality, highres","nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username, nude,"]},{"id":195,"type":"chaosaiart_Prompt_Frame","pos":[10,330],"size":{"0":210,"1":235.7642822265625},"flags":{},"order":4,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[1016],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[1,"1 girl,cat girl, cut, cat ears,paws, yarn ball,heart necklace, plush armchair, Neko Dango","","",""]},{"id":5,"type":"chaosaiart_Prompt_Frame","pos":[230,330],"size":{"0":210,"1":235.7642822265625},"flags":{},"order":5,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[78],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[20,"1 girl, girl dragon, dragon, dragon horns, green glowing eyes, dragon wings, Heavy armor with feminine cut, Fantasy world, out side, castle","","",""]},{"id":4,"type":"chaosaiart_Prompt_Frame","pos":[9,607],"size":{"0":210.70240783691406,"1":241.88192749023438},"flags":{},"order":6,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[1017],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[40,"1 girl, Succubus,light blue hair, cimeatic light, crop top, casting green spell,green shorts, demon wings, horns, red eyes, in a library","","",""]},{"id":192,"type":"chaosaiart_Prompt_Frame","pos":[234,606],"size":{"0":213.24795532226562,"1":249.6407470703125},"flags":{},"order":7,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[880],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[60,"1 girl,Vampiere , dark, moonlight, blood , empty, alone, handprints, factory, bats, red glowing eyes,white hair, gothic","","",""]},{"id":418,"type":"chaosaiart_oneNode","pos":[1821,561],"size":{"0":400,"1":470},"flags":{},"order":31,"mode":0,"inputs":[{"name":"restart","type":"RESTART","link":996},{"name":"add_main_prompt","type":"MAIN_PROMPT","link":981},{"name":"latent_override","type":"LATENT","link":null},{"name":"img2img_override","type":"IMAGE","link":null},{"name":"vae_override","type":"VAE","link":null}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1007],"shape":3,"slot_index":0},{"name":"LATENT","type":"LATENT","links":[1020],"shape":3,"slot_index":1}],"properties":{"Node name for S&R":"chaosaiart_oneNode"},"widgets_values":["Create Image, Hold it until Restart","aniverse_v50.safetensors","","",480,856,80266175026785,"randomize",30,8,1,"dpmpp_2m","karras"]},{"id":433,"type":"PreviewImage","pos":[2267,609],"size":{"0":210,"1":250},"flags":{},"order":35,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":1007}],"properties":{"Node name for S&R":"PreviewImage"}},{"id":6,"type":"chaosaiart_restarter","pos":[890,-190],"size":{"0":315,"1":98},"flags":{},"order":8,"mode":0,"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[416],"shape":3,"slot_index":0},{"name":"RESTART","type":"RESTART","links":[1010],"shape":3,"slot_index":1},{"name":"Info","type":"STRING","links":[1009],"shape":3,"slot_index":2}],"properties":{"Node name for S&R":"chaosaiart_restarter"},"widgets_values":[0]},{"id":402,"type":"chaosaiart_any_array2input_all_small","pos":[3950,370],"size":{"0":210,"1":90},"flags":{"collapsed":true},"order":37,"mode":0,"inputs":[{"name":"array","type":"ARRAY","link":970}],"outputs":[{"name":"ANY_1","type":"*","links":[926],"shape":3,"slot_index":0},{"name":"ANY_2","type":"*","links":[927],"shape":3,"slot_index":1},{"name":"ANY_3","type":"*","links":[928],"shape":3,"slot_index":2},{"name":"ANY_4","type":"*","links":null,"shape":3}],"properties":{"Node name for S&R":"chaosaiart_any_array2input_all_small"}},{"id":403,"type":"chaosaiart_any_array2input_all_small","pos":[4280,330],"size":{"0":210,"1":90},"flags":{"collapsed":true},"order":38,"mode":0,"inputs":[{"name":"array","type":"ARRAY","link":971}],"outputs":[{"name":"ANY_1","type":"*","links":[929],"shape":3,"slot_index":0},{"name":"ANY_2","type":"*","links":[930],"shape":3,"slot_index":1},{"name":"ANY_3","type":"*","links":[931],"shape":3,"slot_index":2},{"name":"ANY_4","type":"*","links":[1008],"shape":3,"slot_index":3}],"properties":{"Node name for S&R":"chaosaiart_any_array2input_all_small"}},{"id":404,"type":"chaosaiart_any_input2array_small","pos":[1400,330],"size":{"0":210,"1":86},"flags":{"collapsed":true},"order":28,"mode":0,"inputs":[{"name":"input_1","type":"*","link":932},{"name":"input_2","type":"*","link":933},{"name":"input_3","type":"*","link":934},{"name":"input_4","type":"*","link":935}],"outputs":[{"name":"ARRAY","type":"ARRAY","links":[969],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_any_input2array_small"}},{"id":444,"type":"RIFE VFI","pos":[6150,369],"size":{"0":364.171875,"1":199.66001892089844},"flags":{},"order":15,"mode":2,"inputs":[{"name":"frames","type":"IMAGE","link":1024},{"name":"optional_interpolation_states","type":"INTERPOLATION_STATES","link":null}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1023],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"RIFE VFI"},"widgets_values":["rife47.pth",10,3,true,true,1]},{"id":440,"type":"chaosaiart_img2video","pos":[6158,630],"size":{"0":315,"1":106},"flags":{},"order":9,"mode":2,"inputs":[{"name":"merge_folders","type":"PATH","link":null,"slot_index":0}],"outputs":[{"name":"Info","type":"STRING","links":[1022],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_img2video"},"widgets_values":["E:\\AI\\ComfyUI_windows_portable\\ComfyUI\\output\\animation\\chaosaiart\\v_0000","video",10]},{"id":441,"type":"ShowText|pysssss","pos":[6158,805],"size":[335.5395202636719,185.50906372070312],"flags":{},"order":14,"mode":2,"inputs":[{"name":"text","type":"STRING","link":1022,"widget":{"name":"text"}}],"outputs":[{"name":"STRING","type":"STRING","links":null,"shape":6}],"properties":{"Node name for S&R":"ShowText|pysssss"},"widgets_values":["","Video Size: 480x856\nFPS: 10\nOutput: E:\\AI\\ComfyUI_windows_portable\\ComfyUI\\output\\video\\chaosaiart.mp4"]},{"id":357,"type":"chaosaiart_SaveImage","pos":[5741.787486808904,668.3536858748263],"size":{"0":210,"1":290},"flags":{},"order":51,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":955},{"name":"restart","type":"RESTART","link":823}],"properties":{"Node name for S&R":"chaosaiart_SaveImage"},"widgets_values":["animation/chaosaiart"]},{"id":443,"type":"VHS_LoadImages","pos":[6154.039188501086,97.70953026112996],"size":[243.60000610351562,194],"flags":{},"order":10,"mode":2,"inputs":[{"name":"meta_batch","type":"VHS_BatchManager","link":null}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1024],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3},{"name":"frame_count","type":"INT","links":null,"shape":3}],"properties":{"Node name for S&R":"VHS_LoadImages"},"widgets_values":{"directory":"v_0003","image_load_cap":0,"skip_first_images":0,"select_every_nth":1,"choose folder to upload":"image","videopreview":{"hidden":false,"paused":false,"params":{"frame_load_cap":0,"skip_first_images":0,"filename":"v_0003","type":"input","format":"folder","select_every_nth":1}}}},{"id":442,"type":"VHS_VideoCombine","pos":[6527,106],"size":[315,874.0833333333334],"flags":{},"order":18,"mode":2,"inputs":[{"name":"images","type":"IMAGE","link":1023},{"name":"audio","type":"AUDIO","link":null},{"name":"meta_batch","type":"VHS_BatchManager","link":null},{"name":"vae","type":"VAE","link":null}],"outputs":[{"name":"Filenames","type":"VHS_FILENAMES","links":null,"shape":3}],"properties":{"Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":30,"loop_count":0,"filename_prefix":"animation/AnimateDiff","format":"video/nvenc_h264-mp4","pix_fmt":"yuv420p","bitrate":10,"megabit":true,"save_metadata":true,"pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{"filename":"AnimateDiff_00005.mp4","subfolder":"animation","type":"output","format":"video/nvenc_h264-mp4","frame_rate":30}}}},{"id":389,"type":"Note","pos":[2180,-121],"size":{"0":360,"1":160},"flags":{},"order":0,"mode":0,"properties":{"text":""},"widgets_values":["You have to Create 150 Image by this Workflow.\nuse \"Batch count\" ( \"Extra Options\" Checkbox : on, under Queue Prompt )\n\nIf you use the \n\"🔶Restart & Activ Frame - Advanced\", then you can restart form every frame you want, \nby using last Img -> Img2img and new version. \nJust delete failed frame and use \"🔶Merge_Folder\".\n\nThen \"🔶Convert img2video\" to create a video."],"color":"#432","bgcolor":"#653"},{"id":434,"type":"chaosaiart_Show_Info","pos":[1562,-152],"size":{"0":400,"1":200},"flags":{},"order":13,"mode":0,"inputs":[{"name":"info","type":"STRING","link":1009,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["","Activ Frame 71\nRestart = No\n\nIf you change the version parameter, all nodes connected via restart will be restarted (restart = 1), and the Activ_Frame will be reset to the start (Activ_Frame = 1)."]}],"links":[[1,3,2,1,0,"LORA"],[2,3,3,1,1,"STRING"],[3,3,4,1,2,"STRING"],[9,7,0,3,0,"ACTIV_FRAME"],[16,3,0,11,0,"STRING"],[76,2,0,3,1,"MAIN_PROMPT"],[78,5,0,3,3,"FRAME_PROMPT"],[416,6,0,202,0,"*"],[819,203,0,367,0,"*"],[822,367,0,368,0,"*"],[823,368,0,357,1,"RESTART"],[826,202,0,7,0,"*"],[866,367,0,382,0,"RESTART"],[880,192,0,3,5,"FRAME_PROMPT"],[923,398,0,399,3,"K_ATTRIBUT"],[924,399,2,400,0,"STRING"],[925,398,2,401,0,"STRING"],[926,402,0,398,0,"MODEL"],[927,402,1,398,1,"CONDITIONING"],[928,402,2,398,2,"CONDITIONING"],[929,403,0,399,0,"MODEL"],[930,403,1,399,1,"CONDITIONING"],[931,403,2,399,2,"CONDITIONING"],[932,1,0,404,0,"*"],[933,1,1,404,1,"*"],[934,1,2,404,2,"*"],[935,1,3,404,3,"*"],[938,203,0,405,0,"*"],[941,405,0,407,0,"*"],[949,409,0,410,1,"VAE"],[950,399,1,411,0,"LATENT"],[951,411,0,410,0,"LATENT"],[953,410,0,382,1,"IMAGE"],[954,382,0,383,0,"IMAGE"],[955,410,0,357,0,"IMAGE"],[969,404,0,417,0,"*"],[970,417,0,402,0,"ARRAY"],[971,417,0,403,0,"ARRAY"],[981,419,0,418,1,"MAIN_PROMPT"],[986,398,1,399,4,"LATENT"],[988,3,1,420,0,"*"],[989,420,0,419,0,"FRAME_PROMPT"],[992,407,0,422,0,"*"],[993,422,0,406,0,"RESTART"],[996,407,0,418,0,"RESTART"],[997,424,0,425,0,"IMAGE"],[998,1,3,426,0,"*"],[1000,427,0,425,1,"VAE"],[1006,419,1,432,0,"STRING"],[1007,418,0,433,0,"IMAGE"],[1008,403,3,409,0,"*"],[1009,6,2,434,0,"STRING"],[1010,6,1,435,0,"*"],[1011,435,0,203,0,"*"],[1012,406,0,437,0,"LATENT"],[1013,437,1,398,4,"LATENT"],[1014,437,0,398,3,"K_ATTRIBUT"],[1015,426,0,427,0,"*"],[1016,195,0,3,2,"FRAME_PROMPT"],[1017,4,0,3,4,"FRAME_PROMPT"],[1019,425,0,438,0,"*"],[1020,418,1,439,0,"*"],[1021,439,0,406,1,"LATENT"],[1022,440,0,441,0,"STRING"],[1023,444,0,442,0,"IMAGE"],[1024,443,0,444,0,"IMAGE"]],"groups":[{"title":"Checkpoint","bounding":[974,219,366,228],"color":"#3f789e","font_size":24,"locked":false},{"title":"Prompting","bounding":[2,1,855,855],"color":"#3f789e","font_size":24,"locked":false},{"title":"Output","bounding":[5628,4,427,1026],"color":"#3f789e","font_size":24,"locked":false},{"title":"🔶 KSampler txt2video v1 ------- 🔶 KSampler img2video v1 ------- 🔶 KSampler txt2video img2video - Advanced v1","bounding":[1482,192,3969,955],"color":"#3f789e","font_size":24,"locked":false},{"title":"txt2video","bounding":[1485,466,1024,582],"color":"#3f789e","font_size":24,"locked":false},{"title":"img2video","bounding":[2599,457,595,590],"color":"#3f789e","font_size":24,"locked":false},{"title":"Final video","bounding":[6121,6,738,1037],"color":"#3f789e","font_size":24,"locked":false}],"config":{},"extra":{"ds":{"scale":0.7724292455178817,"offset":{"0":-657.8807583851013,"1":450.26740466129564}},"workspace_info":{"id":"23g7yMXo7Dug3jo8KuTzA","saveLock":false,"cloudID":null,"coverMediaPath":null}},"version":0.4} \ No newline at end of file diff --git a/example_workflows/cacheanimation.json b/example_workflows/cacheanimation.json new file mode 100644 index 0000000..49cda2b --- /dev/null +++ b/example_workflows/cacheanimation.json @@ -0,0 +1 @@ +{"last_node_id":143,"last_link_id":311,"nodes":[{"id":74,"type":"Reroute","pos":[91,659],"size":[98.8,26],"flags":{},"order":8,"mode":0,"inputs":[{"name":"","type":"*","link":250}],"outputs":[{"name":"RESTART","type":"RESTART","links":[226,303],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":68,"type":"Note","pos":[370,560],"size":{"0":210,"1":83.51726531982422},"flags":{},"order":0,"mode":0,"properties":{"text":""},"widgets_values":["First Img = Empty Image\n\nNext image will be saved by \n\"Cache Reloader IMG -> Save\""],"color":"#432","bgcolor":"#653"},{"id":108,"type":"Reroute","pos":[680,660],"size":[98.8,26],"flags":{},"order":13,"mode":0,"inputs":[{"name":"","type":"*","link":226}],"outputs":[{"name":"RESTART","type":"RESTART","links":[225,227],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":91,"type":"Reroute","pos":[126.15987976074211,300.7800146484375],"size":[75,26],"flags":{},"order":21,"mode":0,"inputs":[{"name":"","type":"*","link":244}],"outputs":[{"name":"VAE","type":"VAE","links":[302],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":136,"type":"chaosaiart_reloadIMG_Load","pos":[226.15987976074214,380.7800146484375],"size":{"0":355.20001220703125,"1":146},"flags":{},"order":22,"mode":0,"inputs":[{"name":"restart","type":"RESTART","link":303},{"name":"preSave_image_override","type":"IMAGE","link":null},{"name":"vae","type":"VAE","link":302}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[301],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_reloadIMG_Load"},"widgets_values":[1,"Widescreen / 16:9","360p"]},{"id":18,"type":"Reroute","pos":[1430,660],"size":[98.8,26],"flags":{},"order":15,"mode":0,"inputs":[{"name":"","type":"*","link":225}],"outputs":[{"name":"RESTART","type":"RESTART","links":[270],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":124,"type":"chaosaiart_SaveImage","pos":[1720,30],"size":{"0":210,"1":290},"flags":{},"order":27,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":297},{"name":"restart","type":"RESTART","link":270}],"properties":{"Node name for S&R":"chaosaiart_SaveImage"},"widgets_values":["chaosaiart"]},{"id":134,"type":"chaosaiart_reloadIMG_Save","pos":[1431.1530424442178,26.30364548088476],"size":{"0":240,"1":80},"flags":{},"order":26,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":296}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[297],"shape":3,"slot_index":0},{"name":"Info","type":"STRING","links":null,"shape":3}],"properties":{"Node name for S&R":"chaosaiart_reloadIMG_Save"},"widgets_values":[1]},{"id":89,"type":"Reroute","pos":[800,220],"size":[75,26],"flags":{},"order":20,"mode":0,"inputs":[{"name":"","type":"*","link":257}],"outputs":[{"name":"VAE","type":"VAE","links":[244],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":60,"type":"chaosaiart_adjust_color","pos":[616.1598797607418,380.7800146484375],"size":{"0":210,"1":178},"flags":{},"order":23,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":301}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[308],"shape":3,"slot_index":0}],"title":"Adjust Color","properties":{"Node name for S&R":"chaosaiart_adjust_color"},"widgets_values":[0.92,1,1,1,1,1]},{"id":138,"type":"Reroute","pos":[940,380],"size":[82,26],"flags":{},"order":24,"mode":0,"inputs":[{"name":"","type":"*","link":308}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[306],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":140,"type":"chaosaiart_Show_Info","pos":[-179,579],"size":{"0":210,"1":150.02725219726562},"flags":{},"order":9,"mode":0,"inputs":[{"name":"info","type":"STRING","link":311,"widget":{"name":"info"},"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":[""]},{"id":57,"type":"chaosaiart_restarter","pos":[-180,440],"size":{"0":210,"1":98},"flags":{},"order":1,"mode":0,"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[309],"shape":3,"slot_index":0},{"name":"RESTART","type":"RESTART","links":[250],"shape":3,"slot_index":1},{"name":"Info","type":"STRING","links":[311],"shape":3}],"properties":{"Node name for S&R":"chaosaiart_restarter"},"widgets_values":[3]},{"id":139,"type":"Reroute","pos":[-159,150],"size":[132.39999999999998,26],"flags":{},"order":7,"mode":0,"inputs":[{"name":"","type":"*","link":309}],"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[310],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":103,"type":"Reroute","pos":[442,154],"size":[132.39999999999998,26],"flags":{},"order":12,"mode":0,"inputs":[{"name":"","type":"*","link":310}],"outputs":[{"name":"ACTIV_FRAME","type":"ACTIV_FRAME","links":[252],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":119,"type":"chaosaiart_Prompt_Frame","pos":[-187,-50],"size":{"0":210,"1":190},"flags":{},"order":2,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[260],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[1,"1 girl, portrait","","",""]},{"id":118,"type":"chaosaiart_Prompt","pos":[-200,-282],"size":{"0":240,"1":186},"flags":{},"order":3,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"MAIN_PROMPT","type":"MAIN_PROMPT","links":[258],"shape":3,"slot_index":0},{"name":"LORA","type":"LORA","links":null,"shape":3},{"name":"POSITIV_TXT","type":"STRING","links":null,"shape":3},{"name":"NEGATIV_TXT","type":"STRING","links":null,"shape":3}],"properties":{"Node name for S&R":"chaosaiart_Prompt"},"widgets_values":["masterpiece, best quality, highres","nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username","",""]},{"id":120,"type":"chaosaiart_Prompt_Frame","pos":[75,-53],"size":{"0":210,"1":190},"flags":{},"order":4,"mode":0,"inputs":[{"name":"add_lora","type":"LORA","link":null},{"name":"add_positiv","type":"STRING","link":null,"widget":{"name":"add_positiv"}},{"name":"add_negativ","type":"STRING","link":null,"widget":{"name":"add_negativ"}}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[261],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_Prompt_Frame"},"widgets_values":[2,"1 vampire","","",""]},{"id":122,"type":"Reroute","pos":[98,-154],"size":[140.8,26],"flags":{},"order":10,"mode":0,"inputs":[{"name":"","type":"*","link":260,"slot_index":0}],"outputs":[{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":[262],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":102,"type":"Reroute","pos":[107,-219],"size":[132.39999999999998,26],"flags":{},"order":11,"mode":0,"inputs":[{"name":"","type":"*","link":258,"slot_index":0}],"outputs":[{"name":"MAIN_PROMPT","type":"MAIN_PROMPT","links":[259],"slot_index":0}],"properties":{"showOutputText":true,"horizontal":false}},{"id":117,"type":"chaosaiart_Prompt_mixer_byFrame","pos":[336,-102],"size":{"0":228.39999389648438,"1":226},"flags":{},"order":14,"mode":0,"inputs":[{"name":"activ_frame","type":"ACTIV_FRAME","link":252},{"name":"main_prompt","type":"MAIN_PROMPT","link":259},{"name":"frame_prompt_1","type":"FRAME_PROMPT","link":262},{"name":"frame_prompt_2","type":"FRAME_PROMPT","link":261},{"name":"frame_prompt_3","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_4","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_5","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_6","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_7","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_8","type":"FRAME_PROMPT","link":null},{"name":"frame_prompt_9","type":"FRAME_PROMPT","link":null}],"outputs":[{"name":"Info","type":"STRING","links":[263],"shape":3,"slot_index":0},{"name":"FRAME_PROMPT","type":"FRAME_PROMPT","links":null,"shape":3},{"name":"LORA","type":"LORA","links":[264],"shape":3,"slot_index":2},{"name":"POSITIV_TXT","type":"STRING","links":[268],"shape":3,"slot_index":3},{"name":"NEGAITV_TXT","type":"STRING","links":[269],"shape":3,"slot_index":4}],"properties":{"Node name for S&R":"chaosaiart_Prompt_mixer_byFrame"}},{"id":92,"type":"chaosaiart_Denoising_Switch","pos":[838,564],"size":{"0":235.1999969482422,"1":102},"flags":{},"order":16,"mode":0,"inputs":[{"name":"restart","type":"RESTART","link":227}],"outputs":[{"name":"DENOISE","type":"FLOAT","links":[304],"shape":3,"slot_index":0},{"name":"Info","type":"STRING","links":[198],"shape":3,"slot_index":1}],"properties":{"Node name for S&R":"chaosaiart_Denoising_Switch"},"widgets_values":[1,0.6]},{"id":67,"type":"Note","pos":[615,282],"size":{"0":210,"1":58},"flags":{},"order":5,"mode":0,"properties":{"text":""},"widgets_values":["When using img2img multiple times, adjust color based on checkpoint."],"color":"#432","bgcolor":"#653"},{"id":116,"type":"Note","pos":[-181,333],"size":{"0":210,"1":58},"flags":{},"order":6,"mode":0,"properties":{"text":""},"widgets_values":["Restart me !! :)\nVersion change"],"color":"#432","bgcolor":"#653"},{"id":132,"type":"chaosaiart_KSampler2","pos":[1081,-40],"size":{"0":283.45703125,"1":374},"flags":{},"order":25,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":286},{"name":"positive","type":"CONDITIONING","link":287},{"name":"negative","type":"CONDITIONING","link":288},{"name":"vae","type":"VAE","link":289},{"name":"image","type":"IMAGE","link":306},{"name":"denoise_Override","type":"FLOAT","link":304,"widget":{"name":"denoise_Override"}}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[296],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"chaosaiart_KSampler2"},"widgets_values":["Widht = Height","360p","resize",1,1057783219895546,"randomize",20,8,"euler","normal",0]},{"id":99,"type":"chaosaiart_Show_Info","pos":[1135,581],"size":{"0":210,"1":80},"flags":{},"order":19,"mode":0,"inputs":[{"name":"info","type":"STRING","link":198,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["","Denoise: 0.6"]},{"id":85,"type":"chaosaiart_Show_Info","pos":[682,-313],"size":{"0":210,"1":190},"flags":{},"order":17,"mode":0,"inputs":[{"name":"info","type":"STRING","link":263,"widget":{"name":"info"}}],"properties":{"Node name for S&R":"chaosaiart_Show_Info"},"widgets_values":["","Frame: 2,\nPositiv: masterpiece, best quality, highres,1 vampire,\nNegativ: nfsw, (worst quality:1.2), low quality, medium quality, deleted, lowres, comic, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, jpeg artifacts, signature, watermark, username\nLora:"]},{"id":121,"type":"chaosaiart_CheckpointPrompt","pos":[639,-60],"size":{"0":292.5621032714844,"1":118},"flags":{},"order":18,"mode":0,"inputs":[{"name":"lora","type":"LORA","link":264},{"name":"positiv_txt","type":"STRING","link":268,"widget":{"name":"positiv_txt"}},{"name":"negativ_txt","type":"STRING","link":269,"widget":{"name":"negativ_txt"}}],"outputs":[{"name":"MODEL","type":"MODEL","links":[286],"shape":3,"slot_index":0},{"name":"POSITIV","type":"CONDITIONING","links":[287],"shape":3,"slot_index":1},{"name":"NEGATIV","type":"CONDITIONING","links":[288],"shape":3,"slot_index":2},{"name":"VAE","type":"VAE","links":[257,289],"shape":3,"slot_index":3}],"properties":{"Node name for S&R":"chaosaiart_CheckpointPrompt"},"widgets_values":["anything_v50.safetensors","",""]}],"links":[[198,92,1,99,0,"STRING"],[225,108,0,18,0,"*"],[226,74,0,108,0,"*"],[227,108,0,92,0,"RESTART"],[244,89,0,91,0,"*"],[250,57,1,74,0,"*"],[252,103,0,117,0,"ACTIV_FRAME"],[257,121,3,89,0,"*"],[258,118,0,102,0,"*"],[259,102,0,117,1,"MAIN_PROMPT"],[260,119,0,122,0,"*"],[261,120,0,117,3,"FRAME_PROMPT"],[262,122,0,117,2,"FRAME_PROMPT"],[263,117,0,85,0,"STRING"],[264,117,2,121,0,"LORA"],[268,117,3,121,1,"STRING"],[269,117,4,121,2,"STRING"],[270,18,0,124,1,"RESTART"],[286,121,0,132,0,"MODEL"],[287,121,1,132,1,"CONDITIONING"],[288,121,2,132,2,"CONDITIONING"],[289,121,3,132,3,"VAE"],[296,132,0,134,0,"IMAGE"],[297,134,0,124,0,"IMAGE"],[301,136,0,60,0,"IMAGE"],[302,91,0,136,2,"VAE"],[303,74,0,136,0,"RESTART"],[304,92,0,132,5,"FLOAT"],[306,138,0,132,4,"IMAGE"],[308,60,0,138,0,"*"],[309,57,0,139,0,"*"],[310,139,0,103,0,"*"],[311,57,2,140,0,"STRING"]],"groups":[{"title":"Prompting","bounding":[-223,-355,816,553],"color":"#3f789e","font_size":24,"locked":false},{"title":"Cache - Loading","bounding":[194,216,735,311],"color":"#3f789e","font_size":24,"locked":false},{"title":"Cache - Saving","bounding":[1439,-56,223,158],"color":"#3f789e","font_size":24,"locked":false}],"config":{},"extra":{"ds":{"scale":0.6957626706920564,"offset":{"0":265.77046405480723,"1":293.6019487626222}},"workspace_info":{"id":"ULjq1oDC3XNEmfsnHBnYb","saveLock":false,"cloudID":null,"coverMediaPath":null}},"version":0.4} \ No newline at end of file diff --git a/example_workflows/workflow-evolution-final.json b/example_workflows/workflow-evolution-final.json new file mode 100644 index 0000000..19e3ac5 --- /dev/null +++ b/example_workflows/workflow-evolution-final.json @@ -0,0 +1 @@ +{"last_node_id":45,"last_link_id":65,"nodes":[{"id":4,"type":"PrimitiveNode","pos":[-10,840],"size":{"0":210,"1":82},"flags":{"collapsed":false},"order":0,"mode":0,"outputs":[{"name":"INT","type":"INT","links":[3,30],"slot_index":0,"widget":{"name":"batch_size"}}],"title":"Animation Length","properties":{"Run widget replace on values":false},"widgets_values":[400,"fixed"],"color":"#322","bgcolor":"#533"},{"id":2,"type":"PrimitiveNode","pos":[-10,550],"size":{"0":210,"1":82},"flags":{"collapsed":false},"order":1,"mode":0,"outputs":[{"name":"INT","type":"INT","links":[1],"slot_index":0,"widget":{"name":"width"}}],"title":"Width","properties":{"Run widget replace on values":false},"widgets_values":[512,"fixed"],"color":"#322","bgcolor":"#533"},{"id":3,"type":"PrimitiveNode","pos":[-10,690],"size":{"0":210,"1":82},"flags":{"collapsed":false},"order":2,"mode":0,"outputs":[{"name":"INT","type":"INT","links":[2],"slot_index":0,"widget":{"name":"height"}}],"title":"Height","properties":{"Run widget replace on values":false},"widgets_values":[768,"fixed"],"color":"#322","bgcolor":"#533"},{"id":16,"type":"VAEDecode","pos":[1739,1024],"size":{"0":210,"1":46},"flags":{},"order":18,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":20},{"name":"vae","type":"VAE","link":21}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[60],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"VAEDecode"},"color":"#323","bgcolor":"#535"},{"id":14,"type":"LatentUpscaleBy","pos":[1047,1025],"size":{"0":315,"1":82},"flags":{},"order":14,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":25}],"outputs":[{"name":"LATENT","type":"LATENT","links":[15],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"LatentUpscaleBy"},"widgets_values":["nearest-exact",1.5],"color":"#323","bgcolor":"#535"},{"id":7,"type":"ADE_AnimateDiffUniformContextOptions","pos":[398,782],"size":{"0":315,"1":270},"flags":{"collapsed":true},"order":3,"mode":0,"inputs":[{"name":"prev_context","type":"CONTEXT_OPTIONS","link":null},{"name":"view_opts","type":"VIEW_OPTS","link":null}],"outputs":[{"name":"CONTEXT_OPTIONS","type":"CONTEXT_OPTIONS","links":[5],"shape":3}],"properties":{"Node name for S&R":"ADE_AnimateDiffUniformContextOptions"},"widgets_values":[16,1,4,"uniform",true,"flat",false,0,1,""],"color":"#223","bgcolor":"#335"},{"id":10,"type":"CLIPTextEncode","pos":[506,1674],"size":{"0":393.5029296875,"1":112.30888366699219},"flags":{},"order":11,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":24,"slot_index":0}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[9,18],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"CLIPTextEncode"},"widgets_values":["mbedding:ng_deepnegative_v1_75t, embedding:easynegative, embedding:BadDream, embedding:UnrealisticDream, embedding:bad-hands-5, embedding:Asian-Less-Neg, black woman, black, wild, ugly, naked, nsfw, tits\n"],"color":"#322","bgcolor":"#533"},{"id":40,"type":"VHS_VideoCombine","pos":[1020,1371],"size":[939.0849609375,310],"flags":{"collapsed":false},"order":20,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":60},{"name":"audio","type":"VHS_AUDIO","link":null},{"name":"meta_batch","type":"VHS_BatchManager","link":null},{"name":"vae","type":"VAE","link":null}],"outputs":[{"name":"Filenames","type":"VHS_FILENAMES","links":null,"shape":3}],"properties":{"Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":8,"loop_count":0,"filename_prefix":"AnimateDiff","format":"video/h264-mp4","pix_fmt":"yuv420p","crf":20,"save_metadata":true,"pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{"filename":"AnimateDiff_00512.mp4","subfolder":"","type":"output","format":"video/h264-mp4"}}},"color":"#323","bgcolor":"#535"},{"id":1,"type":"EmptyLatentImage","pos":[355,621],"size":{"0":315,"1":106},"flags":{},"order":8,"mode":0,"inputs":[{"name":"width","type":"INT","link":1,"widget":{"name":"width"},"slot_index":0},{"name":"height","type":"INT","link":2,"widget":{"name":"height"}},{"name":"batch_size","type":"INT","link":3,"widget":{"name":"batch_size"}}],"outputs":[{"name":"LATENT","type":"LATENT","links":[10],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"EmptyLatentImage"},"widgets_values":[512,768,400],"color":"#223","bgcolor":"#335"},{"id":12,"type":"VAEDecode","pos":[1589,624],"size":{"0":210,"1":46},"flags":{"collapsed":false},"order":13,"mode":0,"inputs":[{"name":"samples","type":"LATENT","link":12},{"name":"vae","type":"VAE","link":13}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[62],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"VAEDecode"},"color":"#233","bgcolor":"#355"},{"id":43,"type":"RIFE VFI","pos":[1876,624],"size":{"0":443.4000244140625,"1":198},"flags":{},"order":15,"mode":0,"inputs":[{"name":"frames","type":"IMAGE","link":62},{"name":"optional_interpolation_states","type":"INTERPOLATION_STATES","link":null}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[64],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"RIFE VFI"},"widgets_values":["rife47.pth",10,3,true,true,1]},{"id":5,"type":"CheckpointLoaderSimple","pos":[-112,1006],"size":{"0":315,"1":98},"flags":{"collapsed":false},"order":5,"mode":0,"outputs":[{"name":"MODEL","type":"MODEL","links":[4],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[7,24],"shape":3,"slot_index":1},{"name":"VAE","type":"VAE","links":null,"shape":3}],"properties":{"Node name for S&R":"CheckpointLoaderSimple"},"widgets_values":["revAnimated_v2RebirthVAE.safetensors"],"color":"#233","bgcolor":"#355"},{"id":41,"type":"VHS_VideoCombine","pos":[2405,628],"size":[703.8593139648438,310],"flags":{"collapsed":false},"order":19,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":65},{"name":"audio","type":"VHS_AUDIO","link":null},{"name":"meta_batch","type":"VHS_BatchManager","link":null},{"name":"vae","type":"VAE","link":null}],"outputs":[{"name":"Filenames","type":"VHS_FILENAMES","links":null,"shape":3}],"properties":{"Node name for S&R":"VHS_VideoCombine"},"widgets_values":{"frame_rate":8,"loop_count":0,"filename_prefix":"AnimateDiff","format":"video/h264-mp4","pix_fmt":"yuv420p","crf":20,"save_metadata":true,"pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{"filename":"AnimateDiff_00511.mp4","subfolder":"","type":"output","format":"video/h264-mp4"}}},"color":"#233","bgcolor":"#355"},{"id":44,"type":"MMakerColorEnhance","pos":[1915,489],"size":{"0":315,"1":58},"flags":{},"order":17,"mode":0,"inputs":[{"name":"image","type":"IMAGE","link":64}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[65],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"MMakerColorEnhance"},"widgets_values":[1]},{"id":8,"type":"KSampler","pos":[1110,620],"size":{"0":315,"1":262},"flags":{},"order":12,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":11},{"name":"positive","type":"CONDITIONING","link":8,"slot_index":1},{"name":"negative","type":"CONDITIONING","link":9},{"name":"latent_image","type":"LATENT","link":10},{"name":"seed","type":"INT","link":14,"widget":{"name":"seed"}}],"outputs":[{"name":"LATENT","type":"LATENT","links":[12,25],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"KSampler"},"widgets_values":[96567543020985,"randomize",4,1.5,"dpmpp_2m_sde","karras",1],"color":"#233","bgcolor":"#355"},{"id":6,"type":"ADE_AnimateDiffLoaderWithContext","pos":[709,620],"size":{"0":342.5999755859375,"1":230},"flags":{},"order":9,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":4},{"name":"context_options","type":"CONTEXT_OPTIONS","link":5,"slot_index":1},{"name":"motion_lora","type":"MOTION_LORA","link":null},{"name":"motion_model_settings","type":"MOTION_MODEL_SETTINGS","link":null},{"name":"sample_settings","type":"SAMPLE_SETTINGS","link":null},{"name":"ad_keyframes","type":"AD_KEYFRAMES","link":null}],"outputs":[{"name":"MODEL","type":"MODEL","links":[11,16],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"ADE_AnimateDiffLoaderWithContext"},"widgets_values":["animatediff_lightning_4step_comfyui.safetensors","sqrt_linear (AnimateDiff)",1,false],"color":"#2a363b","bgcolor":"#3f5159"},{"id":15,"type":"KSampler","pos":[1396.1486797851567,1025.354829199219],"size":{"0":315,"1":262},"flags":{},"order":16,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":16},{"name":"positive","type":"CONDITIONING","link":17},{"name":"negative","type":"CONDITIONING","link":18},{"name":"latent_image","type":"LATENT","link":15},{"name":"seed","type":"INT","link":19,"widget":{"name":"seed"}}],"outputs":[{"name":"LATENT","type":"LATENT","links":[20],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"KSampler"},"widgets_values":[998381057047734,"randomize",4,4.5,"dpmpp_2m_sde","karras",0.6],"color":"#323","bgcolor":"#535"},{"id":13,"type":"PrimitiveNode","pos":[-67,1270],"size":{"0":210,"1":82},"flags":{},"order":6,"mode":0,"outputs":[{"name":"INT","type":"INT","links":[14,19],"slot_index":0,"widget":{"name":"seed"}}],"title":"Seed","properties":{"Run widget replace on values":false},"widgets_values":[96567543020985,"fixed"],"color":"#233","bgcolor":"#355"},{"id":45,"type":"Note","pos":[-861,803],"size":[524.5825072279614,417.44379588474067],"flags":{},"order":7,"mode":0,"properties":{"text":""},"widgets_values":["\"0\" :\"a (beautiful primitive girl:1.3) is lying in jungle, long hair\",\n\"16\" :\"a (beautiful primitive girl:1.3) is lying in jungle, long hair\",\n\"32\" :\"a (beautiful primitive girl:1.3) is running in jungle, long hair\",\n\"48\" :\"a (beautiful primitive girl:1.3) is running in jungle, long hair\",\n\"64\" :\"a (beautiful primitive girl:1.3) is walking in jungle, long hair\",\n\"80\" :\"a (beautiful primitive girl:1.3) is walking in jungle, long hair\",\n\"96\" :\"a (walking girl wearing ancient clothing:1.3) on beach,sea,wave\",\n\"112\" :\"a (walking girl wearing ancient clothing:1.3) on beach,sea,wave\",\n\"128\" :\"a (walking girl wearing medieval clothing:1.3) in greece\",\n\"144\" :\"a (walking girl wearing medieval clothing:1.3) in greece\",\n\"160\" :\"a (walking girl wearing modern clothing:1.3) in New York\",\n\"176\" :\"a (walking girl wearing modern clothing:1.3) in New York\",\n\"192\" :\"a (walking girl wearing modern clothing:1.3) in New York,neon lights\",\n\"208\" :\"a (walking girl wearing modern clothing:1.3) in New York,neon lights\",\n\"224\" :\"a (walking girl wearing futuristic clothing:1.3) in futuristic city,cyberpunk\",\n\"240\" :\"a (walking girl wearing futuristic clothing:1.3) in futuristic city,cyberpunk\",\n\"256\" :\"a (walking girl wearing futuristic clothing:1.3) in futuristic city,robots,android,sci-fi\",\n\"272\" :\"a (walking girl wearing futuristic clothing:1.3) in futuristic city,robots,android,sci-fi\",\n\"288\" :\"(futuristic city,nuclear bomb,mushroom cloud,doomsday:1.3)\",\n\"304\" :\"(futuristic city,nuclear bomb,mushroom cloud,doomsday:1.3)\",\n\"320\" :\"a (girl wearing rags in ruined futuristic city:1.3),fire,smoke,ruins\",\n\"336\" :\"a (girl wearing rags in ruined futuristic city:1.3),fire,smoke,ruins\",\n\"352\" :\"a (girl wearing rags in ruined futuristic city:1.3),ruins\",\n\"368\" :\"a (girl wearing rags in ruined futuristic city:1.3),ruins\",\n\"368\" :\"a (girl wearing rags walking in jungle:1.3)\",\n\"384\" :\"a (girl wearing rags walking in jungle:1.3)\",\n\"400\" :\"a (beautiful primitive girl:1.3) is lying in jungle, long hair\""],"color":"#432","bgcolor":"#653"},{"id":11,"type":"VAELoader","pos":[-114,1156],"size":{"0":315,"1":58},"flags":{"collapsed":false},"order":4,"mode":0,"outputs":[{"name":"VAE","type":"VAE","links":[13,21],"shape":3,"slot_index":0}],"properties":{"Node name for S&R":"VAELoader"},"widgets_values":["vae-ft-mse-840000-ema-pruned.ckpt.vae.pt"],"color":"#233","bgcolor":"#355"},{"id":9,"type":"BatchPromptSchedule","pos":[260,865],"size":{"0":725.3942260742188,"1":764.6110229492188},"flags":{"collapsed":false},"order":10,"mode":0,"inputs":[{"name":"clip","type":"CLIP","link":7},{"name":"max_frames","type":"INT","link":30,"widget":{"name":"max_frames"}}],"outputs":[{"name":"POS","type":"CONDITIONING","links":[8,17],"shape":3,"slot_index":0},{"name":"NEG","type":"CONDITIONING","links":null,"shape":3}],"properties":{"Node name for S&R":"BatchPromptSchedule"},"widgets_values":["\"0\" :\"a (beautiful primitive girl:1.3) is lying in jungle, long hair\",\n\"16\" :\"a (beautiful primitive girl:1.3) is lying in jungle, long hair\",\n\"32\" :\"a (beautiful primitive girl:1.3) is running in jungle, long hair\",\n\"48\" :\"a (beautiful primitive girl:1.3) is running in jungle, long hair\",\n\"64\" :\"a (beautiful primitive girl:1.3) is walking in jungle, long hair\",\n\"80\" :\"a (beautiful primitive girl:1.3) is walking in jungle, long hair\",\n\"96\" :\"a (walking girl wearing ancient clothing:1.3) on beach,sea,wave\",\n\"112\" :\"a (walking girl wearing ancient clothing:1.3) on beach,sea,wave\",\n\"128\" :\"a (walking girl wearing medieval clothing:1.3) in greece\",\n\"144\" :\"a (walking girl wearing medieval clothing:1.3) in greece\",\n\"160\" :\"a (walking girl wearing modern clothing:1.3) in New York\",\n\"176\" :\"a (walking girl wearing modern clothing:1.3) in New York\",\n\"192\" :\"a (walking girl wearing modern clothing:1.3) in New York,neon lights\",\n\"208\" :\"a (walking girl wearing modern clothing:1.3) in New York,neon lights\",\n\"224\" :\"a (walking girl wearing futuristic clothing:1.3) in futuristic city,cyberpunk\",\n\"240\" :\"a (walking girl wearing futuristic clothing:1.3) in futuristic city,cyberpunk\",\n\"256\" :\"a (walking girl wearing futuristic clothing:1.3) in futuristic city,robots,android,sci-fi\",\n\"272\" :\"a (walking girl wearing futuristic clothing:1.3) in futuristic city,robots,android,sci-fi\",\n\"288\" :\"(futuristic city,nuclear bomb,mushroom cloud,doomsday:1.3)\",\n\"304\" :\"(futuristic city,nuclear bomb,mushroom cloud,doomsday:1.3)\",\n\"320\" :\"a (girl wearing rags in ruined futuristic city:1.3),fire,smoke,ruins\",\n\"336\" :\"a (girl wearing rags in ruined futuristic city:1.3),fire,smoke,ruins\",\n\"352\" :\"a (girl wearing rags in ruined futuristic city:1.3),ruins\",\n\"368\" :\"a (girl wearing rags in ruined futuristic city:1.3),ruins\",\n\"368\" :\"a (girl wearing rags walking in jungle:1.3)\",\n\"384\" :\"a (girl wearing rags walking in jungle:1.3)\",\n\"400\" :\"a (beautiful primitive girl:1.3) is lying in jungle, long hair\"",400,false,"","",0,0,0,0,0,0],"color":"#232","bgcolor":"#353"}],"links":[[1,2,0,1,0,"INT"],[2,3,0,1,1,"INT"],[3,4,0,1,2,"INT"],[4,5,0,6,0,"MODEL"],[5,7,0,6,1,"CONTEXT_OPTIONS"],[7,5,1,9,0,"CLIP"],[8,9,0,8,1,"CONDITIONING"],[9,10,0,8,2,"CONDITIONING"],[10,1,0,8,3,"LATENT"],[11,6,0,8,0,"MODEL"],[12,8,0,12,0,"LATENT"],[13,11,0,12,1,"VAE"],[14,13,0,8,4,"INT"],[15,14,0,15,3,"LATENT"],[16,6,0,15,0,"MODEL"],[17,9,0,15,1,"CONDITIONING"],[18,10,0,15,2,"CONDITIONING"],[19,13,0,15,4,"INT"],[20,15,0,16,0,"LATENT"],[21,11,0,16,1,"VAE"],[24,5,1,10,0,"CLIP"],[25,8,0,14,0,"LATENT"],[30,4,0,9,1,"INT"],[60,16,0,40,0,"IMAGE"],[62,12,0,43,0,"IMAGE"],[64,43,0,44,0,"IMAGE"],[65,44,0,41,0,"IMAGE"]],"groups":[{"title":"Inputs","bounding":[-176,461,412,927],"color":"#3f789e","font_size":24,"locked":false},{"title":"Upscale","bounding":[1010,929,959,2036],"color":"#3f789e","font_size":24,"locked":false}],"config":{},"extra":{"workspace_info":{"id":"c15f8592-ce3f-41be-8135-b36d212bfed9","name":"workflow-evolution-final","saveLock":false,"cloudID":null,"coverMediaPath":null},"ds":{"scale":0.848079416565597,"offset":{"0":760.7581448432911,"1":-340.49668163325634}}},"version":0.4} \ No newline at end of file diff --git a/nodes/prompt_machine.py b/nodes/prompt_machine.py new file mode 100644 index 0000000..7a58590 --- /dev/null +++ b/nodes/prompt_machine.py @@ -0,0 +1,90 @@ +import os +import csv +from server import PromptServer +from aiohttp import web + +CSV_DIR = os.path.join(os.path.dirname(__file__), "..", "prompts") + +def list_csv_files(): + return sorted([f for f in os.listdir(CSV_DIR) if f.endswith(".csv")]) + +def read_names_from_csv(filename): + path = os.path.join(CSV_DIR, filename) + if not os.path.exists(path): + return [] + with open(path, "r", encoding="utf-8-sig") as f: + reader = csv.DictReader(f) + if not reader.fieldnames: + return [] + field_map = {fn.strip().lower(): fn for fn in reader.fieldnames} + if "name" not in field_map: + return [] + name_field = field_map["name"] + return [row[name_field] for row in reader if row.get(name_field)] + +class Prompt_Machine: + def __init__(self): + csvs = list_csv_files() + if csvs: + self.default_csv = csvs[0] + names = read_names_from_csv(self.default_csv) + self.default_name = names[0] if names else "None" + else: + self.default_csv = "None" + self.default_name = "None" + + @classmethod + def INPUT_TYPES(cls): + csvs = list_csv_files() + default_csv = csvs[0] if csvs else "None" + names = read_names_from_csv(default_csv) if csvs else [] + default_name = names[0] if names else "None" + + return { + "required": { + "csv_file": (csvs if csvs else ["None"], {"default": default_csv}), + "name": (names if names else ["None"], {"default": default_name}), + } + } + + RETURN_TYPES = ("STRING", "STRING") + RETURN_NAMES = ("positive", "negative") + FUNCTION = "get_prompts" + CATEGORY = "SATA_UtilityNode" + + def get_prompts(self, csv_file, name): + if csv_file == "None" or name == "None": + return ("", "") + path = os.path.join(CSV_DIR, csv_file) + if not os.path.exists(path): + print(f"[PromptMachine] CSV file not found: {path}") + return ("", "") + with open(path, "r", encoding="utf-8-sig") as f: + reader = csv.DictReader(f) + if not reader.fieldnames: + print(f"[PromptMachine] CSV has no header: {csv_file}") + return ("", "") + print(f"[PromptMachine] CSV header in {csv_file}: {reader.fieldnames}") + field_map = {fn.strip().lower(): fn for fn in reader.fieldnames} + if "name" not in field_map: + print(f"[PromptMachine] 'name' column missing in CSV: {csv_file}") + return ("", "") + name_field = field_map["name"] + pos_field = field_map.get("positive", "positive") + neg_field = field_map.get("negative", "negative") + for row in reader: + if row.get(name_field) == name: + return (row.get(pos_field, ""), row.get(neg_field, "")) + return ("", "") + + +# REST endpoints for frontend refresh +@PromptServer.instance.routes.get("/sata/prompt_machine/csvs") +async def list_csvs(request): + return web.json_response({"csvs": list_csv_files()}) + + +@PromptServer.instance.routes.get("/sata/prompt_machine/names") +async def list_names(request): + csv_file = request.query.get("csv") + return web.json_response({"names": read_names_from_csv(csv_file)} if csv_file else {"names": []}) diff --git a/nodes/upscale_machine.py b/nodes/upscale_machine.py new file mode 100644 index 0000000..61d60a4 --- /dev/null +++ b/nodes/upscale_machine.py @@ -0,0 +1,158 @@ +import torch +import cv2 +import numpy as np +import folder_paths +import comfy.utils +from comfy import model_management +from spandrel import ModelLoader + + +def resize_tensor_opencv(tensor_chw, target_width, target_height, supersample='true', factor=2.0): + """ + CPU-based resizing using OpenCV for 'rescale' mode. + Input: tensor_chw -> torch.FloatTensor (C,H,W) in [0,1] + Output: torch.FloatTensor (C,H,W) in [0,1], guaranteed 3-channel RGB + """ + new_width = max(1, int(target_width)) + new_height = max(1, int(target_height)) + + interp = cv2.INTER_LANCZOS4 if factor > 1.0 else cv2.INTER_AREA + + np_img = tensor_chw.permute(1, 2, 0).detach().cpu().numpy() + np_img = (np.clip(np_img, 0.0, 1.0) * 255.0).astype(np.uint8) + + if np_img.ndim == 2: + np_img = cv2.cvtColor(np_img, cv2.COLOR_GRAY2RGB) + elif np_img.shape[2] == 1: + np_img = cv2.cvtColor(np_img, cv2.COLOR_GRAY2RGB) + elif np_img.shape[2] == 4: + np_img = cv2.cvtColor(np_img, cv2.COLOR_RGBA2RGB) + elif np_img.shape[2] > 3: + np_img = np_img[:, :, :3] + + if np_img.shape[0] == 0 or np_img.shape[1] == 0: + raise ValueError("Input image for OpenCV resize has zero width or height.") + + if supersample == 'true': + ss_width = max(1, new_width * 8) + ss_height = max(1, new_height * 8) + np_img = cv2.resize(np_img, (ss_width, ss_height), interpolation=interp) + if np_img.shape[0] == 0 or np_img.shape[1] == 0: + raise ValueError("Image became empty after supersample resize.") + + resized = cv2.resize(np_img, (new_width, new_height), interpolation=interp) + tensor_out = torch.from_numpy(resized).float().div(255.0).permute(2, 0, 1) + return tensor_out + + +class Upscale_Machine: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image": ("IMAGE",), + "upscale_model": (folder_paths.get_filename_list("upscale_models"),), + "rescale_factor": ("FLOAT", {"default": 2.0, "min": 0.01, "max": 16.0, "step": 0.01}), + "supersample": (["true", "false"],), + "rounding_modulus": ("INT", {"default": 8, "min": 1, "max": 1024, "step": 1}), + } + } + + RETURN_TYPES = ("IMAGE", "STRING",) + RETURN_NAMES = ("IMAGE", "show_help",) + FUNCTION = "upscale" + CATEGORY = "SATA_UtilityNode" + + def load_model(self, model_name): + """Load ESRGAN/RealESRGAN/AESRGAN via spandrel""" + model_path = folder_paths.get_full_path("upscale_models", model_name) + model_loader = ModelLoader() + model = model_loader.load_from_file(model_path) + if model is None: + raise RuntimeError(f"Failed to load upscale model: {model_name}") + model.eval() + return model + + def upscale_with_model(self, upscale_model, image_bhwc): + """ + Run tiled upscale with spandrel model. + Input: image_bhwc -> (B,H,W,C) float [0,1] + Output: (B,C,H',W') float [0,1] + """ + device = model_management.get_torch_device() + upscale_model.to(device) + + in_img = image_bhwc.movedim(-1, -3).to(device) + + tile = 512 + overlap = 32 + oom = True + while oom: + try: + steps = in_img.shape[0] * comfy.utils.get_tiled_scale_steps( + in_img.shape[3], in_img.shape[2], tile_x=tile, tile_y=tile, overlap=overlap + ) + pbar = comfy.utils.ProgressBar(steps) + s = comfy.utils.tiled_scale( + in_img, + lambda a: upscale_model(a), + tile_x=tile, + tile_y=tile, + overlap=overlap, + upscale_amount=getattr(upscale_model, "scale", 4), + pbar=pbar + ) + oom = False + except model_management.OOM_EXCEPTION as e: + tile //= 2 + if tile < 128: + raise e + + upscale_model.cpu() + s = torch.clamp(s, min=0.0, max=1.0) + return s + + def _round_to_modulus(self, value, modulus): + if modulus is None or modulus <= 1: + return int(max(1, round(value))) + return max(modulus, int(round(value / modulus)) * modulus) + + def upscale(self, image, upscale_model, rounding_modulus=8, supersample='true', + rescale_factor=2.0): + + + if image.ndim != 4: + raise ValueError("Expected IMAGE tensor with 4 dims (B,H,W,C).") + + original_height = int(image.shape[1]) + original_width = int(image.shape[2]) + + + target_width = self._round_to_modulus(original_width * rescale_factor, rounding_modulus) + target_height = self._round_to_modulus(original_height * rescale_factor, rounding_modulus) + + + up_model = self.load_model(upscale_model) + up_bchw = self.upscale_with_model(up_model, image) + + batch_out = [] + for i in range(up_bchw.shape[0]): + chw = up_bchw[i] + resized_chw = resize_tensor_opencv( + chw, target_width=target_width, target_height=target_height, + supersample=supersample, factor=rescale_factor + ) + + if resized_chw.shape[0] == 1: + resized_chw = resized_chw.repeat(3, 1, 1) + elif resized_chw.shape[0] > 3: + resized_chw = resized_chw[:3, :, :] + batch_out.append(resized_chw.unsqueeze(0)) + + out_bchw = torch.cat(batch_out, dim=0) + + + images_out = out_bchw.movedim(1, -1).contiguous() + + show_help = "https://github.com/SatadalAI/help_image" + return (images_out, show_help) \ No newline at end of file diff --git a/prompts/prompts.csv b/prompts/prompts.csv new file mode 100644 index 0000000..81d2945 --- /dev/null +++ b/prompts/prompts.csv @@ -0,0 +1,74 @@ +name,positive,negative +Photon1,,"cartoon, painting, illustration, (worst quality, low quality, normal quality:2)" +RealVis,"RAW photo, subject, 8k uhd, dslr, soft lighting, high quality, film grain, Fujifilm XT3","(deformed iris, deformed pupils, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime, mutated hands and fingers:1.4), (deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, disconnected limbs, mutation, mutated, ugly, disgusting, amputation, UnrealisticDream" +RevAnime,"((best quality)), ((masterpiece)), (detailed) ", +Chibi,"full body, chibi, highly detailed","photo, black and white, low contrast" +Default_Negative,,"Watermark, Text, censored, deformed, bad anatomy, disfigured, poorly drawn face, mutated, extra limb, ugly, poorly drawn hands, missing limb, floating limbs, disconnected limbs, disconnected head, malformed hands, long neck, mutated hands and fingers, bad hands, missing fingers, cropped, worst quality, low quality, mutation, poorly drawn, huge calf, bad hands, fused hand, missing hand, disappearing arms, disappearing thigh, disappearing calf, disappearing legs, missing fingers, fused fingers, abnormal eye proportion, Abnormal hands, abnormal legs, abnormal feet, abnormal fingers" +Default_Negative (sfw),,"NSFW, Cleavage, Pubic Hair, Nudity, Naked, Au naturel, Watermark, Text, censored, deformed, bad anatomy, disfigured, poorly drawn face, mutated, extra limb, ugly, poorly drawn hands, missing limb, floating limbs, disconnected limbs, disconnected head, malformed hands, long neck, mutated hands and fingers, bad hands, missing fingers, cropped, worst quality, low quality, mutation, poorly drawn, huge calf, bad hands, fused hand, missing hand, disappearing arms, disappearing thigh, disappearing calf, disappearing legs, missing fingers, fused fingers, abnormal eye proportion, Abnormal hands, abnormal legs, abnormal feet, abnormal fingers" +Default_Negative (Low Token),,"lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry" +3d-model,"professional 3d model {prompt}, octane render, highly detailed, volumetric, dramatic lighting","ugly, deformed, noisy, low poly, blurry, painting" +Analog film,"analog film photo {prompt}, faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage","painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured" +Anime,"anime artwork {prompt}, anime style, key visual, vibrant, studio anime, highly detailed","photo, deformed, black and white, realism, disfigured, low contrast" +Biomechanical,"biomechanical style {prompt}, blend of organic and mechanical elements, futuristic, cybernetic, detailed, intricate","natural, rustic, primitive, organic, simplistic" +Cinematic,"cinematic film still {prompt}, shallow depth of field, vignette, highly detailed, high budget Hollywood film, bokeh, cinemascope, moody, epic, gorgeous, film grain","anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch" +Comic book,"comic {prompt}, graphic illustration, comic art, graphic novel art, vibrant, highly detailed","photograph, deformed, glitch, noisy, realistic, stock photo" +Cyberpunk,"neonpunk style {prompt}, cyberpunk, vaporwave, neon, vibes, vibrant, stunningly beautiful, crisp, detailed, sleek, ultramodern, magenta highlights, dark purple shadows, high contrast, cinematic, ultra detailed, intricate, professional","painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured" +Digital art,"concept art {prompt}, digital artwork, illustrative, painterly, matte painting, highly detailed","photo, photorealistic, realism, ugly" +Dreamscape,"dreamscape {prompt}, surreal, ethereal, dreamy, mysterious, fantasy, highly detailed","realistic, concrete, ordinary, mundane" +Dystopian,"dystopian style {prompt}, bleak, post-apocalyptic, somber, dramatic, highly detailed","ugly, deformed, noisy, blurry, low contrast, cheerful, optimistic, vibrant, colorful" +Fantasy art,"ethereal fantasy concept art of {prompt}, magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy","photographic, realistic, realism, 35mm film, dslr, cropped, frame, text, deformed, glitch, noise, noisy, off-center, deformed, cross-eyed, closed eyes, bad anatomy, ugly, disfigured, sloppy, duplicate, mutated, black and white" +Futuristic,"futuristic style {prompt}, sleek, modern, ultramodern, high tech, detailed","ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, vintage, antique" +Horror,"horror-themed {prompt}, eerie, unsettling, dark, spooky, suspenseful, grim, highly detailed","cheerful, bright, vibrant, light-hearted, cute" +Isometric,"isometric style {prompt}, vibrant, beautiful, crisp, detailed, ultra detailed, intricate","deformed, mutated, ugly, disfigured, blur, blurry, noise, noisy, realistic, photographic" +Manga,"manga style {prompt}, vibrant, high-energy, detailed, iconic, Japanese comic style","ugly, deformed, noisy, blurry, low contrast, realism, photorealistic, Western comic style" +Photo with Bokeh,"cinematic photo {prompt}, 35mm photograph, film, bokeh, professional, 4k, highly detailed","drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly" +Photo without Bokeh,"cinematic photo {prompt}, 35mm photograph, film, professional, 4k, highly detailed","bokeh, drawing, painting, crayon, sketch, graphite, impressionist, noisy, blurry, soft, deformed, ugly" +Photo Long Exposure,"long exposure photo of {prompt}, Blurred motion, streaks of light, surreal, dreamy, ghosting effect, highly detailed","static, noisy, deformed, shaky, abrupt, flat" +Photo Film Noir,"film noir style {prompt}, monochrome, high contrast, dramatic shadows, 1940s style, mysterious, cinematic","ugly, deformed, noisy, blurry, low contrast, vibrant, colorful" +Pixel Art,"pixel-art {prompt}, low-res, blocky, pixel art style, 8-bit graphics","sloppy, messy, blurry, noisy, highly detailed, ultra textured, photo, realistic" +Pixar Style,"pixar style render, caricature, {prompt}, looking at viewer, flat colors, 4k, professional, award-winning, highly detailed, volumetric, dramatic lighting","low poly, painting, realistic, photo, line drawing" +Sci-fi,"sci-fi style {prompt}, futuristic, technological, space themes, advanced civilizations, light leaks, lens flares","ugly, deformed, noisy, blurry, low contrast, historical, medieval" +Steampunk,"steampunk style {prompt}, antique, mechanical, brass and copper tones, gears, intricate, detailed","deformed, glitch, noisy, low contrast, anime, photorealistic" +Watercolor,"watercolor painting {prompt}, vibrant, beautiful, painterly, detailed, textural, artistic","anime, photorealistic, 35mm film, deformed, glitch, low contrast, noisy" +Character Reference Sheet,"character reference sheet {prompt}, turnaround views, detailed anatomy, color palette, multiple poses, highly detailed","simplistic, minimalist, vague, incomplete" +Enhancer,"breathtaking {prompt}, masterpiece, award-winning, professional, highly detailed","ugly, deformed, noisy, blurry, distorted, grainy" +Lighting: Artificial,artificial light, +Lighting: Back,back lighting, +Lighting: Bottom,bottom lighting, +Lighting: Chiaroscuro,chiaroscuro lighting, +Lighting: Cinematic,cinematic lighting, +Lighting: Dramatic,dramatic lighting, +Lighting: High key,high key lighting, +Lighting: Low key,low key lighting, +Lighting: Natural,natural light, +Lighting: Rembrandt,Rembrandt lighting, +Lighting: Rim,rim lighting, +Lighting: Side,side lighting, +Lighting: Split,split lighting, +Lighting: Top,top lighting, +"Cotton, Fine","{prompt} in fine cotton fabric, highly detailed, gorgeous, matte fabric","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +"Cotton, Regular","{prompt} dress in heavy knit cotton fabric, matte fabric, gorgeous cloth, highly detailed, cinematic","wrinkles, linen, seethrough, transparent, anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +Denim,"{prompt} in heavy japanese (denim fabric), highly detailed, hard drape","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +"Flannel, Brushed","{prompt} in soft woven brushed flannel, highly detailed, fuzzy flannel cloth, cashmere flannel","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +Latex/Plastic,"{prompt} dress in shiny latex plastic material, expensive exquisite latex fabric, tight fitting","metallic, nude, naked, fabric wrinkles, anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +"Latex/Plastic, Glossy","{prompt} in shiny wet glossy latex material, hard lighting, expensive exquisite latex fabric, tight fitting","metallic, nude, naked, fabric wrinkles, anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +Leather,"{prompt} in smooth thin leather, highly detailed, expensive exquisite leather","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +Linen,"{prompt} in linen fabric, loosely woven, gorgeous cloth, highly detailed","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +Silk,"{prompt} in silk cloth, highly detailed, gorgeous, sheen lustre","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +Velvet,"{prompt} in smooth velvet fabric, gorgeous exquisite cloth, highly detailed, fuzzy velvet cloth, expensive","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +"Wool, Fine knit","{prompt} in wool cloth, highly detailed, gorgeous, fine knit cashmere wool fabric","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +"Wool, Heavy knit","{prompt} in chunky heavy wool yarn, highly detailed, heavy knit large wool fabric, sailor's wool","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +"Wool, Cable knit","{prompt} in chunky heavy cable knit wool yarn, highly detailed, cable knit large wool fabric","anime, graphic, text, painting, crayon, graphite, glitch, cartoon, ugly, deformed, noisy, blurry, distorted" +Ghibli,"(Studio ghibli style, Art by Hayao Miyazaki:1.2), Anime Style, Manga Style, Hand drawn, cinematic, Sharp focus, humorous illustration, big depth of field, Masterpiece, concept art, trending on artstation, Vivid colors, Simplified style, trending on ArtStation, trending on CGSociety, Intricate, Vibrant colors, Soft Shading, Simplistic Features, Sharp Angles, Playful", +Vector Illustrations,"Vector art, Vivid colors, Clean lines, Sharp edges, Minimalist, Precise geometry, Simplistic, Smooth curves, Bold outlines, Crisp shapes, Flat colors, Illustration art piece, High contrast shadows, Technical illustration, Graphic design, Vector graphics, High contrast, Precision artwork, Linear compositions, Scalable artwork, Digital art", +Digital Painting,"glow effects, godrays, Hand drawn, render, 8k, octane render, cinema 4d, blender, dark, atmospheric 4k ultra detailed, cinematic, Sharp focus, big depth of field, Masterpiece, colors, 3d octane render, 4k, concept art, trending on artstation, hyperrealistic, Vivid colors, extremely detailed CG unity 8k wallpaper, trending on CGSociety, Intricate, High Detail, dramatic", +Indie Game,"Indie game art, Vector Art, Borderlands style, Arcane style, Cartoon style, Line art, Disctinct features, Hand drawn, Technical illustration, Graphic design, Vector graphics, High contrast, Precision artwork, Linear compositions, Scalable artwork, Digital art, cinematic sensual, Sharp focus, humorous illustration, big depth of field, Masterpiece, trending on artstation, Vivid colors, trending on ArtStation, trending on CGSociety, Intricate, Low Detail, dramatic", +Original Photo Style,"Photorealistic, Hyperrealistic, Hyperdetailed, analog style, soft lighting, subsurface scattering, realistic, heavy shadow, masterpiece, best quality, ultra realistic, 8k, golden ratio, Intricate, High Detail, film photography, soft focus", +Black and White Film Noir,"(b&w, Monochromatic, Film Photography:1.3), Photorealistic, Hyperrealistic, Hyperdetailed, film noir, analog style, soft lighting, subsurface scattering, realistic, heavy shadow, masterpiece, best quality, ultra realistic, 8k, golden ratio, Intricate, High Detail, film photography, soft focus", +Isometric Rooms,"Tiny cute isometric in a cutaway box, soft smooth lighting, soft colors, 100mm lens, 3d blender render", +Space Hologram,"hologram floating in space, a vibrant digital illustration, dribbble, quantum wavetracing, black background, behance hd", +Cute Creatures,"3d fluffy, closeup cute and adorable, cute big circular reflective eyes, long fuzzy fur, Pixar render, unreal engine cinematic smooth, intricate detail, cinematic", +Realistic Photo Portraits,"RAW candid cinema, 16mm, color graded portra 400 film, remarkable color, ultra realistic, textured skin, remarkable detailed pupils, realistic dull skin noise, visible skin detail, skin fuzz, dry skin, shot with cinematic camera", +Professional Scenic Photographs,"long shot scenic professional photograph of {prompt}, perfect viewpoint, highly detailed, wide-angle lens, hyper realistic, with dramatic sky, polarizing filter, natural lighting, vivid colors, everything in sharp focus, HDR, UHD, 64K", +Skin Enhancer,"detailed skin texture, (blush:0.5), (goosebumps:0.5), subsurface scattering, dry skin, fuzzy skin", +Skin Enhancer (clean),"detailed skin texture, (blush:0.2), (goosebumps:0.3), subsurface scattering, dry skin, fuzzy skin", diff --git a/prompts/styles.csv b/prompts/styles.csv new file mode 100644 index 0000000..1c086cb --- /dev/null +++ b/prompts/styles.csv @@ -0,0 +1,3 @@ +name,positive,negative +Futuristic,"futuristic style {prompt}, sleek, modern, high tech","ugly, deformed, noisy, blurry" +Fantasy,"fantasy {prompt}, magical, vibrant","muddy, poorly lit, low detail" \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e8c0ea1 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +opencv-python>=4.5.0 +spandrel \ No newline at end of file diff --git a/web/prompt_machine.js b/web/prompt_machine.js new file mode 100644 index 0000000..5b878fe --- /dev/null +++ b/web/prompt_machine.js @@ -0,0 +1,30 @@ +import { app } from "../../../scripts/app.js"; + +app.registerExtension({ + name: "SATA_UtilityNode.PromptMachine", + async nodeCreated(node) { + if (node.comfyClass === "Prompt_Machine") { + // When csv_file changes, refresh names list + const widget = node.widgets.find(w => w.name === "csv_file"); + if (widget) { + widget.callback = async (value) => { + try { + const resp = await fetch(`/sata/prompt_machine/names?csv=${encodeURIComponent(value)}`); + const data = await resp.json(); + const names = Array.isArray(data.names) && data.names.length > 0 ? data.names : ["None"]; + const nameWidget = node.widgets.find(w => w.name === "name"); + if (nameWidget) { + if (!nameWidget.options) nameWidget.options = {}; + nameWidget.options.values = names; + nameWidget.value = names[0]; + if (typeof node.setDirtyCanvas === "function") node.setDirtyCanvas(true); + if (typeof node.onWidgetChanged === "function") node.onWidgetChanged(nameWidget, nameWidget.value, null, 0); + } + } catch (e) { + console.error("[PromptMachine] Failed to fetch names:", e); + } + }; + } + } + } +}); \ No newline at end of file diff --git a/web/touchpad_pan_zoom.js b/web/touchpad_pan_zoom.js new file mode 100644 index 0000000..894ae23 --- /dev/null +++ b/web/touchpad_pan_zoom.js @@ -0,0 +1,40 @@ +/** + * Enhanced smooth scrolling and zooming for touchpad gestures + * Overrides LGraphCanvas.prototype.processMouseWheel + */ +LGraphCanvas.prototype.processMouseWheel = function (/** @type {WheelEvent} */ event) { + if (!this.graph || !this.allow_dragcanvas) return; + + const { clientX: x, clientY: y, deltaX, deltaY, ctrlKey, metaKey } = event; + + // Check if the event occurred inside the canvas viewport + if (this.viewport) { + const [vx, vy, vw, vh] = this.viewport; + const insideX = x >= vx && x < vx + vw; + const insideY = y >= vy && y < vy + vh; + if (!(insideX && insideY)) return; + } + + const currentScale = this.ds.scale; + + // Configurable sensitivity + const ZOOM_SENSITIVITY = this.zoomSensitivity || 0.005; + const PAN_SENSITIVITY = this.panSensitivity || 1.0; + const MIN_SCALE = 0.1; + const MAX_SCALE = 4.0; + + if (ctrlKey || metaKey) { + // Zoom mode + const zoomDirection = Math.sign(deltaY); + const zoomAmount = zoomDirection * Math.abs(deltaY) * ZOOM_SENSITIVITY; + const newScale = Math.max(MIN_SCALE, Math.min(MAX_SCALE, currentScale - zoomAmount)); + this.ds.changeScale(newScale, [x, y]); + } else { + // Pan mode + this.ds.mouseDrag(-deltaX * PAN_SENSITIVITY, -deltaY * PAN_SENSITIVITY); + } + + this.graph.change(); + event.preventDefault(); + return false; +}; \ No newline at end of file