fix:Renamed all widget_name named seed_num to seed #86

This commit is contained in:
yolain
2024-03-16 22:25:42 +08:00
parent 0e6c3999d8
commit 25e91012f6
6 changed files with 68 additions and 56 deletions
+1
View File
@@ -47,6 +47,7 @@ you need to run `pip install -r requirements.txt` to install python dependencies
**v1.1.1 (2024/3/16)**
- Adjust all widget names named seed_num to seed
- Remove forced **control_before_generate** settings。 If you want to use control_before_generate, change widget_value_control_mode to before in system settings
- Added `easy imageRemBg` - The default is BriaAI's RMBG-1.4 model, which removes the background effect more and faster
+1
View File
@@ -36,6 +36,7 @@
**v1.1.1 (2024/3/16)**
- 将所有 **seed_num** 调整回 **seed**
- 修补官方BUG: 当control_mode为before 在首次加载页面时未修改节点中widget名称为 control_before_generate
- 去除强制**control_before_generate**设定
- 增加 `easy imageRemBg` - 默认为BriaAI的RMBG-1.4模型, 移除背景效果更加,速度更快
+56 -51
View File
@@ -10,7 +10,7 @@ from urllib.request import urlopen
from PIL import Image
from server import PromptServer
from nodes import MAX_RESOLUTION, LatentFromBatch, RepeatLatentBatch, NODE_CLASS_MAPPINGS as ALL_NODE_CLASS_MAPPINGS, ConditioningSetMask, ConditioningConcat, CLIPTextEncode
from nodes import MAX_RESOLUTION, LatentFromBatch, RepeatLatentBatch, NODE_CLASS_MAPPINGS as ALL_NODE_CLASS_MAPPINGS, ConditioningSetMask, ConditioningConcat, CLIPTextEncode, VAEEncodeForInpaint
from .config import MAX_SEED_NUM, BASE_RESOLUTIONS, RESOURCES_DIR, INPAINT_DIR, FOOOCUS_STYLES_DIR, FOOOCUS_INPAINT_HEAD, FOOOCUS_INPAINT_PATCH
from .log import log_node_info, log_node_error, log_node_warn
from .wildcards import process_with_loras, get_wildcard_list, process
@@ -78,7 +78,7 @@ class wildcardsPrompt:
"text": ("STRING", {"default": "", "multiline": True, "dynamicPrompts": False, "placeholder": "(Support Lora Block Weight and wildcard)"}),
"Select to add LoRA": (["Select the LoRA to add to the text"] + folder_paths.get_filename_list("loras"),),
"Select to add Wildcard": (["Select the Wildcard to add to the text"] + wildcard_list,),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO", "my_unique_id": "UNIQUE_ID"},
}
@@ -93,15 +93,15 @@ class wildcardsPrompt:
@staticmethod
def main(*args, **kwargs):
prompt = kwargs["prompt"] if "prompt" in kwargs else None
seed_num = kwargs["seed_num"]
seed = kwargs["seed"]
# Clean loaded_objects
if prompt:
easyCache.update_loaded_objects(prompt)
text = kwargs['text']
populated_text = process(text, seed_num)
return {"ui": {"value": [seed_num]}, "result": (text, populated_text)}
populated_text = process(text, seed)
return {"ui": {"value": [seed]}, "result": (text, populated_text)}
# 负面提示词
class negativePrompt:
@@ -455,7 +455,7 @@ class latentNoisy:
"start_at_step": ("INT", {"default": 0, "min": 0, "max": 10000}),
"end_at_step": ("INT", {"default": 10000, "min": 1, "max": 10000}),
"source": (["CPU", "GPU"],),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": 0xffffffffffffffff}),
"seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}),
},
"optional": {
"pipe": ("PIPE_LINE",),
@@ -469,7 +469,7 @@ class latentNoisy:
CATEGORY = "EasyUse/Latent"
def run(self, sampler_name, scheduler, steps, start_at_step, end_at_step, source, seed_num, pipe=None, optional_model=None, optional_latent=None):
def run(self, sampler_name, scheduler, steps, start_at_step, end_at_step, source, seed, pipe=None, optional_model=None, optional_latent=None):
model = optional_model if optional_model is not None else pipe["model"]
batch_size = pipe["loader_settings"]["batch_size"]
empty_latent_height = pipe["loader_settings"]["empty_latent_height"]
@@ -478,7 +478,7 @@ class latentNoisy:
if optional_latent is not None:
samples = optional_latent
else:
torch.manual_seed(seed_num)
torch.manual_seed(seed)
if source == "CPU":
device = "cpu"
else:
@@ -596,21 +596,21 @@ class easySeed:
def INPUT_TYPES(s):
return {
"required": {
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO", "my_unique_id": "UNIQUE_ID"},
}
RETURN_TYPES = ("INT:seed",)
RETURN_NAMES = ("seed_num",)
RETURN_TYPES = ("INT",)
RETURN_NAMES = ("seed",)
FUNCTION = "doit"
CATEGORY = "EasyUse/Seed"
OUTPUT_NODE = True
def doit(self, seed_num=0, prompt=None, extra_pnginfo=None, my_unique_id=None):
return seed_num,
def doit(self, seed=0, prompt=None, extra_pnginfo=None, my_unique_id=None):
return seed,
# 全局随机种
class globalSeed:
@@ -1744,7 +1744,7 @@ class samplerSettings:
"sampler_name": (comfy.samplers.KSampler.SAMPLERS,),
"scheduler": (comfy.samplers.KSampler.SCHEDULERS,),
"denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"optional": {
"image_to_latent": ("IMAGE",),
@@ -1761,7 +1761,7 @@ class samplerSettings:
FUNCTION = "settings"
CATEGORY = "EasyUse/PreSampling"
def settings(self, pipe, steps, cfg, sampler_name, scheduler, denoise, seed_num, image_to_latent=None, latent=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
def settings(self, pipe, steps, cfg, sampler_name, scheduler, denoise, seed, image_to_latent=None, latent=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
# 图生图转换
vae = pipe["vae"]
batch_size = pipe["loader_settings"]["batch_size"] if "batch_size" in pipe["loader_settings"] else 1
@@ -1785,7 +1785,7 @@ class samplerSettings:
"samples": samples,
"images": images,
"seed": seed_num,
"seed": seed,
"loader_settings": {
**pipe["loader_settings"],
@@ -1800,7 +1800,7 @@ class samplerSettings:
del pipe
return {"ui": {"value": [seed_num]}, "result": (new_pipe,)}
return {"ui": {"value": [seed]}, "result": (new_pipe,)}
# 预采样设置(高级)
class samplerSettingsAdvanced:
@@ -1819,7 +1819,7 @@ class samplerSettingsAdvanced:
"start_at_step": ("INT", {"default": 0, "min": 0, "max": 10000}),
"end_at_step": ("INT", {"default": 10000, "min": 0, "max": 10000}),
"add_noise": (["enable", "disable"],),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"optional": {
"image_to_latent": ("IMAGE",),
@@ -1836,7 +1836,7 @@ class samplerSettingsAdvanced:
FUNCTION = "settings"
CATEGORY = "EasyUse/PreSampling"
def settings(self, pipe, steps, cfg, sampler_name, scheduler, start_at_step, end_at_step, add_noise, seed_num, image_to_latent=None, latent=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
def settings(self, pipe, steps, cfg, sampler_name, scheduler, start_at_step, end_at_step, add_noise, seed, image_to_latent=None, latent=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
# 图生图转换
vae = pipe["vae"]
batch_size = pipe["loader_settings"]["batch_size"] if "batch_size" in pipe["loader_settings"] else 1
@@ -1860,7 +1860,7 @@ class samplerSettingsAdvanced:
"samples": samples,
"images": images,
"seed": seed_num,
"seed": seed,
"loader_settings": {
**pipe["loader_settings"],
@@ -1877,7 +1877,7 @@ class samplerSettingsAdvanced:
del pipe
return {"ui": {"value": [seed_num]}, "result": (new_pipe,)}
return {"ui": {"value": [seed]}, "result": (new_pipe,)}
# 预采样设置(噪声注入)
class samplerSettingsNoiseIn:
@@ -1895,7 +1895,7 @@ class samplerSettingsNoiseIn:
"sampler_name": (comfy.samplers.KSampler.SAMPLERS,),
"scheduler": (comfy.samplers.KSampler.SCHEDULERS,),
"denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"optional": {
"optional_noise_seed": ("INT",{"forceInput": True}),
@@ -1964,18 +1964,18 @@ class samplerSettingsNoiseIn:
except:
return None
def settings(self, pipe, factor, steps, cfg, sampler_name, scheduler, denoise, seed_num, optional_noise_seed=None, optional_latent=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
def settings(self, pipe, factor, steps, cfg, sampler_name, scheduler, denoise, seed, optional_noise_seed=None, optional_latent=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
latent = optional_latent if optional_latent is not None else pipe["samples"]
model = pipe["model"]
# generate base noise
batch_size, _, height, width = latent["samples"].shape
generator = torch.manual_seed(seed_num)
generator = torch.manual_seed(seed)
base_noise = torch.randn((1, 4, height, width), dtype=torch.float32, device="cpu", generator=generator).repeat(batch_size, 1, 1, 1).cpu()
# generate variation noise
if optional_noise_seed is None or optional_noise_seed == seed_num:
optional_noise_seed = seed_num+1
if optional_noise_seed is None or optional_noise_seed == seed:
optional_noise_seed = seed+1
generator = torch.manual_seed(optional_noise_seed)
variation_noise = torch.randn((batch_size, 4, height, width), dtype=torch.float32, device="cpu",
generator=generator).cpu()
@@ -2015,7 +2015,7 @@ class samplerSettingsNoiseIn:
"samples": work_latent,
"images": pipe['images'],
"seed": seed_num,
"seed": seed,
"loader_settings": {
**pipe["loader_settings"],
@@ -2052,7 +2052,7 @@ class sdTurboSettings:
"unsharp_kernel_size": ("INT", {"default": 3, "min": 1, "max": 21, "step": 1}),
"unsharp_sigma": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 10.0, "step": 0.01, "round": False}),
"unsharp_strength": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 10.0, "step": 0.01, "round": False}),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO", "my_unique_id": "UNIQUE_ID"},
}
@@ -2064,7 +2064,7 @@ class sdTurboSettings:
FUNCTION = "settings"
CATEGORY = "EasyUse/PreSampling"
def settings(self, pipe, steps, cfg, sampler_name, eta, s_noise, upscale_ratio, start_step, end_step, upscale_n_step, unsharp_kernel_size, unsharp_sigma, unsharp_strength, seed_num, prompt=None, extra_pnginfo=None, my_unique_id=None):
def settings(self, pipe, steps, cfg, sampler_name, eta, s_noise, upscale_ratio, start_step, end_step, upscale_n_step, unsharp_kernel_size, unsharp_sigma, unsharp_strength, seed, prompt=None, extra_pnginfo=None, my_unique_id=None):
model = pipe['model']
# sigma
timesteps = torch.flip(torch.arange(1, 11) * 100 - 1, (0,))[:steps]
@@ -2110,7 +2110,7 @@ class sdTurboSettings:
"samples": pipe["samples"],
"images": pipe["images"],
"seed": seed_num,
"seed": seed,
"loader_settings": {
**pipe["loader_settings"],
@@ -2125,7 +2125,7 @@ class sdTurboSettings:
del pipe
return {"ui": {"value": [seed_num]}, "result": (new_pipe,)}
return {"ui": {"value": [seed]}, "result": (new_pipe,)}
# cascade预采样参数
@@ -2145,7 +2145,7 @@ class cascadeSettings:
"sampler_name": (comfy.samplers.KSampler.SAMPLERS, {"default":"euler_ancestral"}),
"scheduler": (comfy.samplers.KSampler.SCHEDULERS, {"default":"simple"}),
"denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"optional": {
"image_to_latent_c": ("IMAGE",),
@@ -2161,7 +2161,7 @@ class cascadeSettings:
FUNCTION = "settings"
CATEGORY = "EasyUse/PreSampling"
def settings(self, pipe, encode_vae_name, decode_vae_name, steps, cfg, sampler_name, scheduler, denoise, seed_num, model=None, image_to_latent_c=None, latent_c=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
def settings(self, pipe, encode_vae_name, decode_vae_name, steps, cfg, sampler_name, scheduler, denoise, seed, model=None, image_to_latent_c=None, latent_c=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
images, samples_c = None, None
samples = pipe['samples']
batch_size = pipe["loader_settings"]["batch_size"] if "batch_size" in pipe["loader_settings"] else 1
@@ -2211,7 +2211,7 @@ class cascadeSettings:
"samples": samples,
"images": images,
"seed": seed_num,
"seed": seed,
"loader_settings": {
**pipe["loader_settings"],
@@ -2230,7 +2230,7 @@ class cascadeSettings:
del pipe
return {"ui": {"value": [seed_num]}, "result": (new_pipe,)}
return {"ui": {"value": [seed]}, "result": (new_pipe,)}
# layerDiffusion预采样参数
class layerDiffusionSettings:
@@ -2250,11 +2250,12 @@ class layerDiffusionSettings:
"sampler_name": (comfy.samplers.KSampler.SAMPLERS, {"default": "euler_ancestral"}),
"scheduler": (comfy.samplers.KSampler.SCHEDULERS, {"default": "simple"}),
"denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"optional": {
"image": ("IMAGE",),
"blended_image": ("IMAGE",),
"mask": ("MASK",),
# "latent": ("LATENT",),
# "blended_latent": ("LATENT",),
},
@@ -2277,7 +2278,7 @@ class layerDiffusionSettings:
method = LayerMethod.FG_BLEND_TO_BG
return method
def settings(self, pipe, method, weight, steps, cfg, sampler_name, scheduler, denoise, seed_num, image=None, blended_image=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
def settings(self, pipe, method, weight, steps, cfg, sampler_name, scheduler, denoise, seed, image=None, blended_image=None, mask=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
blend_samples = pipe['blend_samples'] if "blend_samples" in pipe else None
vae = pipe["vae"]
batch_size = pipe["loader_settings"]["batch_size"] if "batch_size" in pipe["loader_settings"] else 1
@@ -2286,7 +2287,11 @@ class layerDiffusionSettings:
if image is not None or "image" in pipe:
image = image if image is not None else pipe['image']
samples = {"samples": vae.encode(image[:,:,:,:3])}
if mask is not None:
print('inpaint')
samples, = VAEEncodeForInpaint().encode(vae, image, mask)
else:
samples = {"samples": vae.encode(image[:,:,:,:3])}
samples = RepeatLatentBatch().repeat(samples, batch_size)[0]
images = image
elif "samp_images" in pipe:
@@ -2317,7 +2322,7 @@ class layerDiffusionSettings:
"samples": samples,
"blend_samples": blend_samples,
"images": images,
"seed": seed_num,
"seed": seed,
"loader_settings": {
**pipe["loader_settings"],
@@ -2334,7 +2339,7 @@ class layerDiffusionSettings:
del pipe
return {"ui": {"value": [seed_num]}, "result": (new_pipe,)}
return {"ui": {"value": [seed]}, "result": (new_pipe,)}
# 预采样设置(layerDiffuse附加)
class layerDiffusionSettingsADDTL:
@@ -2410,7 +2415,7 @@ class dynamicCFGSettings:
"sampler_name": (comfy.samplers.KSampler.SAMPLERS,),
"scheduler": (comfy.samplers.KSampler.SCHEDULERS,),
"denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"optional":{
"image_to_latent": ("IMAGE",),
@@ -2427,7 +2432,7 @@ class dynamicCFGSettings:
FUNCTION = "settings"
CATEGORY = "EasyUse/PreSampling"
def settings(self, pipe, steps, cfg, cfg_mode, cfg_scale_min,sampler_name, scheduler, denoise, seed_num, image_to_latent=None, latent=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
def settings(self, pipe, steps, cfg, cfg_mode, cfg_scale_min,sampler_name, scheduler, denoise, seed, image_to_latent=None, latent=None, prompt=None, extra_pnginfo=None, my_unique_id=None):
dynamic_thresh = DynThresh(7.0, 1.0,"CONSTANT", 0, cfg_mode, cfg_scale_min, 0, 0, 999, False,
@@ -2471,7 +2476,7 @@ class dynamicCFGSettings:
"samples": samples,
"images": images,
"seed": seed_num,
"seed": seed,
"loader_settings": {
**pipe["loader_settings"],
@@ -2485,7 +2490,7 @@ class dynamicCFGSettings:
del pipe
return {"ui": {"value": [seed_num]}, "result": (new_pipe,)}
return {"ui": {"value": [seed]}, "result": (new_pipe,)}
# 动态CFG
class dynamicThresholdingFull:
@@ -2554,7 +2559,7 @@ class samplerFull(LayerDiffuse):
"save_prefix": ("STRING", {"default": "ComfyUI"}),
},
"optional": {
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"model": ("MODEL",),
"positive": ("CONDITIONING",),
"negative": ("CONDITIONING",),
@@ -2575,7 +2580,7 @@ class samplerFull(LayerDiffuse):
FUNCTION = "run"
CATEGORY = "EasyUse/Sampler"
def run(self, pipe, steps, cfg, sampler_name, scheduler, denoise, image_output, link_id, save_prefix, seed_num=None, model=None, positive=None, negative=None, latent=None, vae=None, clip=None, xyPlot=None, tile_size=None, prompt=None, extra_pnginfo=None, my_unique_id=None, force_full_denoise=False, disable_noise=False, downscale_options=None):
def run(self, pipe, steps, cfg, sampler_name, scheduler, denoise, image_output, link_id, save_prefix, seed=None, model=None, positive=None, negative=None, latent=None, vae=None, clip=None, xyPlot=None, tile_size=None, prompt=None, extra_pnginfo=None, my_unique_id=None, force_full_denoise=False, disable_noise=False, downscale_options=None):
# Clean loaded_objects
easyCache.update_loaded_objects(prompt)
@@ -2587,7 +2592,7 @@ class samplerFull(LayerDiffuse):
samp_vae = vae if vae is not None else pipe["vae"]
samp_clip = clip if clip is not None else pipe["clip"]
samp_seed = seed_num if seed_num is not None else pipe['seed']
samp_seed = seed if seed is not None else pipe['seed']
steps = steps if steps is not None else pipe['loader_settings']['steps']
start_step = pipe['loader_settings']['start_step'] if 'start_step' in pipe['loader_settings'] else 0
@@ -3254,7 +3259,7 @@ class samplerCascadeFull:
"image_output": (["Hide", "Preview", "Save", "Hide/Save", "Sender", "Sender/Save"],),
"link_id": ("INT", {"default": 0, "min": 0, "max": sys.maxsize, "step": 1}),
"save_prefix": ("STRING", {"default": "ComfyUI"}),
"seed_num": ("INT:seed", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
"seed": ("INT", {"default": 0, "min": 0, "max": MAX_SEED_NUM}),
},
"optional": {
@@ -3274,7 +3279,7 @@ class samplerCascadeFull:
FUNCTION = "run"
CATEGORY = "EasyUse/Sampler"
def run(self, pipe, encode_vae_name, decode_vae_name, steps, cfg, sampler_name, scheduler, denoise, image_output, link_id, save_prefix, seed_num, image_to_latent_c=None, latent_c=None, model_c=None, tile_size=None, prompt=None, extra_pnginfo=None, my_unique_id=None, force_full_denoise=False, disable_noise=False):
def run(self, pipe, encode_vae_name, decode_vae_name, steps, cfg, sampler_name, scheduler, denoise, image_output, link_id, save_prefix, seed, image_to_latent_c=None, latent_c=None, model_c=None, tile_size=None, prompt=None, extra_pnginfo=None, my_unique_id=None, force_full_denoise=False, disable_noise=False):
encode_vae_name = encode_vae_name if encode_vae_name is not None else pipe['loader_settings']['encode_vae_name']
decode_vae_name = decode_vae_name if decode_vae_name is not None else pipe['loader_settings']['decode_vae_name']
@@ -3321,7 +3326,7 @@ class samplerCascadeFull:
samp_negative = pipe["negative"]
samp_samples = samples_c
samp_seed = seed_num if seed_num is not None else pipe['seed']
samp_seed = seed if seed is not None else pipe['seed']
steps = steps if steps is not None else pipe['loader_settings']['steps']
start_step = pipe['loader_settings']['start_step'] if 'start_step' in pipe['loader_settings'] else 0
@@ -3386,7 +3391,7 @@ class samplerCascadeFull:
"samples": samples_b,
"images": images,
"seed": seed_num,
"seed": seed,
"loader_settings": {
**pipe["loader_settings"],
+3 -1
View File
@@ -79,7 +79,9 @@ def find_wildcards_seed(clip_id, text, prompt):
if id != 0:
if id == wildcard_id:
wildcard_node = prompt[wildcard_id]
seed = wildcard_node["inputs"]["seed_num"] if "seed_num" in wildcard_node["inputs"] else None
seed = wildcard_node["inputs"]["seed"] if "seed" in wildcard_node["inputs"] else None
if seed is None:
seed = wildcard_node["inputs"]["seed_num"] if "seed_num" in wildcard_node["inputs"] else None
return seed
else:
return find_link_clip_id(id, seed, wildcard_id)
+5 -3
View File
@@ -97,11 +97,13 @@ function widgetLogic(node, widget) {
}
if (widget.name === 'add_noise') {
if (widget.value === "disable") {
toggleWidget(node, findWidgetByName(node, 'seed_num'))
toggleWidget(node, findWidgetByName(node, 'seed'))
toggleWidget(node, findWidgetByName(node, 'control_before_generate'))
toggleWidget(node, findWidgetByName(node, 'control_after_generate'))
} else {
toggleWidget(node, findWidgetByName(node, 'seed_num'), true)
toggleWidget(node, findWidgetByName(node, 'seed'), true)
toggleWidget(node, findWidgetByName(node, 'control_before_generate'), true)
toggleWidget(node, findWidgetByName(node, 'control_after_generate'), true)
}
updateNodeHeight(node)
}
@@ -791,7 +793,7 @@ app.registerExtension({
// serialize: false
// })
// seed_widget.linkedWidgets = [seed_control]
const seed_widget = this.widgets.find(w => w.name == 'seed_num')
const seed_widget = this.widgets.find(w => ['seed_num','seed'].includes(w.name))
const seed_control = this.widgets.find(w=> ['control_before_generate','control_after_generate'].includes(w.name))
if(nodeData.name == 'easy seed'){
this.addWidget("button", "🎲 Manual Random Seed", null, _=>{
+2 -1
View File
@@ -30,7 +30,8 @@ const widgetMapping = {
"sampler_name": "sampler_name",
"scheduler": "scheduler",
"denoise": "denoise",
"seed_num": "seed_num"
"seed_num": "seed_num",
"seed": "seed"
},
"kSampler":{
"image_output": "image_output",