Coder Social home page Coder Social logo

suzie1 / comfyui_comfyroll_customnodes Goto Github PK

View Code? Open in Web Editor NEW
459.0 6.0 65.0 3.5 MB

Custom nodes for SDXL and SD1.5 including Multi-ControlNet, LoRA, Aspect Ratio, Process Switches, and many more nodes.

Home Page: https://civitai.com/models/183551/comfyui-comfyroll-custom-nodes

Python 100.00%
comfyui stable-diffusion custom-nodes sdxl sd15 nodes

comfyui_comfyroll_customnodes's Introduction

🧩 Comfyroll Studio

Co-authored by Suzie1 and RockOfFire

Current version: 1.76

Wiki

Please use our new wiki for info on the custom nodes, and lots of examples of their use.

https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/wiki

Installation

  1. cd custom_nodes
  2. git clone https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes.git
  3. Restart ComfyUI

You can also install the nodes using the following methods:

Patch Notes

https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/blob/main/Patch_Notes.md

List of Custom Nodes

Core Nodes

πŸ“¦ Essential Nodes

  • CR Image Output (changed 18/12/2023)
  • CR Latent Batch Size
  • CR Prompt Text
  • CR Combine Prompt
  • CR Seed
  • CR Conditioning Mixer
  • CR Select Model (new 24/1/2024)
  • CR VAE Decode (new 24/1/2024)

πŸ”³ Aspect Ratio

  • CR Aspect Ratio
  • CR SDXL Aspect Ratio
  • CR SD1.5 Aspect Ratio
  • CR Aspect Ratio Banners (new 18/12/2023)
  • CR Aspect Ratio Social Media (new 15/1/2024)
  • CR Aspect Ratio For Print (new 18/1/2024)

πŸ“œ List Nodes

  • CR Text List (new 19/12/2023)
  • CR Prompt List (new 1/1/2024)
  • CR Float Range List (new 25/12/2023)
  • CR Integer Range List (new 25/12/2023)
  • CR Load Text List (new 27/12/2023)
  • CR Binary To List (new 29/12/2023)
  • CR Text List To String (updated 30/12/2023)
  • CR Text Cycler (new 4/1/2024)
  • CR Value Cycler (new 4/1/2024)

πŸ“œ List IO

  • CR Load Image List (new 23/12/2023)
  • CR Load Image List Plus (new 23/12/2023)
  • CR Load GIF As List (new 6/1/2024)
  • CR Font File List (new 18/12/2023)

πŸ“œ List Utils

  • CR Batch Images From List (new 29/12/2023)
  • CR Intertwine_Lists (new 29/12/2023)
  • CR Repeater (new 15/1/2024)
  • CR XY Product (new 2/1/2024)
  • CR Text List To String (updated 30/12/2023)

🌟 SDXL

  • CR SDXL Prompt Mix Presets
  • CR SDXL Style Text
  • CR SDXL Base Prompt Encoder

πŸ’Š LoRA

  • CR Load LoRA
  • CR LoRA Stack
  • CR Apply LoRA Stack
  • CR Random LoRA Stack (new 18/12/2023)
  • CR Random Weight LoRA (new 18/12/2023)

πŸ•ΉοΈ ControlNet

  • CR Apply ControlNet
  • CR Multi-ControlNet Stack
  • CR Apply Multi-ControlNet Stack

🚌 Bus

  • CR Data Bus In (new 12/1/2024)
  • CR Data Bus Out (new 12/1/2024)
  • CR 8 Channel In (new 12/1/2024)
  • CR 8 Channel Out (new 12/1/2024)

✈️ Module

  • CR Module Pipe Loader
  • CR Module Input
  • CR Module Output

πŸ›©οΈ Pipe

  • CR Image Pipe In
  • CR Image Pipe Edit
  • CR Image Pipe Out
  • CR Pipe Switch

⛏️ Model Merge

  • CR Model Stack
  • CR Apply Model Merge

πŸ” Upscale

  • CR Multi Upscale Stack
  • CR Upscale Image
  • CR Apply Multi Upscale

πŸ“‰ XY Grid

  • CR XY List
  • CR XY Interpolate
  • CR XY Index
  • CR XY From Folder
  • CR XY Save Grid Image
  • CR Image Output

πŸ‘Ύ Graphics Nodes

πŸ‘“ Graphics - Filter

  • CR Color Tint
  • CR Halftone Filter
  • CR Vignette Filter (new 21/12/2023)

🌈 Graphics - Pattern

  • CR Halftone Grid
  • CR Color Bars
  • CR Style Bars
  • CR Checker Pattern
  • CR Polygons
  • CR Color Gradient
  • CR Radial Gradiant
  • CR Starburst Lines
  • CR Starburst Colors
  • CR Simple Binary Pattern
  • CR Binary Pattern

🟑 Graphics - Pattern

  • CR Draw Shape (new 24/12/2023)
  • CR Draw Pie" (new 25/12/2023)
  • CR Random Shape Pattern" (new 25/12/2023)

πŸ”€ Graphics - Text

  • CR Overlay Text
  • CR Draw Text
  • CR Mask Text
  • CR Composite Text
  • CR Select Font

πŸ‘½ Graphics - Template

  • CR Simple Meme Template
  • CR Simple Banner
  • CR Comic Panel Templates
  • CR Simple Banner (new 18/12/2023)
  • CR Simple Image Compare (new 18/12/2023)
  • CR Thumbnail Preview (new 26/12/2023)
  • CR Seamless Checker (new 18/1/2023)

🌁 Graphics - Layout

  • CR Image Panel
  • CR Page Layout
  • CR Image Grid Panel
  • CR Image Border
  • CR Feathered Border (new 21/12/2023)
  • CR Color Panel
  • CR Simple Text Panel
  • CR Half Drop Panel (new 23/1/2024)
  • CR Diamond Panel (new 24/1/2024)
  • CR Overlay Transparent Image
  • CR Select ISO Size (new 18/1/2023)

πŸŽ₯ Animation

πŸ“‹ Schedules

  • CR Simple Schedule
  • CR Central Schedule
  • CR Combine Schedules
  • CR Output Schedule To File
  • CR Load Schedule From File
  • CR Schedule Input Switch

πŸ“‘ Schedulers

  • CR Simple Value Scheduler
  • CR Simple Text Scheduler
  • CR Value Scheduler
  • CR Text Scheduler
  • CR Load Scheduled Models
  • CR Load Scheduled LoRAs
  • CR Prompt Scheduler
  • CR Simple Prompt Scheduler

πŸ“ Prompt

  • CR Keyframe List
  • CR Load Prompt Style
  • CR Encode Scheduled Prompts

πŸ”’ Interpolation

  • CR Gradient Float
  • CR Gradient Integer
  • CR Increment Float
  • CR Increment Integer
  • CR Interpolate Latents

πŸ› οΈ Utils

  • CR Debatch Frames
  • CR Current Frame

⌨️ IO

  • CR Load Animation Frames
  • CR Load Flow Frames
  • CR Output Flow Frames

πŸ› οΈ Utility Nodes

πŸ”’ Utils Index

  • CR Index
  • CR Index Increment
  • CR Index Multiply
  • CR Index Reset
  • CR Trigger

πŸ”§ Utils Conversion

  • CR String To Number (changed 18/12/2023)
  • CR String To Combo
  • CR Float To String
  • CR Float To Integer
  • CR Integer To String
  • CR String To Boolean (new 17/1/2024)

πŸ”€ Utils Logic

  • CR Image Input Switch
  • CR Image Input Switch (4 way)
  • CR Latent Input Switch
  • CR Conditioning Input Switch
  • CR Clip Input Switch
  • CR Model Input Switch
  • CR ControlNet Input Switch
  • CR VAE Input Switch
  • CR Text Input Switch
  • CR Text Input Switch (4 way)
  • CR Switch Model and CLIP

πŸ”‚ Utils Process

  • CR Img2Img Process Switch
  • CR Hires Fix Process Switch
  • CR Batch Process Switch

🎲 Utils Random

  • CR Random Hex Color
  • CR Random RGB
  • CR Random Multiline Values (updated 28/12/2023)
  • CR Random Multiline Colors (new 28/12/2023)
  • CR Random RGB Gradient
  • CR Random Panel Code (new 26/12/2023)

πŸ”€ Utils Text

  • CR Text (new 3/1/2024)
  • CR Multiline Text (new 24/12/2023)
  • CR Split String
  • CR Text Concatenate (new 2/1/2024)
  • CR Text Replace (new 8/1/2024)
  • CR Text Blacklist (new 13/1/2024)
  • CR Text Length (new 10/1/2024)
  • CR Text Operation (new 10/1/2024)
  • CR Save Text To File (new 27/12/2023)

βš™οΈ Conditional

  • CR Set Value On Boolean (new 29/12/2023)
  • CR Set Value On Binary (new 3/1/2024)
  • CR Set Value On String (new 9/1/2024)
  • CR Set Switch From String (new 17/1/2024)

βš™οΈ Utils Other

  • CR Value
  • CR Integer Multiple
  • CR Clamp Value (new 29/12/2023)
  • CR Math Operation (new 31/12/2023)
  • CR Get Parameter From Prompt (new 5/1/2024)
  • CR Select Resize Method (new 16/1/2024)

Legacy

πŸ’€ Legacy Nodes

  • CR Seed to Int
  • CR Aspect Ratio SDXL, replaced by CR SDXL Aspect Ratio
  • CR Image Size, replaced by CR Aspect Ratio
  • CR SDXL Prompt Mixer, replaced by CR SDXL Prompt Mix Presets

Comfyroll Workflow Templates

The nodes were originally made for use in the Comfyroll Template Workflows.

Comfyroll Template Workflows

Comfyroll Pro Templates

Comfyroll SDXL Workflow Templates

SDXL Workflow for ComfyUI with Multi-ControlNet

SDXL and SD1.5 Model Merge Templates for ComfyUI

Credits

comfyanonymous/ComfyUI - A powerful and modular stable diffusion GUI.

WASasquatch/was-node-suite-comfyui - A powerful custom node extensions of ComfyUI.

TinyTerra/ComfyUI_tinyterraNodes - A selection of nodes for Stable Diffusion ComfyUI

hnmr293/ComfyUI-nodes-hnmr - ComfyUI custom nodes - merge, grid (aka xyz-plot) and others

SeargeDP/SeargeSDXL - ComfyUI custom nodes - Prompt nodes and Conditioning nodes

LucianoCirino/efficiency-nodes-comfyui - A collection of ComfyUI custom nodes.

SLAPaper/ComfyUI-Image-Selector - Select one or some of images from a batch

pythongosssss/ComfyUI-Custom-Scripts - Enhancements & experiments for ComfyUI, mostly focusing on UI features

bash-j/mikey_nodes - comfy nodes from mikey

ltdrdata/ComfyUI-Impact-Pack -

comfyui_comfyroll_customnodes's People

Contributors

baconisaveg avatar ka-de avatar kinglord avatar lucianocirino avatar mikerhinos avatar rbfussell avatar rockoffire avatar scottmudge avatar suzie1 avatar vanillacode314 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

comfyui_comfyroll_customnodes's Issues

NameError: name 'PngInfo' is not defined with fix

!!! Exception during processing !!!
Traceback (most recent call last):
File "F:\Ai\ComfyUI\execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "F:\Ai\ComfyUI\execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "F:\Ai\ComfyUI\execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "F:\Ai\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\Comfyroll_Nodes.py", line 669, in save_images
metadata = PngInfo()
NameError: name 'PngInfo' is not defined

added from PIL.PngImagePlugin import PngInfo

resulted in the next error:
!!! Exception during processing !!!
Traceback (most recent call last):
File "F:\Ai\ComfyUI\execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "F:\Ai\ComfyUI\execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "F:\Ai\ComfyUI\execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "F:\Ai\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\Comfyroll_Nodes.py", line 672, in save_images
metadata.add_text("prompt", json.dumps(prompt))
NameError: name 'json' is not defined

added import json

All working again

IMPORT FAILED after Updating

Hello, I just updated the module and got this error.

0.0 seconds (IMPORT FAILED): /AI Systems/comfyui/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes

The exception is like below:

Traceback (most recent call last):
  File "/Volumes/ADATA SU 650 Media/AI Systems/comfyui/ComfyUI/nodes.py", line 1735, in load_custom_node
    module_spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/Volumes/ADATA SU 650 Media/AI Systems/comfyui/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes/__init__.py", line 14, in <module>
    from .nodes.pil_text import *
  File "/Volumes/ADATA SU 650 Media/AI Systems/comfyui/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes/nodes/pil_text.py", line 22, in <module>
    subprocess.check_call(['python', '-m', 'pip', 'install', 'python_bidi'])
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 408, in check_call
    retcode = call(*popenargs, **kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 389, in call
    with Popen(*popenargs, **kwargs) as p:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 1950, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'python'

I use Python3.11, so I use the command python3. I managed to fix it by changing the code in the pil_text.py like below:

try:
    from bidi.algorithm import get_display
except ImportError:
    import subprocess
    subprocess.check_call(['python3', '-m', 'pip', 'install', 'python_bidi'])

try:    
    import arabic_reshaper    
except ImportError:
    import subprocess
    subprocess.check_call(['python3', '-m', 'pip', 'install', 'arabic_reshaper'])

Hopefully, this can be fixed in the next update.

[Discussion/Feature Request] Prescale for aspect ratio node?

Basically the idea is to have a new float input which will be multiplied to output width / height / latent dimensions.

Why? With the release of deep shrink kohya method, it would be nice to scale the output without using custom values.

I can make a PR for this if you agree

Can't generate text on Grid (because I don't know how), what are 'triggers'?

Hello! I'm following this tutorial (3rd part) which covers comfyroll XY indices. It works (kinda) but even the youtuber coudn't get it to write to the image.

More importantly, while i respect his work to introduce us to comfyroll, I find his workflow confusing -- what are 'triggers' (it's not in the documentation) and the index he set as a primitive increments all the way to infinity unless you reset it each time to '1' .

Here's why I'm trying to do: WITHOUT saving to disk, just print out sequential previews of 9 images with increasing CFG (or any other parms). In other words, i don't need a xy axis just yet (that's for later :)) - just need the X axis and the images printed to screen in preview.

Thank you for any help, because without documentation it's really hard to figure out how this all works :)

Comfyroll nodes disappeared from the Nodes menu (and unavailable in the workflow)

I'm very happy to see that the latest update brings compatibility with LucianoCirino Efficiency nodes. I'm the one that originally asked him to verify the issues I was having.

However, this new update made the entire Comfyroll suite disappear from the ComfyUI Nodes menu, and all your nodes are red as unavailable inside the workflow.

[FEATURE REQUEST] Previews for CR Multi-ControlNet Stack

The CR Multi-ControlNet Stack node is incredibly useful and I have it as a key feature of the AP Workflow.

One thing that would make it even better is if the node had 3 extra image outputs, each one generating a preview of the ControlNet effect, like it happens in A1111/SD Next:

image-105

image-110

Thank you for considering the request.

since last update import failed

hi, since last update import failed at every start of Comfy ui , tried to uninstall reinstall with the same results , also update comfy but no changes

can't find the system fonts in WSL

[ERROR] An error occurred while retrieving information for the 'CR Font File List' node.
Traceback (most recent call last):
  File "/home/impactframes/ComfyUI/server.py", line 418, in get_object_info
    out[x] = node_info(x)
  File "/home/impactframes/ComfyUI/server.py", line 396, in node_info
    info['input'] = obj_class.INPUT_TYPES()
  File "/home/impactframes/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes/nodes/nodes.py", line 728, in INPUT_TYPES
    font_dir = os.path.join(system_root, 'Fonts')
  File "/home/impactframes/micromamba/envs/comfy/lib/python3.10/posixpath.py", line 76, in join
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not NoneType

CR String to Combo node possibly causing an error

Hello,
I've been using the CR String to Combo node with the CR Text input switch to load both checkpoints and Lora from both list boxes and also saved files. I pass the checkpoint name or Lora name to their respective loaders using the CR string to combo node. I do this because I can't connect the text line directly to the loaders. Today after updating, I started to get errors. Oddly I'm not getting a console or pop-up error report, however from debugging, I can see that the load text line from file, load line from list and CR Text input switches are working so it appears the error is in the CR String to Combo node. Also I note that in this update a show_help connection also appeared if that is helpful to determine what update the problem occurred with.

image

image

String to Float doesn't work with negative numbers

As per the title. Any negative number gets the following error message:

Error occurred when executing CR String To Number:

local variable 'int_out' referenced before assignment

File "/workspace/ComfyUI/execution.py", line 153, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "/workspace/ComfyUI/execution.py", line 83, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "/workspace/ComfyUI/execution.py", line 76, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "/workspace/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes/nodes/conversion.py", line 38, in convert
return (int_out, float_out, show_help,)
Queue size: 0
Extra options

import piexif ModuleNotFoundError: No module named 'piexif'

Traceback (most recent call last):
File "E:\ComfyUI\nodes.py", line 1813, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 940, in exec_module
File "", line 241, in call_with_frames_removed
File "E:\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes_init
.py", line 8, in
from .live_node_mappings import LIVE_NODE_CLASS_MAPPINGS, LIVE_NODE_DISPLAY_NAME_MAPPINGS
File "E:\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\live_node_mappings.py", line 20, in
from .nodes.nodes_list import *
File "E:\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\nodes\nodes_list.py", line 13, in
import piexif
ModuleNotFoundError: No module named 'piexif'

error with animatediff

this is using the CN stack
`Error occurred when executing KSampler:

Control type ControlNet may not support required features for sliding context window; use Control objects from Kosinkadink/Advanced-ControlNet nodes, or make sure Advanced-ControlNet is updated.

File "E:\AIStuff\webui1\ComfyUI\execution.py", line 153, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "E:\AIStuff\webui1\ComfyUI\execution.py", line 83, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "E:\AIStuff\webui1\ComfyUI\execution.py", line 76, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "E:\AIStuff\webui1\ComfyUI\nodes.py", line 1237, in sample
return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise)
File "E:\AIStuff\webui1\ComfyUI\nodes.py", line 1207, in common_ksampler
samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
File "E:\AIStuff\webui1\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\modules\impact\sample_error_enhancer.py", line 9, in informative_sample
return original_sample(*args, **kwargs)
File "E:\AIStuff\webui1\ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 190, in animatediff_sample
return wrap_function_to_inject_xformers_bug_info(orig_comfy_sample)(model, *args, **kwargs)
File "E:\AIStuff\webui1\ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\model_utils.py", line 190, in wrapped_function
return function_to_wrap(*args, **kwargs)
File "E:\AIStuff\webui1\ComfyUI\comfy\sample.py", line 100, in sample
samples = sampler.sample(noise, positive_copy, negative_copy, cfg=cfg, latent_image=latent_image, start_step=start_step, last_step=last_step, force_full_denoise=force_full_denoise, denoise_mask=noise_mask, sigmas=sigmas, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "E:\AIStuff\webui1\ComfyUI\comfy\samplers.py", line 691, in sample
return sample(self.model, noise, positive, negative, cfg, self.device, sampler(), sigmas, self.model_options, latent_image=latent_image, denoise_mask=denoise_mask, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "E:\AIStuff\webui1\ComfyUI\comfy\samplers.py", line 597, in sample
samples = sampler.sample(model_wrap, sigmas, extra_args, callback, noise, latent_image, denoise_mask, disable_pbar)
File "E:\AIStuff\webui1\ComfyUI\comfy\samplers.py", line 557, in sample
samples = getattr(k_diffusion_sampling, "sample_{}".format(sampler_name))(model_k, noise, sigmas, extra_args=extra_args, callback=k_callback, disable=disable_pbar, **extra_options)
File "E:\AIStuff\webui1\python_embeded\lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "E:\AIStuff\webui1\ComfyUI\comfy\k_diffusion\sampling.py", line 695, in sample_dpmpp_3m_sde_gpu
return sample_dpmpp_3m_sde(model, x, sigmas, extra_args=extra_args, callback=callback, disable=disable, eta=eta, s_noise=s_noise, noise_sampler=noise_sampler)
File "E:\AIStuff\webui1\python_embeded\lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "E:\AIStuff\webui1\ComfyUI\comfy\k_diffusion\sampling.py", line 655, in sample_dpmpp_3m_sde
denoised = model(x, sigmas[i] * s_in, **extra_args)
File "E:\AIStuff\webui1\python_embeded\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "E:\AIStuff\webui1\ComfyUI\comfy\samplers.py", line 274, in forward
out = self.inner_model(x, sigma, cond=cond, uncond=uncond, cond_scale=cond_scale, model_options=model_options, seed=seed)
File "E:\AIStuff\webui1\python_embeded\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "E:\AIStuff\webui1\ComfyUI\comfy\samplers.py", line 264, in forward
return self.apply_model(*args, **kwargs)
File "E:\AIStuff\webui1\ComfyUI\comfy\samplers.py", line 261, in apply_model
out = sampling_function(self.inner_model.apply_model, x, timestep, uncond, cond, cond_scale, model_options=model_options, seed=seed)
File "E:\AIStuff\webui1\ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 555, in sliding_sampling_function
return x - model_options"sampler_cfg_function"
File "E:\AIStuff\webui1\ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 534, in sliding_calc_cond_uncond_batch
sub_cond_out, sub_uncond_out = calc_cond_uncond_batch(model_function, sub_cond, sub_uncond, sub_x, sub_timestep, max_total_area, model_options)
File "E:\AIStuff\webui1\ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 497, in get_resized_cond
del control_item`

multi-controlnet stack

Hi,

I noticed an issue with the multicontrolnet stacker this morning - pretty sure it was working Yesterday so I think a bug must have crept in with the last update.

workflow (34).txt

just rename to .json

CR XY From Folder

image_folder is always undefined. Is there any documentation on how these nodes are expected to be set up?

[Feature Request] module input/output update

hello,
i would be happy if i could send some user-defined data with the pipe of cr module input/output, e.g. strings and integer. i personally would need 2 strings and 3 integer to send them through the workflow and would then no longer have to switch to setnode/getnode from kj which makes the workflow rather messy. :) kind regards.

A good way to avoid warning "Setuptools is replacing distutils"

If you import pip in you python code it may cause "Setuptools is replacing distutils" warning, which may delete the whole distutils module. Because distutils was imported before Setuptools, but importing Setuptools also replaces the distutils and calls the function clear_distutils() in "/site-packages/_distutils_hack/init.py" to initialize. In other words, if some customnodes that requires distutils module is loaded before comfyroll, some errors may occur.

#code from   /site-packages/_distutils_hack/__init__.py
def clear_distutils():
    if 'distutils' not in sys.modules:
        return
    import warnings

    warnings.warn("Setuptools is replacing distutils.")
    mods = [
        name
        for name in sys.modules
        if name == "distutils" or name.startswith("distutils.")
    ]
    for name in mods:
        del sys.modules[name]

A good way to avoid this warning is delete all the unnecessary "import pip", and put it into exception if needed.
for exanple in Comfyroll_Nodes.py, delete line 14 first and add "import pip" in line 32

import torch
import numpy as np
import os
import sys
import io
from PIL import Image, ImageEnhance
from PIL.PngImagePlugin import PngInfo
# import json
try:
    import matplotlib.pyplot as plt
except ImportError:
    import pip
    pip.main(['install', 'matplotlib'])
    import matplotlib.pyplot as plt

before:
before 2023-09-30 185216
after:
after 2023-09-30 190255

Missing module 'halftone'

After the last update i got following error after starting ComfyUI with yout custom node:

Traceback (most recent call last):
File "E:\ComfyUI_windows_portable\ComfyUI\nodes.py", line 1647, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in call_with_frames_removed
File "E:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes_init
.py", line 1, in
from .Comfyroll_Nodes import *
File "E:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\Comfyroll_Nodes.py", line 24, in
from halftone import halftone
ModuleNotFoundError: No module named 'halftone'

Feature request for Comic panel

hello I'm testing your comic panel is there a way to send an image to an specific panel for example I have four different scene and I want to place it in and specific panel from the generated panel layout.
Screenshot 2023-12-13 015859

ModuleNotFoundError: No module named 'comfy.controlnet'

ModuleNotFoundError: No module named 'comfy.controlnet'

Cannot import D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes module for custom nodes: No module named 'comfy.controlnet'
Registered sys.path: ['D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\init.py', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_pycocotools', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_oneformer', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_mmpkg', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_midas_repo', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_detectron2', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\controlnet_aux', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfyui_controlnet_aux\src', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\comfy', 'D:\StabilityMatrix\Data\Packages\ComfyUI\comfy', 'D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\git\ext\gitdb', 'D:\StabilityMatrix\Data\Packages\ComfyUI', 'D:\StabilityMatrix\Data\Packages\ComfyUI\venv\Scripts\python310.zip', 'D:\StabilityMatrix\Data\Packages\ComfyUI\venv\Scripts\DLLs', 'D:\StabilityMatrix\Data\Packages\ComfyUI\venv\Scripts\lib', 'D:\StabilityMatrix\Data\Assets\Python310', 'D:\StabilityMatrix\Data\Packages\ComfyUI\venv', 'D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages', 'D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\win32', 'D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\win32\lib', 'D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\Pythonwin', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\modules', 'D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\subpack', '../..']
Traceback (most recent call last):
File "D:\StabilityMatrix\Data\Packages\ComfyUI\nodes.py", line 1693, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in call_with_frames_removed
File "D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfy_controlnet_preprocessors_init
.py", line 1, in
from custom_nodes.comfy_controlnet_preprocessors.nodes import edge_line, normal_depth_map, pose, semseg, others
File "D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfy_controlnet_preprocessors_init_.py", line 1, in
from custom_nodes.comfy_controlnet_preprocessors.nodes import edge_line, normal_depth_map, pose, semseg, others
File "D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfy_controlnet_preprocessors\nodes\pose.py", line 5, in
from .. import mp_pose_hand
File "D:\StabilityMatrix\Data\Packages\ComfyUI\custom_nodes\comfy_controlnet_preprocessors\mp_pose_hand_init_.py", line 2, in
import mediapipe as mp
File "D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\mediapipe_init_.py", line 16, in
import mediapipe.python.solutions as solutions
File "D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\mediapipe\python\solutions_init_.py", line 17, in
import mediapipe.python.solutions.drawing_styles
File "D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\mediapipe\python\solutions\drawing_styles.py", line 20, in
from mediapipe.python.solutions.drawing_utils import DrawingSpec
File "D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\mediapipe\python\solutions\drawing_utils.py", line 24, in
from mediapipe.framework.formats import detection_pb2
File "D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\mediapipe\framework\formats\detection_pb2.py", line 8, in
from google.protobuf.internal import builder as builder
ImportError: cannot import name 'builder' from 'google.protobuf.internal' (D:\StabilityMatrix\Data\Packages\ComfyUI\venv\lib\site-packages\google\protobuf\internal_init
.py)

multiscontrolnet error when using only 1 out of 3 input image slots

Hi, I think I maybe have found another bug when using the multicontrol net stacker. If you leave any image input spaces (e.g. image 2 and / or image 3) empty, you get an error

"Error occurred when executing CR Multi-ControlNet Stack:

Comfyroll_ControlNetStack.controlnet_stacker() missing 2 required positional arguments: 'image_2' and 'image_3'

File "C:\sdxl\ComfyUI_windows_portable_nvidia_cu118_or_cpu\ComfyUI_windows_portable\ComfyUI\execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "C:\sdxl\ComfyUI_windows_portable_nvidia_cu118_or_cpu\ComfyUI_windows_portable\ComfyUI\execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "C:\sdxl\ComfyUI_windows_portable_nvidia_cu118_or_cpu\ComfyUI_windows_portable\ComfyUI\execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))"

json file attached (renamed as .txt)
multicontrolnet stacker error.txt

odd behavior of string to combo node - functions okay so maybe not an issue but

image

Here's a picture of a graph I'm working on. yesterday I had another browser tab open and was working on a different workflow. Today I noticed that I have pictures from that other workflow displayed in the String to Combo node itself. I use the String to Combo node in several places in this workflow, but this one location shows the images while the others don't. I have no idea why, just sharing in case this is something important. You can see from the show string node that the String to Combo Node is functioning correctly and passing the string and not the images, but how did it get the images from another workflow and store them?

Error loading 'CR Load Prompt Style'

I just updated comfyui and all the custom nodes from within comfyui manager, and now I got this error on the terminal window. Never had that before. It seems to be looking for a styles folder that I never had before. How do I fix this? should I just create an empty styles folder?

Here's the error:

[ERROR] An error occurred while retrieving information for the 'CR Load Prompt Style' node.
Traceback (most recent call last):
  File "C:\sd\ComfyUI_windows_portable\ComfyUI\server.py", line 418, in get_object_info
    out[x] = node_info(x)
  File "C:\sd\ComfyUI_windows_portable\ComfyUI\server.py", line 396, in node_info
    info['input'] = obj_class.INPUT_TYPES()
  File "C:\sd\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\animation_nodes\prompt.py", line 296, in INPUT_TYPES
    self.json_data, styles = load_styles_from_directory(style_directory)
  File "C:\sd\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\animation_nodes\json_functions.py", line 38, in load_styles_from_directory
    json_files = [os.path.join(directory, file) for file in os.listdir(directory) if file.endswith('.json') and os.path.isfile(os.path.join(directory, file))]
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\sd\\ComfyUI_windows_portable\\ComfyUI\\styles'

not found: CR Batch Process Switch

after install this node , I restart comfyUI, It comes error :

When loading the graph, the following node types were not found:
CR Batch Process Switch
Nodes that have failed to load will show as red on the graph.


I attach a screenshot that is infomation in my terminal :

__
os: ubuntu 20.04
new

VAE Decode Node raised an exception after installing Comfyroll

I tried to install Comfyroll by ComfyUI-Manager, but VAE Decode node raises an exception when i run the workflow as follows:

File "/root/ComfyUI/execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "/root/ComfyUI/execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "/root/ComfyUI/execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "/root/ComfyUI/nodes.py", line 267, in decode
return (vae.decode(samples["samples"]), )
File "/root/ComfyUI/comfy/sd.py", line 203, in decode
pixel_samples[x:x+batch_number] = torch.clamp((self.first_stage_model.decode(samples) + 1.0) / 2.0, min=0.0, max=1.0).cpu().float()
File "/root/ComfyUI/comfy/ldm/models/autoencoder.py", line 94, in decode
dec = self.decoder(z)
File "/root/miniconda3/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/root/ComfyUI/comfy/ldm/modules/diffusionmodules/model.py", line 716, in forward
h = self.mid.attn_1(h)
File "/root/miniconda3/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/root/ComfyUI/comfy/ldm/modules/diffusionmodules/model.py", line 295, in forward
out = xformers.ops.memory_efficient_attention(q, k, v, attn_bias=None, op=self.attention_op)
File "/root/miniconda3/lib/python3.10/site-packages/xformers/ops/fmha/init.py", line 193, in memory_efficient_attention
return _memory_efficient_attention(
File "/root/miniconda3/lib/python3.10/site-packages/xformers/ops/fmha/init.py", line 291, in _memory_efficient_attention
return _memory_efficient_attention_forward(
File "/root/miniconda3/lib/python3.10/site-packages/xformers/ops/fmha/init.py", line 307, in _memory_efficient_attention_forward
op = _dispatch_fw(inp, False)
File "/root/miniconda3/lib/python3.10/site-packages/xformers/ops/fmha/dispatch.py", line 96, in _dispatch_fw
return _run_priority_list(
File "/root/miniconda3/lib/python3.10/site-packages/xformers/ops/fmha/dispatch.py", line 53, in _run_priority_list
not_supported = op.not_supported_reasons(inp)
File "/root/miniconda3/lib/python3.10/site-packages/xformers/ops/fmha/triton.py", line 118, in not_supported_reasons
if _is_triton_available():
File "/root/miniconda3/lib/python3.10/site-packages/xformers/init.py", line 34, in func_wrapper
value = func()
File "/root/miniconda3/lib/python3.10/site-packages/xformers/init.py", line 47, in _is_triton_available
from xformers.triton.softmax import softmax as triton_softmax # noqa
File "/root/miniconda3/lib/python3.10/site-packages/xformers/triton/init.py", line 12, in
from .dropout import FusedDropoutBias, dropout # noqa
File "/root/miniconda3/lib/python3.10/site-packages/xformers/triton/dropout.py", line 13, in
import triton
File "/root/miniconda3/lib/python3.10/site-packages/triton/init.py", line 20, in
from .runtime import (
File "/root/miniconda3/lib/python3.10/site-packages/triton/runtime/init.py", line 1, in
from .autotuner import Config, Heuristics, autotune, heuristics
File "/root/miniconda3/lib/python3.10/site-packages/triton/runtime/autotuner.py", line 7, in
from ..compiler import OutOfResources
File "/root/miniconda3/lib/python3.10/site-packages/triton/compiler.py", line 22, in
import setuptools
File "/root/miniconda3/lib/python3.10/site-packages/setuptools/init.py", line 7, in
import _distutils_hack.override # noqa: F401
File "/root/miniconda3/lib/python3.10/site-packages/_distutils_hack/override.py", line 1, in
import('_distutils_hack').do_override()
File "/root/miniconda3/lib/python3.10/site-packages/_distutils_hack/init.py", line 77, in do_override
ensure_local_distutils()
File "/root/miniconda3/lib/python3.10/site-packages/_distutils_hack/init.py", line 64, in ensure_local_distutils
assert '_distutils' in core.file, core.file
AssertionError: /root/miniconda3/lib/python3.10/distutils/core.py

Cannot import ComfyUI_Comfyroll_CustomNodes: No module named 'pywavefront'

looks like the commit 2 weeks ago added a dependency in dev_nodes/dev_pil_3D.py. i don't see a requirements file (at least in the limited formats i'm familiar with) so i'm not sure how to adjust the code myself to make Comfy auto-install pywavefront. i'm running inside of a Stable Swarm Docker container, so it's not a simple thing to install dependencies manually. hoping for a patch to this lib to enable a reinstall from Comfy Manager

thanks!

NSInternalInconsistencyException - halftone

Mac OS 13.5
Testing out Comfyroll_Advanced_SDXL_TemplateA_v4_0 template.

ERROR:

~/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes/Comfyroll_Nodes.py:1042: UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail.
  fig, ax = plt.subplots(figsize=(width/100,height/100))
2023-08-17 07:47:21.102 python[35640:9373223] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow drag regions should only be invalidated on the Main Thread!'
*** First throw call stack:
(
	0   CoreFoundation                      0x00000001863eb154 __exceptionPreprocess + 176
	1   libobjc.A.dylib                     0x0000000185f0a4d4 objc_exception_throw + 60
	2   CoreFoundation                      0x00000001864143a0 _CFBundleGetValueForInfoKey + 0
	3   AppKit                              0x00000001895ba638 -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMarginsUnlessPostingDisabled] + 320
	4   AppKit                              0x00000001895a890c -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 816
	5   AppKit                              0x00000001895a85d0 -[NSWindow initWithContentRect:styleMask:backing:defer:] + 48
	6   _macosx.cpython-310-darwin.so       0x000000016ff8c9d8 -[Window initWithContentRect:styleMask:backing:defer:withManager:] + 52
	7   _macosx.cpython-310-darwin.so       0x000000016ff8fc14 FigureManager_init + 224
	8   python3.10                          0x000000010035c01c wrap_init + 20
	9   python3.10                          0x00000001002f9444 wrapperdescr_call + 392
	10  python3.10                          0x00000001002f0454 _PyObject_MakeTpCall + 360
	11  python3.10                          0x00000001003d26f0 call_function + 548
	12  python3.10                          0x00000001003cfb98 _PyEval_EvalFrameDefault + 25344
	13  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	14  python3.10                          0x00000001002f027c _PyObject_FastCallDictTstate + 272
	15  python3.10                          0x00000001002f0d48 _PyObject_Call_Prepend + 148
	16  python3.10                          0x000000010035bf10 slot_tp_init + 216
	17  python3.10                          0x00000001003509e4 type_call + 372
	18  python3.10                          0x00000001002f0454 _PyObject_MakeTpCall + 360
	19  python3.10                          0x00000001003d26f0 call_function + 548
	20  python3.10                          0x00000001003cfc18 _PyEval_EvalFrameDefault + 25472
	21  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	22  python3.10                          0x00000001002f2b00 method_vectorcall + 168
	23  python3.10                          0x00000001003d2608 call_function + 316
	24  python3.10                          0x00000001003cfb98 _PyEval_EvalFrameDefault + 25344
	25  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	26  python3.10                          0x00000001002f2b00 method_vectorcall + 168
	27  python3.10                          0x00000001003d2608 call_function + 316
	28  python3.10                          0x00000001003cfb98 _PyEval_EvalFrameDefault + 25344
	29  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	30  python3.10                          0x00000001002f2b00 method_vectorcall + 168
	31  python3.10                          0x00000001003d2608 call_function + 316
	32  python3.10                          0x00000001003cfb98 _PyEval_EvalFrameDefault + 25344
	33  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	34  python3.10                          0x00000001002f2b00 method_vectorcall + 168
	35  python3.10                          0x00000001002f0848 PyVectorcall_Call + 144
	36  python3.10                          0x00000001003cfeb8 _PyEval_EvalFrameDefault + 26144
	37  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	38  python3.10                          0x00000001002f0848 PyVectorcall_Call + 144
	39  python3.10                          0x00000001003cfeb8 _PyEval_EvalFrameDefault + 26144
	40  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	41  python3.10                          0x00000001002f0848 PyVectorcall_Call + 144
	42  python3.10                          0x00000001003cfeb8 _PyEval_EvalFrameDefault + 26144
	43  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	44  python3.10                          0x00000001002f0848 PyVectorcall_Call + 144
	45  python3.10                          0x00000001003cfeb8 _PyEval_EvalFrameDefault + 26144
	46  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	47  python3.10                          0x00000001003d2608 call_function + 316
	48  python3.10                          0x00000001003cfc90 _PyEval_EvalFrameDefault + 25592
	49  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	50  python3.10                          0x00000001002f2b00 method_vectorcall + 168
	51  python3.10                          0x00000001002f0848 PyVectorcall_Call + 144
	52  python3.10                          0x00000001003cfeb8 _PyEval_EvalFrameDefault + 26144
	53  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	54  python3.10                          0x00000001003d2608 call_function + 316
	55  python3.10                          0x00000001003cfc90 _PyEval_EvalFrameDefault + 25592
	56  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	57  python3.10                          0x00000001003d2608 call_function + 316
	58  python3.10                          0x00000001003cfc18 _PyEval_EvalFrameDefault + 25472
	59  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	60  python3.10                          0x00000001003d2608 call_function + 316
	61  python3.10                          0x00000001003cfc18 _PyEval_EvalFrameDefault + 25472
	62  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	63  python3.10                          0x00000001003d2608 call_function + 316
	64  python3.10                          0x00000001003cfc18 _PyEval_EvalFrameDefault + 25472
	65  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	66  python3.10                          0x00000001003d2608 call_function + 316
	67  python3.10                          0x00000001003cfb68 _PyEval_EvalFrameDefault + 25296
	68  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	69  python3.10                          0x00000001003cfeb8 _PyEval_EvalFrameDefault + 26144
	70  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	71  python3.10                          0x00000001003d2608 call_function + 316
	72  python3.10                          0x00000001003cfb68 _PyEval_EvalFrameDefault + 25296
	73  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	74  python3.10                          0x00000001003d2608 call_function + 316
	75  python3.10                          0x00000001003cfb68 _PyEval_EvalFrameDefault + 25296
	76  python3.10                          0x00000001003c978c _PyEval_Vector + 164
	77  python3.10                          0x00000001002f2b8c method_vectorcall + 308
	78  python3.10                          0x0000000100473428 thread_run + 72
	79  python3.10                          0x00000001004243f0 pythread_wrapper + 28
	80  libsystem_pthread.dylib             0x0000000186293fa8 _pthread_start + 148
	81  libsystem_pthread.dylib             0x000000018628eda0 thread_start + 8
)
libc++abi: terminating due to uncaught exception of type NSException

Modified Comfyroll_Nodes.py @ Line 13

import matplotlib.pyplot as plt
plt.switch_backend('Agg')

Not the right fix, but got it working.

New LORAs are not detected automatically

The built-in LORA loader node detects new LORAs dynamically without restarting the server, although it does require a page refresh. Do you think we could make it the same? (or even better, no page refresh)

Cheers, very useful nodes here

Not really an issue, More of a Question

Dear Mr. or Ms. Comfyroll, Rock of Fire person,

I am developing a custom workflow based on the Deforum Extension in A1111. As you can guess it is not easy. I have one challenge that I've not yet solved and that is changing prompts based on the frame number. It is easy enough to get the frame from the sequence loader that I'm using, but I'm not sure of the best way to change prompts. I think that your conditioning switch will likely be part of the solution. You have proven to be way more knowledgeable than I with these things; have you figured out a way to do this? Thanks in advice for any help you can offer!

Not found: CR Batch Process Switch

Hi there,

I I saw another issue with this name, trying to use the same workflow. Unfortunately, updating Python did not work for me (I'm on 3.11.6).

Here's an image of my terminal.
image

NameError: name 'io' is not defined

The (very powerful) CR Multiline Text node generates this error upon execution of the queue:

File "/ComfyUI/execution.py", line 153, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/ComfyUI/execution.py", line 83, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/ComfyUI/execution.py", line 76, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes/nodes/nodes.py", line 467, in text_multiline
for line in io.StringIO(text):
^^
NameError: name 'io' is not defined

Thank you

Error: CR Apply LoRA Stack: 'dict' object has no attribute 'cond_stage_model'

I am getting the model and clip from ttN pipeLoaderSDXL and putting it into CR Apply LoRA Stack.
I am outputting the model and clip to ttN pipeKSamplerSDXL.

Error occurred when executing CR Apply LoRA Stack:

'dict' object has no attribute 'cond_stage_model'

File "C:\Users\NAME\ComfyUI\execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "C:\Users\NAME\ComfyUI\execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "C:\Users\NAME\ComfyUI\execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "C:\Users\NAME\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\Comfyroll_Nodes.py", line 1042, in apply_lora_stack
model_lora, clip_lora = comfy.sd.load_lora_for_models(model_lora, clip_lora, lora, strength_model, strength_clip)
File "C:\Users\NAME\ComfyUI\comfy\sd.py", line 324, in load_lora_for_models
key_map = comfy.lora.model_lora_keys_clip(clip.cond_stage_model, key_map)

These nodes are not available.

image Hi, there.

After updating(by git pull), these nodes disappeared.. and i couldn't find comfyroll in manager(installing custom nodes).

How can i resolve this issue?

Thanks a lot.

[BUG] Pattern generators' output can't be merged to other `image` outputs

Steps to reproduce (just load the attached workflow):

  • make an initial generation (with the built-in KSampler node)
  • decode it from latent space (again, with the built-in node)
  • πŸ‘‰πŸ» generate a radial ramp for a simple vignette with the same dimentions (with CR Radial Gradient)
  • try to multiply them (with a built-in ImageBlend, too)

and here's the error I get:

Error occurred when executing ImageBlend:

The size of tensor a (3) must match the size of tensor b (4) at non-singleton dimension 3

  File "E:\SD\ComfyUI-portable\ComfyUI\execution.py", line 153, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
  File "E:\SD\ComfyUI-portable\ComfyUI\execution.py", line 83, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
  File "E:\SD\ComfyUI-portable\ComfyUI\execution.py", line 76, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
  File "E:\SD\ComfyUI-portable\ComfyUI\comfy_extras\nodes_post_processing.py", line 41, in blend_images
    blended_image = self.blend_mode(image1, image2, blend_mode)
  File "E:\SD\ComfyUI-portable\ComfyUI\comfy_extras\nodes_post_processing.py", line 50, in blend_mode
    return img1 * img2

What's weird, if I just encode the node's output to latent and decode it back as image right away, the error doesn't pop up.
Here's the test case workflow:
Test case

Feature Request Gift overlay projection

Hi Suzie
I want to use a gif hud animation in from of an static iamge, Im using your image overlay node but I get this errors do you think there could be a better way.
Screenshot 2023-12-28 212331

[BUG] 'Empty_latent' output of the 'CR Aspect Ratio' node is broken

Hello,
After updating the nodes and ComfyUI this morning, it seems that the 'Empty_latent' output of the 'CR Aspect Ratio' node has a small problem:

ERROR:root:!!! Exception during processing !!!
ERROR:root:Traceback (most recent call last):
  File "D:\ComfyUI_portable\ComfyUI\execution.py", line 153, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ComfyUI_portable\ComfyUI\execution.py", line 83, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ComfyUI_portable\ComfyUI\execution.py", line 76, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ComfyUI_portable\ComfyUI\nodes.py", line 1299, in sample
    return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ComfyUI_portable\ComfyUI\nodes.py", line 1256, in common_ksampler
    latent_image = latent["samples"]
                   ~~~~~~^^^^^^^^^^^
TypeError: 'int' object is not subscriptable

If I use the Width and Height outputs, everything works correctly.

ModuleNotFoundError: No module named 'halftone'

The error has reappeared.

Traceback (most recent call last):
File "H:\ComfyUI_windows_portable\ComfyUI\nodes.py", line 1647, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in call_with_frames_removed
File "H:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes_init
.py", line 1, in
from .Comfyroll_Nodes import *
File "H:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\Comfyroll_Nodes.py", line 24, in
from halftone import halftone
ModuleNotFoundError: No module named 'halftone'

[FEATURE] Output cktp_name from the CR_SelectModel

Hey, a small feature request:

On the select model node, can we have an output that exposes the cktp_name of the loaded model in addition to the model output ?
It's to have compatibility with some nodes like rgthree's context and SDParameterSaver.

Feature Request - Additional Cinematic aspect Ratio

Sorry, I couldn't find A Feature request or discussion area.

Is it possible to add the 1.85:1 widescreen and an anamorphic 2.39:1 widescreen Cinematic aspect Ratios to both SD and SDXL CR Aspect Ratio Nodes?

Thanks In Advance

Is it also possible to combine the CR Aspect Ratio Nodes into One node, maybe with a SD/SDXL switch. Reason: Because I know quite a few of us who switch between SD and SDXL within the same workflow - saves cluttering up multiple nodes that essentially do the same thing.

No module named 'comfy.controlnet'

G:\ComfyUI_windows_portable\python_embeded\lib\site-packages_distutils_hack_init_.py:33: UserWarning: Setuptools is replacing distutils.
warnings.warn("Setuptools is replacing distutils.")
Traceback (most recent call last):
File "G:\ComfyUI_windows_portable\ComfyUI\nodes.py", line 1693, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in call_with_frames_removed
File "G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes_init
.py", line 1, in
from .Comfyroll_Nodes import *
File "G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\Comfyroll_Nodes.py", line 16, in
import comfy.controlnet
ModuleNotFoundError: No module named 'comfy.controlnet'

Cannot import G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes module for custom nodes: No module named 'comfy.controlnet'
Registered sys.path: ['G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\init.py', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_pycocotools', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_oneformer', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_mmpkg', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_midas_repo', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\custom_detectron2', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\comfyui_controlnet_aux\src\controlnet_aux', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\comfyui_controlnet_aux\src', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_Comfyroll_CustomNodes\comfy', 'G:\ComfyUI_windows_portable\ComfyUI\comfy', 'G:\ComfyUI_windows_portable\python_embeded\lib\site-packages\git\ext\gitdb', 'G:\ComfyUI_windows_portable\ComfyUI', 'G:\ComfyUI_windows_portable\python_embeded\python310.zip', 'G:\ComfyUI_windows_portable\python_embeded', 'G:\ComfyUI_windows_portable\python_embeded\lib\site-packages', 'G:\ComfyUI_windows_portable\python_embeded\lib\site-packages\win32', 'G:\ComfyUI_windows_portable\python_embeded\lib\site-packages\win32\lib', 'G:\ComfyUI_windows_portable\python_embeded\lib\site-packages\Pythonwin', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\modules', 'G:\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\subpack', '../..']

Automati CR index increment start end

Hello, thanks for your contribution
I am trying to create a workflow using the CR XY plots
I need some help figuring out how which node should I use as primitive index starting from 0 with increment 1 ending at 240 which is X*Y plot number of images to create without having to manually click queue prompt 240 times

Thank you

REQUEST: Color Randomizer

Can you create a node that will generate random color values to pass?

Imagine the node should have 10 widgets:
(Red Range)

    • Red Max
    • Red Min
      3-4. Yellow Range +(max/min)
      5-6. Blue Range +(max/min)
      7-8. Alpha Range (+max/min)
  1. seed
  2. full random/individual (basically letting user click this "on" & all the RGBA are set 0-100, or 0-1.0, whatever you choose)

The outputs should be
RGB - ignores alpha
RGBA
HEX - ignores alpha

The HEX outputs connects to your HEX-based color pattern nodes when they are converted to widgets.

I tried this myself & failed miserably:

import random
class CR_ColorGradient:
    @classmethod
    def INPUT_TYPES(cls):
        return {
            "required": {
                "width": ("INT", {"default": 512, "min": 64, "max": 2048}),
                "height": ("INT", {"default": 512, "min": 64, "max": 2048}),
                "start_color": ("COLORS",),
                "end_color": ("COLORS",),
                "gradient_distance": ("FLOAT", {"default": 1, "min": 0, "max": 2, "step": 0.05}),
                "linear_transition": ("FLOAT", {"default": 0.5, "min": 0, "max": 1, "step": 0.05}),
                "orientation": (["vertical", "horizontal"],),
                "random_colors": ("BOOLEAN", {"default": False}),
            },
            "optional": {
                "start_color_hex": ("STRING", {"multiline": False, "default": "#000000"}),
                "end_color_hex": ("STRING", {"multiline": False, "default": "#000000"}),
            }
        }

    RETURN_TYPES = ("IMAGE",)
    FUNCTION = "draw"
    CATEGORY = icons.get("Comfyroll/Graphics/Pattern")

    def draw(self, width, height, start_color, end_color, orientation,
             linear_transition=0.5, gradient_distance=1,
             start_color_hex='#000000', end_color_hex='#000000',
             random_colors=False):
        if random_colors:
            start_color_hex = "#{:02X}{:02X}{:02X}".format(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
            end_color_hex = "#{:02X}{:02X}{:02X}".format(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))

        # Rest of the draw method remains the same

# Change the name of the node

DefaultCPUAllocator: not enough memory: you tried to allocate 14643363840 bytes.

DefaultCPUAllocator: not enough memory: you tried to allocate 14643363840 bytes.

enlarge a 512*900 picture 1 or 4 times bigger, need the same size of video card
memory 。 a total of physical video card 8g memory + 1 g of shared memory.

After batch enlargement, combine video failure ,requires a lot of memory. get this error DefaultCPUAllocator: not enough memory: you tried to allocate 14643363840 bytes.

My video card is 8g.

588a44bee777bcd7c832c3af08a9cee7

What does resize widith mean

Banner Size Custom node

Hi Suzie, here is the code for the Banner Size custom node

# quick node to set banner standard sizes
# by Byronimo

class BSBannerSize:
    def __init__(self):
        pass

    @classmethod
    def INPUT_TYPES(s):
        return {
                "required": {
                    "aspectRatio": ([
                    "Large Rectangle - 336x280", 
                    "Medium Rectangle - 300x250", 
                    "Small Rectangle - 180x150",
                    "Square - 250x250", 
                    "Small Square - 200x200",
                    "Button - 125x125", 
                    "Half Page - 300x600",
                    "Vertical Banner - 120x240", 
                    "Wide Skyscraper - 160x600", 
                    "Skyscraper - 120x600", 
                    "Billboard - 970x250", 
                    "Portrait - 300x1050", 
                    "Banner - 468x60", 
                    "Leaderboard - 728x90"],)
            }
        }
    RETURN_TYPES = ("INT", "INT")
    RETURN_NAMES = ("Width", "Height")
    FUNCTION = "BannerSizes"
    CATEGORY = "image"

    def BannerSizes(self, width, height, aspectRatio):
        if aspectRatio == "Large Rectangle - 336x280":
            width, height = 336, 280
        elif aspectRatio == "Medium Rectangle - 300x250":
            width, height = 300, 250
        elif aspectRatio == "Small Rectangle - 180x150":
            width, height = 180, 150
        elif aspectRatio == "Square - 250x250":
            width, height = 250, 250
        elif aspectRatio == "Small Square - 200x200":
            width, height = 200	, 200
        elif aspectRatio == "Button - 125x125":
            width, height = 125	, 125
        elif aspectRatio == "Half Page - 300x600":
            width, height = 300, 600
        elif aspectRatio == "Vertical Banner - 120x240":
            width, height = 120, 240
        elif aspectRatio == "Wide Skyscraper - 160x600":
            width, height = 160, 600
        elif aspectRatio == "Skyscraper - 120x600":
            width, height = 120, 600
        elif aspectRatio == "Billboard - 970x250":
            width, height = 970, 250
        elif aspectRatio == "Portrait - 300x1050":
            width, height = 300, 1050
        elif aspectRatio == "Banner - 468x60":
            width, height = 168, 60
        elif aspectRatio == "Leaderboard - 728x90":
            width, height = 728, 90
        return(width, height)

            
NODE_CLASS_MAPPINGS = {
    "Byronimo_BannerSizes": BSBannerSize
}
NODE_DISPLAY_NAME_MAPPINGS = {
    "Byronimo_BannerSizes": "Banner Sizes"
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.