From fc964047e7f6e837eca776e7c34706c04690ecfd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jukka=20Sepp=C3=A4nen?=
<40791699+kijai@users.noreply.github.com>
Date: Wed, 17 Jun 2026 03:12:44 +0300
Subject: [PATCH 1/5] feat: Support text generation with Qwen3-VL (CORE-276)
(#14298)
---
comfy/sd.py | 15 +++
comfy/text_encoders/ideogram4.py | 41 +++++++
comfy/text_encoders/llama.py | 35 +++++-
comfy/text_encoders/qwen35.py | 35 ++----
comfy/text_encoders/qwen3vl.py | 193 +++++++++++++++++++++++++++++++
comfy/text_encoders/qwen_vl.py | 26 +++++
comfy_extras/nodes_textgen.py | 2 +-
7 files changed, 317 insertions(+), 30 deletions(-)
create mode 100644 comfy/text_encoders/qwen3vl.py
diff --git a/comfy/sd.py b/comfy/sd.py
index a66ba1bfb..688e6db90 100644
--- a/comfy/sd.py
+++ b/comfy/sd.py
@@ -67,6 +67,7 @@ import comfy.text_encoders.anima
import comfy.text_encoders.ace15
import comfy.text_encoders.longcat_image
import comfy.text_encoders.qwen35
+import comfy.text_encoders.qwen3vl
import comfy.text_encoders.ernie
import comfy.text_encoders.gemma4
import comfy.text_encoders.cogvideo
@@ -1353,6 +1354,8 @@ class TEModel(Enum):
GEMMA_4_31B = 31
T5_GEMMA = 32
GPT_OSS_20B = 33
+ QWEN3VL_4B = 34
+ QWEN3VL_8B = 35
def detect_te_model(sd):
@@ -1414,6 +1417,8 @@ def detect_te_model(sd):
if weight.shape[0] == 5120:
return TEModel.QWEN35_27B
return TEModel.QWEN35_2B
+ if "model.visual.deepstack_merger_list.0.norm.weight" in sd: # DeepStack is unique to Qwen3-VL
+ return TEModel.QWEN3VL_4B if sd["model.visual.merger.linear_fc2.weight"].shape[0] == 2560 else TEModel.QWEN3VL_8B
if "model.layers.0.post_attention_layernorm.weight" in sd:
weight = sd['model.layers.0.post_attention_layernorm.weight']
if 'model.layers.0.self_attn.q_norm.weight' in sd:
@@ -1612,6 +1617,16 @@ def load_text_encoder_state_dicts(state_dicts=[], embedding_directory=None, clip
qwen35_type = {TEModel.QWEN35_08B: "qwen35_08b", TEModel.QWEN35_2B: "qwen35_2b", TEModel.QWEN35_4B: "qwen35_4b", TEModel.QWEN35_9B: "qwen35_9b", TEModel.QWEN35_27B: "qwen35_27b"}[te_model]
clip_target.clip = comfy.text_encoders.qwen35.te(**llama_detect(clip_data), model_type=qwen35_type)
clip_target.tokenizer = comfy.text_encoders.qwen35.tokenizer(model_type=qwen35_type)
+ elif te_model in (TEModel.QWEN3VL_4B, TEModel.QWEN3VL_8B):
+ if clip_type == CLIPType.IDEOGRAM4 and te_model == TEModel.QWEN3VL_8B: # Ideogram4 reuses the full Qwen3-VL-8B (13-layer tap for conditioning + multimodal generate).
+ clip_data[0] = comfy.utils.state_dict_prefix_replace(clip_data[0], {"model.language_model.": "model.", "model.visual.": "visual.", "lm_head.": "model.lm_head."})
+ clip_target.clip = comfy.text_encoders.ideogram4.te_qwen3vl(**llama_detect(clip_data))
+ clip_target.tokenizer = comfy.text_encoders.ideogram4.Ideogram4Qwen3VLTokenizer
+ else:
+ clip_data[0] = comfy.utils.state_dict_prefix_replace(clip_data[0], {"model.language_model.": "model.", "model.visual.": "visual.", "lm_head.": "model.lm_head."})
+ qwen3vl_type = {TEModel.QWEN3VL_4B: "qwen3vl_4b", TEModel.QWEN3VL_8B: "qwen3vl_8b"}[te_model]
+ clip_target.clip = comfy.text_encoders.qwen3vl.te(**llama_detect(clip_data), model_type=qwen3vl_type)
+ clip_target.tokenizer = comfy.text_encoders.qwen3vl.tokenizer(model_type=qwen3vl_type)
elif te_model == TEModel.QWEN3_06B:
clip_target.clip = comfy.text_encoders.anima.te(**llama_detect(clip_data))
clip_target.tokenizer = comfy.text_encoders.anima.AnimaTokenizer
diff --git a/comfy/text_encoders/ideogram4.py b/comfy/text_encoders/ideogram4.py
index 84243772d..151b43c53 100644
--- a/comfy/text_encoders/ideogram4.py
+++ b/comfy/text_encoders/ideogram4.py
@@ -9,6 +9,7 @@ import os
from transformers import Qwen2Tokenizer
import comfy.text_encoders.llama
+import comfy.text_encoders.qwen3vl
from comfy import sd1_clip
# Reference taps outputs of layers (0,3,...,35); comfy captures layer inputs, offset by +1.
@@ -77,3 +78,43 @@ def te(dtype_llama=None, llama_quantization_metadata=None):
model_options["quantization_metadata"] = llama_quantization_metadata
super().__init__(device=device, dtype=dtype, model_options=model_options)
return Ideogram4TEModel_
+
+
+# Full Qwen3-VL-8B variant with vision
+
+class Ideogram4Qwen3VLClipModel(comfy.text_encoders.qwen3vl.Qwen3VLClipModel):
+ def __init__(self, device="cpu", dtype=None, attention_mask=True, model_options={}):
+ super().__init__(device=device, layer=IDEOGRAM4_TAP_LAYERS, layer_idx=None, dtype=dtype,
+ attention_mask=attention_mask, model_options=model_options, model_type="qwen3vl_8b")
+
+
+class Ideogram4Qwen3VLTEModel(sd1_clip.SD1ClipModel):
+ def __init__(self, device="cpu", dtype=None, model_options={}):
+ super().__init__(device=device, dtype=dtype, name="qwen3vl_8b", clip_model=Ideogram4Qwen3VLClipModel, model_options=model_options)
+
+ def encode_token_weights(self, token_weight_pairs):
+ out, pooled, extra = super().encode_token_weights(token_weight_pairs)
+ b, n, seq, h = out.shape # (B, n_taps=13, seq, 4096), ascending layer order.
+ out = out.permute(0, 2, 3, 1).reshape(b, seq, h * n) # (B, seq, 4096*13 = 53248).
+ return out, pooled, extra
+
+
+class Ideogram4Qwen3VLTokenizer(comfy.text_encoders.qwen3vl.Qwen3VLTokenizer):
+ def __init__(self, embedding_directory=None, tokenizer_data={}):
+ super().__init__(embedding_directory=embedding_directory, tokenizer_data=tokenizer_data, model_type="qwen3vl_8b")
+
+ def tokenize_with_weights(self, text, return_word_ids=False, llama_template=None, images=[], prevent_empty_text=False, thinking=True, **kwargs):
+ # Ideogram 4 conditions on the no-think template; default thinking=True drops the empty think block qwen3vl adds.
+ return super().tokenize_with_weights(text, return_word_ids=return_word_ids, llama_template=llama_template, images=images, prevent_empty_text=prevent_empty_text, thinking=thinking, **kwargs)
+
+
+def te_qwen3vl(dtype_llama=None, llama_quantization_metadata=None):
+ class Ideogram4Qwen3VLTEModel_(Ideogram4Qwen3VLTEModel):
+ def __init__(self, device="cpu", dtype=None, model_options={}):
+ if dtype_llama is not None:
+ dtype = dtype_llama
+ if llama_quantization_metadata is not None:
+ model_options = model_options.copy()
+ model_options["quantization_metadata"] = llama_quantization_metadata
+ super().__init__(device=device, dtype=dtype, model_options=model_options)
+ return Ideogram4Qwen3VLTEModel_
diff --git a/comfy/text_encoders/llama.py b/comfy/text_encoders/llama.py
index 5087228ca..e9f38a9a2 100644
--- a/comfy/text_encoders/llama.py
+++ b/comfy/text_encoders/llama.py
@@ -251,6 +251,19 @@ class Qwen3_8BConfig:
lm_head: bool = True
stop_tokens = [151643, 151645]
+@dataclass
+class Qwen3VL_8BConfig(Qwen3_8BConfig):
+ max_position_embeddings: int = 262144
+ rope_theta: float = 5000000.0
+ rope_dims = [24, 20, 20]
+ interleaved_mrope = True
+
+@dataclass
+class Qwen3VL_4BConfig(Qwen3VL_8BConfig):
+ hidden_size: int = 2560
+ intermediate_size: int = 9728
+ lm_head: bool = False # 4B ties word embeddings
+
@dataclass
class Ovis25_2BConfig:
vocab_size: int = 151936
@@ -703,7 +716,8 @@ class Llama2_(nn.Module):
interleaved_mrope=getattr(self.config, "interleaved_mrope", False),
device=device)
- def forward(self, x, attention_mask=None, embeds=None, num_tokens=None, intermediate_output=None, final_layer_norm_intermediate=True, dtype=None, position_ids=None, embeds_info=[], past_key_values=None, input_ids=None):
+ def forward(self, x, attention_mask=None, embeds=None, num_tokens=None, intermediate_output=None, final_layer_norm_intermediate=True,
+ dtype=None, position_ids=None, embeds_info=[], past_key_values=None, input_ids=None,deepstack_embeds=None, visual_pos_masks=None):
if embeds is not None:
x = embeds
else:
@@ -767,6 +781,10 @@ class Llama2_(nn.Module):
if current_kv is not None:
next_key_values.append(current_kv)
+ # DeepStack: add per-layer visual features into the first len() decoder layers at image positions (Qwen3-VL)
+ if deepstack_embeds is not None and i < len(deepstack_embeds):
+ x[visual_pos_masks] = x[visual_pos_masks] + deepstack_embeds[i].to(x)
+
if i == intermediate_output:
intermediate = x.clone()
@@ -860,7 +878,7 @@ class BaseGenerate:
torch.empty([batch, model_config.num_key_value_heads, max_cache_len, model_config.head_dim], device=device, dtype=execution_dtype), 0))
return past_key_values
- def generate(self, embeds=None, do_sample=True, max_length=256, temperature=1.0, top_k=50, top_p=0.9, min_p=0.0, repetition_penalty=1.0, seed=42, stop_tokens=None, initial_tokens=[], execution_dtype=None, min_tokens=0, presence_penalty=0.0, initial_input_ids=None):
+ def generate(self, embeds=None, do_sample=True, max_length=256, temperature=1.0, top_k=50, top_p=0.9, min_p=0.0, repetition_penalty=1.0, seed=42, stop_tokens=None, initial_tokens=[], execution_dtype=None, min_tokens=0, presence_penalty=0.0, initial_input_ids=None, position_ids=None, deepstack_embeds=None, visual_pos_masks=None):
device = embeds.device
if stop_tokens is None:
@@ -884,10 +902,18 @@ class BaseGenerate:
generated_token_ids = []
pbar = comfy.utils.ProgressBar(max_length)
+ # MRoPE: prefill uses explicit 3D position_ids, decode continues from the last position
+ next_pos = int(position_ids[:, -1].max()) + 1 if position_ids is not None else None
+
# Generation loop
current_input_ids = initial_input_ids
for step in tqdm(range(max_length), desc="Generating tokens"):
- x, _, past_key_values = self.model.forward(None, embeds=embeds, attention_mask=None, past_key_values=past_key_values, input_ids=current_input_ids)
+ # DeepStack visual features are injected on the prefill only; gemma4's forward lacks these kwargs.
+ extra = {}
+ if step == 0 and deepstack_embeds is not None:
+ extra["deepstack_embeds"] = deepstack_embeds
+ extra["visual_pos_masks"] = visual_pos_masks
+ x, _, past_key_values = self.model.forward(None, embeds=embeds, attention_mask=None, past_key_values=past_key_values, input_ids=current_input_ids, position_ids=position_ids, **extra)
logits = self.logits(x)[:, -1]
next_token = self.sample_token(logits, temperature, top_k, top_p, min_p, repetition_penalty, initial_tokens + generated_token_ids, generator, do_sample=do_sample, presence_penalty=presence_penalty)
token_id = next_token[0].item()
@@ -895,6 +921,9 @@ class BaseGenerate:
embeds = self.model.embed_tokens(next_token).to(execution_dtype)
current_input_ids = next_token if initial_input_ids is not None else None
+ if next_pos is not None: # advance MRoPE position for the next (decode) step
+ position_ids = torch.tensor([[next_pos]], device=device)
+ next_pos += 1
pbar.update(1)
if token_id in stop_tokens:
diff --git a/comfy/text_encoders/qwen35.py b/comfy/text_encoders/qwen35.py
index 416ce9d18..71a17990f 100644
--- a/comfy/text_encoders/qwen35.py
+++ b/comfy/text_encoders/qwen35.py
@@ -3,7 +3,6 @@ import torch.nn as nn
import torch.nn.functional as F
from dataclasses import dataclass, field
import os
-import math
import comfy.model_management
from comfy.ldm.modules.attention import optimized_attention_for_device
@@ -563,6 +562,8 @@ class Qwen35VisionModel(nn.Module):
for _ in range(config["depth"])
])
self.merger = Qwen35VisionPatchMerger(self.hidden_size, self.spatial_merge_size, config["out_hidden_size"], device=device, dtype=dtype, ops=ops)
+ self.deepstack_visual_indexes = [] # DeepStack, per-layer visual features (Qwen3-VL)
+ self.deepstack_merger_list = None
def rot_pos_emb(self, grid_thw):
merge_size = self.spatial_merge_size
@@ -664,9 +665,14 @@ class Qwen35VisionModel(nn.Module):
).cumsum(dim=0, dtype=torch.int32)
cu_seqlens = F.pad(cu_seqlens, (1, 0), value=0)
optimized_attention = optimized_attention_for_device(x.device, mask=False, small_input=True)
- for blk in self.blocks:
+ deepstack_features = []
+ for layer_num, blk in enumerate(self.blocks):
x = blk(x, cu_seqlens=cu_seqlens, position_embeddings=position_embeddings, optimized_attention=optimized_attention)
+ if self.deepstack_merger_list is not None and layer_num in self.deepstack_visual_indexes:
+ deepstack_features.append(self.deepstack_merger_list[self.deepstack_visual_indexes.index(layer_num)](x))
merged = self.merger(x)
+ if self.deepstack_merger_list is not None:
+ return merged, deepstack_features
return merged
# Model Wrapper
@@ -690,30 +696,7 @@ class Qwen35(BaseLlama, BaseGenerate, torch.nn.Module):
return None, None
def forward(self, x, attention_mask=None, embeds=None, num_tokens=None, intermediate_output=None, final_layer_norm_intermediate=True, dtype=None, embeds_info=[], past_key_values=None):
- grid = None
- position_ids = None
- offset = 0
- for e in embeds_info:
- if e.get("type") == "image":
- grid = e.get("extra", None)
- start = e.get("index")
- if position_ids is None:
- position_ids = torch.zeros((3, embeds.shape[1]), device=embeds.device)
- position_ids[:, :start] = torch.arange(0, start, device=embeds.device)
- end = e.get("size") + start
- len_max = int(grid.max()) // 2
- start_next = len_max + start
- position_ids[:, end:] = torch.arange(start_next + offset, start_next + (embeds.shape[1] - end) + offset, device=embeds.device)
- position_ids[0, start:end] = start + offset
- max_d = int(grid[0][1]) // 2
- position_ids[1, start:end] = torch.arange(start + offset, start + max_d + offset, device=embeds.device).unsqueeze(1).repeat(1, math.ceil((end - start) / max_d)).flatten(0)[:end - start]
- max_d = int(grid[0][2]) // 2
- position_ids[2, start:end] = torch.arange(start + offset, start + max_d + offset, device=embeds.device).unsqueeze(0).repeat(math.ceil((end - start) / max_d), 1).flatten(0)[:end - start]
- offset += len_max - (end - start)
-
- if grid is None:
- position_ids = None
-
+ position_ids = comfy.text_encoders.qwen_vl.qwen2vl_mrope_position_ids(embeds_info, embeds.shape[1], embeds.device)
return super().forward(x, attention_mask=attention_mask, embeds=embeds, num_tokens=num_tokens, intermediate_output=intermediate_output, final_layer_norm_intermediate=final_layer_norm_intermediate, dtype=dtype, position_ids=position_ids, past_key_values=past_key_values)
def init_kv_cache(self, batch, max_cache_len, device, execution_dtype):
diff --git a/comfy/text_encoders/qwen3vl.py b/comfy/text_encoders/qwen3vl.py
new file mode 100644
index 000000000..59c9aae6d
--- /dev/null
+++ b/comfy/text_encoders/qwen3vl.py
@@ -0,0 +1,193 @@
+import os
+
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+from transformers import Qwen2Tokenizer
+
+from comfy import sd1_clip
+import comfy.text_encoders.qwen_vl
+from .qwen35 import Qwen35VisionModel
+from .llama import BaseLlama, BaseQwen3, BaseGenerate, Llama2_, Qwen3VL_4BConfig, Qwen3VL_8BConfig
+
+
+QWEN3VL_VISION = {
+ "qwen3vl_4b": dict(hidden_size=1024, intermediate_size=4096, depth=24, deepstack_visual_indexes=[5, 11, 17]),
+ "qwen3vl_8b": dict(hidden_size=1152, intermediate_size=4304, depth=27, deepstack_visual_indexes=[8, 16, 24]),
+}
+QWEN3VL_VISION_COMMON = dict(num_heads=16, patch_size=16, temporal_patch_size=2, in_channels=3,
+ spatial_merge_size=2, num_position_embeddings=2304)
+
+QWEN3VL_CONFIGS = {"qwen3vl_4b": Qwen3VL_4BConfig, "qwen3vl_8b": Qwen3VL_8BConfig}
+
+
+class Qwen3VLDeepstackMerger(nn.Module):
+ # DeepStack merger: postshuffle LayerNorm (applied after spatial merge), unlike the main merger.
+ def __init__(self, hidden_size, spatial_merge_size, out_hidden_size, device=None, dtype=None, ops=None):
+ super().__init__()
+ self.merge_dim = hidden_size * (spatial_merge_size ** 2)
+ self.norm = ops.LayerNorm(self.merge_dim, eps=1e-6, device=device, dtype=dtype)
+ self.linear_fc1 = ops.Linear(self.merge_dim, self.merge_dim, device=device, dtype=dtype)
+ self.linear_fc2 = ops.Linear(self.merge_dim, out_hidden_size, device=device, dtype=dtype)
+
+ def forward(self, x):
+ x = self.norm(x.view(-1, self.merge_dim))
+ return self.linear_fc2(F.gelu(self.linear_fc1(x)))
+
+
+class Qwen3VLVisionModel(Qwen35VisionModel):
+ # Qwen3.5 vision + DeepStack
+ def __init__(self, config, device=None, dtype=None, ops=None):
+ super().__init__(config, device=device, dtype=dtype, ops=ops)
+ self.deepstack_visual_indexes = config["deepstack_visual_indexes"]
+ self.deepstack_merger_list = nn.ModuleList([
+ Qwen3VLDeepstackMerger(self.hidden_size, self.spatial_merge_size, config["out_hidden_size"], device=device, dtype=dtype, ops=ops)
+ for _ in self.deepstack_visual_indexes
+ ])
+
+
+class Qwen3VL(BaseLlama, BaseQwen3, BaseGenerate, torch.nn.Module):
+ model_type = "qwen3vl_8b"
+
+ def __init__(self, config_dict, dtype, device, operations):
+ super().__init__()
+ config = QWEN3VL_CONFIGS[self.model_type](**config_dict)
+ self.num_layers = config.num_hidden_layers
+ self.model = Llama2_(config, device=device, dtype=dtype, ops=operations)
+ vision_config = {**QWEN3VL_VISION_COMMON, **QWEN3VL_VISION[self.model_type], "out_hidden_size": config.hidden_size}
+ self.visual = Qwen3VLVisionModel(vision_config, device=device, dtype=dtype, ops=operations)
+ self.dtype = dtype
+
+ def preprocess_embed(self, embed, device):
+ if embed["type"] == "image":
+ # Qwen3-VL normalizes to [-1, 1] (mean/std 0.5), unlike Qwen2.5-VL's CLIP normalization.
+ image, grid = comfy.text_encoders.qwen_vl.process_qwen2vl_images(embed["data"], patch_size=16, image_mean=[0.5, 0.5, 0.5], image_std=[0.5, 0.5, 0.5])
+ merged, deepstack = self.visual(image.to(device, dtype=torch.float32), grid)
+ return merged, {"grid": grid, "deepstack": deepstack}
+ return None, None
+
+ def build_image_inputs(self, embeds, embeds_info):
+ # Returns (position_ids, visual_pos_masks, deepstack) for the prompt
+ images = sorted([e for e in embeds_info if e.get("type") == "image"], key=lambda e: e["index"])
+ if len(images) == 0:
+ return None, None, None
+
+ device = embeds.device
+ seq = embeds.shape[1]
+ position_ids = comfy.text_encoders.qwen_vl.qwen2vl_mrope_position_ids(embeds_info, seq, device)
+
+ # DeepStack: mask of image positions + per-vision-layer features to inject there.
+ visual_pos_masks = torch.zeros((1, seq), dtype=torch.bool, device=device)
+ deepstack = None
+ for e in images:
+ start = e["index"]
+ end = e["size"] + start
+ visual_pos_masks[0, start:end] = True
+ ds = e["extra"]["deepstack"]
+ if deepstack is None:
+ deepstack = [d for d in ds]
+ else:
+ deepstack = [torch.cat([deepstack[i], ds[i]], dim=0) for i in range(len(ds))]
+ return position_ids, visual_pos_masks, deepstack
+
+
+def _make_qwen3vl_model(model_type):
+ class Qwen3VL_(Qwen3VL):
+ pass
+ Qwen3VL_.model_type = model_type
+ return Qwen3VL_
+
+
+class Qwen3VLClipModel(sd1_clip.SDClipModel):
+ def __init__(self, device="cpu", layer="hidden", layer_idx=-1, dtype=None, attention_mask=True, model_options={}, model_type="qwen3vl_8b"):
+ super().__init__(device=device, layer=layer, layer_idx=layer_idx, textmodel_json_config={},
+ dtype=dtype, special_tokens={"pad": 151643}, layer_norm_hidden_state=False,
+ model_class=_make_qwen3vl_model(model_type), enable_attention_masks=attention_mask,
+ return_attention_masks=attention_mask, model_options=model_options)
+
+ def generate(self, tokens, do_sample, max_length, temperature, top_k, top_p, min_p, repetition_penalty, seed, presence_penalty=0.0):
+ if isinstance(tokens, dict):
+ tokens = next(iter(tokens.values()))
+ tokens_only = [[t[0] for t in b] for b in tokens]
+ embeds, _, _, embeds_info = self.process_tokens(tokens_only, self.execution_device)
+ position_ids, visual_pos_masks, deepstack = self.transformer.build_image_inputs(embeds, embeds_info)
+ return self.transformer.generate(embeds, do_sample, max_length, temperature, top_k, top_p, min_p, repetition_penalty, seed,
+ presence_penalty=presence_penalty, position_ids=position_ids,
+ visual_pos_masks=visual_pos_masks, deepstack_embeds=deepstack)
+
+
+class Qwen3VLTEModel(sd1_clip.SD1ClipModel):
+ def __init__(self, device="cpu", dtype=None, model_options={}, model_type="qwen3vl_8b"):
+ clip_model = lambda **kw: Qwen3VLClipModel(**kw, model_type=model_type)
+ super().__init__(device=device, dtype=dtype, name=model_type, clip_model=clip_model, model_options=model_options)
+
+
+class Qwen3VLSDTokenizer(sd1_clip.SDTokenizer):
+ def __init__(self, embedding_directory=None, tokenizer_data={}, embedding_size=4096, embedding_key="qwen3vl_8b"):
+ tokenizer_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "qwen25_tokenizer")
+ super().__init__(tokenizer_path, pad_with_end=False, embedding_directory=embedding_directory, embedding_size=embedding_size, embedding_key=embedding_key, tokenizer_class=Qwen2Tokenizer,
+ has_start_token=False, has_end_token=False, pad_to_max_length=False, max_length=99999999, min_length=1, pad_token=151643, tokenizer_data=tokenizer_data)
+
+
+class Qwen3VLTokenizer(sd1_clip.SD1Tokenizer):
+ def __init__(self, embedding_directory=None, tokenizer_data={}, model_type="qwen3vl_8b"):
+ embedding_size = 2560 if model_type == "qwen3vl_4b" else 4096
+ tokenizer = lambda *a, **kw: Qwen3VLSDTokenizer(*a, **kw, embedding_size=embedding_size, embedding_key=model_type)
+ super().__init__(embedding_directory=embedding_directory, tokenizer_data=tokenizer_data, name=model_type, tokenizer=tokenizer)
+ self.llama_template = "<|im_start|>user\n{}<|im_end|>\n<|im_start|>assistant\n"
+ self.llama_template_images = "<|im_start|>user\n<|vision_start|><|image_pad|><|vision_end|>{}<|im_end|>\n<|im_start|>assistant\n"
+
+ def tokenize_with_weights(self, text, return_word_ids=False, llama_template=None, images=[], prevent_empty_text=False, thinking=False, **kwargs):
+ image = kwargs.get("image", None)
+ if image is not None and len(images) == 0:
+ images = [image[i:i + 1] for i in range(image.shape[0])]
+
+ skip_template = text.startswith('<|im_start|>')
+ if prevent_empty_text and text == '':
+ text = ' '
+
+ if skip_template:
+ llama_text = text
+ else:
+ if llama_template is not None:
+ template = llama_template
+ elif len(images) == 0:
+ template = self.llama_template
+ else:
+ template = self.llama_template_images
+ if len(images) > 1:
+ vision_block = "<|vision_start|><|image_pad|><|vision_end|>"
+ template = template.replace(vision_block, vision_block * len(images), 1)
+ llama_text = template.format(text)
+ if not thinking: # Qwen3 convention: empty think block suppresses reasoning
+ llama_text += "\n\n\n\n"
+
+ tokens = super().tokenize_with_weights(llama_text, return_word_ids=return_word_ids, disable_weights=True, **kwargs)
+ key_name = next(iter(tokens))
+ embed_count = 0
+ for r in tokens[key_name]:
+ for i in range(len(r)):
+ if r[i][0] == 151655: # <|image_pad|>
+ if len(images) > embed_count:
+ r[i] = ({"type": "image", "data": images[embed_count], "original_type": "image"},) + r[i][1:]
+ embed_count += 1
+ return tokens
+
+
+def tokenizer(model_type="qwen3vl_8b"):
+ class Qwen3VLTokenizer_(Qwen3VLTokenizer):
+ def __init__(self, embedding_directory=None, tokenizer_data={}):
+ super().__init__(embedding_directory=embedding_directory, tokenizer_data=tokenizer_data, model_type=model_type)
+ return Qwen3VLTokenizer_
+
+
+def te(dtype_llama=None, llama_quantization_metadata=None, model_type="qwen3vl_8b"):
+ class Qwen3VLTEModel_(Qwen3VLTEModel):
+ def __init__(self, device="cpu", dtype=None, model_options={}):
+ if dtype_llama is not None:
+ dtype = dtype_llama
+ if llama_quantization_metadata is not None:
+ model_options = model_options.copy()
+ model_options["quantization_metadata"] = llama_quantization_metadata
+ super().__init__(device=device, dtype=dtype, model_options=model_options, model_type=model_type)
+ return Qwen3VLTEModel_
diff --git a/comfy/text_encoders/qwen_vl.py b/comfy/text_encoders/qwen_vl.py
index 98c350a12..924eb6ad8 100644
--- a/comfy/text_encoders/qwen_vl.py
+++ b/comfy/text_encoders/qwen_vl.py
@@ -88,6 +88,32 @@ def process_qwen2vl_images(
return flatten_patches, image_grid_thw
+def qwen2vl_mrope_position_ids(embeds_info, seq_len, device):
+ # (3, seq_len) T/H/W MRoPE position ids: text runs sequentially, each image span gets its grid positions.
+ # Returns None when there are no image embeds. `extra` is the image grid_thw, or a dict carrying it under "grid".
+ position_ids = None
+ offset = 0
+ for e in embeds_info:
+ if e.get("type") == "image":
+ extra = e.get("extra", None)
+ grid = extra["grid"] if isinstance(extra, dict) else extra
+ start = e.get("index")
+ if position_ids is None:
+ position_ids = torch.zeros((3, seq_len), device=device)
+ position_ids[:, :start] = torch.arange(0, start, device=device)
+ end = e.get("size") + start
+ len_max = int(grid.max()) // 2
+ start_next = len_max + start
+ position_ids[:, end:] = torch.arange(start_next + offset, start_next + (seq_len - end) + offset, device=device)
+ position_ids[0, start:end] = start + offset
+ max_d = int(grid[0][1]) // 2
+ position_ids[1, start:end] = torch.arange(start + offset, start + max_d + offset, device=device).unsqueeze(1).repeat(1, math.ceil((end - start) / max_d)).flatten(0)[:end - start]
+ max_d = int(grid[0][2]) // 2
+ position_ids[2, start:end] = torch.arange(start + offset, start + max_d + offset, device=device).unsqueeze(0).repeat(math.ceil((end - start) / max_d), 1).flatten(0)[:end - start]
+ offset += len_max - (end - start)
+ return position_ids
+
+
class VisionPatchEmbed(nn.Module):
def __init__(
self,
diff --git a/comfy_extras/nodes_textgen.py b/comfy_extras/nodes_textgen.py
index d52faf815..5a947d5c5 100644
--- a/comfy_extras/nodes_textgen.py
+++ b/comfy_extras/nodes_textgen.py
@@ -35,7 +35,7 @@ class TextGenerate(io.ComfyNode):
io.Image.Input("image", optional=True),
io.Image.Input("video", optional=True, tooltip="Video frames as image batch. Assumed to be 24 FPS; subsampled to 1 FPS internally."),
io.Audio.Input("audio", optional=True),
- io.Int.Input("max_length", default=256, min=1, max=2048),
+ io.Int.Input("max_length", default=512, min=1, max=32768),
io.DynamicCombo.Input("sampling_mode", options=sampling_options, display_name="Sampling Mode"),
io.Boolean.Input("thinking", optional=True, default=False, tooltip="Operate in thinking mode if the model supports it."),
io.Boolean.Input("use_default_template", optional=True, default=True, tooltip="Use the built in system prompt/template if the model has one.", advanced=True),
From ca1622ca24bbdbbc19721b0577ffab98cf64eb4d Mon Sep 17 00:00:00 2001
From: Alexis Rolland
Date: Wed, 17 Jun 2026 08:33:09 +0800
Subject: [PATCH 2/5] chore: Update nodes categories (CORE-263) (#14460)
---
comfy_extras/nodes_ace.py | 12 ++--
comfy_extras/nodes_apg.py | 2 +-
comfy_extras/nodes_ar_video.py | 4 +-
comfy_extras/nodes_audio.py | 10 ++--
comfy_extras/nodes_bernini.py | 23 +++-----
comfy_extras/nodes_camera_trajectory.py | 2 +-
comfy_extras/nodes_chroma_radiance.py | 4 +-
comfy_extras/nodes_clip_sdxl.py | 6 +-
comfy_extras/nodes_context_windows.py | 1 +
comfy_extras/nodes_controlnet.py | 3 +
comfy_extras/nodes_cosmos.py | 6 +-
comfy_extras/nodes_custom_sampler.py | 6 +-
comfy_extras/nodes_easycache.py | 4 +-
comfy_extras/nodes_edit_model.py | 3 +-
comfy_extras/nodes_flux.py | 12 ++--
comfy_extras/nodes_hidream.py | 8 ++-
comfy_extras/nodes_hidream_o1.py | 6 +-
comfy_extras/nodes_hunyuan.py | 20 ++++---
comfy_extras/nodes_hunyuan3d.py | 8 +--
comfy_extras/nodes_ideogram4.py | 2 +-
comfy_extras/nodes_kandinsky5.py | 7 ++-
comfy_extras/nodes_latent.py | 2 +
comfy_extras/nodes_lt.py | 22 +++----
comfy_extras/nodes_lt_audio.py | 12 ++--
comfy_extras/nodes_lt_upsampler.py | 2 +-
comfy_extras/nodes_lumina2.py | 6 +-
comfy_extras/nodes_mask.py | 1 +
comfy_extras/nodes_mochi.py | 2 +-
comfy_extras/nodes_model_advanced.py | 19 +++---
comfy_extras/nodes_model_merging.py | 22 +++----
.../nodes_model_merging_model_specific.py | 28 ++++-----
comfy_extras/nodes_model_patch.py | 14 ++++-
comfy_extras/nodes_pid.py | 6 +-
comfy_extras/nodes_pixart.py | 3 +-
comfy_extras/nodes_post_processing.py | 2 +-
comfy_extras/nodes_qwen.py | 4 +-
comfy_extras/nodes_scail.py | 16 +++--
comfy_extras/nodes_sd3.py | 10 ++--
comfy_extras/nodes_sdupscale.py | 2 +-
comfy_extras/nodes_stable3d.py | 6 +-
comfy_extras/nodes_stable_cascade.py | 6 +-
comfy_extras/nodes_train.py | 2 +-
comfy_extras/nodes_video_model.py | 7 ++-
comfy_extras/nodes_void.py | 6 +-
comfy_extras/nodes_wan.py | 33 ++++++-----
comfy_extras/nodes_wandancer.py | 4 +-
comfy_extras/nodes_wanmove.py | 11 ++--
comfy_extras/nodes_zimage.py | 2 +-
nodes.py | 58 ++++++++++---------
49 files changed, 240 insertions(+), 217 deletions(-)
diff --git a/comfy_extras/nodes_ace.py b/comfy_extras/nodes_ace.py
index 044077b18..eaf234d5b 100644
--- a/comfy_extras/nodes_ace.py
+++ b/comfy_extras/nodes_ace.py
@@ -11,7 +11,7 @@ class TextEncodeAceStepAudio(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="TextEncodeAceStepAudio",
- category="model/conditioning",
+ category="model/conditioning/ace",
inputs=[
IO.Clip.Input("clip"),
IO.String.Input("tags", multiline=True, dynamic_prompts=True),
@@ -33,7 +33,7 @@ class TextEncodeAceStepAudio15(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="TextEncodeAceStepAudio1.5",
- category="model/conditioning",
+ category="model/conditioning/ace",
inputs=[
IO.Clip.Input("clip"),
IO.String.Input("tags", multiline=True, dynamic_prompts=True),
@@ -67,7 +67,7 @@ class EmptyAceStepLatentAudio(IO.ComfyNode):
return IO.Schema(
node_id="EmptyAceStepLatentAudio",
display_name="Empty Ace Step 1.0 Latent Audio",
- category="model/latent/audio",
+ category="model/latent/ace",
inputs=[
IO.Float.Input("seconds", default=120.0, min=1.0, max=1000.0, step=0.1),
IO.Int.Input(
@@ -90,7 +90,7 @@ class EmptyAceStep15LatentAudio(IO.ComfyNode):
return IO.Schema(
node_id="EmptyAceStep1.5LatentAudio",
display_name="Empty Ace Step 1.5 Latent Audio",
- category="model/latent/audio",
+ category="model/latent/ace",
inputs=[
IO.Float.Input("seconds", default=120.0, min=1.0, max=1000.0, step=0.01),
IO.Int.Input(
@@ -111,8 +111,8 @@ class ReferenceAudio(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="ReferenceTimbreAudio",
- display_name="Reference Audio",
- category="advanced/conditioning/audio",
+ display_name="Set Reference Audio",
+ category="model/conditioning",
is_experimental=True,
description="This node sets the reference audio for ace step 1.5",
inputs=[
diff --git a/comfy_extras/nodes_apg.py b/comfy_extras/nodes_apg.py
index 4a352038a..6e69b73f7 100644
--- a/comfy_extras/nodes_apg.py
+++ b/comfy_extras/nodes_apg.py
@@ -16,7 +16,7 @@ class APG(io.ComfyNode):
return io.Schema(
node_id="APG",
display_name="Adaptive Projected Guidance",
- category="model/sampling/custom_sampling",
+ category="model/sampling/custom",
inputs=[
io.Model.Input("model"),
io.Float.Input(
diff --git a/comfy_extras/nodes_ar_video.py b/comfy_extras/nodes_ar_video.py
index c22359eb2..9d8f64b20 100644
--- a/comfy_extras/nodes_ar_video.py
+++ b/comfy_extras/nodes_ar_video.py
@@ -19,7 +19,7 @@ class EmptyARVideoLatent(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="EmptyARVideoLatent",
- category="model/latent/video",
+ category="model/latent/autoregressive",
inputs=[
io.Int.Input("width", default=832, min=16, max=8192, step=16),
io.Int.Input("height", default=480, min=16, max=8192, step=16),
@@ -85,7 +85,7 @@ class ARVideoI2V(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="ARVideoI2V",
- category="model/conditioning/video_models",
+ category="model/conditioning/autoregressive",
inputs=[
io.Model.Input("model"),
io.Vae.Input("vae"),
diff --git a/comfy_extras/nodes_audio.py b/comfy_extras/nodes_audio.py
index 1dc97ecd7..77f124e28 100644
--- a/comfy_extras/nodes_audio.py
+++ b/comfy_extras/nodes_audio.py
@@ -16,7 +16,7 @@ class EmptyLatentAudio(IO.ComfyNode):
return IO.Schema(
node_id="EmptyLatentAudio",
display_name="Empty Latent Audio",
- category="model/latent/audio",
+ category="model/latent",
essentials_category="Audio",
inputs=[
IO.Float.Input("seconds", default=47.6, min=1.0, max=1000.0, step=0.1),
@@ -41,7 +41,7 @@ class ConditioningStableAudio(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="ConditioningStableAudio",
- category="model/conditioning",
+ category="model/conditioning/stable audio",
inputs=[
IO.Conditioning.Input("positive"),
IO.Conditioning.Input("negative"),
@@ -70,7 +70,7 @@ class VAEEncodeAudio(IO.ComfyNode):
node_id="VAEEncodeAudio",
search_aliases=["audio to latent"],
display_name="VAE Encode Audio",
- category="model/latent/audio",
+ category="model/latent",
inputs=[
IO.Audio.Input("audio"),
IO.Vae.Input("vae"),
@@ -115,7 +115,7 @@ class VAEDecodeAudio(IO.ComfyNode):
node_id="VAEDecodeAudio",
search_aliases=["latent to audio"],
display_name="VAE Decode Audio",
- category="model/latent/audio",
+ category="model/latent",
inputs=[
IO.Latent.Input("samples"),
IO.Vae.Input("vae"),
@@ -137,7 +137,7 @@ class VAEDecodeAudioTiled(IO.ComfyNode):
node_id="VAEDecodeAudioTiled",
search_aliases=["latent to audio"],
display_name="VAE Decode Audio (Tiled)",
- category="model/latent/audio",
+ category="model/latent",
inputs=[
IO.Latent.Input("samples"),
IO.Vae.Input("vae"),
diff --git a/comfy_extras/nodes_bernini.py b/comfy_extras/nodes_bernini.py
index 227fa5753..0537e0806 100644
--- a/comfy_extras/nodes_bernini.py
+++ b/comfy_extras/nodes_bernini.py
@@ -39,9 +39,9 @@ class BerniniConditioning(io.ComfyNode):
return io.Schema(
node_id="BerniniConditioning",
display_name="Bernini Conditioning",
- category="conditioning/video_models",
+ category="model/conditioning/bernini",
description="Conditioning node for Bernini in-context video/image conditioning. It can be used for the following tasks: t2v (text-to-video), v2v (video-to-video), rv2v (reference-guided video editing), r2v (reference-to-video), ads2v (insert image/video into video)."
- "Reference images injected as in-context tokens (r2v, rv2v) are encoded independently at their own native aspect ratio (long edge capped at ref_max_size)",
+ "Reference images injected as in-context tokens (r2v, rv2v) are encoded independently at their own native aspect ratio (long edge capped at ref_max_size)",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -50,14 +50,11 @@ class BerniniConditioning(io.ComfyNode):
io.Int.Input("height", default=480, min=16, max=8192, step=16),
io.Int.Input("length", default=81, min=1, max=8192, step=4),
io.Int.Input("batch_size", default=1, min=1, max=4096),
- io.Image.Input("source_video", optional=True, tooltip=(
- "Source video to edit or restyle (v2v, rv2v). Resized to width/height and trimmed to length.")),
- io.Image.Input("reference_video", optional=True, tooltip=(
- "Video to insert into the source video (ads2v).")),
+ io.Image.Input("source_video", optional=True, tooltip=("Source video to edit or restyle (v2v, rv2v). Resized to width/height and trimmed to length.")),
+ io.Image.Input("reference_video", optional=True, tooltip=("Video to insert into the source video (ads2v).")),
io.Autogrow.Input("reference_images", optional=True,
template=io.Autogrow.TemplatePrefix(
- input=io.Image.Input("reference_image", tooltip=(
- "Reference image injected as an in-context token (r2v, rv2v).")),
+ input=io.Image.Input("reference_image", tooltip=("Reference image injected as an in-context token (r2v, rv2v).")),
prefix="reference_image_", min=0, max=8)),
io.Int.Input("ref_max_size", default=848, min=16, max=8192, step=16, optional=True, tooltip=(
"Max size for the long edge of reference_video and reference_images. Resized with preserved aspect ratio and snapped to 16px.")),
@@ -70,10 +67,8 @@ class BerniniConditioning(io.ComfyNode):
)
@classmethod
- def execute(cls, positive, negative, vae, width, height, length, batch_size,
- source_video=None, reference_video=None, reference_images=None, ref_max_size=848) -> io.NodeOutput:
- latent = torch.zeros([batch_size, 16, ((length - 1) // 4) + 1, height // 8, width // 8],
- device=comfy.model_management.intermediate_device())
+ def execute(cls, positive, negative, vae, width, height, length, batch_size, source_video=None, reference_video=None, reference_images=None, ref_max_size=848) -> io.NodeOutput:
+ latent = torch.zeros([batch_size, 16, ((length - 1) // 4) + 1, height // 8, width // 8], device=comfy.model_management.intermediate_device())
# source_video (1), reference_video (2), reference_images (3, 4, ...).
context = []
@@ -106,9 +101,7 @@ class BerniniConditioning(io.ComfyNode):
class BerniniExtension(ComfyExtension):
@override
async def get_node_list(self) -> list[type[io.ComfyNode]]:
- return [
- BerniniConditioning,
- ]
+ return [BerniniConditioning,]
async def comfy_entrypoint() -> BerniniExtension:
diff --git a/comfy_extras/nodes_camera_trajectory.py b/comfy_extras/nodes_camera_trajectory.py
index 13a1448f4..280d136af 100644
--- a/comfy_extras/nodes_camera_trajectory.py
+++ b/comfy_extras/nodes_camera_trajectory.py
@@ -153,7 +153,7 @@ class WanCameraEmbedding(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanCameraEmbedding",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/camera",
inputs=[
io.Combo.Input(
"camera_pose",
diff --git a/comfy_extras/nodes_chroma_radiance.py b/comfy_extras/nodes_chroma_radiance.py
index a4f673001..059344f3c 100644
--- a/comfy_extras/nodes_chroma_radiance.py
+++ b/comfy_extras/nodes_chroma_radiance.py
@@ -13,7 +13,7 @@ class EmptyChromaRadianceLatentImage(io.ComfyNode):
def define_schema(cls) -> io.Schema:
return io.Schema(
node_id="EmptyChromaRadianceLatentImage",
- category="model/latent/chroma_radiance",
+ category="model/latent/chroma radiance",
inputs=[
io.Int.Input(id="width", default=1024, min=16, max=nodes.MAX_RESOLUTION, step=16),
io.Int.Input(id="height", default=1024, min=16, max=nodes.MAX_RESOLUTION, step=16),
@@ -33,7 +33,7 @@ class ChromaRadianceOptions(io.ComfyNode):
def define_schema(cls) -> io.Schema:
return io.Schema(
node_id="ChromaRadianceOptions",
- category="model/patch/chroma_radiance",
+ category="model/patch/chroma radiance",
description="Allows setting advanced options for the Chroma Radiance model.",
inputs=[
io.Model.Input(id="model"),
diff --git a/comfy_extras/nodes_clip_sdxl.py b/comfy_extras/nodes_clip_sdxl.py
index 7a001af6f..08fbbd827 100644
--- a/comfy_extras/nodes_clip_sdxl.py
+++ b/comfy_extras/nodes_clip_sdxl.py
@@ -9,7 +9,8 @@ class CLIPTextEncodeSDXLRefiner(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeSDXLRefiner",
- category="advanced/conditioning",
+ display_name="CLIP Text Encode (SDXL Refiner)",
+ category="model/conditioning/stable diffusion",
inputs=[
io.Float.Input("ascore", default=6.0, min=0.0, max=1000.0, step=0.01),
io.Int.Input("width", default=1024, min=0, max=nodes.MAX_RESOLUTION),
@@ -30,7 +31,8 @@ class CLIPTextEncodeSDXL(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeSDXL",
- category="advanced/conditioning",
+ display_name="CLIP Text Encode (SDXL)",
+ category="model/conditioning/stable diffusion",
inputs=[
io.Clip.Input("clip"),
io.Int.Input("width", default=1024, min=0, max=nodes.MAX_RESOLUTION),
diff --git a/comfy_extras/nodes_context_windows.py b/comfy_extras/nodes_context_windows.py
index d9e32b9d9..098c26f23 100644
--- a/comfy_extras/nodes_context_windows.py
+++ b/comfy_extras/nodes_context_windows.py
@@ -66,6 +66,7 @@ class WanContextWindowsManualNode(ContextWindowsManualNode):
schema.node_id = "WanContextWindowsManual"
schema.display_name = "WAN Context Windows (Manual)"
schema.description = "Manually set context windows for WAN-like models (dim=2)."
+ schema.category="model/patch/wan"
schema.inputs = [
io.Model.Input("model", tooltip="The model to apply context windows to during sampling."),
io.Int.Input("context_length", min=1, max=nodes.MAX_RESOLUTION, step=4, default=81, tooltip="The length of the context window.", advanced=True),
diff --git a/comfy_extras/nodes_controlnet.py b/comfy_extras/nodes_controlnet.py
index 17d965405..eb476f497 100644
--- a/comfy_extras/nodes_controlnet.py
+++ b/comfy_extras/nodes_controlnet.py
@@ -9,6 +9,8 @@ class SetUnionControlNetType(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="SetUnionControlNetType",
+ search_aliases=["set controlnet type", "union controlnet type"],
+ display_name="Set Union ControlNet Type",
category="model/conditioning/controlnet",
inputs=[
io.ControlNet.Input("control_net"),
@@ -39,6 +41,7 @@ class ControlNetInpaintingAliMamaApply(io.ComfyNode):
return io.Schema(
node_id="ControlNetInpaintingAliMamaApply",
search_aliases=["masked controlnet"],
+ display_name="Apply ControlNet Inpainting (AliMama)",
category="model/conditioning/controlnet",
inputs=[
io.Conditioning.Input("positive"),
diff --git a/comfy_extras/nodes_cosmos.py b/comfy_extras/nodes_cosmos.py
index d754ab442..93cc67a6c 100644
--- a/comfy_extras/nodes_cosmos.py
+++ b/comfy_extras/nodes_cosmos.py
@@ -13,7 +13,7 @@ class EmptyCosmosLatentVideo(io.ComfyNode):
def define_schema(cls) -> io.Schema:
return io.Schema(
node_id="EmptyCosmosLatentVideo",
- category="model/latent/video",
+ category="model/latent/cosmos",
inputs=[
io.Int.Input("width", default=1280, min=16, max=nodes.MAX_RESOLUTION, step=16),
io.Int.Input("height", default=704, min=16, max=nodes.MAX_RESOLUTION, step=16),
@@ -45,7 +45,7 @@ class CosmosImageToVideoLatent(io.ComfyNode):
def define_schema(cls) -> io.Schema:
return io.Schema(
node_id="CosmosImageToVideoLatent",
- category="model/conditioning/inpaint",
+ category="model/conditioning/cosmos",
inputs=[
io.Vae.Input("vae"),
io.Int.Input("width", default=1280, min=16, max=nodes.MAX_RESOLUTION, step=16),
@@ -88,7 +88,7 @@ class CosmosPredict2ImageToVideoLatent(io.ComfyNode):
def define_schema(cls) -> io.Schema:
return io.Schema(
node_id="CosmosPredict2ImageToVideoLatent",
- category="model/conditioning/inpaint",
+ category="model/conditioning/cosmos",
inputs=[
io.Vae.Input("vae"),
io.Int.Input("width", default=848, min=16, max=nodes.MAX_RESOLUTION, step=16),
diff --git a/comfy_extras/nodes_custom_sampler.py b/comfy_extras/nodes_custom_sampler.py
index 3e97084a4..c9d7e06fc 100644
--- a/comfy_extras/nodes_custom_sampler.py
+++ b/comfy_extras/nodes_custom_sampler.py
@@ -729,7 +729,7 @@ class SamplerCustom(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="SamplerCustom",
- category="model/sampling/custom_sampling",
+ category="model/sampling/custom",
inputs=[
io.Model.Input("model"),
io.Boolean.Input("add_noise", default=True, advanced=True),
@@ -1015,7 +1015,7 @@ class SamplerCustomAdvanced(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="SamplerCustomAdvanced",
- category="model/sampling/custom_sampling",
+ category="model/sampling/custom",
inputs=[
io.Noise.Input("noise"),
io.Guider.Input("guider"),
@@ -1143,7 +1143,7 @@ class CFGOverride(io.ComfyNode):
display_name="CFG Override",
description="Override cfg to a fixed value over a [start, end] percent (sigma) range. "
"With multiple overrides, the one nearest the sampler wins on overlap.",
- category="sampling/custom_sampling",
+ category="model/sampling/guiders",
inputs=[
io.Model.Input("model"),
io.Float.Input("cfg", default=1.0, min=0.0, max=100.0, step=0.1, round=0.01),
diff --git a/comfy_extras/nodes_easycache.py b/comfy_extras/nodes_easycache.py
index 923c2bb05..9e907d371 100644
--- a/comfy_extras/nodes_easycache.py
+++ b/comfy_extras/nodes_easycache.py
@@ -363,7 +363,7 @@ class EasyCacheNode(io.ComfyNode):
node_id="EasyCache",
display_name="EasyCache",
description="Native EasyCache implementation.",
- category="advanced/debug/model",
+ category="advanced/debug",
is_experimental=True,
inputs=[
io.Model.Input("model", tooltip="The model to add EasyCache to."),
@@ -496,7 +496,7 @@ class LazyCacheNode(io.ComfyNode):
node_id="LazyCache",
display_name="LazyCache",
description="A homebrew version of EasyCache - even 'easier' version of EasyCache to implement. Overall works worse than EasyCache, but better in some rare cases AND universal compatibility with everything in ComfyUI.",
- category="advanced/debug/model",
+ category="advanced/debug",
is_experimental=True,
inputs=[
io.Model.Input("model", tooltip="The model to add LazyCache to."),
diff --git a/comfy_extras/nodes_edit_model.py b/comfy_extras/nodes_edit_model.py
index 36da66f34..d0d20ae7a 100644
--- a/comfy_extras/nodes_edit_model.py
+++ b/comfy_extras/nodes_edit_model.py
@@ -8,7 +8,8 @@ class ReferenceLatent(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="ReferenceLatent",
- category="advanced/conditioning/edit_models",
+ display_name="Set Reference Latent",
+ category="model/conditioning",
description="This node sets the guiding latent for an edit model. If the model supports it you can chain multiple to set multiple reference images.",
inputs=[
io.Conditioning.Input("conditioning"),
diff --git a/comfy_extras/nodes_flux.py b/comfy_extras/nodes_flux.py
index ef1757ae5..e9986c9e7 100644
--- a/comfy_extras/nodes_flux.py
+++ b/comfy_extras/nodes_flux.py
@@ -13,7 +13,7 @@ class CLIPTextEncodeFlux(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeFlux",
- category="advanced/conditioning/flux",
+ category="model/conditioning/flux",
inputs=[
io.Clip.Input("clip"),
io.String.Input("clip_l", multiline=True, dynamic_prompts=True),
@@ -40,7 +40,7 @@ class EmptyFlux2LatentImage(io.ComfyNode):
return io.Schema(
node_id="EmptyFlux2LatentImage",
display_name="Empty Flux 2 Latent",
- category="model/latent",
+ category="model/latent/flux",
inputs=[
io.Int.Input("width", default=1024, min=16, max=nodes.MAX_RESOLUTION, step=16),
io.Int.Input("height", default=1024, min=16, max=nodes.MAX_RESOLUTION, step=16),
@@ -61,7 +61,7 @@ class FluxGuidance(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="FluxGuidance",
- category="advanced/conditioning/flux",
+ category="model/conditioning/flux",
inputs=[
io.Conditioning.Input("conditioning"),
io.Float.Input("guidance", default=3.5, min=0.0, max=100.0, step=0.1),
@@ -84,7 +84,7 @@ class FluxDisableGuidance(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="FluxDisableGuidance",
- category="advanced/conditioning/flux",
+ category="model/conditioning/flux",
description="This node completely disables the guidance embed on Flux and Flux like models",
inputs=[
io.Conditioning.Input("conditioning"),
@@ -128,7 +128,7 @@ class FluxKontextImageScale(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="FluxKontextImageScale",
- category="advanced/conditioning/flux",
+ category="model/conditioning/flux",
description="This node resizes the image to one that is more optimal for flux kontext.",
inputs=[
io.Image.Input("image"),
@@ -156,7 +156,7 @@ class FluxKontextMultiReferenceLatentMethod(io.ComfyNode):
return io.Schema(
node_id="FluxKontextMultiReferenceLatentMethod",
display_name="Edit Model Reference Method",
- category="advanced/conditioning/flux",
+ category="model/conditioning/flux",
inputs=[
io.Conditioning.Input("conditioning"),
io.Combo.Input(
diff --git a/comfy_extras/nodes_hidream.py b/comfy_extras/nodes_hidream.py
index e345fe51d..65248561b 100644
--- a/comfy_extras/nodes_hidream.py
+++ b/comfy_extras/nodes_hidream.py
@@ -11,8 +11,9 @@ class QuadrupleCLIPLoader(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="QuadrupleCLIPLoader",
- category="advanced/loaders",
- description="[Recipes]\n\nhidream: long clip-l, long clip-g, t5xxl, llama_8b_3.1_instruct",
+ display_name="Load CLIP (Quadruple)",
+ category="model/loaders",
+ description="Recipes:\nhidream: long clip-l, long clip-g, t5xxl, llama_8b_3.1_instruct",
inputs=[
io.Combo.Input("clip_name1", options=folder_paths.get_filename_list("text_encoders")),
io.Combo.Input("clip_name2", options=folder_paths.get_filename_list("text_encoders")),
@@ -38,8 +39,9 @@ class CLIPTextEncodeHiDream(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeHiDream",
+ display_name="CLIP Text Encode (HiDream)",
search_aliases=["hidream prompt"],
- category="advanced/conditioning",
+ category="model/conditioning/hidream",
inputs=[
io.Clip.Input("clip"),
io.String.Input("clip_l", multiline=True, dynamic_prompts=True),
diff --git a/comfy_extras/nodes_hidream_o1.py b/comfy_extras/nodes_hidream_o1.py
index 8648d2e26..85693fce6 100644
--- a/comfy_extras/nodes_hidream_o1.py
+++ b/comfy_extras/nodes_hidream_o1.py
@@ -14,7 +14,7 @@ class EmptyHiDreamO1LatentImage(io.ComfyNode):
return io.Schema(
node_id="EmptyHiDreamO1LatentImage",
display_name="Empty HiDream-O1 Latent Image",
- category="model/latent/image",
+ category="model/latent/hidream",
description=(
"Empty pixel-space latent for HiDream-O1-Image. The model was "
"trained at ~4 megapixels; lower resolutions go off-distribution "
@@ -47,7 +47,7 @@ class HiDreamO1ReferenceImages(io.ComfyNode):
return io.Schema(
node_id="HiDreamO1ReferenceImages",
display_name="HiDream-O1 Reference Images",
- category="model/conditioning/image",
+ category="model/conditioning/hidream",
description=(
"Attach 1-10 reference images to conditioning, one for edit instruction"
"or multiple for subject-driven personalization."
@@ -117,7 +117,7 @@ class HiDreamO1PatchSeamSmoothing(io.ComfyNode):
return io.Schema(
node_id="HiDreamO1PatchSeamSmoothing",
display_name="HiDream-O1 Patch Seam Smoothing",
- category="advanced/model",
+ category="model/patch/hidream",
is_experimental=True,
description=(
"Average the model output across multiple shifted patch-grid "
diff --git a/comfy_extras/nodes_hunyuan.py b/comfy_extras/nodes_hunyuan.py
index 16fff12af..8df2c8908 100644
--- a/comfy_extras/nodes_hunyuan.py
+++ b/comfy_extras/nodes_hunyuan.py
@@ -14,7 +14,8 @@ class CLIPTextEncodeHunyuanDiT(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeHunyuanDiT",
- category="advanced/conditioning",
+ display_name="CLIP Text Encode (Hunyuan Image)",
+ category="model/conditioning/hunyuan image",
inputs=[
io.Clip.Input("clip"),
io.String.Input("bert", multiline=True, dynamic_prompts=True),
@@ -41,7 +42,7 @@ class EmptyHunyuanLatentVideo(io.ComfyNode):
return io.Schema(
node_id="EmptyHunyuanLatentVideo",
display_name="Empty HunyuanVideo 1.0 Latent",
- category="model/latent/video",
+ category="model/latent/hunyuan video",
inputs=[
io.Int.Input("width", default=848, min=16, max=nodes.MAX_RESOLUTION, step=16),
io.Int.Input("height", default=480, min=16, max=nodes.MAX_RESOLUTION, step=16),
@@ -67,6 +68,7 @@ class EmptyHunyuanVideo15Latent(EmptyHunyuanLatentVideo):
schema = super().define_schema()
schema.node_id = "EmptyHunyuanVideo15Latent"
schema.display_name = "Empty HunyuanVideo 1.5 Latent"
+ schema.category = "model/latent/hunyuan video"
return schema
@classmethod
@@ -81,7 +83,7 @@ class HunyuanVideo15ImageToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="HunyuanVideo15ImageToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/hunyuan video",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -132,7 +134,7 @@ class HunyuanVideo15SuperResolution(io.ComfyNode):
return io.Schema(
node_id="HunyuanVideo15SuperResolution",
display_name="Hunyuan Video 1.5 Super Resolution",
- category="model/conditioning/video_models",
+ category="model/conditioning/hunyuan video",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -227,7 +229,7 @@ class HunyuanVideo15LatentUpscaleWithModel(io.ComfyNode):
return io.Schema(
node_id="HunyuanVideo15LatentUpscaleWithModel",
display_name="Hunyuan Video 15 Latent Upscale With Model",
- category="model/latent",
+ category="model/latent/hunyhuan video",
inputs=[
io.LatentUpscaleModel.Input("model"),
io.Latent.Input("samples"),
@@ -276,7 +278,7 @@ class TextEncodeHunyuanVideo_ImageToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="TextEncodeHunyuanVideo_ImageToVideo",
- category="advanced/conditioning",
+ category="model/conditioning/hunyuan video",
inputs=[
io.Clip.Input("clip"),
io.ClipVisionOutput.Input("clip_vision_output"),
@@ -308,7 +310,7 @@ class HunyuanImageToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="HunyuanImageToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/hunyuan video",
inputs=[
io.Conditioning.Input("positive"),
io.Vae.Input("vae"),
@@ -359,7 +361,7 @@ class EmptyHunyuanImageLatent(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="EmptyHunyuanImageLatent",
- category="model/latent",
+ category="model/latent/hunyuan image",
inputs=[
io.Int.Input("width", default=2048, min=64, max=nodes.MAX_RESOLUTION, step=32),
io.Int.Input("height", default=2048, min=64, max=nodes.MAX_RESOLUTION, step=32),
@@ -384,7 +386,7 @@ class HunyuanRefinerLatent(io.ComfyNode):
return io.Schema(
node_id="HunyuanRefinerLatent",
display_name="Hunyuan Latent Refiner",
- category="model/conditioning/video_models",
+ category="model/conditioning/hunyuan video",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
diff --git a/comfy_extras/nodes_hunyuan3d.py b/comfy_extras/nodes_hunyuan3d.py
index 60e530626..c5fa946cc 100644
--- a/comfy_extras/nodes_hunyuan3d.py
+++ b/comfy_extras/nodes_hunyuan3d.py
@@ -12,7 +12,7 @@ class EmptyLatentHunyuan3Dv2(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="EmptyLatentHunyuan3Dv2",
- category="model/latent/3d",
+ category="model/latent/hunyuan 3d",
inputs=[
IO.Int.Input("resolution", default=3072, min=1, max=8192),
IO.Int.Input("batch_size", default=1, min=1, max=4096, tooltip="The number of latent images in the batch."),
@@ -35,7 +35,7 @@ class Hunyuan3Dv2Conditioning(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="Hunyuan3Dv2Conditioning",
- category="model/conditioning/3d_models",
+ category="model/conditioning/hunyuan 3d",
inputs=[
IO.ClipVisionOutput.Input("clip_vision_output"),
],
@@ -60,7 +60,7 @@ class Hunyuan3Dv2ConditioningMultiView(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="Hunyuan3Dv2ConditioningMultiView",
- category="model/conditioning/3d_models",
+ category="model/conditioning/hunyuan 3d",
inputs=[
IO.ClipVisionOutput.Input("front", optional=True),
IO.ClipVisionOutput.Input("left", optional=True),
@@ -97,7 +97,7 @@ class VAEDecodeHunyuan3D(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="VAEDecodeHunyuan3D",
- category="model/latent/3d",
+ category="model/latent/hunyuan 3d",
inputs=[
IO.Latent.Input("samples"),
IO.Vae.Input("vae"),
diff --git a/comfy_extras/nodes_ideogram4.py b/comfy_extras/nodes_ideogram4.py
index d5827db4f..4070db17c 100644
--- a/comfy_extras/nodes_ideogram4.py
+++ b/comfy_extras/nodes_ideogram4.py
@@ -38,7 +38,7 @@ class Ideogram4Scheduler(io.ComfyNode):
return io.Schema(
node_id="Ideogram4Scheduler",
display_name="Ideogram 4 Scheduler",
- category="sampling/custom_sampling/schedulers",
+ category="model/sampling/schedulers",
inputs=[
io.Int.Input("steps", default=20, min=1, max=200),
io.Int.Input("width", default=1024, min=256, max=8192, step=16),
diff --git a/comfy_extras/nodes_kandinsky5.py b/comfy_extras/nodes_kandinsky5.py
index 015965498..96cca0386 100644
--- a/comfy_extras/nodes_kandinsky5.py
+++ b/comfy_extras/nodes_kandinsky5.py
@@ -13,7 +13,7 @@ class Kandinsky5ImageToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="Kandinsky5ImageToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/kandinsky",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -71,7 +71,7 @@ class NormalizeVideoLatentStart(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="NormalizeVideoLatentStart",
- category="model/conditioning/video_models",
+ category="model/conditioning",
description="Normalizes the initial frames of a video latent to match the mean and standard deviation of subsequent reference frames. Helps reduce differences between the starting frames and the rest of the video.",
inputs=[
io.Latent.Input("latent"),
@@ -104,8 +104,9 @@ class CLIPTextEncodeKandinsky5(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeKandinsky5",
+ display_name="CLIP Text Encode (Kandinsky 5)",
search_aliases=["kandinsky prompt"],
- category="advanced/conditioning/kandinsky5",
+ category="model/conditioning/kandinsky",
inputs=[
io.Clip.Input("clip"),
io.String.Input("clip_l", multiline=True, dynamic_prompts=True),
diff --git a/comfy_extras/nodes_latent.py b/comfy_extras/nodes_latent.py
index 32da9e8ac..1f93e34d6 100644
--- a/comfy_extras/nodes_latent.py
+++ b/comfy_extras/nodes_latent.py
@@ -262,6 +262,7 @@ class LatentBatch(io.ComfyNode):
return io.Schema(
node_id="LatentBatch",
search_aliases=["combine latents", "merge latents", "join latents"],
+ display_name="Batch Latents (DEPRECATED)",
category="model/latent/batch",
is_deprecated=True,
inputs=[
@@ -447,6 +448,7 @@ class ReplaceVideoLatentFrames(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="ReplaceVideoLatentFrames",
+ display_name="Replace Video Latent Frames",
category="model/latent/batch",
inputs=[
io.Latent.Input("destination", tooltip="The destination latent where frames will be replaced."),
diff --git a/comfy_extras/nodes_lt.py b/comfy_extras/nodes_lt.py
index 6d6078abe..85d76ecef 100644
--- a/comfy_extras/nodes_lt.py
+++ b/comfy_extras/nodes_lt.py
@@ -25,7 +25,7 @@ class GetICLoRAParameters(io.ComfyNode):
display_name="Get IC-LoRA Parameters",
description="Extracts IC-LoRA parameters from the safetensors metadata of a LoRA-loaded "
"model and outputs them for LTXVAddGuide (eg. reference_downscale_factor).",
- category="model/conditioning/video_models",
+ category="model/conditioning/ltxv",
search_aliases=["ic-lora", "ic lora", "iclora", "downscale factor", "reference downscale"],
inputs=[
io.Model.Input(
@@ -62,7 +62,7 @@ class EmptyLTXVLatentVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="EmptyLTXVLatentVideo",
- category="model/latent/video/ltxv",
+ category="model/latent/ltxv",
inputs=[
io.Int.Input("width", default=768, min=64, max=nodes.MAX_RESOLUTION, step=32),
io.Int.Input("height", default=512, min=64, max=nodes.MAX_RESOLUTION, step=32),
@@ -86,7 +86,7 @@ class LTXVImgToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="LTXVImgToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/ltxv",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -131,7 +131,7 @@ class LTXVImgToVideoInplace(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="LTXVImgToVideoInplace",
- category="model/conditioning/video_models",
+ category="model/conditioning/ltxv",
inputs=[
io.Vae.Input("vae"),
io.Image.Input("image"),
@@ -251,7 +251,7 @@ class LTXVAddGuide(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="LTXVAddGuide",
- category="model/conditioning/video_models",
+ category="model/conditioning/ltxv",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -498,7 +498,7 @@ class LTXVCropGuides(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="LTXVCropGuides",
- category="model/conditioning/video_models",
+ category="model/conditioning/ltxv",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -542,7 +542,7 @@ class LTXVConditioning(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="LTXVConditioning",
- category="model/conditioning/video_models",
+ category="model/conditioning/ltxv",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -566,7 +566,7 @@ class ModelSamplingLTXV(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="ModelSamplingLTXV",
- category="advanced/model",
+ category="model/patch/ltxv",
inputs=[
io.Model.Input("model"),
io.Float.Input("max_shift", default=2.05, min=0.0, max=100.0, step=0.01),
@@ -746,7 +746,7 @@ class LTXVConcatAVLatent(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="LTXVConcatAVLatent",
- category="model/latent/video/ltxv",
+ category="model/latent/ltxv",
inputs=[
io.Latent.Input("video_latent"),
io.Latent.Input("audio_latent"),
@@ -781,7 +781,7 @@ class LTXVSeparateAVLatent(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="LTXVSeparateAVLatent",
- category="model/latent/video/ltxv",
+ category="model/latent/ltxv",
description="LTXV Separate AV Latent",
inputs=[
io.Latent.Input("av_latent"),
@@ -814,7 +814,7 @@ class LTXVReferenceAudio(io.ComfyNode):
return io.Schema(
node_id="LTXVReferenceAudio",
display_name="LTXV Reference Audio (ID-LoRA)",
- category="model/conditioning/audio",
+ category="model/conditioning/ltxv",
description="Set reference audio for ID-LoRA speaker identity transfer. Encodes a reference audio clip into the conditioning and optionally patches the model with identity guidance (extra forward pass without reference, amplifying the speaker identity effect).",
inputs=[
io.Model.Input("model"),
diff --git a/comfy_extras/nodes_lt_audio.py b/comfy_extras/nodes_lt_audio.py
index 052186083..2d774a0a3 100644
--- a/comfy_extras/nodes_lt_audio.py
+++ b/comfy_extras/nodes_lt_audio.py
@@ -40,7 +40,7 @@ class LTXVAudioVAEEncode(VAEEncodeAudio):
return io.Schema(
node_id="LTXVAudioVAEEncode",
display_name="LTXV Audio VAE Encode",
- category="model/latent/audio",
+ category="model/latent/ltxv",
inputs=[
io.Audio.Input("audio", tooltip="The audio to be encoded."),
io.Vae.Input(
@@ -63,7 +63,7 @@ class LTXVAudioVAEDecode(io.ComfyNode):
return io.Schema(
node_id="LTXVAudioVAEDecode",
display_name="LTXV Audio VAE Decode",
- category="model/latent/audio",
+ category="model/latent/ltxv",
inputs=[
io.Latent.Input("samples", tooltip="The latent to be decoded."),
io.Vae.Input(
@@ -96,7 +96,7 @@ class LTXVEmptyLatentAudio(io.ComfyNode):
return io.Schema(
node_id="LTXVEmptyLatentAudio",
display_name="LTXV Empty Latent Audio",
- category="model/latent/audio",
+ category="model/latent/ltxv",
inputs=[
io.Int.Input(
"frames_number",
@@ -168,9 +168,9 @@ class LTXAVTextEncoderLoader(io.ComfyNode):
def define_schema(cls) -> io.Schema:
return io.Schema(
node_id="LTXAVTextEncoderLoader",
- display_name="LTXV Audio Text Encoder Loader",
- category="advanced/loaders",
- description="[Recipes]\n\nltxav: gemma 3 12B",
+ display_name="Load LTXV Audio Text Encoder",
+ category="model/loaders",
+ description="Recipes:\nltxav: gemma 3 12B",
inputs=[
io.Combo.Input(
"text_encoder",
diff --git a/comfy_extras/nodes_lt_upsampler.py b/comfy_extras/nodes_lt_upsampler.py
index be9a36e69..ef36109d1 100644
--- a/comfy_extras/nodes_lt_upsampler.py
+++ b/comfy_extras/nodes_lt_upsampler.py
@@ -13,7 +13,7 @@ class LTXVLatentUpsampler(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="LTXVLatentUpsampler",
- category="model/latent/video",
+ category="model/latent/ltxv",
is_experimental=True,
inputs=[
IO.Latent.Input("samples"),
diff --git a/comfy_extras/nodes_lumina2.py b/comfy_extras/nodes_lumina2.py
index c060a86a0..bc543c242 100644
--- a/comfy_extras/nodes_lumina2.py
+++ b/comfy_extras/nodes_lumina2.py
@@ -9,7 +9,7 @@ class RenormCFG(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="RenormCFG",
- category="advanced/model",
+ category="model/patch",
inputs=[
io.Model.Input("model"),
io.Float.Input("cfg_trunc", default=100, min=0.0, max=100.0, step=0.01, advanced=True),
@@ -80,8 +80,8 @@ class CLIPTextEncodeLumina2(io.ComfyNode):
return io.Schema(
node_id="CLIPTextEncodeLumina2",
search_aliases=["lumina prompt"],
- display_name="CLIP Text Encode for Lumina2",
- category="model/conditioning",
+ display_name="CLIP Text Encode (Lumina 2)",
+ category="model/conditioning/lumina",
description="Encodes a system prompt and a user prompt using a CLIP model into an embedding "
"that can be used to guide the diffusion model towards generating specific images.",
inputs=[
diff --git a/comfy_extras/nodes_mask.py b/comfy_extras/nodes_mask.py
index 52484697a..76af338de 100644
--- a/comfy_extras/nodes_mask.py
+++ b/comfy_extras/nodes_mask.py
@@ -53,6 +53,7 @@ class LatentCompositeMasked(IO.ComfyNode):
return IO.Schema(
node_id="LatentCompositeMasked",
search_aliases=["overlay latent", "layer latent", "paste latent", "inpaint latent"],
+ display_name="Latent Composite Masked",
category="model/latent",
inputs=[
IO.Latent.Input("destination"),
diff --git a/comfy_extras/nodes_mochi.py b/comfy_extras/nodes_mochi.py
index 3dcea6ab3..3aaf23e69 100644
--- a/comfy_extras/nodes_mochi.py
+++ b/comfy_extras/nodes_mochi.py
@@ -10,7 +10,7 @@ class EmptyMochiLatentVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="EmptyMochiLatentVideo",
- category="model/latent/video",
+ category="model/latent/mochi",
inputs=[
io.Int.Input("width", default=848, min=16, max=nodes.MAX_RESOLUTION, step=16),
io.Int.Input("height", default=480, min=16, max=nodes.MAX_RESOLUTION, step=16),
diff --git a/comfy_extras/nodes_model_advanced.py b/comfy_extras/nodes_model_advanced.py
index b27ac1296..a336ba079 100644
--- a/comfy_extras/nodes_model_advanced.py
+++ b/comfy_extras/nodes_model_advanced.py
@@ -59,7 +59,7 @@ class ModelSamplingDiscrete:
RETURN_TYPES = ("MODEL",)
FUNCTION = "patch"
- CATEGORY = "advanced/model"
+ CATEGORY = "model/patch"
def patch(self, model, sampling, zsnr):
m = model.clone()
@@ -97,7 +97,7 @@ class ModelSamplingStableCascade:
RETURN_TYPES = ("MODEL",)
FUNCTION = "patch"
- CATEGORY = "advanced/model"
+ CATEGORY = "model/patch/stable cascade"
def patch(self, model, shift):
m = model.clone()
@@ -123,7 +123,7 @@ class ModelSamplingSD3:
RETURN_TYPES = ("MODEL",)
FUNCTION = "patch"
- CATEGORY = "advanced/model"
+ CATEGORY = "model/patch/stable diffusion"
def patch(self, model, shift, multiplier=1000):
m = model.clone()
@@ -150,6 +150,7 @@ class ModelSamplingAuraFlow(ModelSamplingSD3):
}}
FUNCTION = "patch_aura"
+ CATEGORY = "model/patch"
def patch_aura(self, model, shift):
return self.patch(model, shift, multiplier=1.0)
@@ -167,7 +168,7 @@ class ModelSamplingFlux:
RETURN_TYPES = ("MODEL",)
FUNCTION = "patch"
- CATEGORY = "advanced/model"
+ CATEGORY = "model/patch/flux"
def patch(self, model, max_shift, base_shift, width, height):
m = model.clone()
@@ -202,7 +203,7 @@ class ModelSamplingContinuousEDM:
RETURN_TYPES = ("MODEL",)
FUNCTION = "patch"
- CATEGORY = "advanced/model"
+ CATEGORY = "model/patch"
def patch(self, model, sampling, sigma_max, sigma_min):
m = model.clone()
@@ -247,7 +248,7 @@ class ModelSamplingContinuousV:
RETURN_TYPES = ("MODEL",)
FUNCTION = "patch"
- CATEGORY = "advanced/model"
+ CATEGORY = "model/patch"
def patch(self, model, sampling, sigma_max, sigma_min):
m = model.clone()
@@ -273,7 +274,7 @@ class RescaleCFG:
RETURN_TYPES = ("MODEL",)
FUNCTION = "patch"
- CATEGORY = "advanced/model"
+ CATEGORY = "model/patch"
def patch(self, model, multiplier):
def rescale_cfg(args):
@@ -314,7 +315,7 @@ class ModelNoiseScale:
RETURN_TYPES = ("MODEL",)
FUNCTION = "patch"
- CATEGORY = "advanced/model"
+ CATEGORY = "model/patch"
def patch(self, model, noise_scale):
m = model.clone()
@@ -337,7 +338,7 @@ class ModelComputeDtype:
RETURN_TYPES = ("MODEL",)
FUNCTION = "patch"
- CATEGORY = "advanced/debug/model"
+ CATEGORY = "advanced/debug"
def patch(self, model, dtype):
m = model.clone()
diff --git a/comfy_extras/nodes_model_merging.py b/comfy_extras/nodes_model_merging.py
index b6b29e34a..962d2a0bb 100644
--- a/comfy_extras/nodes_model_merging.py
+++ b/comfy_extras/nodes_model_merging.py
@@ -21,7 +21,7 @@ class ModelMergeSimple:
RETURN_TYPES = ("MODEL",)
FUNCTION = "merge"
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def merge(self, model1, model2, ratio):
m = model1.clone()
@@ -40,7 +40,7 @@ class ModelSubtract:
RETURN_TYPES = ("MODEL",)
FUNCTION = "merge"
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def merge(self, model1, model2, multiplier):
m = model1.clone()
@@ -58,7 +58,7 @@ class ModelAdd:
RETURN_TYPES = ("MODEL",)
FUNCTION = "merge"
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def merge(self, model1, model2):
m = model1.clone()
@@ -78,7 +78,7 @@ class CLIPMergeSimple:
RETURN_TYPES = ("CLIP",)
FUNCTION = "merge"
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def merge(self, clip1, clip2, ratio):
m = clip1.clone()
@@ -101,7 +101,7 @@ class CLIPSubtract:
RETURN_TYPES = ("CLIP",)
FUNCTION = "merge"
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def merge(self, clip1, clip2, multiplier):
m = clip1.clone()
@@ -123,7 +123,7 @@ class CLIPAdd:
RETURN_TYPES = ("CLIP",)
FUNCTION = "merge"
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def merge(self, clip1, clip2):
m = clip1.clone()
@@ -147,7 +147,7 @@ class ModelMergeBlocks:
RETURN_TYPES = ("MODEL",)
FUNCTION = "merge"
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def merge(self, model1, model2, **kwargs):
m = model1.clone()
@@ -242,7 +242,7 @@ class CheckpointSave:
FUNCTION = "save"
OUTPUT_NODE = True
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def save(self, model, clip, vae, filename_prefix, prompt=None, extra_pnginfo=None):
save_checkpoint(model, clip=clip, vae=vae, filename_prefix=filename_prefix, output_dir=self.output_dir, prompt=prompt, extra_pnginfo=extra_pnginfo)
@@ -261,7 +261,7 @@ class CLIPSave:
FUNCTION = "save"
OUTPUT_NODE = True
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def save(self, clip, filename_prefix, prompt=None, extra_pnginfo=None):
prompt_info = ""
@@ -318,7 +318,7 @@ class VAESave:
FUNCTION = "save"
OUTPUT_NODE = True
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def save(self, vae, filename_prefix, prompt=None, extra_pnginfo=None):
full_output_folder, filename, counter, subfolder, filename_prefix = folder_paths.get_save_image_path(filename_prefix, self.output_dir)
@@ -353,7 +353,7 @@ class ModelSave:
FUNCTION = "save"
OUTPUT_NODE = True
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
def save(self, model, filename_prefix, prompt=None, extra_pnginfo=None):
save_checkpoint(model, filename_prefix=filename_prefix, output_dir=self.output_dir, prompt=prompt, extra_pnginfo=extra_pnginfo)
diff --git a/comfy_extras/nodes_model_merging_model_specific.py b/comfy_extras/nodes_model_merging_model_specific.py
index 55eb3ccfe..2fa684b3a 100644
--- a/comfy_extras/nodes_model_merging_model_specific.py
+++ b/comfy_extras/nodes_model_merging_model_specific.py
@@ -1,7 +1,7 @@
import comfy_extras.nodes_model_merging
class ModelMergeSD1(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
arg_dict = { "model1": ("MODEL",),
@@ -27,7 +27,7 @@ class ModelMergeSD1(comfy_extras.nodes_model_merging.ModelMergeBlocks):
class ModelMergeSDXL(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -53,7 +53,7 @@ class ModelMergeSDXL(comfy_extras.nodes_model_merging.ModelMergeBlocks):
return {"required": arg_dict}
class ModelMergeSD3_2B(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -77,7 +77,7 @@ class ModelMergeSD3_2B(comfy_extras.nodes_model_merging.ModelMergeBlocks):
class ModelMergeAuraflow(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -104,7 +104,7 @@ class ModelMergeAuraflow(comfy_extras.nodes_model_merging.ModelMergeBlocks):
return {"required": arg_dict}
class ModelMergeFlux1(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -130,7 +130,7 @@ class ModelMergeFlux1(comfy_extras.nodes_model_merging.ModelMergeBlocks):
return {"required": arg_dict}
class ModelMergeSD35_Large(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -153,7 +153,7 @@ class ModelMergeSD35_Large(comfy_extras.nodes_model_merging.ModelMergeBlocks):
return {"required": arg_dict}
class ModelMergeMochiPreview(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -175,7 +175,7 @@ class ModelMergeMochiPreview(comfy_extras.nodes_model_merging.ModelMergeBlocks):
return {"required": arg_dict}
class ModelMergeLTXV(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -197,7 +197,7 @@ class ModelMergeLTXV(comfy_extras.nodes_model_merging.ModelMergeBlocks):
return {"required": arg_dict}
class ModelMergeCosmos7B(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -221,7 +221,7 @@ class ModelMergeCosmos7B(comfy_extras.nodes_model_merging.ModelMergeBlocks):
return {"required": arg_dict}
class ModelMergeCosmos14B(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -245,7 +245,7 @@ class ModelMergeCosmos14B(comfy_extras.nodes_model_merging.ModelMergeBlocks):
return {"required": arg_dict}
class ModelMergeWAN2_1(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
DESCRIPTION = "1.3B model has 30 blocks, 14B model has 40 blocks. Image to video model has the extra img_emb."
@classmethod
@@ -269,7 +269,7 @@ class ModelMergeWAN2_1(comfy_extras.nodes_model_merging.ModelMergeBlocks):
return {"required": arg_dict}
class ModelMergeCosmosPredict2_2B(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -292,7 +292,7 @@ class ModelMergeCosmosPredict2_2B(comfy_extras.nodes_model_merging.ModelMergeBlo
return {"required": arg_dict}
class ModelMergeCosmosPredict2_14B(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
@@ -315,7 +315,7 @@ class ModelMergeCosmosPredict2_14B(comfy_extras.nodes_model_merging.ModelMergeBl
return {"required": arg_dict}
class ModelMergeQwenImage(comfy_extras.nodes_model_merging.ModelMergeBlocks):
- CATEGORY = "advanced/model_merging/model_specific"
+ CATEGORY = "model/merging/model specific"
@classmethod
def INPUT_TYPES(s):
diff --git a/comfy_extras/nodes_model_patch.py b/comfy_extras/nodes_model_patch.py
index bdccbf8c4..3f785c8b5 100644
--- a/comfy_extras/nodes_model_patch.py
+++ b/comfy_extras/nodes_model_patch.py
@@ -232,7 +232,7 @@ class ModelPatchLoader:
FUNCTION = "load_model_patch"
EXPERIMENTAL = True
- CATEGORY = "advanced/loaders"
+ CATEGORY = "model/loaders"
def load_model_patch(self, name):
model_patch_path = folder_paths.get_full_path_or_raise("model_patches", name)
@@ -479,7 +479,7 @@ class QwenImageDiffsynthControlnet:
FUNCTION = "diffsynth_controlnet"
EXPERIMENTAL = True
- CATEGORY = "advanced/loaders/qwen"
+ CATEGORY = "model/patch/qwen"
def diffsynth_controlnet(self, model, model_patch, vae, image=None, strength=1.0, inpaint_image=None, mask=None):
model_patched = model.clone()
@@ -512,7 +512,7 @@ class ZImageFunControlnet(QwenImageDiffsynthControlnet):
},
"optional": {"image": ("IMAGE",), "inpaint_image": ("IMAGE",), "mask": ("MASK",)}}
- CATEGORY = "advanced/loaders/zimage"
+ CATEGORY = "model/patch/z-image"
class UsoStyleProjectorPatch:
def __init__(self, model_patch, encoded_image):
@@ -675,3 +675,11 @@ NODE_CLASS_MAPPINGS = {
"USOStyleReference": USOStyleReference,
"SUPIRApply": SUPIRApply,
}
+
+NODE_DISPLAY_NAME_MAPPINGS = {
+ "ModelPatchLoader": "Load Model Patch",
+ "QwenImageDiffsynthControlnet": "Apply Qwen Image DiffSynth ControlNet",
+ "ZImageFunControlnet": "Apply Z-Image Fun ControlNet",
+ "USOStyleReference": "Apply USO Style Reference",
+ "SUPIRApply": "Apply SUPIR Patch",
+}
diff --git a/comfy_extras/nodes_pid.py b/comfy_extras/nodes_pid.py
index 71855254e..a3ffd9671 100644
--- a/comfy_extras/nodes_pid.py
+++ b/comfy_extras/nodes_pid.py
@@ -14,10 +14,8 @@ class PiDConditioning(io.ComfyNode):
return io.Schema(
node_id="PiDConditioning",
display_name="PiD Conditioning",
- category="advanced/conditioning",
- description=(
- "Attaches a latent and a degrade_sigma scalar to a CONDITIONING for PiD decoding/upscaling"
- ),
+ category="model/conditioning",
+ description=("Attaches a latent and a degrade_sigma scalar to a CONDITIONING for PiD decoding/upscaling"),
inputs=[
io.Conditioning.Input("positive"),
io.Latent.Input("latent", tooltip="latent (from VAEEncode or a KSampler)."),
diff --git a/comfy_extras/nodes_pixart.py b/comfy_extras/nodes_pixart.py
index 2f1b73e60..f878a33b5 100644
--- a/comfy_extras/nodes_pixart.py
+++ b/comfy_extras/nodes_pixart.py
@@ -7,8 +7,9 @@ class CLIPTextEncodePixArtAlpha(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodePixArtAlpha",
+ display_name="CLIP Text Encode (PixArt Alpha)",
search_aliases=["pixart prompt"],
- category="advanced/conditioning",
+ category="model/conditioning/pixart",
description="Encodes text and sets the resolution conditioning for PixArt Alpha. Does not apply to PixArt Sigma.",
inputs=[
io.Int.Input("width", default=1024, min=0, max=nodes.MAX_RESOLUTION),
diff --git a/comfy_extras/nodes_post_processing.py b/comfy_extras/nodes_post_processing.py
index 3e440433e..763b8a52f 100644
--- a/comfy_extras/nodes_post_processing.py
+++ b/comfy_extras/nodes_post_processing.py
@@ -616,7 +616,7 @@ class BatchLatentsNode(io.ComfyNode):
node_id="BatchLatentsNode",
search_aliases=["combine latents", "stack latents", "merge latents"],
display_name="Batch Latents",
- category="model/latent",
+ category="model/latent/batch",
inputs=[
io.Autogrow.Input("latents", template=autogrow_template)
],
diff --git a/comfy_extras/nodes_qwen.py b/comfy_extras/nodes_qwen.py
index 5b92814a4..4960774db 100644
--- a/comfy_extras/nodes_qwen.py
+++ b/comfy_extras/nodes_qwen.py
@@ -12,7 +12,7 @@ class TextEncodeQwenImageEdit(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="TextEncodeQwenImageEdit",
- category="advanced/conditioning",
+ category="model/conditioning/qwen image",
inputs=[
io.Clip.Input("clip"),
io.String.Input("prompt", multiline=True, dynamic_prompts=True),
@@ -55,7 +55,7 @@ class TextEncodeQwenImageEditPlus(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="TextEncodeQwenImageEditPlus",
- category="advanced/conditioning",
+ category="model/conditioning/qwen image",
inputs=[
io.Clip.Input("clip"),
io.String.Input("prompt", multiline=True, dynamic_prompts=True),
diff --git a/comfy_extras/nodes_scail.py b/comfy_extras/nodes_scail.py
index bba0942d7..007733efc 100644
--- a/comfy_extras/nodes_scail.py
+++ b/comfy_extras/nodes_scail.py
@@ -123,7 +123,7 @@ class WanSCAILToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanSCAILToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/scail",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -257,18 +257,16 @@ class SCAIL2ColoredMask(io.ComfyNode):
return io.Schema(
node_id="SCAIL2ColoredMask",
display_name="Create SCAIL-2 Colored Mask",
- category="conditioning/video_models/scail",
+ category="model/conditioning/wan/scail",
inputs=[
SAM3TrackData.Input("driving_track_data", tooltip="SAM3 track of the driving pose video. Will be rendered into the pose_video_mask output."),
- SAM3TrackData.Input("ref_track_data", optional=True,
- tooltip="SAM3 track of the reference image."),
- io.String.Input("object_indices", default="",
- tooltip="Comma-separated list of person indices to include (e.g. '0,2,3'). Applied to both reference and pose video masks. Empty = all."),
+ SAM3TrackData.Input("ref_track_data", optional=True, tooltip="SAM3 track of the reference image."),
+ io.String.Input("object_indices", default="", tooltip="Comma-separated list of person indices to include (e.g. '0,2,3'). Applied to both reference and pose video masks. Empty = all."),
io.Combo.Input("sort_by", options=["none", "left_to_right", "area"], default="left_to_right",
- tooltip="Order in which palette colors are assigned to the tracked objects (applied to both reference and pose video so each identity keeps the same color). left_to_right = leftmost object (by first-frame centroid) gets the first color; area = biggest object (by first-frame mask area) gets the first color; none = keep SAM3's order."),
+ tooltip="Order in which palette colors are assigned to the tracked objects (applied to both reference and pose video so each identity keeps the same color). left_to_right = leftmost object (by first-frame centroid) gets the first color; area = biggest object (by first-frame mask area) gets the first color; none = keep SAM3's order."),
io.Boolean.Input("replacement_mode", default=False,
- tooltip="False = Animation Mode (pose_video_mask has black background, reference_image_mask has white background). "
- "True = Replacement Mode (pose_video_mask has white background, reference_image_mask has black background)."),
+ tooltip="False = Animation Mode (pose_video_mask has black background, reference_image_mask has white background). "
+ "True = Replacement Mode (pose_video_mask has white background, reference_image_mask has black background)."),
],
outputs=[
io.Image.Output("pose_video_mask"),
diff --git a/comfy_extras/nodes_sd3.py b/comfy_extras/nodes_sd3.py
index 38cbf117b..40e84656b 100644
--- a/comfy_extras/nodes_sd3.py
+++ b/comfy_extras/nodes_sd3.py
@@ -13,8 +13,9 @@ class TripleCLIPLoader(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="TripleCLIPLoader",
- category="advanced/loaders",
- description="[Recipes]\n\nsd3: clip-l, clip-g, t5",
+ display_name="Load CLIP (Triple)",
+ category="model/loaders",
+ description="Recipes:\nsd3: clip-l, clip-g, t5",
inputs=[
io.Combo.Input("clip_name1", options=folder_paths.get_filename_list("text_encoders")),
io.Combo.Input("clip_name2", options=folder_paths.get_filename_list("text_encoders")),
@@ -41,7 +42,7 @@ class EmptySD3LatentImage(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="EmptySD3LatentImage",
- category="model/latent/sd3",
+ category="model/latent/stable diffusion",
inputs=[
io.Int.Input("width", default=1024, min=16, max=nodes.MAX_RESOLUTION, step=16),
io.Int.Input("height", default=1024, min=16, max=nodes.MAX_RESOLUTION, step=16),
@@ -66,7 +67,8 @@ class CLIPTextEncodeSD3(io.ComfyNode):
return io.Schema(
node_id="CLIPTextEncodeSD3",
search_aliases=["sd3 prompt"],
- category="advanced/conditioning",
+ display_name="CLIP Text Encode (SD3)",
+ category="model/conditioning/stable diffusion",
inputs=[
io.Clip.Input("clip"),
io.String.Input("clip_l", multiline=True, dynamic_prompts=True),
diff --git a/comfy_extras/nodes_sdupscale.py b/comfy_extras/nodes_sdupscale.py
index ea283e971..5c247fb49 100644
--- a/comfy_extras/nodes_sdupscale.py
+++ b/comfy_extras/nodes_sdupscale.py
@@ -9,7 +9,7 @@ class SD_4XUpscale_Conditioning(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="SD_4XUpscale_Conditioning",
- category="model/conditioning/upscale_diffusion",
+ category="model/conditioning/stable diffusion upscaler",
inputs=[
io.Image.Input("images"),
io.Conditioning.Input("positive"),
diff --git a/comfy_extras/nodes_stable3d.py b/comfy_extras/nodes_stable3d.py
index 8a6e5b726..b0eba819b 100644
--- a/comfy_extras/nodes_stable3d.py
+++ b/comfy_extras/nodes_stable3d.py
@@ -27,7 +27,7 @@ class StableZero123_Conditioning(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="StableZero123_Conditioning",
- category="model/conditioning/3d_models",
+ category="model/conditioning/stable zero123",
inputs=[
io.ClipVision.Input("clip_vision"),
io.Image.Input("init_image"),
@@ -65,7 +65,7 @@ class StableZero123_Conditioning_Batched(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="StableZero123_Conditioning_Batched",
- category="model/conditioning/3d_models",
+ category="model/conditioning/stable zero123",
inputs=[
io.ClipVision.Input("clip_vision"),
io.Image.Input("init_image"),
@@ -112,7 +112,7 @@ class SV3D_Conditioning(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="SV3D_Conditioning",
- category="model/conditioning/3d_models",
+ category="model/conditioning/stable video 3d",
inputs=[
io.ClipVision.Input("clip_vision"),
io.Image.Input("init_image"),
diff --git a/comfy_extras/nodes_stable_cascade.py b/comfy_extras/nodes_stable_cascade.py
index e55f248ae..6a78ffb47 100644
--- a/comfy_extras/nodes_stable_cascade.py
+++ b/comfy_extras/nodes_stable_cascade.py
@@ -29,7 +29,7 @@ class StableCascade_EmptyLatentImage(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="StableCascade_EmptyLatentImage",
- category="model/latent/stable_cascade",
+ category="model/latent/stable cascade",
inputs=[
io.Int.Input("width", default=1024, min=256, max=nodes.MAX_RESOLUTION, step=8),
io.Int.Input("height", default=1024, min=256, max=nodes.MAX_RESOLUTION, step=8),
@@ -58,7 +58,7 @@ class StableCascade_StageC_VAEEncode(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="StableCascade_StageC_VAEEncode",
- category="model/latent/stable_cascade",
+ category="model/latent/stable cascade",
inputs=[
io.Image.Input("image"),
io.Vae.Input("vae"),
@@ -93,7 +93,7 @@ class StableCascade_StageB_Conditioning(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="StableCascade_StageB_Conditioning",
- category="model/conditioning/stable_cascade",
+ category="model/conditioning/stable cascade",
inputs=[
io.Conditioning.Input("conditioning"),
io.Latent.Input("stage_c"),
diff --git a/comfy_extras/nodes_train.py b/comfy_extras/nodes_train.py
index bb68da6fa..a27217b80 100644
--- a/comfy_extras/nodes_train.py
+++ b/comfy_extras/nodes_train.py
@@ -1367,7 +1367,7 @@ class SaveLoRA(io.ComfyNode):
node_id="SaveLoRA",
search_aliases=["export lora"],
display_name="Save LoRA Weights",
- category="advanced/model_merging",
+ category="model/merging",
is_experimental=True,
is_output_node=True,
inputs=[
diff --git a/comfy_extras/nodes_video_model.py b/comfy_extras/nodes_video_model.py
index 0d6cae6a8..01d48d4d4 100644
--- a/comfy_extras/nodes_video_model.py
+++ b/comfy_extras/nodes_video_model.py
@@ -41,7 +41,7 @@ class SVD_img2vid_Conditioning:
FUNCTION = "encode"
- CATEGORY = "model/conditioning/video_models"
+ CATEGORY = "model/conditioning/stable video"
def encode(self, clip_vision, init_image, vae, width, height, video_frames, motion_bucket_id, fps, augmentation_level):
output = clip_vision.encode_image(init_image)
@@ -108,7 +108,7 @@ class VideoTriangleCFGGuidance:
return (m, )
class ImageOnlyCheckpointSave(comfy_extras.nodes_model_merging.CheckpointSave):
- CATEGORY = "advanced/model_merging"
+ CATEGORY = "model/merging"
@classmethod
def INPUT_TYPES(s):
@@ -138,7 +138,7 @@ class ConditioningSetAreaPercentageVideo:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "append"
- CATEGORY = "model/conditioning"
+ CATEGORY = "model/conditioning/transform"
def append(self, conditioning, width, height, temporal, x, y, z, strength):
c = node_helpers.conditioning_set_values(conditioning, {"area": ("percentage", temporal, height, width, z, y, x),
@@ -160,4 +160,5 @@ NODE_DISPLAY_NAME_MAPPINGS = {
"ImageOnlyCheckpointLoader": "Load Checkpoint Image Only (img2vid model)",
"VideoLinearCFGGuidance": "Video Linear CFG Guidance",
"VideoTriangleCFGGuidance": "Video Triangle CFG Guidance",
+ "ConditioningSetAreaPercentageVideo": "Conditioning (Set Area with Percentage for Video)",
}
diff --git a/comfy_extras/nodes_void.py b/comfy_extras/nodes_void.py
index b43154b8d..7527baf43 100644
--- a/comfy_extras/nodes_void.py
+++ b/comfy_extras/nodes_void.py
@@ -175,7 +175,7 @@ class VOIDInpaintConditioning(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="VOIDInpaintConditioning",
- category="model/conditioning/video_models",
+ category="model/conditioning/void",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -288,7 +288,7 @@ class VOIDWarpedNoise(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="VOIDWarpedNoise",
- category="model/latent/video",
+ category="model/latent/void",
inputs=[
OpticalFlow.Input(
"optical_flow",
@@ -393,7 +393,7 @@ class VOIDWarpedNoiseSource(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="VOIDWarpedNoiseSource",
- category="model/sampling/noise",
+ category="model/latent/void",
inputs=[
io.Latent.Input("warped_noise",
tooltip="Warped noise latent from VOIDWarpedNoise"),
diff --git a/comfy_extras/nodes_wan.py b/comfy_extras/nodes_wan.py
index d73be8e00..0e47a58df 100644
--- a/comfy_extras/nodes_wan.py
+++ b/comfy_extras/nodes_wan.py
@@ -18,7 +18,7 @@ class WanImageToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanImageToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -66,7 +66,7 @@ class WanFunControlToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanFunControlToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/fun control",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -119,7 +119,7 @@ class Wan22FunControlToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="Wan22FunControlToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/fun control",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -184,7 +184,7 @@ class WanFirstLastFrameToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanFirstLastFrameToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -256,7 +256,7 @@ class WanFunInpaintToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanFunInpaintToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/fun inpaint",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -288,7 +288,7 @@ class WanVaceToVideo(io.ComfyNode):
return io.Schema(
node_id="WanVaceToVideo",
search_aliases=["video conditioning", "video control"],
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/vace",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -375,7 +375,8 @@ class TrimVideoLatent(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="TrimVideoLatent",
- category="model/latent/video",
+ display_name="Trim Video Latent",
+ category="model/latent",
inputs=[
io.Latent.Input("samples"),
io.Int.Input("trim_amount", default=0, min=0, max=99999),
@@ -398,7 +399,7 @@ class WanCameraImageToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanCameraImageToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/camera",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -452,7 +453,7 @@ class WanPhantomSubjectToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanPhantomSubjectToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/phantom subject",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -707,7 +708,7 @@ class WanTrackToVideo(io.ComfyNode):
return io.Schema(
node_id="WanTrackToVideo",
search_aliases=["motion tracking", "trajectory video", "point tracking", "keypoint animation"],
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/move",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -951,7 +952,7 @@ class WanSoundImageToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanSoundImageToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/sound",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -984,7 +985,7 @@ class WanSoundImageToVideoExtend(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanSoundImageToVideoExtend",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/sound",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -1046,7 +1047,7 @@ class WanHuMoImageToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanHuMoImageToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/humo",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -1112,7 +1113,7 @@ class WanAnimateToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanAnimateToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/animate",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
@@ -1252,7 +1253,7 @@ class Wan22ImageToVideoLatent(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="Wan22ImageToVideoLatent",
- category="model/conditioning/inpaint",
+ category="model/conditioning/wan",
inputs=[
io.Vae.Input("vae"),
io.Int.Input("width", default=1280, min=32, max=nodes.MAX_RESOLUTION, step=32),
@@ -1302,7 +1303,7 @@ class WanInfiniteTalkToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanInfiniteTalkToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/infinite talk",
inputs=[
io.DynamicCombo.Input("mode", options=[
io.DynamicCombo.Option("single_speaker", []),
diff --git a/comfy_extras/nodes_wandancer.py b/comfy_extras/nodes_wandancer.py
index a96885745..fdb2b5e57 100644
--- a/comfy_extras/nodes_wandancer.py
+++ b/comfy_extras/nodes_wandancer.py
@@ -713,7 +713,7 @@ class WanDancerEncodeAudio(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanDancerEncodeAudio",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/dancer",
inputs=[
io.Audio.Input("audio"),
io.Int.Input("video_frames", default=149, min=1, max=nodes.MAX_RESOLUTION, step=4),
@@ -787,7 +787,7 @@ class WanDancerVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanDancerVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/dancer",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
diff --git a/comfy_extras/nodes_wanmove.py b/comfy_extras/nodes_wanmove.py
index 2db064922..d1f924a40 100644
--- a/comfy_extras/nodes_wanmove.py
+++ b/comfy_extras/nodes_wanmove.py
@@ -247,7 +247,7 @@ class WanMoveVisualizeTracks(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanMoveVisualizeTracks",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/move",
inputs=[
io.Image.Input("images"),
io.Tracks.Input("tracks", optional=True),
@@ -283,7 +283,7 @@ class WanMoveTracksFromCoords(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanMoveTracksFromCoords",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/move",
inputs=[
io.String.Input("track_coords", force_input=True, default="[]", optional=True),
io.Mask.Input("track_mask", optional=True),
@@ -325,7 +325,8 @@ class GenerateTracks(io.ComfyNode):
return io.Schema(
node_id="GenerateTracks",
search_aliases=["motion paths", "camera movement", "trajectory"],
- category="model/conditioning/video_models",
+ display_name="Generate Video Tracks",
+ category="model/conditioning/wan/move",
inputs=[
io.Int.Input("width", default=832, min=16, max=4096, step=16),
io.Int.Input("height", default=480, min=16, max=4096, step=16),
@@ -434,7 +435,7 @@ class WanMoveConcatTrack(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanMoveConcatTrack",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/move",
inputs=[
io.Tracks.Input("tracks_1"),
io.Tracks.Input("tracks_2", optional=True),
@@ -463,7 +464,7 @@ class WanMoveTrackToVideo(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="WanMoveTrackToVideo",
- category="model/conditioning/video_models",
+ category="model/conditioning/wan/move",
inputs=[
io.Conditioning.Input("positive"),
io.Conditioning.Input("negative"),
diff --git a/comfy_extras/nodes_zimage.py b/comfy_extras/nodes_zimage.py
index 70ddc4afa..ce946b377 100644
--- a/comfy_extras/nodes_zimage.py
+++ b/comfy_extras/nodes_zimage.py
@@ -10,7 +10,7 @@ class TextEncodeZImageOmni(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="TextEncodeZImageOmni",
- category="advanced/conditioning",
+ category="model/conditioning/z-image",
is_experimental=True,
inputs=[
io.Clip.Input("clip"),
diff --git a/nodes.py b/nodes.py
index 0d422d418..bb4649478 100644
--- a/nodes.py
+++ b/nodes.py
@@ -87,7 +87,7 @@ class ConditioningCombine:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "combine"
- CATEGORY = "model/conditioning"
+ CATEGORY = "model/conditioning/transform"
SEARCH_ALIASES = ["combine", "merge conditioning", "combine prompts", "merge prompts", "mix prompts", "add prompt"]
def combine(self, conditioning_1, conditioning_2):
@@ -104,7 +104,7 @@ class ConditioningAverage :
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "addWeighted"
- CATEGORY = "model/conditioning"
+ CATEGORY = "model/conditioning/transform"
def addWeighted(self, conditioning_to, conditioning_from, conditioning_to_strength):
out = []
@@ -143,7 +143,7 @@ class ConditioningConcat:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "concat"
- CATEGORY = "model/conditioning"
+ CATEGORY = "model/conditioning/transform"
def concat(self, conditioning_to, conditioning_from):
out = []
@@ -176,7 +176,7 @@ class ConditioningSetArea:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "append"
- CATEGORY = "model/conditioning"
+ CATEGORY = "model/conditioning/transform"
def append(self, conditioning, width, height, x, y, strength):
c = node_helpers.conditioning_set_values(conditioning, {"area": (height // 8, width // 8, y // 8, x // 8),
@@ -197,7 +197,7 @@ class ConditioningSetAreaPercentage:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "append"
- CATEGORY = "model/conditioning"
+ CATEGORY = "model/conditioning/transform"
def append(self, conditioning, width, height, x, y, strength):
c = node_helpers.conditioning_set_values(conditioning, {"area": ("percentage", height, width, y, x),
@@ -214,7 +214,7 @@ class ConditioningSetAreaStrength:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "append"
- CATEGORY = "model/conditioning"
+ CATEGORY = "model/conditioning/transform"
def append(self, conditioning, strength):
c = node_helpers.conditioning_set_values(conditioning, {"strength": strength})
@@ -234,7 +234,7 @@ class ConditioningSetMask:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "append"
- CATEGORY = "model/conditioning"
+ CATEGORY = "model/conditioning/transform"
def append(self, conditioning, mask, set_cond_area, strength):
set_area_to_bounds = False
@@ -257,7 +257,7 @@ class ConditioningZeroOut:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "zero_out"
- CATEGORY = "advanced/conditioning"
+ CATEGORY = "model/conditioning/transform"
def zero_out(self, conditioning):
c = []
@@ -283,11 +283,10 @@ class ConditioningSetTimestepRange:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "set_range"
- CATEGORY = "advanced/conditioning"
+ CATEGORY = "model/conditioning/transform"
def set_range(self, conditioning, start, end):
- c = node_helpers.conditioning_set_values(conditioning, {"start_percent": start,
- "end_percent": end})
+ c = node_helpers.conditioning_set_values(conditioning, {"start_percent": start, "end_percent": end})
return (c, )
class VAEDecode:
@@ -389,7 +388,7 @@ class VAEEncodeForInpaint:
RETURN_TYPES = ("LATENT",)
FUNCTION = "encode"
- CATEGORY = "model/latent/inpaint"
+ CATEGORY = "model/latent"
def encode(self, vae, pixels, mask, grow_mask_by=6):
downscale_ratio = vae.spacial_compression_encode()
@@ -438,7 +437,7 @@ class InpaintModelConditioning:
RETURN_NAMES = ("positive", "negative", "latent")
FUNCTION = "encode"
- CATEGORY = "model/conditioning/inpaint"
+ CATEGORY = "model/conditioning"
def encode(self, positive, negative, pixels, vae, mask, noise_mask=True):
x = (pixels.shape[1] // 8) * 8
@@ -576,7 +575,7 @@ class CheckpointLoader:
RETURN_TYPES = ("MODEL", "CLIP", "VAE")
FUNCTION = "load_checkpoint"
- CATEGORY = "advanced/loaders"
+ CATEGORY = "model/loaders"
DEPRECATED = True
def load_checkpoint(self, config_name, ckpt_name):
@@ -622,8 +621,9 @@ class DiffusersLoader:
return {"required": {"model_path": (paths,), }}
RETURN_TYPES = ("MODEL", "CLIP", "VAE")
FUNCTION = "load_checkpoint"
+ DEPRECATED = True
- CATEGORY = "advanced/loaders/deprecated"
+ CATEGORY = "model/loaders"
def load_checkpoint(self, model_path, output_vae=True, output_clip=True):
for search_path in folder_paths.get_folder_paths("diffusers"):
@@ -949,7 +949,7 @@ class UNETLoader:
RETURN_TYPES = ("MODEL",)
FUNCTION = "load_unet"
- CATEGORY = "advanced/loaders"
+ CATEGORY = "model/loaders"
def load_unet(self, unet_name, weight_dtype):
model_options = {}
@@ -977,9 +977,9 @@ class CLIPLoader:
RETURN_TYPES = ("CLIP",)
FUNCTION = "load_clip"
- CATEGORY = "advanced/loaders"
+ CATEGORY = "model/loaders"
- DESCRIPTION = "[Recipes]\n\nstable_diffusion: clip-l\nstable_cascade: clip-g\nsd3: t5 xxl/ clip-g / clip-l\nstable_audio: t5 base\nmochi: t5 xxl\ncogvideox: t5 xxl (226-token padding)\ncosmos: old t5 xxl\nlumina2: gemma 2 2B\nwan: umt5 xxl\n hidream: llama-3.1 (Recommend) or t5\nomnigen2: qwen vl 2.5 3B\nlens: gpt-oss-20b\n pixeldit: gemma 2 2B elm"
+ DESCRIPTION = "Recipes:\nsd: clip-l\nstable cascade: clip-g\nsd3: t5 xxl / clip-g / clip-l\nstable audio: t5 base\nmochi: t5 xxl\ncogvideox: t5 xxl (226-token padding)\ncosmos: old t5 xxl\nlumina2: gemma 2 2B\nwan: umt5 xxl\nhidream: llama-3.1 (Recommend) or t5\nomnigen2: qwen vl 2.5 3B\nlens: gpt-oss-20b\npixeldit: gemma 2 2B elm"
def load_clip(self, clip_name, type="stable_diffusion", device="default"):
clip_type = getattr(comfy.sd.CLIPType, type.upper(), comfy.sd.CLIPType.STABLE_DIFFUSION)
@@ -1005,9 +1005,9 @@ class DualCLIPLoader:
RETURN_TYPES = ("CLIP",)
FUNCTION = "load_clip"
- CATEGORY = "advanced/loaders"
+ CATEGORY = "model/loaders"
- DESCRIPTION = "[Recipes]\n\nsdxl: clip-l, clip-g\nsd3: clip-l, clip-g / clip-l, t5 / clip-g, t5\nflux: clip-l, t5\nhidream: at least one of t5 or llama, recommended t5 and llama\nhunyuan_image: qwen2.5vl 7b and byt5 small\nnewbie: gemma-3-4b-it, jina clip v2"
+ DESCRIPTION = "Recipes:\nsdxl: clip-l, clip-g\nsd3: clip-l, clip-g / clip-l, t5 / clip-g, t5\nflux: clip-l, t5\nhidream: at least one of t5 or llama, recommended t5 and llama\nhunyuan_image: qwen2.5vl 7b and byt5 small\nnewbie: gemma-3-4b-it, jina clip v2"
def load_clip(self, clip_name1, clip_name2, type, device="default"):
clip_type = getattr(comfy.sd.CLIPType, type.upper(), comfy.sd.CLIPType.STABLE_DIFFUSION)
@@ -1088,7 +1088,7 @@ class StyleModelApply:
RETURN_TYPES = ("CONDITIONING",)
FUNCTION = "apply_stylemodel"
- CATEGORY = "model/conditioning/style_model"
+ CATEGORY = "model/conditioning"
def apply_stylemodel(self, conditioning, style_model, clip_vision_output, strength, strength_type):
cond = style_model.get_cond(clip_vision_output).flatten(start_dim=0, end_dim=1).unsqueeze(dim=0)
@@ -1518,13 +1518,11 @@ class LatentCrop:
class SetLatentNoiseMask:
@classmethod
def INPUT_TYPES(s):
- return {"required": { "samples": ("LATENT",),
- "mask": ("MASK",),
- }}
+ return {"required": { "samples": ("LATENT",), "mask": ("MASK",), }}
RETURN_TYPES = ("LATENT",)
FUNCTION = "set_mask"
- CATEGORY = "model/latent/inpaint"
+ CATEGORY = "model/latent"
def set_mask(self, samples, mask):
s = samples.copy()
@@ -2045,7 +2043,7 @@ NODE_CLASS_MAPPINGS = {
"ImageBatch": ImageBatch,
"ImagePadForOutpaint": ImagePadForOutpaint,
"EmptyImage": EmptyImage,
- "ConditioningAverage": ConditioningAverage ,
+ "ConditioningAverage": ConditioningAverage,
"ConditioningCombine": ConditioningCombine,
"ConditioningConcat": ConditioningConcat,
"ConditioningSetArea": ConditioningSetArea,
@@ -2101,6 +2099,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
"LoraLoader": "Load LoRA (Model and CLIP)",
"LoraLoaderModelOnly": "Load LoRA",
"CLIPLoader": "Load CLIP",
+ "DualCLIPLoader": "Load CLIP (Dual)",
"ControlNetLoader": "Load ControlNet Model",
"DiffControlNetLoader": "Load ControlNet Model (diff)",
"StyleModelLoader": "Load Style Model",
@@ -2108,6 +2107,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
"UNETLoader": "Load Diffusion Model",
"unCLIPCheckpointLoader": "Load unCLIP Checkpoint",
"GLIGENLoader": "Load GLIGEN Model",
+ "DiffusersLoader": "Load Diffusers Model (DEPRECATED)",
# Conditioning
"CLIPVisionEncode": "CLIP Vision Encode",
"StyleModelApply": "Apply Style Model",
@@ -2115,12 +2115,16 @@ NODE_DISPLAY_NAME_MAPPINGS = {
"CLIPSetLastLayer": "CLIP Set Last Layer",
"ConditioningCombine": "Conditioning (Combine)",
"ConditioningAverage ": "Conditioning (Average)",
+ "ConditioningAverage": "Conditioning (Average)",
"ConditioningConcat": "Conditioning (Concat)",
"ConditioningSetArea": "Conditioning (Set Area)",
"ConditioningSetAreaPercentage": "Conditioning (Set Area with Percentage)",
+ "ConditioningSetAreaStrength": "Conditioning (Set Area Strength)",
"ConditioningSetMask": "Conditioning (Set Mask)",
"ControlNetApply": "Apply ControlNet (DEPRECATED)",
"ControlNetApplyAdvanced": "Apply ControlNet",
+ "GLIGENTextBoxApply": "Apply GLIGEN Text Box",
+ "ConditioningZeroOut": "Conditioning Zero Out",
# Latent
"VAEEncodeForInpaint": "VAE Encode (for Inpainting)",
"SetLatentNoiseMask": "Set Latent Noise Mask",
@@ -2134,7 +2138,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
"LatentUpscaleBy": "Upscale Latent By",
"LatentComposite": "Latent Composite",
"LatentBlend": "Latent Blend",
- "LatentFromBatch" : "Latent From Batch",
+ "LatentFromBatch" : "Get Latent From Batch",
"RepeatLatentBatch": "Repeat Latent Batch",
# Image
"EmptyImage": "Empty Image",
From c44d261fc20a0a1032fccfe1d6472915a514d577 Mon Sep 17 00:00:00 2001
From: "Daxiong (Lin)"
Date: Wed, 17 Jun 2026 08:52:55 +0800
Subject: [PATCH 3/5] Add new model blueprints (#14506)
---
.../Character Replacement (SCAIL-2 Base).json | 4191 ++++++++++++++++
...haracter Replacement (SCAIL-2 Extend).json | 4461 +++++++++++++++++
...e Depth Estimation (Depth Anything 3).json | 569 +++
blueprints/Image Edit (Bernini-R).json | 3549 +++++++++++++
.../Image to Gaussian Splat (TripoSplat).json | 1983 ++++++++
.../Text to Image (Anima Base 1.0).json | 1088 ++++
blueprints/Text to Image (Anima).json | 7 +-
blueprints/Text to Image (Ideogram v4).json | 2473 +++++++++
...o Depth Estimation (Depth Anything 3).json | 825 +++
blueprints/Video Edit (Bernini-R).json | 3732 ++++++++++++++
10 files changed, 22876 insertions(+), 2 deletions(-)
create mode 100644 blueprints/Character Replacement (SCAIL-2 Base).json
create mode 100644 blueprints/Character Replacement (SCAIL-2 Extend).json
create mode 100644 blueprints/Image Depth Estimation (Depth Anything 3).json
create mode 100644 blueprints/Image Edit (Bernini-R).json
create mode 100644 blueprints/Image to Gaussian Splat (TripoSplat).json
create mode 100644 blueprints/Text to Image (Anima Base 1.0).json
create mode 100644 blueprints/Text to Image (Ideogram v4).json
create mode 100644 blueprints/Video Depth Estimation (Depth Anything 3).json
create mode 100644 blueprints/Video Edit (Bernini-R).json
diff --git a/blueprints/Character Replacement (SCAIL-2 Base).json b/blueprints/Character Replacement (SCAIL-2 Base).json
new file mode 100644
index 000000000..61803df65
--- /dev/null
+++ b/blueprints/Character Replacement (SCAIL-2 Base).json
@@ -0,0 +1,4191 @@
+{
+ "revision": 0,
+ "last_node_id": 410,
+ "last_link_id": 0,
+ "nodes": [
+ {
+ "id": 410,
+ "type": "35331397-69fb-40ad-b99a-7f17b1a53017",
+ "pos": [
+ 2450,
+ 5670
+ ],
+ "size": [
+ 490,
+ 1120
+ ],
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "pose_video",
+ "localized_name": "video",
+ "name": "video",
+ "type": "VIDEO",
+ "link": null
+ },
+ {
+ "label": "reference_image",
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "label": "prompt",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ },
+ {
+ "label": "segment_index",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ },
+ {
+ "label": "replace_mode",
+ "name": "value_2",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value_2"
+ },
+ "link": null
+ },
+ {
+ "label": "width",
+ "name": "value_3",
+ "type": "INT",
+ "widget": {
+ "name": "value_3"
+ },
+ "link": null
+ },
+ {
+ "label": "height",
+ "name": "value_4",
+ "type": "INT",
+ "widget": {
+ "name": "value_4"
+ },
+ "link": null
+ },
+ {
+ "label": "frame_count",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": null
+ },
+ {
+ "name": "previous_frame_count",
+ "type": "INT",
+ "widget": {
+ "name": "previous_frame_count"
+ },
+ "link": null
+ },
+ {
+ "name": "pose_strength",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_strength"
+ },
+ "link": null
+ },
+ {
+ "name": "pose_start",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_start"
+ },
+ "link": null
+ },
+ {
+ "name": "pose_end",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_end"
+ },
+ "link": null
+ },
+ {
+ "label": "turbo_mode",
+ "name": "value_5",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value_5"
+ },
+ "link": null
+ },
+ {
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": null
+ },
+ {
+ "label": "distill_lora",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": null
+ },
+ {
+ "label": "dpo_lora",
+ "name": "lora_name_1",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name_1"
+ },
+ "link": null
+ },
+ {
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": null
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": null
+ },
+ {
+ "label": "clip_vision",
+ "name": "clip_name_1",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name_1"
+ },
+ "link": null
+ },
+ {
+ "label": "sam3_video_object",
+ "name": "text_1",
+ "type": "STRING",
+ "widget": {
+ "name": "text_1"
+ },
+ "link": null
+ },
+ {
+ "label": "sam3_image_object",
+ "name": "text_2",
+ "type": "STRING",
+ "widget": {
+ "name": "text_2"
+ },
+ "link": null
+ },
+ {
+ "label": "sam3_model",
+ "name": "ckpt_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "ckpt_name"
+ },
+ "link": null
+ },
+ {
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "IMAGE",
+ "links": []
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "405",
+ "text"
+ ],
+ [
+ "391",
+ "value"
+ ],
+ [
+ "398",
+ "value"
+ ],
+ [
+ "387",
+ "value"
+ ],
+ [
+ "388",
+ "value"
+ ],
+ [
+ "386",
+ "length"
+ ],
+ [
+ "406",
+ "previous_frame_count"
+ ],
+ [
+ "406",
+ "pose_strength"
+ ],
+ [
+ "406",
+ "pose_start"
+ ],
+ [
+ "406",
+ "pose_end"
+ ],
+ [
+ "402",
+ "value"
+ ],
+ [
+ "374",
+ "unet_name"
+ ],
+ [
+ "367",
+ "lora_name"
+ ],
+ [
+ "408",
+ "lora_name"
+ ],
+ [
+ "372",
+ "clip_name"
+ ],
+ [
+ "368",
+ "vae_name"
+ ],
+ [
+ "373",
+ "clip_name"
+ ],
+ [
+ "393",
+ "text"
+ ],
+ [
+ "407",
+ "text"
+ ],
+ [
+ "394",
+ "ckpt_name"
+ ],
+ [
+ "378",
+ "noise_seed"
+ ],
+ [
+ "399",
+ "$$canvas-image-preview"
+ ],
+ [
+ "400",
+ "$$canvas-image-preview"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [],
+ "title": "Character Replacement (SCAIL-2 Base)"
+ }
+ ],
+ "links": [],
+ "version": 0.4,
+ "definitions": {
+ "subgraphs": [
+ {
+ "id": "35331397-69fb-40ad-b99a-7f17b1a53017",
+ "version": 1,
+ "state": {
+ "lastGroupId": 17,
+ "lastNodeId": 410,
+ "lastLinkId": 570,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Character Replacement (SCAIL-2 Base)",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ -440,
+ 4190,
+ 173.015625,
+ 508
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 3980,
+ 3870,
+ 128,
+ 68
+ ]
+ },
+ "inputs": [
+ {
+ "id": "e9aedfaf-1991-4a75-ad9b-8c3a279b0488",
+ "name": "video",
+ "type": "VIDEO",
+ "linkIds": [
+ 409
+ ],
+ "localized_name": "video",
+ "label": "pose_video",
+ "pos": [
+ -290.984375,
+ 4214
+ ]
+ },
+ {
+ "id": "0badb26e-9abd-4e9c-b221-aab1237b8773",
+ "name": "images",
+ "type": "IMAGE",
+ "linkIds": [
+ 469,
+ 408,
+ 473
+ ],
+ "localized_name": "images",
+ "label": "reference_image",
+ "pos": [
+ -290.984375,
+ 4234
+ ]
+ },
+ {
+ "id": "098f15aa-a066-422e-b491-eaf140bafb2c",
+ "name": "text",
+ "type": "STRING",
+ "linkIds": [
+ 499
+ ],
+ "label": "prompt",
+ "pos": [
+ -290.984375,
+ 4254
+ ]
+ },
+ {
+ "id": "861ea850-8329-491b-9413-2588cdd77bbd",
+ "name": "value",
+ "type": "INT",
+ "linkIds": [
+ 502
+ ],
+ "label": "segment_index",
+ "pos": [
+ -290.984375,
+ 4274
+ ]
+ },
+ {
+ "id": "dcf3ebf8-1263-458a-966b-9e77a5ad704a",
+ "name": "value_2",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 504
+ ],
+ "label": "replace_mode",
+ "pos": [
+ -290.984375,
+ 4294
+ ]
+ },
+ {
+ "id": "dbee10ce-bb98-4733-88a0-d4cd5b13c691",
+ "name": "value_3",
+ "type": "INT",
+ "linkIds": [
+ 505
+ ],
+ "label": "width",
+ "pos": [
+ -290.984375,
+ 4314
+ ]
+ },
+ {
+ "id": "363e3ac7-0096-4480-b875-1d6ff1b8a2d9",
+ "name": "value_4",
+ "type": "INT",
+ "linkIds": [
+ 506
+ ],
+ "label": "height",
+ "pos": [
+ -290.984375,
+ 4334
+ ]
+ },
+ {
+ "id": "4017e1ed-96cd-4c1c-9949-dc1a8c30386a",
+ "name": "length",
+ "type": "INT",
+ "linkIds": [
+ 522,
+ 541
+ ],
+ "label": "frame_count",
+ "pos": [
+ -290.984375,
+ 4354
+ ]
+ },
+ {
+ "id": "617809fd-9647-4067-8f44-10d8acc8af82",
+ "name": "previous_frame_count",
+ "type": "INT",
+ "linkIds": [
+ 542,
+ 543
+ ],
+ "pos": [
+ -290.984375,
+ 4374
+ ]
+ },
+ {
+ "id": "36ab49f6-528f-4301-a37a-0108aa7f5bec",
+ "name": "pose_strength",
+ "type": "FLOAT",
+ "linkIds": [
+ 547
+ ],
+ "pos": [
+ -290.984375,
+ 4394
+ ]
+ },
+ {
+ "id": "24c2e93f-7bbc-4c6d-898e-36b440b8469b",
+ "name": "pose_start",
+ "type": "FLOAT",
+ "linkIds": [
+ 548
+ ],
+ "pos": [
+ -290.984375,
+ 4414
+ ]
+ },
+ {
+ "id": "d1dbe632-bb2a-4c30-a7ea-5082f21dc686",
+ "name": "pose_end",
+ "type": "FLOAT",
+ "linkIds": [
+ 549
+ ],
+ "pos": [
+ -290.984375,
+ 4434
+ ]
+ },
+ {
+ "id": "ddf07ba4-2837-40ef-925f-5996ea436334",
+ "name": "value_5",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 507
+ ],
+ "label": "turbo_mode",
+ "pos": [
+ -290.984375,
+ 4454
+ ]
+ },
+ {
+ "id": "ee8c796d-b326-40c6-9f9d-65f564053974",
+ "name": "unet_name",
+ "type": "COMBO",
+ "linkIds": [
+ 508
+ ],
+ "pos": [
+ -290.984375,
+ 4474
+ ]
+ },
+ {
+ "id": "6ccae991-51d7-4c8e-adc8-c7f6377d681b",
+ "name": "lora_name",
+ "type": "COMBO",
+ "linkIds": [
+ 509
+ ],
+ "label": "distill_lora",
+ "pos": [
+ -290.984375,
+ 4494
+ ]
+ },
+ {
+ "id": "30772913-ecf9-44f4-a638-2824404b24fb",
+ "name": "lora_name_1",
+ "type": "COMBO",
+ "linkIds": [
+ 565
+ ],
+ "label": "dpo_lora",
+ "pos": [
+ -290.984375,
+ 4514
+ ]
+ },
+ {
+ "id": "2e9c2347-93fe-462f-b5ef-51613fb52c85",
+ "name": "clip_name",
+ "type": "COMBO",
+ "linkIds": [
+ 510
+ ],
+ "pos": [
+ -290.984375,
+ 4534
+ ]
+ },
+ {
+ "id": "bc1822c0-7484-47b7-8d59-cf94788290f7",
+ "name": "vae_name",
+ "type": "COMBO",
+ "linkIds": [
+ 511
+ ],
+ "pos": [
+ -290.984375,
+ 4554
+ ]
+ },
+ {
+ "id": "bbf2ee19-58b3-46f4-af6a-cd1557d60c8d",
+ "name": "clip_name_1",
+ "type": "COMBO",
+ "linkIds": [
+ 512
+ ],
+ "label": "clip_vision",
+ "pos": [
+ -290.984375,
+ 4574
+ ]
+ },
+ {
+ "id": "556415bd-8ef3-4cfa-b182-0d7e3e4cd572",
+ "name": "text_1",
+ "type": "STRING",
+ "linkIds": [
+ 513
+ ],
+ "label": "sam3_video_object",
+ "pos": [
+ -290.984375,
+ 4594
+ ]
+ },
+ {
+ "id": "c577930c-85a3-4e92-ac44-8ed639937217",
+ "name": "text_2",
+ "type": "STRING",
+ "linkIds": [
+ 514
+ ],
+ "label": "sam3_image_object",
+ "pos": [
+ -290.984375,
+ 4614
+ ]
+ },
+ {
+ "id": "8f542c5e-da91-4dad-8ff8-4e81a42d5140",
+ "name": "ckpt_name",
+ "type": "COMBO",
+ "linkIds": [
+ 515
+ ],
+ "label": "sam3_model",
+ "pos": [
+ -290.984375,
+ 4634
+ ]
+ },
+ {
+ "id": "3064d232-69a3-43b1-b350-05d8ca0e7c9f",
+ "name": "noise_seed",
+ "type": "INT",
+ "linkIds": [
+ 558
+ ],
+ "pos": [
+ -290.984375,
+ 4654
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "7ae88834-7553-45ec-a4e8-bab7d5276b45",
+ "name": "output",
+ "type": "IMAGE",
+ "linkIds": [
+ 544
+ ],
+ "localized_name": "output",
+ "pos": [
+ 4004,
+ 3894
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 367,
+ "type": "LoraLoaderModelOnly",
+ "pos": [
+ 300,
+ 3590
+ ],
+ "size": [
+ 590,
+ 140
+ ],
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 563
+ },
+ {
+ "localized_name": "lora_name",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": 509
+ },
+ {
+ "localized_name": "strength_model",
+ "name": "strength_model",
+ "type": "FLOAT",
+ "widget": {
+ "name": "strength_model"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 398,
+ 425
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoaderModelOnly",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Lightx2v/lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors",
+ "directory": "loras"
+ }
+ ]
+ },
+ "widgets_values": [
+ "lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors",
+ 0.8
+ ],
+ "color": "#223",
+ "bgcolor": "#335"
+ },
+ {
+ "id": 368,
+ "type": "VAELoader",
+ "pos": [
+ 300,
+ 4020
+ ],
+ "size": [
+ 590,
+ 140
+ ],
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "vae_name",
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": 511
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 406,
+ 407
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAELoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "Wan2_1_VAE_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan2_1_VAE_bf16.safetensors",
+ "directory": "vae"
+ }
+ ]
+ },
+ "widgets_values": [
+ "Wan2_1_VAE_bf16.safetensors"
+ ]
+ },
+ {
+ "id": 369,
+ "type": "ResizeImageMaskNode",
+ "pos": [
+ 1280,
+ 4860
+ ],
+ "size": [
+ 270,
+ 160
+ ],
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "input",
+ "name": "input",
+ "type": "IMAGE,MASK",
+ "link": 491
+ },
+ {
+ "localized_name": "resize_type",
+ "name": "resize_type",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "widget": {
+ "name": "resize_type"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "width",
+ "name": "resize_type.width",
+ "type": "INT",
+ "widget": {
+ "name": "resize_type.width"
+ },
+ "link": 444
+ },
+ {
+ "localized_name": "height",
+ "name": "resize_type.height",
+ "type": "INT",
+ "widget": {
+ "name": "resize_type.height"
+ },
+ "link": 446
+ },
+ {
+ "localized_name": "crop",
+ "name": "resize_type.crop",
+ "type": "COMBO",
+ "widget": {
+ "name": "resize_type.crop"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "scale_method",
+ "name": "scale_method",
+ "type": "COMBO",
+ "widget": {
+ "name": "scale_method"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "resized",
+ "name": "resized",
+ "type": "*",
+ "links": [
+ 420,
+ 492,
+ 493
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ResizeImageMaskNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "scale dimensions",
+ 512,
+ 512,
+ "center",
+ "area"
+ ]
+ },
+ {
+ "id": 370,
+ "type": "GetVideoComponents",
+ "pos": [
+ 270,
+ 4500
+ ],
+ "size": [
+ 230,
+ 90
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 8,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "video",
+ "name": "video",
+ "type": "VIDEO",
+ "link": 409
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "links": [
+ 490
+ ]
+ },
+ {
+ "localized_name": "audio",
+ "name": "audio",
+ "type": "AUDIO",
+ "links": null
+ },
+ {
+ "localized_name": "fps",
+ "name": "fps",
+ "type": "FLOAT",
+ "links": []
+ },
+ {
+ "localized_name": "bit_depth",
+ "name": "bit_depth",
+ "type": "INT",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "GetVideoComponents",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 371,
+ "type": "GetImageSize",
+ "pos": [
+ 1640,
+ 4500
+ ],
+ "size": [
+ 240,
+ 190
+ ],
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 492
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "width",
+ "name": "width",
+ "type": "INT",
+ "links": [
+ 414
+ ]
+ },
+ {
+ "localized_name": "height",
+ "name": "height",
+ "type": "INT",
+ "links": [
+ 415
+ ]
+ },
+ {
+ "localized_name": "batch_size",
+ "name": "batch_size",
+ "type": "INT",
+ "links": [
+ 416
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "GetImageSize",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 372,
+ "type": "CLIPLoader",
+ "pos": [
+ 300,
+ 3790
+ ],
+ "size": [
+ 590,
+ 170
+ ],
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_name",
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": 510
+ },
+ {
+ "localized_name": "type",
+ "name": "type",
+ "type": "COMBO",
+ "widget": {
+ "name": "type"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "device",
+ "name": "device",
+ "shape": 7,
+ "type": "COMBO",
+ "widget": {
+ "name": "device"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP",
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 7,
+ 8
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "directory": "text_encoders"
+ }
+ ]
+ },
+ "widgets_values": [
+ "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "wan",
+ "default"
+ ]
+ },
+ {
+ "id": 373,
+ "type": "CLIPVisionLoader",
+ "pos": [
+ 300,
+ 4230
+ ],
+ "size": [
+ 590,
+ 110
+ ],
+ "flags": {},
+ "order": 11,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_name",
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": 512
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP_VISION",
+ "name": "CLIP_VISION",
+ "type": "CLIP_VISION",
+ "links": [
+ 196
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPVisionLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "clip_vision_h.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/clip_vision/clip_vision_h.safetensors",
+ "directory": "clip_vision"
+ }
+ ]
+ },
+ "widgets_values": [
+ "clip_vision_h.safetensors"
+ ]
+ },
+ {
+ "id": 374,
+ "type": "UNETLoader",
+ "pos": [
+ 300,
+ 3190
+ ],
+ "size": [
+ 590,
+ 140
+ ],
+ "flags": {},
+ "order": 12,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 508
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 562
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "wan2.1_14B_SCAIL_2_fp16.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/SCAIL-2/resolve/main/diffusion_models/wan2.1_14B_SCAIL_2_fp16.safetensors",
+ "directory": "diffusion_models"
+ }
+ ]
+ },
+ "widgets_values": [
+ "wan2.1_14B_SCAIL_2_fp16.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 375,
+ "type": "ModelSamplingSD3",
+ "pos": [
+ 2760,
+ 3370
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 13,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 424
+ },
+ {
+ "localized_name": "shift",
+ "name": "shift",
+ "type": "FLOAT",
+ "widget": {
+ "name": "shift"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 417
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ModelSamplingSD3",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 5
+ ]
+ },
+ {
+ "id": 376,
+ "type": "KSamplerSelect",
+ "pos": [
+ 2770,
+ 3520
+ ],
+ "size": [
+ 260,
+ 110
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "sampler_name",
+ "name": "sampler_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "sampler_name"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SAMPLER",
+ "name": "SAMPLER",
+ "type": "SAMPLER",
+ "links": [
+ 419
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerSelect",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "euler"
+ ]
+ },
+ {
+ "id": 377,
+ "type": "BasicScheduler",
+ "pos": [
+ 2770,
+ 3670
+ ],
+ "size": [
+ 260,
+ 170
+ ],
+ "flags": {},
+ "order": 14,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 398
+ },
+ {
+ "localized_name": "scheduler",
+ "name": "scheduler",
+ "type": "COMBO",
+ "widget": {
+ "name": "scheduler"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "steps",
+ "name": "steps",
+ "type": "INT",
+ "widget": {
+ "name": "steps"
+ },
+ "link": 428
+ },
+ {
+ "localized_name": "denoise",
+ "name": "denoise",
+ "type": "FLOAT",
+ "widget": {
+ "name": "denoise"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SIGMAS",
+ "name": "SIGMAS",
+ "type": "SIGMAS",
+ "links": [
+ 418
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "BasicScheduler",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "simple",
+ 6,
+ 1
+ ]
+ },
+ {
+ "id": 378,
+ "type": "SamplerCustom",
+ "pos": [
+ 3080,
+ 3370
+ ],
+ "size": [
+ 270,
+ 670
+ ],
+ "flags": {},
+ "order": 15,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 417
+ },
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 333
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 334
+ },
+ {
+ "localized_name": "sampler",
+ "name": "sampler",
+ "type": "SAMPLER",
+ "link": 419
+ },
+ {
+ "localized_name": "sigmas",
+ "name": "sigmas",
+ "type": "SIGMAS",
+ "link": 418
+ },
+ {
+ "localized_name": "latent_image",
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 335
+ },
+ {
+ "localized_name": "add_noise",
+ "name": "add_noise",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "add_noise"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "noise_seed",
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": 558
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": 431
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "LATENT",
+ "links": []
+ },
+ {
+ "localized_name": "denoised_output",
+ "name": "denoised_output",
+ "type": "LATENT",
+ "links": [
+ 124
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SamplerCustom",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ true,
+ 1,
+ "fixed",
+ 1
+ ]
+ },
+ {
+ "id": 379,
+ "type": "PrimitiveInt",
+ "pos": [
+ 2060,
+ 3750
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 427
+ ]
+ }
+ ],
+ "title": "Int (Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 6,
+ "fixed"
+ ]
+ },
+ {
+ "id": 380,
+ "type": "PrimitiveFloat",
+ "pos": [
+ 2060,
+ 3920
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "FLOAT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 430
+ ]
+ }
+ ],
+ "title": "Float (CFG)",
+ "properties": {
+ "Node name for S&R": "PrimitiveFloat",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 1
+ ]
+ },
+ {
+ "id": 381,
+ "type": "PrimitiveInt",
+ "pos": [
+ 2060,
+ 3380
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 426
+ ]
+ }
+ ],
+ "title": "Int (Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 40,
+ "fixed"
+ ]
+ },
+ {
+ "id": 382,
+ "type": "PrimitiveFloat",
+ "pos": [
+ 2060,
+ 3530
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "FLOAT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 429
+ ]
+ }
+ ],
+ "title": "Float (CFG)",
+ "properties": {
+ "Node name for S&R": "PrimitiveFloat",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 5
+ ]
+ },
+ {
+ "id": 383,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2400,
+ 3360
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 16,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 564
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 425
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 432
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 424
+ ]
+ }
+ ],
+ "title": "Switch (Model)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 384,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2400,
+ 3550
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 17,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 426
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 427
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 433
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 428
+ ]
+ }
+ ],
+ "title": "Switch (Steps)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 385,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2400,
+ 3730
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 18,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 429
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 430
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 434
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 431
+ ]
+ }
+ ],
+ "title": "Switch (Steps)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 386,
+ "type": "ImageFromBatch",
+ "pos": [
+ 880,
+ 4490
+ ],
+ "size": [
+ 270,
+ 140
+ ],
+ "flags": {},
+ "order": 19,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 490
+ },
+ {
+ "localized_name": "batch_index",
+ "name": "batch_index",
+ "type": "INT",
+ "widget": {
+ "name": "batch_index"
+ },
+ "link": 450
+ },
+ {
+ "localized_name": "length",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": 522
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 491
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ImageFromBatch",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 0,
+ 81
+ ]
+ },
+ {
+ "id": 387,
+ "type": "PrimitiveInt",
+ "pos": [
+ 250,
+ 4820
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 20,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 505
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 441
+ ]
+ }
+ ],
+ "title": "Int (Width)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 896,
+ "fixed"
+ ]
+ },
+ {
+ "id": 388,
+ "type": "PrimitiveInt",
+ "pos": [
+ 250,
+ 5000
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 21,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 506
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 445
+ ]
+ }
+ ],
+ "title": "Int (Height)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 512,
+ "fixed"
+ ]
+ },
+ {
+ "id": 389,
+ "type": "ComfyMathExpression",
+ "pos": [
+ 690,
+ 4850
+ ],
+ "size": [
+ 230,
+ 80
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 22,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "a",
+ "localized_name": "values.a",
+ "name": "values.a",
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 441
+ },
+ {
+ "label": "b",
+ "localized_name": "values.b",
+ "name": "values.b",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": null
+ },
+ {
+ "localized_name": "expression",
+ "name": "expression",
+ "type": "STRING",
+ "widget": {
+ "name": "expression"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": []
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 444
+ ]
+ },
+ {
+ "localized_name": "BOOL",
+ "name": "BOOL",
+ "type": "BOOLEAN",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyMathExpression",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "(a // 32) * 32"
+ ]
+ },
+ {
+ "id": 390,
+ "type": "ComfyMathExpression",
+ "pos": [
+ 690,
+ 5030
+ ],
+ "size": [
+ 230,
+ 80
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 23,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "a",
+ "localized_name": "values.a",
+ "name": "values.a",
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 445
+ },
+ {
+ "label": "b",
+ "localized_name": "values.b",
+ "name": "values.b",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": null
+ },
+ {
+ "localized_name": "expression",
+ "name": "expression",
+ "type": "STRING",
+ "widget": {
+ "name": "expression"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": []
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 446
+ ]
+ },
+ {
+ "localized_name": "BOOL",
+ "name": "BOOL",
+ "type": "BOOLEAN",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyMathExpression",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "(a // 32) * 32"
+ ]
+ },
+ {
+ "id": 391,
+ "type": "PrimitiveInt",
+ "pos": [
+ 260,
+ 4570
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 24,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 502
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 447
+ ]
+ }
+ ],
+ "title": "Int (segment index)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 1,
+ "fixed"
+ ]
+ },
+ {
+ "id": 392,
+ "type": "ComfyMathExpression",
+ "pos": [
+ 580,
+ 4590
+ ],
+ "size": [
+ 230,
+ 220
+ ],
+ "flags": {
+ "collapsed": false
+ },
+ "order": 25,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "a",
+ "localized_name": "values.a",
+ "name": "values.a",
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 447
+ },
+ {
+ "label": "b",
+ "localized_name": "values.b",
+ "name": "values.b",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 541
+ },
+ {
+ "label": "c",
+ "localized_name": "values.c",
+ "name": "values.c",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 543
+ },
+ {
+ "label": "d",
+ "localized_name": "values.d",
+ "name": "values.d",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": null
+ },
+ {
+ "localized_name": "expression",
+ "name": "expression",
+ "type": "STRING",
+ "widget": {
+ "name": "expression"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": null
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 450
+ ]
+ },
+ {
+ "localized_name": "BOOL",
+ "name": "BOOL",
+ "type": "BOOLEAN",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyMathExpression",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "(b - c) * (a - 1)"
+ ]
+ },
+ {
+ "id": 393,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 660,
+ 5360
+ ],
+ "size": [
+ 380,
+ 160
+ ],
+ "flags": {},
+ "order": 26,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 454
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 513
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 461
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.3",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 394,
+ "type": "CheckpointLoaderSimple",
+ "pos": [
+ 270,
+ 5340
+ ],
+ "size": [
+ 330,
+ 160
+ ],
+ "flags": {},
+ "order": 27,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "ckpt_name",
+ "name": "ckpt_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "ckpt_name"
+ },
+ "link": 515
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 458,
+ 463
+ ]
+ },
+ {
+ "localized_name": "CLIP",
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 454,
+ 489
+ ]
+ },
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": []
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CheckpointLoaderSimple",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.3",
+ "models": [
+ {
+ "name": "sam3.1_multiplex_fp16.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/sam3.1/resolve/main/checkpoints/sam3.1_multiplex_fp16.safetensors",
+ "directory": "checkpoints"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "sam3.1_multiplex_fp16.safetensors"
+ ]
+ },
+ {
+ "id": 395,
+ "type": "SAM3_VideoTrack",
+ "pos": [
+ 1190,
+ 5320
+ ],
+ "size": [
+ 280,
+ 250
+ ],
+ "flags": {},
+ "order": 28,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "images",
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 493
+ },
+ {
+ "label": "model",
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 458
+ },
+ {
+ "label": "initial_mask",
+ "localized_name": "initial_mask",
+ "name": "initial_mask",
+ "shape": 7,
+ "type": "MASK",
+ "link": null
+ },
+ {
+ "label": "conditioning",
+ "localized_name": "conditioning",
+ "name": "conditioning",
+ "shape": 7,
+ "type": "CONDITIONING",
+ "link": 461
+ },
+ {
+ "localized_name": "detection_threshold",
+ "name": "detection_threshold",
+ "type": "FLOAT",
+ "widget": {
+ "name": "detection_threshold"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "max_objects",
+ "name": "max_objects",
+ "type": "INT",
+ "widget": {
+ "name": "max_objects"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "detect_interval",
+ "name": "detect_interval",
+ "type": "INT",
+ "widget": {
+ "name": "detect_interval"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "track_data",
+ "name": "track_data",
+ "type": "SAM3_TRACK_DATA",
+ "links": [
+ 460
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SAM3_VideoTrack",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 0.5,
+ 4,
+ 1
+ ]
+ },
+ {
+ "id": 396,
+ "type": "SCAIL2ColoredMask",
+ "pos": [
+ 1550,
+ 5470
+ ],
+ "size": [
+ 370,
+ 200
+ ],
+ "flags": {},
+ "order": 29,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "driving_track_data",
+ "name": "driving_track_data",
+ "type": "SAM3_TRACK_DATA",
+ "link": 460
+ },
+ {
+ "localized_name": "ref_track_data",
+ "name": "ref_track_data",
+ "shape": 7,
+ "type": "SAM3_TRACK_DATA",
+ "link": 464
+ },
+ {
+ "localized_name": "object_indices",
+ "name": "object_indices",
+ "type": "STRING",
+ "widget": {
+ "name": "object_indices"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "sort_by",
+ "name": "sort_by",
+ "type": "COMBO",
+ "widget": {
+ "name": "sort_by"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "replacement_mode",
+ "name": "replacement_mode",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "replacement_mode"
+ },
+ "link": 476
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "pose_video_mask",
+ "name": "pose_video_mask",
+ "type": "IMAGE",
+ "links": [
+ 466,
+ 467
+ ]
+ },
+ {
+ "localized_name": "reference_image_mask",
+ "name": "reference_image_mask",
+ "type": "IMAGE",
+ "links": [
+ 465,
+ 472
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SCAIL2ColoredMask",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "",
+ "left_to_right",
+ true
+ ]
+ },
+ {
+ "id": 397,
+ "type": "SAM3_VideoTrack",
+ "pos": [
+ 1190,
+ 5620
+ ],
+ "size": [
+ 280,
+ 250
+ ],
+ "flags": {},
+ "order": 30,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "images",
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 469
+ },
+ {
+ "label": "model",
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 463
+ },
+ {
+ "label": "initial_mask",
+ "localized_name": "initial_mask",
+ "name": "initial_mask",
+ "shape": 7,
+ "type": "MASK",
+ "link": null
+ },
+ {
+ "label": "conditioning",
+ "localized_name": "conditioning",
+ "name": "conditioning",
+ "shape": 7,
+ "type": "CONDITIONING",
+ "link": 488
+ },
+ {
+ "localized_name": "detection_threshold",
+ "name": "detection_threshold",
+ "type": "FLOAT",
+ "widget": {
+ "name": "detection_threshold"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "max_objects",
+ "name": "max_objects",
+ "type": "INT",
+ "widget": {
+ "name": "max_objects"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "detect_interval",
+ "name": "detect_interval",
+ "type": "INT",
+ "widget": {
+ "name": "detect_interval"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "track_data",
+ "name": "track_data",
+ "type": "SAM3_TRACK_DATA",
+ "links": [
+ 464
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SAM3_VideoTrack",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 0.5,
+ 4,
+ 1
+ ]
+ },
+ {
+ "id": 398,
+ "type": "PrimitiveBoolean",
+ "pos": [
+ 1660,
+ 4200
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 31,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value"
+ },
+ "link": 504
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "BOOLEAN",
+ "name": "BOOLEAN",
+ "type": "BOOLEAN",
+ "links": [
+ 475,
+ 476
+ ]
+ }
+ ],
+ "title": "Boolean (Replace Mode)",
+ "properties": {
+ "Node name for S&R": "PrimitiveBoolean",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ true
+ ]
+ },
+ {
+ "id": 399,
+ "type": "PreviewImage",
+ "pos": [
+ 2040,
+ 4470
+ ],
+ "size": [
+ 350,
+ 1190
+ ],
+ "flags": {},
+ "order": 32,
+ "mode": 4,
+ "inputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 466
+ }
+ ],
+ "outputs": [],
+ "properties": {
+ "Node name for S&R": "PreviewImage",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 400,
+ "type": "PreviewImage",
+ "pos": [
+ 2440,
+ 4470
+ ],
+ "size": [
+ 230,
+ 310
+ ],
+ "flags": {},
+ "order": 33,
+ "mode": 4,
+ "inputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 465
+ }
+ ],
+ "outputs": [],
+ "properties": {
+ "Node name for S&R": "PreviewImage",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 401,
+ "type": "VAEDecode",
+ "pos": [
+ 3080,
+ 4120
+ ],
+ "size": [
+ 270,
+ 100
+ ],
+ "flags": {
+ "collapsed": false
+ },
+ "order": 34,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "samples",
+ "name": "samples",
+ "type": "LATENT",
+ "link": 124
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 407
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 544
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 402,
+ "type": "PrimitiveBoolean",
+ "pos": [
+ 2410,
+ 3940
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 35,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value"
+ },
+ "link": 507
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "BOOLEAN",
+ "name": "BOOLEAN",
+ "type": "BOOLEAN",
+ "links": [
+ 432,
+ 433,
+ 434
+ ]
+ }
+ ],
+ "title": "Boolean (Enable Distill LoRA?)",
+ "properties": {
+ "Node name for S&R": "PrimitiveBoolean",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ true
+ ]
+ },
+ {
+ "id": 403,
+ "type": "CLIPVisionEncode",
+ "pos": [
+ 1200,
+ 4260
+ ],
+ "size": [
+ 230,
+ 60
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 36,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_vision",
+ "name": "clip_vision",
+ "type": "CLIP_VISION",
+ "link": 196
+ },
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 408
+ },
+ {
+ "localized_name": "crop",
+ "name": "crop",
+ "type": "COMBO",
+ "widget": {
+ "name": "crop"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP_VISION_OUTPUT",
+ "name": "CLIP_VISION_OUTPUT",
+ "type": "CLIP_VISION_OUTPUT",
+ "links": [
+ 404
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPVisionEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "none"
+ ]
+ },
+ {
+ "id": 404,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 1000,
+ 3970
+ ],
+ "size": [
+ 520,
+ 210
+ ],
+ "flags": {},
+ "order": 37,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 8
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 326
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ ""
+ ],
+ "color": "#223",
+ "bgcolor": "#335"
+ },
+ {
+ "id": 405,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 990,
+ 3170
+ ],
+ "size": [
+ 550,
+ 750
+ ],
+ "flags": {},
+ "order": 38,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 7
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 499
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 325
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "A young woman with dark hair tied in a neat high bun, with a few loose strands framing her face, is dancing outdoors on a sunny coastal hillside. She has a normal-sized head and a slim face, with no hat, no headwear, and no oversized hair volume. She wears a fitted black long-sleeve crop top with a shoulder cutout, extremely baggy black cargo pants with straps and pockets, and chunky black combat boots. She performs energetic dance moves with one leg lifted and arms extended, moving naturally in front of a large tree, a small white stone house with a terracotta roof, and a bright blue sea under a clear sky with light clouds."
+ ],
+ "color": "#232",
+ "bgcolor": "#353"
+ },
+ {
+ "id": 406,
+ "type": "WanSCAILToVideo",
+ "pos": [
+ 1640,
+ 3400
+ ],
+ "size": [
+ 310,
+ 580
+ ],
+ "flags": {},
+ "order": 39,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 325
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 326
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 406
+ },
+ {
+ "localized_name": "pose_video",
+ "name": "pose_video",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 420
+ },
+ {
+ "localized_name": "pose_video_mask",
+ "name": "pose_video_mask",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 467
+ },
+ {
+ "localized_name": "reference_image",
+ "name": "reference_image",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 473
+ },
+ {
+ "localized_name": "reference_image_mask",
+ "name": "reference_image_mask",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 472
+ },
+ {
+ "localized_name": "clip_vision_output",
+ "name": "clip_vision_output",
+ "shape": 7,
+ "type": "CLIP_VISION_OUTPUT",
+ "link": 404
+ },
+ {
+ "localized_name": "previous_frames",
+ "name": "previous_frames",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "localized_name": "width",
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": 414
+ },
+ {
+ "localized_name": "height",
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": 415
+ },
+ {
+ "localized_name": "length",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": 416
+ },
+ {
+ "localized_name": "batch_size",
+ "name": "batch_size",
+ "type": "INT",
+ "widget": {
+ "name": "batch_size"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "pose_strength",
+ "name": "pose_strength",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_strength"
+ },
+ "link": 547
+ },
+ {
+ "localized_name": "pose_start",
+ "name": "pose_start",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_start"
+ },
+ "link": 548
+ },
+ {
+ "localized_name": "pose_end",
+ "name": "pose_end",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_end"
+ },
+ "link": 549
+ },
+ {
+ "localized_name": "video_frame_offset",
+ "name": "video_frame_offset",
+ "type": "INT",
+ "widget": {
+ "name": "video_frame_offset"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "previous_frame_count",
+ "name": "previous_frame_count",
+ "type": "INT",
+ "widget": {
+ "name": "previous_frame_count"
+ },
+ "link": 542
+ },
+ {
+ "localized_name": "replacement_mode",
+ "name": "replacement_mode",
+ "shape": 7,
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "replacement_mode"
+ },
+ "link": 475
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "links": [
+ 333
+ ]
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "links": [
+ 334
+ ]
+ },
+ {
+ "localized_name": "latent",
+ "name": "latent",
+ "type": "LATENT",
+ "links": [
+ 335
+ ]
+ },
+ {
+ "localized_name": "video_frame_offset",
+ "name": "video_frame_offset",
+ "type": "INT",
+ "links": []
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "WanSCAILToVideo",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 512,
+ 896,
+ 65,
+ 1,
+ 1,
+ 0,
+ 1,
+ 0,
+ 5,
+ true
+ ],
+ "color": "#322",
+ "bgcolor": "#533"
+ },
+ {
+ "id": 407,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 670,
+ 5690
+ ],
+ "size": [
+ 380,
+ 160
+ ],
+ "flags": {},
+ "order": 40,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 489
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 514
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 488
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.3",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 408,
+ "type": "LoraLoaderModelOnly",
+ "pos": [
+ 310,
+ 3390
+ ],
+ "size": [
+ 580,
+ 140
+ ],
+ "flags": {},
+ "order": 41,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 562
+ },
+ {
+ "localized_name": "lora_name",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": 565
+ },
+ {
+ "localized_name": "strength_model",
+ "name": "strength_model",
+ "type": "FLOAT",
+ "widget": {
+ "name": "strength_model"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 563,
+ 564
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoaderModelOnly",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "wan2.1_SCAIL_2_DPO_lora_bf16.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/SCAIL-2/resolve/main/loras/wan2.1_SCAIL_2_DPO_lora_bf16.safetensors",
+ "directory": "loras"
+ }
+ ]
+ },
+ "widgets_values": [
+ "wan2.1_SCAIL_2_DPO_lora_bf16.safetensors",
+ 1
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "id": 3,
+ "title": "Models",
+ "bounding": [
+ 240,
+ 3100,
+ 710,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 4,
+ "title": "Prompt",
+ "bounding": [
+ 980,
+ 3100,
+ 570,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 5,
+ "title": "Sampling",
+ "bounding": [
+ 2730,
+ 3100,
+ 660,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 6,
+ "title": "SCAIL Conditioning",
+ "bounding": [
+ 1580,
+ 3100,
+ 420,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 9,
+ "title": "Switch Settings",
+ "bounding": [
+ 2030,
+ 3100,
+ 670,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 7,
+ "title": "Original Settings",
+ "bounding": [
+ 2050,
+ 3320,
+ 300,
+ 340
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 8,
+ "title": "Distill LoRA Settings",
+ "bounding": [
+ 2050,
+ 3680,
+ 300,
+ 370
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 10,
+ "title": "Create Mask",
+ "bounding": [
+ 240,
+ 5230,
+ 1760,
+ 670
+ ],
+ "flags": {}
+ },
+ {
+ "id": 11,
+ "title": "Resize Images",
+ "bounding": [
+ 240,
+ 4750,
+ 1760,
+ 450
+ ],
+ "flags": {}
+ },
+ {
+ "id": 12,
+ "title": "Trim Frames from Video",
+ "bounding": [
+ 240,
+ 4410,
+ 1760,
+ 310
+ ],
+ "flags": {}
+ },
+ {
+ "id": 13,
+ "title": "Preview Masks",
+ "bounding": [
+ 2030,
+ 4410,
+ 660,
+ 1490
+ ],
+ "flags": {}
+ }
+ ],
+ "links": [
+ {
+ "id": 491,
+ "origin_id": 386,
+ "origin_slot": 0,
+ "target_id": 369,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 444,
+ "origin_id": 389,
+ "origin_slot": 1,
+ "target_id": 369,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 446,
+ "origin_id": 390,
+ "origin_slot": 1,
+ "target_id": 369,
+ "target_slot": 3,
+ "type": "INT"
+ },
+ {
+ "id": 492,
+ "origin_id": 369,
+ "origin_slot": 0,
+ "target_id": 371,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 424,
+ "origin_id": 383,
+ "origin_slot": 0,
+ "target_id": 375,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 398,
+ "origin_id": 367,
+ "origin_slot": 0,
+ "target_id": 377,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 428,
+ "origin_id": 384,
+ "origin_slot": 0,
+ "target_id": 377,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 417,
+ "origin_id": 375,
+ "origin_slot": 0,
+ "target_id": 378,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 333,
+ "origin_id": 406,
+ "origin_slot": 0,
+ "target_id": 378,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 334,
+ "origin_id": 406,
+ "origin_slot": 1,
+ "target_id": 378,
+ "target_slot": 2,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 419,
+ "origin_id": 376,
+ "origin_slot": 0,
+ "target_id": 378,
+ "target_slot": 3,
+ "type": "SAMPLER"
+ },
+ {
+ "id": 418,
+ "origin_id": 377,
+ "origin_slot": 0,
+ "target_id": 378,
+ "target_slot": 4,
+ "type": "SIGMAS"
+ },
+ {
+ "id": 335,
+ "origin_id": 406,
+ "origin_slot": 2,
+ "target_id": 378,
+ "target_slot": 5,
+ "type": "LATENT"
+ },
+ {
+ "id": 431,
+ "origin_id": 385,
+ "origin_slot": 0,
+ "target_id": 378,
+ "target_slot": 8,
+ "type": "FLOAT"
+ },
+ {
+ "id": 425,
+ "origin_id": 367,
+ "origin_slot": 0,
+ "target_id": 383,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 432,
+ "origin_id": 402,
+ "origin_slot": 0,
+ "target_id": 383,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 426,
+ "origin_id": 381,
+ "origin_slot": 0,
+ "target_id": 384,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 427,
+ "origin_id": 379,
+ "origin_slot": 0,
+ "target_id": 384,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 433,
+ "origin_id": 402,
+ "origin_slot": 0,
+ "target_id": 384,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 429,
+ "origin_id": 382,
+ "origin_slot": 0,
+ "target_id": 385,
+ "target_slot": 0,
+ "type": "FLOAT"
+ },
+ {
+ "id": 430,
+ "origin_id": 380,
+ "origin_slot": 0,
+ "target_id": 385,
+ "target_slot": 1,
+ "type": "FLOAT"
+ },
+ {
+ "id": 434,
+ "origin_id": 402,
+ "origin_slot": 0,
+ "target_id": 385,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 490,
+ "origin_id": 370,
+ "origin_slot": 0,
+ "target_id": 386,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 450,
+ "origin_id": 392,
+ "origin_slot": 1,
+ "target_id": 386,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 441,
+ "origin_id": 387,
+ "origin_slot": 0,
+ "target_id": 389,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 445,
+ "origin_id": 388,
+ "origin_slot": 0,
+ "target_id": 390,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 447,
+ "origin_id": 391,
+ "origin_slot": 0,
+ "target_id": 392,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 454,
+ "origin_id": 394,
+ "origin_slot": 1,
+ "target_id": 393,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 493,
+ "origin_id": 369,
+ "origin_slot": 0,
+ "target_id": 395,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 458,
+ "origin_id": 394,
+ "origin_slot": 0,
+ "target_id": 395,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 461,
+ "origin_id": 393,
+ "origin_slot": 0,
+ "target_id": 395,
+ "target_slot": 3,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 460,
+ "origin_id": 395,
+ "origin_slot": 0,
+ "target_id": 396,
+ "target_slot": 0,
+ "type": "SAM3_TRACK_DATA"
+ },
+ {
+ "id": 464,
+ "origin_id": 397,
+ "origin_slot": 0,
+ "target_id": 396,
+ "target_slot": 1,
+ "type": "SAM3_TRACK_DATA"
+ },
+ {
+ "id": 476,
+ "origin_id": 398,
+ "origin_slot": 0,
+ "target_id": 396,
+ "target_slot": 4,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 463,
+ "origin_id": 394,
+ "origin_slot": 0,
+ "target_id": 397,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 488,
+ "origin_id": 407,
+ "origin_slot": 0,
+ "target_id": 397,
+ "target_slot": 3,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 466,
+ "origin_id": 396,
+ "origin_slot": 0,
+ "target_id": 399,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 465,
+ "origin_id": 396,
+ "origin_slot": 1,
+ "target_id": 400,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 124,
+ "origin_id": 378,
+ "origin_slot": 1,
+ "target_id": 401,
+ "target_slot": 0,
+ "type": "LATENT"
+ },
+ {
+ "id": 407,
+ "origin_id": 368,
+ "origin_slot": 0,
+ "target_id": 401,
+ "target_slot": 1,
+ "type": "VAE"
+ },
+ {
+ "id": 196,
+ "origin_id": 373,
+ "origin_slot": 0,
+ "target_id": 403,
+ "target_slot": 0,
+ "type": "CLIP_VISION"
+ },
+ {
+ "id": 8,
+ "origin_id": 372,
+ "origin_slot": 0,
+ "target_id": 404,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 7,
+ "origin_id": 372,
+ "origin_slot": 0,
+ "target_id": 405,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 325,
+ "origin_id": 405,
+ "origin_slot": 0,
+ "target_id": 406,
+ "target_slot": 0,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 326,
+ "origin_id": 404,
+ "origin_slot": 0,
+ "target_id": 406,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 406,
+ "origin_id": 368,
+ "origin_slot": 0,
+ "target_id": 406,
+ "target_slot": 2,
+ "type": "VAE"
+ },
+ {
+ "id": 420,
+ "origin_id": 369,
+ "origin_slot": 0,
+ "target_id": 406,
+ "target_slot": 3,
+ "type": "IMAGE"
+ },
+ {
+ "id": 467,
+ "origin_id": 396,
+ "origin_slot": 0,
+ "target_id": 406,
+ "target_slot": 4,
+ "type": "IMAGE"
+ },
+ {
+ "id": 472,
+ "origin_id": 396,
+ "origin_slot": 1,
+ "target_id": 406,
+ "target_slot": 6,
+ "type": "IMAGE"
+ },
+ {
+ "id": 404,
+ "origin_id": 403,
+ "origin_slot": 0,
+ "target_id": 406,
+ "target_slot": 7,
+ "type": "CLIP_VISION_OUTPUT"
+ },
+ {
+ "id": 414,
+ "origin_id": 371,
+ "origin_slot": 0,
+ "target_id": 406,
+ "target_slot": 9,
+ "type": "INT"
+ },
+ {
+ "id": 415,
+ "origin_id": 371,
+ "origin_slot": 1,
+ "target_id": 406,
+ "target_slot": 10,
+ "type": "INT"
+ },
+ {
+ "id": 416,
+ "origin_id": 371,
+ "origin_slot": 2,
+ "target_id": 406,
+ "target_slot": 11,
+ "type": "INT"
+ },
+ {
+ "id": 475,
+ "origin_id": 398,
+ "origin_slot": 0,
+ "target_id": 406,
+ "target_slot": 18,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 489,
+ "origin_id": 394,
+ "origin_slot": 1,
+ "target_id": 407,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 409,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 370,
+ "target_slot": 0,
+ "type": "VIDEO"
+ },
+ {
+ "id": 469,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 397,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 408,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 403,
+ "target_slot": 1,
+ "type": "IMAGE"
+ },
+ {
+ "id": 473,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 406,
+ "target_slot": 5,
+ "type": "IMAGE"
+ },
+ {
+ "id": 499,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 405,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 502,
+ "origin_id": -10,
+ "origin_slot": 3,
+ "target_id": 391,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 504,
+ "origin_id": -10,
+ "origin_slot": 4,
+ "target_id": 398,
+ "target_slot": 0,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 505,
+ "origin_id": -10,
+ "origin_slot": 5,
+ "target_id": 387,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 506,
+ "origin_id": -10,
+ "origin_slot": 6,
+ "target_id": 388,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 507,
+ "origin_id": -10,
+ "origin_slot": 12,
+ "target_id": 402,
+ "target_slot": 0,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 508,
+ "origin_id": -10,
+ "origin_slot": 13,
+ "target_id": 374,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 509,
+ "origin_id": -10,
+ "origin_slot": 14,
+ "target_id": 367,
+ "target_slot": 1,
+ "type": "COMBO"
+ },
+ {
+ "id": 510,
+ "origin_id": -10,
+ "origin_slot": 16,
+ "target_id": 372,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 511,
+ "origin_id": -10,
+ "origin_slot": 17,
+ "target_id": 368,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 512,
+ "origin_id": -10,
+ "origin_slot": 18,
+ "target_id": 373,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 513,
+ "origin_id": -10,
+ "origin_slot": 19,
+ "target_id": 393,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 514,
+ "origin_id": -10,
+ "origin_slot": 20,
+ "target_id": 407,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 515,
+ "origin_id": -10,
+ "origin_slot": 21,
+ "target_id": 394,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 522,
+ "origin_id": -10,
+ "origin_slot": 7,
+ "target_id": 386,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 541,
+ "origin_id": -10,
+ "origin_slot": 7,
+ "target_id": 392,
+ "target_slot": 1,
+ "type": "FLOAT,INT,BOOLEAN"
+ },
+ {
+ "id": 542,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 406,
+ "target_slot": 17,
+ "type": "INT"
+ },
+ {
+ "id": 543,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 392,
+ "target_slot": 2,
+ "type": "FLOAT,INT,BOOLEAN"
+ },
+ {
+ "id": 544,
+ "origin_id": 401,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 547,
+ "origin_id": -10,
+ "origin_slot": 9,
+ "target_id": 406,
+ "target_slot": 13,
+ "type": "FLOAT"
+ },
+ {
+ "id": 548,
+ "origin_id": -10,
+ "origin_slot": 10,
+ "target_id": 406,
+ "target_slot": 14,
+ "type": "FLOAT"
+ },
+ {
+ "id": 549,
+ "origin_id": -10,
+ "origin_slot": 11,
+ "target_id": 406,
+ "target_slot": 15,
+ "type": "FLOAT"
+ },
+ {
+ "id": 558,
+ "origin_id": -10,
+ "origin_slot": 22,
+ "target_id": 378,
+ "target_slot": 7,
+ "type": "INT"
+ },
+ {
+ "id": 562,
+ "origin_id": 374,
+ "origin_slot": 0,
+ "target_id": 408,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 563,
+ "origin_id": 408,
+ "origin_slot": 0,
+ "target_id": 367,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 564,
+ "origin_id": 408,
+ "origin_slot": 0,
+ "target_id": 383,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 565,
+ "origin_id": -10,
+ "origin_slot": 15,
+ "target_id": 408,
+ "target_slot": 1,
+ "type": "COMBO"
+ }
+ ],
+ "extra": {},
+ "category": "Video generation and editing/Video Edit",
+ "description": "Replaces a character in a video with a reference image using the SCAIL-2 model for end-to-end controlled animation without intermediate pose maps. Key inputs include a source video, a reference character image, and optional text prompts for style or context. Suitable for animated or live-action footage, multi-character scenes, and creative video editing where direct pose-free animation is needed; works best with moderate-length videos."
+ }
+ ]
+ },
+ "extra": {
+ "BlueprintDescription": "Replaces a character in a video with a reference image using the SCAIL-2 model for end-to-end controlled animation without intermediate pose maps. Key inputs include a source video, a reference character image, and optional text prompts for style or context. Suitable for animated or live-action footage, multi-character scenes, and creative video editing where direct pose-free animation is needed; works best with moderate-length videos.",
+ "BlueprintSearchAliases": [
+ "character replacement",
+ "SCAIL-2",
+ "pose-free animation",
+ "video editing",
+ "cross-identity replacement"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/blueprints/Character Replacement (SCAIL-2 Extend).json b/blueprints/Character Replacement (SCAIL-2 Extend).json
new file mode 100644
index 000000000..bf2f67dfd
--- /dev/null
+++ b/blueprints/Character Replacement (SCAIL-2 Extend).json
@@ -0,0 +1,4461 @@
+{
+ "revision": 0,
+ "last_node_id": 409,
+ "last_link_id": 0,
+ "nodes": [
+ {
+ "id": 409,
+ "type": "2ebfb952-bd3b-43c3-9390-9ea73d41bd1f",
+ "pos": [
+ 3420,
+ 5580
+ ],
+ "size": [
+ 530,
+ 1140
+ ],
+ "flags": {
+ "collapsed": false
+ },
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "pose_video",
+ "localized_name": "video",
+ "name": "video",
+ "type": "VIDEO",
+ "link": null
+ },
+ {
+ "label": "reference_image",
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "label": "previous_frames",
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "label": "prompt",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ },
+ {
+ "label": "segment_index",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ },
+ {
+ "label": "replace_mode",
+ "name": "value_2",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value_2"
+ },
+ "link": null
+ },
+ {
+ "label": "width",
+ "name": "value_3",
+ "type": "INT",
+ "widget": {
+ "name": "value_3"
+ },
+ "link": null
+ },
+ {
+ "label": "height",
+ "name": "value_4",
+ "type": "INT",
+ "widget": {
+ "name": "value_4"
+ },
+ "link": null
+ },
+ {
+ "label": "frame_count",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": null
+ },
+ {
+ "name": "previous_frame_count",
+ "type": "INT",
+ "widget": {
+ "name": "previous_frame_count"
+ },
+ "link": null
+ },
+ {
+ "name": "pose_strength",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_strength"
+ },
+ "link": null
+ },
+ {
+ "name": "pose_start",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_start"
+ },
+ "link": null
+ },
+ {
+ "name": "pose_end",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_end"
+ },
+ "link": null
+ },
+ {
+ "label": "turbo_mode",
+ "name": "value_5",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value_5"
+ },
+ "link": null
+ },
+ {
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": null
+ },
+ {
+ "label": "distill_lora",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": null
+ },
+ {
+ "label": "dpo_lora",
+ "name": "lora_name_1",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name_1"
+ },
+ "link": null
+ },
+ {
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": null
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": null
+ },
+ {
+ "label": "clip_vision",
+ "name": "clip_name_1",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name_1"
+ },
+ "link": null
+ },
+ {
+ "label": "sam3_video_object",
+ "name": "text_1",
+ "type": "STRING",
+ "widget": {
+ "name": "text_1"
+ },
+ "link": null
+ },
+ {
+ "label": "sam3_image_object",
+ "name": "text_2",
+ "type": "STRING",
+ "widget": {
+ "name": "text_2"
+ },
+ "link": null
+ },
+ {
+ "label": "sam3_model",
+ "name": "ckpt_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "ckpt_name"
+ },
+ "link": null
+ },
+ {
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "IMAGE",
+ "links": []
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "363",
+ "text"
+ ],
+ [
+ "346",
+ "value"
+ ],
+ [
+ "353",
+ "value"
+ ],
+ [
+ "342",
+ "value"
+ ],
+ [
+ "343",
+ "value"
+ ],
+ [
+ "341",
+ "length"
+ ],
+ [
+ "364",
+ "previous_frame_count"
+ ],
+ [
+ "364",
+ "pose_strength"
+ ],
+ [
+ "364",
+ "pose_start"
+ ],
+ [
+ "364",
+ "pose_end"
+ ],
+ [
+ "360",
+ "value"
+ ],
+ [
+ "329",
+ "unet_name"
+ ],
+ [
+ "322",
+ "lora_name"
+ ],
+ [
+ "366",
+ "lora_name"
+ ],
+ [
+ "327",
+ "clip_name"
+ ],
+ [
+ "323",
+ "vae_name"
+ ],
+ [
+ "328",
+ "clip_name"
+ ],
+ [
+ "348",
+ "text"
+ ],
+ [
+ "365",
+ "text"
+ ],
+ [
+ "349",
+ "ckpt_name"
+ ],
+ [
+ "333",
+ "noise_seed"
+ ],
+ [
+ "354",
+ "$$canvas-image-preview"
+ ],
+ [
+ "355",
+ "$$canvas-image-preview"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [],
+ "title": "Character Replacement (SCAIL-2 Extend)"
+ }
+ ],
+ "links": [],
+ "version": 0.4,
+ "definitions": {
+ "subgraphs": [
+ {
+ "id": "2ebfb952-bd3b-43c3-9390-9ea73d41bd1f",
+ "version": 1,
+ "state": {
+ "lastGroupId": 17,
+ "lastNodeId": 410,
+ "lastLinkId": 570,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Character Replacement (SCAIL-2 Extend)",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ -300,
+ 4240,
+ 173.015625,
+ 528
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 3570,
+ 4500,
+ 128,
+ 68
+ ]
+ },
+ "inputs": [
+ {
+ "id": "e9aedfaf-1991-4a75-ad9b-8c3a279b0488",
+ "name": "video",
+ "type": "VIDEO",
+ "linkIds": [
+ 409
+ ],
+ "localized_name": "video",
+ "label": "pose_video",
+ "pos": [
+ -150.984375,
+ 4264
+ ]
+ },
+ {
+ "id": "0badb26e-9abd-4e9c-b221-aab1237b8773",
+ "name": "images",
+ "type": "IMAGE",
+ "linkIds": [
+ 469,
+ 408,
+ 473
+ ],
+ "localized_name": "images",
+ "label": "reference_image",
+ "pos": [
+ -150.984375,
+ 4284
+ ]
+ },
+ {
+ "id": "9f424e9e-d5a2-4dd9-9934-cc6f6fc8da09",
+ "name": "image",
+ "type": "IMAGE",
+ "linkIds": [
+ 486,
+ 485
+ ],
+ "localized_name": "image",
+ "label": "previous_frames",
+ "pos": [
+ -150.984375,
+ 4304
+ ]
+ },
+ {
+ "id": "098f15aa-a066-422e-b491-eaf140bafb2c",
+ "name": "text",
+ "type": "STRING",
+ "linkIds": [
+ 499
+ ],
+ "label": "prompt",
+ "pos": [
+ -150.984375,
+ 4324
+ ]
+ },
+ {
+ "id": "861ea850-8329-491b-9413-2588cdd77bbd",
+ "name": "value",
+ "type": "INT",
+ "linkIds": [
+ 502
+ ],
+ "label": "segment_index",
+ "pos": [
+ -150.984375,
+ 4344
+ ]
+ },
+ {
+ "id": "dcf3ebf8-1263-458a-966b-9e77a5ad704a",
+ "name": "value_2",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 504
+ ],
+ "label": "replace_mode",
+ "pos": [
+ -150.984375,
+ 4364
+ ]
+ },
+ {
+ "id": "dbee10ce-bb98-4733-88a0-d4cd5b13c691",
+ "name": "value_3",
+ "type": "INT",
+ "linkIds": [
+ 505
+ ],
+ "label": "width",
+ "pos": [
+ -150.984375,
+ 4384
+ ]
+ },
+ {
+ "id": "363e3ac7-0096-4480-b875-1d6ff1b8a2d9",
+ "name": "value_4",
+ "type": "INT",
+ "linkIds": [
+ 506
+ ],
+ "label": "height",
+ "pos": [
+ -150.984375,
+ 4404
+ ]
+ },
+ {
+ "id": "dc19eaf1-dd24-4c1e-9b08-6d8d98e0e7f2",
+ "name": "length",
+ "type": "INT",
+ "linkIds": [
+ 550,
+ 557
+ ],
+ "label": "frame_count",
+ "pos": [
+ -150.984375,
+ 4424
+ ]
+ },
+ {
+ "id": "39d2f098-1740-419e-9c29-e4c4e4a7c3fd",
+ "name": "previous_frame_count",
+ "type": "INT",
+ "linkIds": [
+ 551,
+ 556
+ ],
+ "pos": [
+ -150.984375,
+ 4444
+ ]
+ },
+ {
+ "id": "8d248225-a7f5-42c5-86bd-31eaf695f66e",
+ "name": "pose_strength",
+ "type": "FLOAT",
+ "linkIds": [
+ 552
+ ],
+ "pos": [
+ -150.984375,
+ 4464
+ ]
+ },
+ {
+ "id": "04c56360-963a-48ba-944e-4864e2c0349c",
+ "name": "pose_start",
+ "type": "FLOAT",
+ "linkIds": [
+ 553
+ ],
+ "pos": [
+ -150.984375,
+ 4484
+ ]
+ },
+ {
+ "id": "1ecd0315-d61f-4986-837c-27fb3f2d0470",
+ "name": "pose_end",
+ "type": "FLOAT",
+ "linkIds": [
+ 554
+ ],
+ "pos": [
+ -150.984375,
+ 4504
+ ]
+ },
+ {
+ "id": "ddf07ba4-2837-40ef-925f-5996ea436334",
+ "name": "value_5",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 507
+ ],
+ "label": "turbo_mode",
+ "pos": [
+ -150.984375,
+ 4524
+ ]
+ },
+ {
+ "id": "ee8c796d-b326-40c6-9f9d-65f564053974",
+ "name": "unet_name",
+ "type": "COMBO",
+ "linkIds": [
+ 508
+ ],
+ "pos": [
+ -150.984375,
+ 4544
+ ]
+ },
+ {
+ "id": "6ccae991-51d7-4c8e-adc8-c7f6377d681b",
+ "name": "lora_name",
+ "type": "COMBO",
+ "linkIds": [
+ 509
+ ],
+ "label": "distill_lora",
+ "pos": [
+ -150.984375,
+ 4564
+ ]
+ },
+ {
+ "id": "1f1ac950-6ce5-4253-a266-edba58acd135",
+ "name": "lora_name_1",
+ "type": "COMBO",
+ "linkIds": [
+ 569
+ ],
+ "label": "dpo_lora",
+ "pos": [
+ -150.984375,
+ 4584
+ ]
+ },
+ {
+ "id": "2e9c2347-93fe-462f-b5ef-51613fb52c85",
+ "name": "clip_name",
+ "type": "COMBO",
+ "linkIds": [
+ 510
+ ],
+ "pos": [
+ -150.984375,
+ 4604
+ ]
+ },
+ {
+ "id": "bc1822c0-7484-47b7-8d59-cf94788290f7",
+ "name": "vae_name",
+ "type": "COMBO",
+ "linkIds": [
+ 511
+ ],
+ "pos": [
+ -150.984375,
+ 4624
+ ]
+ },
+ {
+ "id": "bbf2ee19-58b3-46f4-af6a-cd1557d60c8d",
+ "name": "clip_name_1",
+ "type": "COMBO",
+ "linkIds": [
+ 512
+ ],
+ "label": "clip_vision",
+ "pos": [
+ -150.984375,
+ 4644
+ ]
+ },
+ {
+ "id": "556415bd-8ef3-4cfa-b182-0d7e3e4cd572",
+ "name": "text_1",
+ "type": "STRING",
+ "linkIds": [
+ 513
+ ],
+ "label": "sam3_video_object",
+ "pos": [
+ -150.984375,
+ 4664
+ ]
+ },
+ {
+ "id": "c577930c-85a3-4e92-ac44-8ed639937217",
+ "name": "text_2",
+ "type": "STRING",
+ "linkIds": [
+ 514
+ ],
+ "label": "sam3_image_object",
+ "pos": [
+ -150.984375,
+ 4684
+ ]
+ },
+ {
+ "id": "8f542c5e-da91-4dad-8ff8-4e81a42d5140",
+ "name": "ckpt_name",
+ "type": "COMBO",
+ "linkIds": [
+ 515
+ ],
+ "label": "sam3_model",
+ "pos": [
+ -150.984375,
+ 4704
+ ]
+ },
+ {
+ "id": "9764a497-f066-429c-b77c-bcd5b8c7a68d",
+ "name": "noise_seed",
+ "type": "INT",
+ "linkIds": [
+ 559
+ ],
+ "pos": [
+ -150.984375,
+ 4724
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "7ae88834-7553-45ec-a4e8-bab7d5276b45",
+ "name": "output",
+ "type": "IMAGE",
+ "linkIds": [
+ 546
+ ],
+ "localized_name": "output",
+ "pos": [
+ 3594,
+ 4524
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 322,
+ "type": "LoraLoaderModelOnly",
+ "pos": [
+ 300,
+ 3590
+ ],
+ "size": [
+ 590,
+ 140
+ ],
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 566
+ },
+ {
+ "localized_name": "lora_name",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": 509
+ },
+ {
+ "localized_name": "strength_model",
+ "name": "strength_model",
+ "type": "FLOAT",
+ "widget": {
+ "name": "strength_model"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 398,
+ 425
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoaderModelOnly",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Lightx2v/lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors",
+ "directory": "loras"
+ }
+ ]
+ },
+ "widgets_values": [
+ "lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors",
+ 0.8
+ ],
+ "color": "#223",
+ "bgcolor": "#335"
+ },
+ {
+ "id": 323,
+ "type": "VAELoader",
+ "pos": [
+ 300,
+ 4020
+ ],
+ "size": [
+ 590,
+ 140
+ ],
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "vae_name",
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": 511
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 406,
+ 407
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAELoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "Wan2_1_VAE_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan2_1_VAE_bf16.safetensors",
+ "directory": "vae"
+ }
+ ]
+ },
+ "widgets_values": [
+ "Wan2_1_VAE_bf16.safetensors"
+ ]
+ },
+ {
+ "id": 324,
+ "type": "ResizeImageMaskNode",
+ "pos": [
+ 1280,
+ 4880
+ ],
+ "size": [
+ 270,
+ 160
+ ],
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "input",
+ "name": "input",
+ "type": "IMAGE,MASK",
+ "link": 491
+ },
+ {
+ "localized_name": "resize_type",
+ "name": "resize_type",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "widget": {
+ "name": "resize_type"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "width",
+ "name": "resize_type.width",
+ "type": "INT",
+ "widget": {
+ "name": "resize_type.width"
+ },
+ "link": 444
+ },
+ {
+ "localized_name": "height",
+ "name": "resize_type.height",
+ "type": "INT",
+ "widget": {
+ "name": "resize_type.height"
+ },
+ "link": 446
+ },
+ {
+ "localized_name": "crop",
+ "name": "resize_type.crop",
+ "type": "COMBO",
+ "widget": {
+ "name": "resize_type.crop"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "scale_method",
+ "name": "scale_method",
+ "type": "COMBO",
+ "widget": {
+ "name": "scale_method"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "resized",
+ "name": "resized",
+ "type": "*",
+ "links": [
+ 420,
+ 492,
+ 493
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ResizeImageMaskNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "scale dimensions",
+ 512,
+ 512,
+ "center",
+ "area"
+ ]
+ },
+ {
+ "id": 325,
+ "type": "GetVideoComponents",
+ "pos": [
+ 270,
+ 4520
+ ],
+ "size": [
+ 230,
+ 90
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 8,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "video",
+ "name": "video",
+ "type": "VIDEO",
+ "link": 409
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "links": [
+ 490
+ ]
+ },
+ {
+ "localized_name": "audio",
+ "name": "audio",
+ "type": "AUDIO",
+ "links": null
+ },
+ {
+ "localized_name": "fps",
+ "name": "fps",
+ "type": "FLOAT",
+ "links": []
+ },
+ {
+ "localized_name": "bit_depth",
+ "name": "bit_depth",
+ "type": "INT",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "GetVideoComponents",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 326,
+ "type": "GetImageSize",
+ "pos": [
+ 1640,
+ 4520
+ ],
+ "size": [
+ 240,
+ 190
+ ],
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 492
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "width",
+ "name": "width",
+ "type": "INT",
+ "links": [
+ 414
+ ]
+ },
+ {
+ "localized_name": "height",
+ "name": "height",
+ "type": "INT",
+ "links": [
+ 415
+ ]
+ },
+ {
+ "localized_name": "batch_size",
+ "name": "batch_size",
+ "type": "INT",
+ "links": [
+ 416
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "GetImageSize",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 327,
+ "type": "CLIPLoader",
+ "pos": [
+ 300,
+ 3790
+ ],
+ "size": [
+ 590,
+ 170
+ ],
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_name",
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": 510
+ },
+ {
+ "localized_name": "type",
+ "name": "type",
+ "type": "COMBO",
+ "widget": {
+ "name": "type"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "device",
+ "name": "device",
+ "shape": 7,
+ "type": "COMBO",
+ "widget": {
+ "name": "device"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP",
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 7,
+ 8
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "directory": "text_encoders"
+ }
+ ]
+ },
+ "widgets_values": [
+ "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "wan",
+ "default"
+ ]
+ },
+ {
+ "id": 328,
+ "type": "CLIPVisionLoader",
+ "pos": [
+ 300,
+ 4230
+ ],
+ "size": [
+ 590,
+ 110
+ ],
+ "flags": {},
+ "order": 11,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_name",
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": 512
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP_VISION",
+ "name": "CLIP_VISION",
+ "type": "CLIP_VISION",
+ "links": [
+ 196
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPVisionLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "clip_vision_h.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/clip_vision/clip_vision_h.safetensors",
+ "directory": "clip_vision"
+ }
+ ]
+ },
+ "widgets_values": [
+ "clip_vision_h.safetensors"
+ ]
+ },
+ {
+ "id": 329,
+ "type": "UNETLoader",
+ "pos": [
+ 300,
+ 3190
+ ],
+ "size": [
+ 590,
+ 140
+ ],
+ "flags": {},
+ "order": 12,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 508
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 568
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "wan2.1_14B_SCAIL_2_fp16.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/SCAIL-2/resolve/main/diffusion_models/wan2.1_14B_SCAIL_2_fp16.safetensors",
+ "directory": "diffusion_models"
+ }
+ ]
+ },
+ "widgets_values": [
+ "wan2.1_14B_SCAIL_2_fp16.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 330,
+ "type": "ModelSamplingSD3",
+ "pos": [
+ 2820,
+ 3430
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 13,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 424
+ },
+ {
+ "localized_name": "shift",
+ "name": "shift",
+ "type": "FLOAT",
+ "widget": {
+ "name": "shift"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 417
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ModelSamplingSD3",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 5
+ ]
+ },
+ {
+ "id": 331,
+ "type": "KSamplerSelect",
+ "pos": [
+ 2830,
+ 3580
+ ],
+ "size": [
+ 260,
+ 110
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "sampler_name",
+ "name": "sampler_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "sampler_name"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SAMPLER",
+ "name": "SAMPLER",
+ "type": "SAMPLER",
+ "links": [
+ 419
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerSelect",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "euler"
+ ]
+ },
+ {
+ "id": 332,
+ "type": "BasicScheduler",
+ "pos": [
+ 2830,
+ 3730
+ ],
+ "size": [
+ 260,
+ 170
+ ],
+ "flags": {},
+ "order": 14,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 398
+ },
+ {
+ "localized_name": "scheduler",
+ "name": "scheduler",
+ "type": "COMBO",
+ "widget": {
+ "name": "scheduler"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "steps",
+ "name": "steps",
+ "type": "INT",
+ "widget": {
+ "name": "steps"
+ },
+ "link": 428
+ },
+ {
+ "localized_name": "denoise",
+ "name": "denoise",
+ "type": "FLOAT",
+ "widget": {
+ "name": "denoise"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SIGMAS",
+ "name": "SIGMAS",
+ "type": "SIGMAS",
+ "links": [
+ 418
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "BasicScheduler",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "simple",
+ 6,
+ 1
+ ]
+ },
+ {
+ "id": 333,
+ "type": "SamplerCustom",
+ "pos": [
+ 3140,
+ 3430
+ ],
+ "size": [
+ 270,
+ 670
+ ],
+ "flags": {},
+ "order": 15,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 417
+ },
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 333
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 334
+ },
+ {
+ "localized_name": "sampler",
+ "name": "sampler",
+ "type": "SAMPLER",
+ "link": 419
+ },
+ {
+ "localized_name": "sigmas",
+ "name": "sigmas",
+ "type": "SIGMAS",
+ "link": 418
+ },
+ {
+ "localized_name": "latent_image",
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 335
+ },
+ {
+ "localized_name": "add_noise",
+ "name": "add_noise",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "add_noise"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "noise_seed",
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": 559
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": 431
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "LATENT",
+ "links": []
+ },
+ {
+ "localized_name": "denoised_output",
+ "name": "denoised_output",
+ "type": "LATENT",
+ "links": [
+ 124
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SamplerCustom",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ true,
+ 1,
+ "fixed",
+ 1
+ ]
+ },
+ {
+ "id": 334,
+ "type": "PrimitiveInt",
+ "pos": [
+ 2090,
+ 3760
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 427
+ ]
+ }
+ ],
+ "title": "Int (Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 6,
+ "fixed"
+ ]
+ },
+ {
+ "id": 335,
+ "type": "PrimitiveFloat",
+ "pos": [
+ 2090,
+ 3930
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "FLOAT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 430
+ ]
+ }
+ ],
+ "title": "Float (CFG)",
+ "properties": {
+ "Node name for S&R": "PrimitiveFloat",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 1
+ ]
+ },
+ {
+ "id": 336,
+ "type": "PrimitiveInt",
+ "pos": [
+ 2090,
+ 3390
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 426
+ ]
+ }
+ ],
+ "title": "Int (Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 40,
+ "fixed"
+ ]
+ },
+ {
+ "id": 337,
+ "type": "PrimitiveFloat",
+ "pos": [
+ 2090,
+ 3540
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "FLOAT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 429
+ ]
+ }
+ ],
+ "title": "Float (CFG)",
+ "properties": {
+ "Node name for S&R": "PrimitiveFloat",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 5
+ ]
+ },
+ {
+ "id": 338,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2430,
+ 3370
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 16,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 567
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 425
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 432
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 424
+ ]
+ }
+ ],
+ "title": "Switch (Model)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 339,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2430,
+ 3560
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 17,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 426
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 427
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 433
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 428
+ ]
+ }
+ ],
+ "title": "Switch (Steps)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 340,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2430,
+ 3740
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 18,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 429
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 430
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 434
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 431
+ ]
+ }
+ ],
+ "title": "Switch (Steps)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 341,
+ "type": "ImageFromBatch",
+ "pos": [
+ 880,
+ 4510
+ ],
+ "size": [
+ 270,
+ 140
+ ],
+ "flags": {},
+ "order": 19,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 490
+ },
+ {
+ "localized_name": "batch_index",
+ "name": "batch_index",
+ "type": "INT",
+ "widget": {
+ "name": "batch_index"
+ },
+ "link": 450
+ },
+ {
+ "localized_name": "length",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": 550
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 491
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ImageFromBatch",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 0,
+ 81
+ ]
+ },
+ {
+ "id": 342,
+ "type": "PrimitiveInt",
+ "pos": [
+ 250,
+ 4840
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 20,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 505
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 441
+ ]
+ }
+ ],
+ "title": "Int (Width)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 896,
+ "fixed"
+ ]
+ },
+ {
+ "id": 343,
+ "type": "PrimitiveInt",
+ "pos": [
+ 250,
+ 5020
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 21,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 506
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 445
+ ]
+ }
+ ],
+ "title": "Int (Height)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 512,
+ "fixed"
+ ]
+ },
+ {
+ "id": 344,
+ "type": "ComfyMathExpression",
+ "pos": [
+ 690,
+ 4870
+ ],
+ "size": [
+ 230,
+ 80
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 22,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "a",
+ "localized_name": "values.a",
+ "name": "values.a",
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 441
+ },
+ {
+ "label": "b",
+ "localized_name": "values.b",
+ "name": "values.b",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": null
+ },
+ {
+ "localized_name": "expression",
+ "name": "expression",
+ "type": "STRING",
+ "widget": {
+ "name": "expression"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": []
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 444
+ ]
+ },
+ {
+ "localized_name": "BOOL",
+ "name": "BOOL",
+ "type": "BOOLEAN",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyMathExpression",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "(a // 32) * 32"
+ ]
+ },
+ {
+ "id": 345,
+ "type": "ComfyMathExpression",
+ "pos": [
+ 690,
+ 5050
+ ],
+ "size": [
+ 230,
+ 80
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 23,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "a",
+ "localized_name": "values.a",
+ "name": "values.a",
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 445
+ },
+ {
+ "label": "b",
+ "localized_name": "values.b",
+ "name": "values.b",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": null
+ },
+ {
+ "localized_name": "expression",
+ "name": "expression",
+ "type": "STRING",
+ "widget": {
+ "name": "expression"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": []
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 446
+ ]
+ },
+ {
+ "localized_name": "BOOL",
+ "name": "BOOL",
+ "type": "BOOLEAN",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyMathExpression",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "(a // 32) * 32"
+ ]
+ },
+ {
+ "id": 346,
+ "type": "PrimitiveInt",
+ "pos": [
+ 270,
+ 4580
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 24,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 502
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 447
+ ]
+ }
+ ],
+ "title": "Int (segment index)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 2,
+ "fixed"
+ ]
+ },
+ {
+ "id": 347,
+ "type": "ComfyMathExpression",
+ "pos": [
+ 580,
+ 4610
+ ],
+ "size": [
+ 230,
+ 120
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 25,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "a",
+ "localized_name": "values.a",
+ "name": "values.a",
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 447
+ },
+ {
+ "label": "b",
+ "localized_name": "values.b",
+ "name": "values.b",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 557
+ },
+ {
+ "label": "c",
+ "localized_name": "values.c",
+ "name": "values.c",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 556
+ },
+ {
+ "label": "d",
+ "localized_name": "values.d",
+ "name": "values.d",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": null
+ },
+ {
+ "localized_name": "expression",
+ "name": "expression",
+ "type": "STRING",
+ "widget": {
+ "name": "expression"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": null
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 450
+ ]
+ },
+ {
+ "localized_name": "BOOL",
+ "name": "BOOL",
+ "type": "BOOLEAN",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyMathExpression",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "(b - c) * (a - 1)"
+ ]
+ },
+ {
+ "id": 348,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 660,
+ 5380
+ ],
+ "size": [
+ 380,
+ 160
+ ],
+ "flags": {},
+ "order": 26,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 454
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 513
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 461
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.3",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 349,
+ "type": "CheckpointLoaderSimple",
+ "pos": [
+ 270,
+ 5360
+ ],
+ "size": [
+ 330,
+ 160
+ ],
+ "flags": {},
+ "order": 27,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "ckpt_name",
+ "name": "ckpt_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "ckpt_name"
+ },
+ "link": 515
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 458,
+ 463
+ ]
+ },
+ {
+ "localized_name": "CLIP",
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 454,
+ 489
+ ]
+ },
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": []
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CheckpointLoaderSimple",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.3",
+ "models": [
+ {
+ "name": "sam3.1_multiplex_fp16.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/sam3.1/resolve/main/checkpoints/sam3.1_multiplex_fp16.safetensors",
+ "directory": "checkpoints"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "sam3.1_multiplex_fp16.safetensors"
+ ]
+ },
+ {
+ "id": 350,
+ "type": "SAM3_VideoTrack",
+ "pos": [
+ 1190,
+ 5340
+ ],
+ "size": [
+ 280,
+ 250
+ ],
+ "flags": {},
+ "order": 28,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "images",
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 493
+ },
+ {
+ "label": "model",
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 458
+ },
+ {
+ "label": "initial_mask",
+ "localized_name": "initial_mask",
+ "name": "initial_mask",
+ "shape": 7,
+ "type": "MASK",
+ "link": null
+ },
+ {
+ "label": "conditioning",
+ "localized_name": "conditioning",
+ "name": "conditioning",
+ "shape": 7,
+ "type": "CONDITIONING",
+ "link": 461
+ },
+ {
+ "localized_name": "detection_threshold",
+ "name": "detection_threshold",
+ "type": "FLOAT",
+ "widget": {
+ "name": "detection_threshold"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "max_objects",
+ "name": "max_objects",
+ "type": "INT",
+ "widget": {
+ "name": "max_objects"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "detect_interval",
+ "name": "detect_interval",
+ "type": "INT",
+ "widget": {
+ "name": "detect_interval"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "track_data",
+ "name": "track_data",
+ "type": "SAM3_TRACK_DATA",
+ "links": [
+ 460
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SAM3_VideoTrack",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 0.5,
+ 4,
+ 1
+ ]
+ },
+ {
+ "id": 351,
+ "type": "SCAIL2ColoredMask",
+ "pos": [
+ 1550,
+ 5490
+ ],
+ "size": [
+ 370,
+ 200
+ ],
+ "flags": {},
+ "order": 29,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "driving_track_data",
+ "name": "driving_track_data",
+ "type": "SAM3_TRACK_DATA",
+ "link": 460
+ },
+ {
+ "localized_name": "ref_track_data",
+ "name": "ref_track_data",
+ "shape": 7,
+ "type": "SAM3_TRACK_DATA",
+ "link": 464
+ },
+ {
+ "localized_name": "object_indices",
+ "name": "object_indices",
+ "type": "STRING",
+ "widget": {
+ "name": "object_indices"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "sort_by",
+ "name": "sort_by",
+ "type": "COMBO",
+ "widget": {
+ "name": "sort_by"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "replacement_mode",
+ "name": "replacement_mode",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "replacement_mode"
+ },
+ "link": 476
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "pose_video_mask",
+ "name": "pose_video_mask",
+ "type": "IMAGE",
+ "links": [
+ 466,
+ 467
+ ]
+ },
+ {
+ "localized_name": "reference_image_mask",
+ "name": "reference_image_mask",
+ "type": "IMAGE",
+ "links": [
+ 465,
+ 472
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SCAIL2ColoredMask",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "",
+ "left_to_right",
+ true
+ ]
+ },
+ {
+ "id": 352,
+ "type": "SAM3_VideoTrack",
+ "pos": [
+ 1190,
+ 5640
+ ],
+ "size": [
+ 280,
+ 250
+ ],
+ "flags": {},
+ "order": 30,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "images",
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 469
+ },
+ {
+ "label": "model",
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 463
+ },
+ {
+ "label": "initial_mask",
+ "localized_name": "initial_mask",
+ "name": "initial_mask",
+ "shape": 7,
+ "type": "MASK",
+ "link": null
+ },
+ {
+ "label": "conditioning",
+ "localized_name": "conditioning",
+ "name": "conditioning",
+ "shape": 7,
+ "type": "CONDITIONING",
+ "link": 488
+ },
+ {
+ "localized_name": "detection_threshold",
+ "name": "detection_threshold",
+ "type": "FLOAT",
+ "widget": {
+ "name": "detection_threshold"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "max_objects",
+ "name": "max_objects",
+ "type": "INT",
+ "widget": {
+ "name": "max_objects"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "detect_interval",
+ "name": "detect_interval",
+ "type": "INT",
+ "widget": {
+ "name": "detect_interval"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "track_data",
+ "name": "track_data",
+ "type": "SAM3_TRACK_DATA",
+ "links": [
+ 464
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SAM3_VideoTrack",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 0.5,
+ 4,
+ 1
+ ]
+ },
+ {
+ "id": 353,
+ "type": "PrimitiveBoolean",
+ "pos": [
+ 1660,
+ 4030
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 31,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value"
+ },
+ "link": 504
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "BOOLEAN",
+ "name": "BOOLEAN",
+ "type": "BOOLEAN",
+ "links": [
+ 475,
+ 476
+ ]
+ }
+ ],
+ "title": "Boolean (Replace Mode)",
+ "properties": {
+ "Node name for S&R": "PrimitiveBoolean",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ true
+ ]
+ },
+ {
+ "id": 354,
+ "type": "PreviewImage",
+ "pos": [
+ 2060,
+ 4500
+ ],
+ "size": [
+ 350,
+ 1190
+ ],
+ "flags": {},
+ "order": 32,
+ "mode": 4,
+ "inputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 466
+ }
+ ],
+ "outputs": [],
+ "properties": {
+ "Node name for S&R": "PreviewImage",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 355,
+ "type": "PreviewImage",
+ "pos": [
+ 2460,
+ 4500
+ ],
+ "size": [
+ 230,
+ 310
+ ],
+ "flags": {},
+ "order": 33,
+ "mode": 4,
+ "inputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 465
+ }
+ ],
+ "outputs": [],
+ "properties": {
+ "Node name for S&R": "PreviewImage",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 356,
+ "type": "VAEDecode",
+ "pos": [
+ 2920,
+ 4510
+ ],
+ "size": [
+ 270,
+ 100
+ ],
+ "flags": {
+ "collapsed": false
+ },
+ "order": 34,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "samples",
+ "name": "samples",
+ "type": "LATENT",
+ "link": 124
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 407
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 483
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 357,
+ "type": "ImageFromBatch",
+ "pos": [
+ 2920,
+ 4680
+ ],
+ "size": [
+ 270,
+ 140
+ ],
+ "flags": {},
+ "order": 35,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 483
+ },
+ {
+ "localized_name": "batch_index",
+ "name": "batch_index",
+ "type": "INT",
+ "widget": {
+ "name": "batch_index"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "length",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 484
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ImageFromBatch",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 5,
+ 4096
+ ]
+ },
+ {
+ "id": 358,
+ "type": "ColorTransfer",
+ "pos": [
+ 2920,
+ 5050
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 36,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image_target",
+ "name": "image_target",
+ "type": "IMAGE",
+ "link": 484
+ },
+ {
+ "localized_name": "image_ref",
+ "name": "image_ref",
+ "type": "IMAGE",
+ "link": 482
+ },
+ {
+ "localized_name": "method",
+ "name": "method",
+ "type": "COMBO",
+ "widget": {
+ "name": "method"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "source_stats",
+ "name": "source_stats",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "widget": {
+ "name": "source_stats"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "strength",
+ "name": "strength",
+ "type": "FLOAT",
+ "widget": {
+ "name": "strength"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "links": [
+ 546
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ColorTransfer",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "reinhard_lab",
+ "per_frame",
+ 1
+ ]
+ },
+ {
+ "id": 359,
+ "type": "ImageFromBatch",
+ "pos": [
+ 2920,
+ 4870
+ ],
+ "size": [
+ 270,
+ 140
+ ],
+ "flags": {},
+ "order": 37,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 486
+ },
+ {
+ "localized_name": "batch_index",
+ "name": "batch_index",
+ "type": "INT",
+ "widget": {
+ "name": "batch_index"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "length",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 482
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ImageFromBatch",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ -1,
+ 1
+ ]
+ },
+ {
+ "id": 360,
+ "type": "PrimitiveBoolean",
+ "pos": [
+ 2440,
+ 3950
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 38,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value"
+ },
+ "link": 507
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "BOOLEAN",
+ "name": "BOOLEAN",
+ "type": "BOOLEAN",
+ "links": [
+ 432,
+ 433,
+ 434
+ ]
+ }
+ ],
+ "title": "Boolean (Enable Distill LoRA?)",
+ "properties": {
+ "Node name for S&R": "PrimitiveBoolean",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ true
+ ]
+ },
+ {
+ "id": 361,
+ "type": "CLIPVisionEncode",
+ "pos": [
+ 1230,
+ 4310
+ ],
+ "size": [
+ 230,
+ 60
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 39,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_vision",
+ "name": "clip_vision",
+ "type": "CLIP_VISION",
+ "link": 196
+ },
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 408
+ },
+ {
+ "localized_name": "crop",
+ "name": "crop",
+ "type": "COMBO",
+ "widget": {
+ "name": "crop"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP_VISION_OUTPUT",
+ "name": "CLIP_VISION_OUTPUT",
+ "type": "CLIP_VISION_OUTPUT",
+ "links": [
+ 404
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPVisionEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "none"
+ ]
+ },
+ {
+ "id": 362,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 1030,
+ 4020
+ ],
+ "size": [
+ 520,
+ 210
+ ],
+ "flags": {},
+ "order": 40,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 8
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 326
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ ""
+ ],
+ "color": "#223",
+ "bgcolor": "#335"
+ },
+ {
+ "id": 363,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 1020,
+ 3180
+ ],
+ "size": [
+ 520,
+ 720
+ ],
+ "flags": {},
+ "order": 41,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 7
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 499
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 325
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "A young woman with dark hair tied in a neat high bun, with a few loose strands framing her face, is dancing outdoors on a sunny coastal hillside. She has a normal-sized head and a slim face, with no hat, no headwear, and no oversized hair volume. She wears a fitted black long-sleeve crop top with a shoulder cutout, extremely baggy black cargo pants with straps and pockets, and chunky black combat boots. She performs energetic dance moves with one leg lifted and arms extended, moving naturally in front of a large tree, a small white stone house with a terracotta roof, and a bright blue sea under a clear sky with light clouds."
+ ],
+ "color": "#232",
+ "bgcolor": "#353"
+ },
+ {
+ "id": 364,
+ "type": "WanSCAILToVideo",
+ "pos": [
+ 1650,
+ 3310
+ ],
+ "size": [
+ 310,
+ 580
+ ],
+ "flags": {},
+ "order": 42,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 325
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 326
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 406
+ },
+ {
+ "localized_name": "pose_video",
+ "name": "pose_video",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 420
+ },
+ {
+ "localized_name": "pose_video_mask",
+ "name": "pose_video_mask",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 467
+ },
+ {
+ "localized_name": "reference_image",
+ "name": "reference_image",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 473
+ },
+ {
+ "localized_name": "reference_image_mask",
+ "name": "reference_image_mask",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 472
+ },
+ {
+ "localized_name": "clip_vision_output",
+ "name": "clip_vision_output",
+ "shape": 7,
+ "type": "CLIP_VISION_OUTPUT",
+ "link": 404
+ },
+ {
+ "localized_name": "previous_frames",
+ "name": "previous_frames",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 485
+ },
+ {
+ "localized_name": "width",
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": 414
+ },
+ {
+ "localized_name": "height",
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": 415
+ },
+ {
+ "localized_name": "length",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": 416
+ },
+ {
+ "localized_name": "batch_size",
+ "name": "batch_size",
+ "type": "INT",
+ "widget": {
+ "name": "batch_size"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "pose_strength",
+ "name": "pose_strength",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_strength"
+ },
+ "link": 552
+ },
+ {
+ "localized_name": "pose_start",
+ "name": "pose_start",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_start"
+ },
+ "link": 553
+ },
+ {
+ "localized_name": "pose_end",
+ "name": "pose_end",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pose_end"
+ },
+ "link": 554
+ },
+ {
+ "localized_name": "video_frame_offset",
+ "name": "video_frame_offset",
+ "type": "INT",
+ "widget": {
+ "name": "video_frame_offset"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "previous_frame_count",
+ "name": "previous_frame_count",
+ "type": "INT",
+ "widget": {
+ "name": "previous_frame_count"
+ },
+ "link": 551
+ },
+ {
+ "localized_name": "replacement_mode",
+ "name": "replacement_mode",
+ "shape": 7,
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "replacement_mode"
+ },
+ "link": 475
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "links": [
+ 333
+ ]
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "links": [
+ 334
+ ]
+ },
+ {
+ "localized_name": "latent",
+ "name": "latent",
+ "type": "LATENT",
+ "links": [
+ 335
+ ]
+ },
+ {
+ "localized_name": "video_frame_offset",
+ "name": "video_frame_offset",
+ "type": "INT",
+ "links": []
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "WanSCAILToVideo",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 512,
+ 896,
+ 65,
+ 1,
+ 1,
+ 0,
+ 1,
+ 0,
+ 5,
+ true
+ ],
+ "color": "#322",
+ "bgcolor": "#533"
+ },
+ {
+ "id": 365,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 670,
+ 5710
+ ],
+ "size": [
+ 380,
+ 160
+ ],
+ "flags": {},
+ "order": 43,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 489
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 514
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 488
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.3",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 366,
+ "type": "LoraLoaderModelOnly",
+ "pos": [
+ 300,
+ 3390
+ ],
+ "size": [
+ 580,
+ 140
+ ],
+ "flags": {},
+ "order": 44,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 568
+ },
+ {
+ "localized_name": "lora_name",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": 569
+ },
+ {
+ "localized_name": "strength_model",
+ "name": "strength_model",
+ "type": "FLOAT",
+ "widget": {
+ "name": "strength_model"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 566,
+ 567
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoaderModelOnly",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "wan2.1_SCAIL_2_DPO_lora_bf16.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/SCAIL-2/resolve/main/loras/wan2.1_SCAIL_2_DPO_lora_bf16.safetensors",
+ "directory": "loras"
+ }
+ ]
+ },
+ "widgets_values": [
+ "wan2.1_SCAIL_2_DPO_lora_bf16.safetensors",
+ 1
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "id": 3,
+ "title": "Models",
+ "bounding": [
+ 240,
+ 3100,
+ 720,
+ 1300
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 4,
+ "title": "Prompt",
+ "bounding": [
+ 990,
+ 3100,
+ 580,
+ 1300
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 5,
+ "title": "Sampling",
+ "bounding": [
+ 2770,
+ 3100,
+ 700,
+ 1300
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 6,
+ "title": "SCAIL Conditioning",
+ "bounding": [
+ 1590,
+ 3100,
+ 430,
+ 1300
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 9,
+ "title": "Switch Settings",
+ "bounding": [
+ 2050,
+ 3100,
+ 690,
+ 1300
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 7,
+ "title": "Original Settings",
+ "bounding": [
+ 2080,
+ 3330,
+ 300,
+ 340
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 8,
+ "title": "Distill LoRA Settings",
+ "bounding": [
+ 2080,
+ 3690,
+ 300,
+ 370
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 10,
+ "title": "Create Mask",
+ "bounding": [
+ 240,
+ 5250,
+ 1780,
+ 670
+ ],
+ "flags": {}
+ },
+ {
+ "id": 11,
+ "title": "Resize Images",
+ "bounding": [
+ 240,
+ 4770,
+ 1780,
+ 450
+ ],
+ "flags": {}
+ },
+ {
+ "id": 12,
+ "title": "Trim Frames from Video",
+ "bounding": [
+ 240,
+ 4430,
+ 1780,
+ 310
+ ],
+ "flags": {}
+ },
+ {
+ "id": 13,
+ "title": "Preview Masks",
+ "bounding": [
+ 2050,
+ 4430,
+ 690,
+ 1490
+ ],
+ "flags": {}
+ },
+ {
+ "id": 14,
+ "title": "Group",
+ "bounding": [
+ 2770,
+ 4430,
+ 700,
+ 1490
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ }
+ ],
+ "links": [
+ {
+ "id": 491,
+ "origin_id": 341,
+ "origin_slot": 0,
+ "target_id": 324,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 444,
+ "origin_id": 344,
+ "origin_slot": 1,
+ "target_id": 324,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 446,
+ "origin_id": 345,
+ "origin_slot": 1,
+ "target_id": 324,
+ "target_slot": 3,
+ "type": "INT"
+ },
+ {
+ "id": 492,
+ "origin_id": 324,
+ "origin_slot": 0,
+ "target_id": 326,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 424,
+ "origin_id": 338,
+ "origin_slot": 0,
+ "target_id": 330,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 398,
+ "origin_id": 322,
+ "origin_slot": 0,
+ "target_id": 332,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 428,
+ "origin_id": 339,
+ "origin_slot": 0,
+ "target_id": 332,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 417,
+ "origin_id": 330,
+ "origin_slot": 0,
+ "target_id": 333,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 333,
+ "origin_id": 364,
+ "origin_slot": 0,
+ "target_id": 333,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 334,
+ "origin_id": 364,
+ "origin_slot": 1,
+ "target_id": 333,
+ "target_slot": 2,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 419,
+ "origin_id": 331,
+ "origin_slot": 0,
+ "target_id": 333,
+ "target_slot": 3,
+ "type": "SAMPLER"
+ },
+ {
+ "id": 418,
+ "origin_id": 332,
+ "origin_slot": 0,
+ "target_id": 333,
+ "target_slot": 4,
+ "type": "SIGMAS"
+ },
+ {
+ "id": 335,
+ "origin_id": 364,
+ "origin_slot": 2,
+ "target_id": 333,
+ "target_slot": 5,
+ "type": "LATENT"
+ },
+ {
+ "id": 431,
+ "origin_id": 340,
+ "origin_slot": 0,
+ "target_id": 333,
+ "target_slot": 8,
+ "type": "FLOAT"
+ },
+ {
+ "id": 425,
+ "origin_id": 322,
+ "origin_slot": 0,
+ "target_id": 338,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 432,
+ "origin_id": 360,
+ "origin_slot": 0,
+ "target_id": 338,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 426,
+ "origin_id": 336,
+ "origin_slot": 0,
+ "target_id": 339,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 427,
+ "origin_id": 334,
+ "origin_slot": 0,
+ "target_id": 339,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 433,
+ "origin_id": 360,
+ "origin_slot": 0,
+ "target_id": 339,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 429,
+ "origin_id": 337,
+ "origin_slot": 0,
+ "target_id": 340,
+ "target_slot": 0,
+ "type": "FLOAT"
+ },
+ {
+ "id": 430,
+ "origin_id": 335,
+ "origin_slot": 0,
+ "target_id": 340,
+ "target_slot": 1,
+ "type": "FLOAT"
+ },
+ {
+ "id": 434,
+ "origin_id": 360,
+ "origin_slot": 0,
+ "target_id": 340,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 490,
+ "origin_id": 325,
+ "origin_slot": 0,
+ "target_id": 341,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 450,
+ "origin_id": 347,
+ "origin_slot": 1,
+ "target_id": 341,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 441,
+ "origin_id": 342,
+ "origin_slot": 0,
+ "target_id": 344,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 445,
+ "origin_id": 343,
+ "origin_slot": 0,
+ "target_id": 345,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 447,
+ "origin_id": 346,
+ "origin_slot": 0,
+ "target_id": 347,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 454,
+ "origin_id": 349,
+ "origin_slot": 1,
+ "target_id": 348,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 493,
+ "origin_id": 324,
+ "origin_slot": 0,
+ "target_id": 350,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 458,
+ "origin_id": 349,
+ "origin_slot": 0,
+ "target_id": 350,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 461,
+ "origin_id": 348,
+ "origin_slot": 0,
+ "target_id": 350,
+ "target_slot": 3,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 460,
+ "origin_id": 350,
+ "origin_slot": 0,
+ "target_id": 351,
+ "target_slot": 0,
+ "type": "SAM3_TRACK_DATA"
+ },
+ {
+ "id": 464,
+ "origin_id": 352,
+ "origin_slot": 0,
+ "target_id": 351,
+ "target_slot": 1,
+ "type": "SAM3_TRACK_DATA"
+ },
+ {
+ "id": 476,
+ "origin_id": 353,
+ "origin_slot": 0,
+ "target_id": 351,
+ "target_slot": 4,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 463,
+ "origin_id": 349,
+ "origin_slot": 0,
+ "target_id": 352,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 488,
+ "origin_id": 365,
+ "origin_slot": 0,
+ "target_id": 352,
+ "target_slot": 3,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 466,
+ "origin_id": 351,
+ "origin_slot": 0,
+ "target_id": 354,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 465,
+ "origin_id": 351,
+ "origin_slot": 1,
+ "target_id": 355,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 124,
+ "origin_id": 333,
+ "origin_slot": 1,
+ "target_id": 356,
+ "target_slot": 0,
+ "type": "LATENT"
+ },
+ {
+ "id": 407,
+ "origin_id": 323,
+ "origin_slot": 0,
+ "target_id": 356,
+ "target_slot": 1,
+ "type": "VAE"
+ },
+ {
+ "id": 483,
+ "origin_id": 356,
+ "origin_slot": 0,
+ "target_id": 357,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 484,
+ "origin_id": 357,
+ "origin_slot": 0,
+ "target_id": 358,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 482,
+ "origin_id": 359,
+ "origin_slot": 0,
+ "target_id": 358,
+ "target_slot": 1,
+ "type": "IMAGE"
+ },
+ {
+ "id": 196,
+ "origin_id": 328,
+ "origin_slot": 0,
+ "target_id": 361,
+ "target_slot": 0,
+ "type": "CLIP_VISION"
+ },
+ {
+ "id": 8,
+ "origin_id": 327,
+ "origin_slot": 0,
+ "target_id": 362,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 7,
+ "origin_id": 327,
+ "origin_slot": 0,
+ "target_id": 363,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 325,
+ "origin_id": 363,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 0,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 326,
+ "origin_id": 362,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 406,
+ "origin_id": 323,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 2,
+ "type": "VAE"
+ },
+ {
+ "id": 420,
+ "origin_id": 324,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 3,
+ "type": "IMAGE"
+ },
+ {
+ "id": 467,
+ "origin_id": 351,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 4,
+ "type": "IMAGE"
+ },
+ {
+ "id": 472,
+ "origin_id": 351,
+ "origin_slot": 1,
+ "target_id": 364,
+ "target_slot": 6,
+ "type": "IMAGE"
+ },
+ {
+ "id": 404,
+ "origin_id": 361,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 7,
+ "type": "CLIP_VISION_OUTPUT"
+ },
+ {
+ "id": 414,
+ "origin_id": 326,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 9,
+ "type": "INT"
+ },
+ {
+ "id": 415,
+ "origin_id": 326,
+ "origin_slot": 1,
+ "target_id": 364,
+ "target_slot": 10,
+ "type": "INT"
+ },
+ {
+ "id": 416,
+ "origin_id": 326,
+ "origin_slot": 2,
+ "target_id": 364,
+ "target_slot": 11,
+ "type": "INT"
+ },
+ {
+ "id": 475,
+ "origin_id": 353,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 18,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 489,
+ "origin_id": 349,
+ "origin_slot": 1,
+ "target_id": 365,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 409,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 325,
+ "target_slot": 0,
+ "type": "VIDEO"
+ },
+ {
+ "id": 469,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 352,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 408,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 361,
+ "target_slot": 1,
+ "type": "IMAGE"
+ },
+ {
+ "id": 473,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 364,
+ "target_slot": 5,
+ "type": "IMAGE"
+ },
+ {
+ "id": 486,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 359,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 485,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 364,
+ "target_slot": 8,
+ "type": "IMAGE"
+ },
+ {
+ "id": 499,
+ "origin_id": -10,
+ "origin_slot": 3,
+ "target_id": 363,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 502,
+ "origin_id": -10,
+ "origin_slot": 4,
+ "target_id": 346,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 504,
+ "origin_id": -10,
+ "origin_slot": 5,
+ "target_id": 353,
+ "target_slot": 0,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 505,
+ "origin_id": -10,
+ "origin_slot": 6,
+ "target_id": 342,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 506,
+ "origin_id": -10,
+ "origin_slot": 7,
+ "target_id": 343,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 507,
+ "origin_id": -10,
+ "origin_slot": 13,
+ "target_id": 360,
+ "target_slot": 0,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 508,
+ "origin_id": -10,
+ "origin_slot": 14,
+ "target_id": 329,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 509,
+ "origin_id": -10,
+ "origin_slot": 15,
+ "target_id": 322,
+ "target_slot": 1,
+ "type": "COMBO"
+ },
+ {
+ "id": 510,
+ "origin_id": -10,
+ "origin_slot": 17,
+ "target_id": 327,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 511,
+ "origin_id": -10,
+ "origin_slot": 18,
+ "target_id": 323,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 512,
+ "origin_id": -10,
+ "origin_slot": 19,
+ "target_id": 328,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 513,
+ "origin_id": -10,
+ "origin_slot": 20,
+ "target_id": 348,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 514,
+ "origin_id": -10,
+ "origin_slot": 21,
+ "target_id": 365,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 515,
+ "origin_id": -10,
+ "origin_slot": 22,
+ "target_id": 349,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 546,
+ "origin_id": 358,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 550,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 341,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 551,
+ "origin_id": -10,
+ "origin_slot": 9,
+ "target_id": 364,
+ "target_slot": 17,
+ "type": "INT"
+ },
+ {
+ "id": 552,
+ "origin_id": -10,
+ "origin_slot": 10,
+ "target_id": 364,
+ "target_slot": 13,
+ "type": "FLOAT"
+ },
+ {
+ "id": 553,
+ "origin_id": -10,
+ "origin_slot": 11,
+ "target_id": 364,
+ "target_slot": 14,
+ "type": "FLOAT"
+ },
+ {
+ "id": 554,
+ "origin_id": -10,
+ "origin_slot": 12,
+ "target_id": 364,
+ "target_slot": 15,
+ "type": "FLOAT"
+ },
+ {
+ "id": 556,
+ "origin_id": -10,
+ "origin_slot": 9,
+ "target_id": 347,
+ "target_slot": 2,
+ "type": "FLOAT,INT,BOOLEAN"
+ },
+ {
+ "id": 557,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 347,
+ "target_slot": 1,
+ "type": "FLOAT,INT,BOOLEAN"
+ },
+ {
+ "id": 559,
+ "origin_id": -10,
+ "origin_slot": 23,
+ "target_id": 333,
+ "target_slot": 7,
+ "type": "INT"
+ },
+ {
+ "id": 566,
+ "origin_id": 366,
+ "origin_slot": 0,
+ "target_id": 322,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 567,
+ "origin_id": 366,
+ "origin_slot": 0,
+ "target_id": 338,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 568,
+ "origin_id": 329,
+ "origin_slot": 0,
+ "target_id": 366,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 569,
+ "origin_id": -10,
+ "origin_slot": 16,
+ "target_id": 366,
+ "target_slot": 1,
+ "type": "COMBO"
+ }
+ ],
+ "extra": {},
+ "category": "Video generation and editing/Video Edit",
+ "description": "Replaces a character in a video with a reference image using the SCAIL-2 model for end-to-end controlled animation without intermediate pose maps. Key inputs include a source video, a reference character image, and optional text prompts for style or context. Suitable for animated or live-action footage, multi-character scenes, and creative video editing where direct pose-free animation is needed; works best with moderate-length videos."
+ }
+ ]
+ },
+ "extra": {
+ "BlueprintDescription": "Replaces a character in a video with a reference image using the SCAIL-2 model for end-to-end controlled animation without intermediate pose maps. Key inputs include a source video, a reference character image, and optional text prompts for style or context. Suitable for animated or live-action footage, multi-character scenes, and creative video editing where direct pose-free animation is needed; works best with moderate-length videos.",
+ "BlueprintSearchAliases": [
+ "character replacement",
+ "SCAIL-2 extend",
+ "video character swap"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/blueprints/Image Depth Estimation (Depth Anything 3).json b/blueprints/Image Depth Estimation (Depth Anything 3).json
new file mode 100644
index 000000000..3c5f24845
--- /dev/null
+++ b/blueprints/Image Depth Estimation (Depth Anything 3).json
@@ -0,0 +1,569 @@
+{
+ "revision": 0,
+ "last_node_id": 89,
+ "last_link_id": 0,
+ "nodes": [
+ {
+ "id": 89,
+ "type": "85e595bd-af9e-40ee-85c5-b98bb15da47a",
+ "pos": [
+ 320,
+ 520
+ ],
+ "size": [
+ 400,
+ 360
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "name": "resolution",
+ "type": "INT",
+ "widget": {
+ "name": "resolution"
+ },
+ "link": null
+ },
+ {
+ "name": "resize_method",
+ "type": "COMBO",
+ "widget": {
+ "name": "resize_method"
+ },
+ "link": null
+ },
+ {
+ "label": "output_type",
+ "name": "output",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "widget": {
+ "name": "output"
+ },
+ "link": null
+ },
+ {
+ "label": "output_normalization",
+ "name": "output.normalization",
+ "type": "COMBO",
+ "widget": {
+ "name": "output.normalization"
+ },
+ "link": null
+ },
+ {
+ "label": "apply_sky_clip",
+ "name": "output.apply_sky_clip",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "output.apply_sky_clip"
+ },
+ "link": null
+ },
+ {
+ "name": "model_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "model_name"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": []
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "87",
+ "resolution"
+ ],
+ [
+ "87",
+ "resize_method"
+ ],
+ [
+ "86",
+ "output"
+ ],
+ [
+ "86",
+ "output.normalization"
+ ],
+ [
+ "86",
+ "output.apply_sky_clip"
+ ],
+ [
+ "88",
+ "model_name"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [],
+ "title": "Image Depth Estimation (Depth Anything 3)"
+ }
+ ],
+ "links": [],
+ "version": 0.4,
+ "definitions": {
+ "subgraphs": [
+ {
+ "id": "85e595bd-af9e-40ee-85c5-b98bb15da47a",
+ "version": 1,
+ "state": {
+ "lastGroupId": 4,
+ "lastNodeId": 89,
+ "lastLinkId": 109,
+ "lastRerouteId": 0
+ },
+ "revision": 2,
+ "config": {},
+ "name": "Image Depth Estimation (Depth Anything 3)",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ 400,
+ 90,
+ 166.998046875,
+ 188
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 1250,
+ 146,
+ 128,
+ 68
+ ]
+ },
+ "inputs": [
+ {
+ "id": "43cf3118-495a-487d-8eb3-a17c7e92f64f",
+ "name": "image",
+ "type": "IMAGE",
+ "linkIds": [
+ 19
+ ],
+ "localized_name": "image",
+ "pos": [
+ 542.998046875,
+ 114
+ ]
+ },
+ {
+ "id": "1089a0a1-6db1-45a8-84b0-0bfdc2ed920a",
+ "name": "resolution",
+ "type": "INT",
+ "linkIds": [
+ 22
+ ],
+ "pos": [
+ 542.998046875,
+ 134
+ ]
+ },
+ {
+ "id": "25fb64ac-26d5-466d-995b-6d51b9afa2c4",
+ "name": "resize_method",
+ "type": "COMBO",
+ "linkIds": [
+ 23
+ ],
+ "pos": [
+ 542.998046875,
+ 154
+ ]
+ },
+ {
+ "id": "8acafb7c-6c8b-46b3-9d74-c563498a3af1",
+ "name": "output",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "linkIds": [
+ 24
+ ],
+ "label": "output_type",
+ "pos": [
+ 542.998046875,
+ 174
+ ]
+ },
+ {
+ "id": "1da5009b-4648-43e8-a257-16426630cf22",
+ "name": "output.normalization",
+ "type": "COMBO",
+ "linkIds": [
+ 25
+ ],
+ "label": "output_normalization",
+ "pos": [
+ 542.998046875,
+ 194
+ ]
+ },
+ {
+ "id": "fd7edb33-5fb1-4538-a411-26e5039a9321",
+ "name": "output.apply_sky_clip",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 26
+ ],
+ "label": "apply_sky_clip",
+ "pos": [
+ 542.998046875,
+ 214
+ ]
+ },
+ {
+ "id": "b5be4c8a-b833-4f1e-8c94-3ed1dd722190",
+ "name": "model_name",
+ "type": "COMBO",
+ "linkIds": [
+ 106
+ ],
+ "pos": [
+ 542.998046875,
+ 234
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "478ab537-63bc-4d74-a9f0-c975f550880f",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "linkIds": [
+ 7
+ ],
+ "localized_name": "IMAGE",
+ "pos": [
+ 1274,
+ 170
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 86,
+ "type": "DA3Render",
+ "pos": [
+ 800,
+ 310
+ ],
+ "size": [
+ 380,
+ 130
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "da3_geometry",
+ "name": "da3_geometry",
+ "type": "DA3_GEOMETRY",
+ "link": 12
+ },
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "widget": {
+ "name": "output"
+ },
+ "link": 24
+ },
+ {
+ "localized_name": "output.normalization",
+ "name": "output.normalization",
+ "type": "COMBO",
+ "widget": {
+ "name": "output.normalization"
+ },
+ "link": 25
+ },
+ {
+ "localized_name": "output.apply_sky_clip",
+ "name": "output.apply_sky_clip",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "output.apply_sky_clip"
+ },
+ "link": 26
+ },
+ {
+ "name": "geometry",
+ "type": "DA3_GEOMETRY",
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "slot_index": 0,
+ "links": [
+ 7
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "DA3Render",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0"
+ },
+ "widgets_values": [
+ "depth",
+ "v2_style",
+ false
+ ]
+ },
+ {
+ "id": 87,
+ "type": "DA3Inference",
+ "pos": [
+ 800,
+ 50
+ ],
+ "size": [
+ 390,
+ 130
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "da3_model",
+ "name": "da3_model",
+ "type": "DA3_MODEL",
+ "link": 107
+ },
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 19
+ },
+ {
+ "localized_name": "resolution",
+ "name": "resolution",
+ "type": "INT",
+ "widget": {
+ "name": "resolution"
+ },
+ "link": 22
+ },
+ {
+ "localized_name": "resize_method",
+ "name": "resize_method",
+ "type": "COMBO",
+ "widget": {
+ "name": "resize_method"
+ },
+ "link": 23
+ },
+ {
+ "localized_name": "mode",
+ "name": "mode",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "widget": {
+ "name": "mode"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "da3_geometry",
+ "name": "da3_geometry",
+ "type": "DA3_GEOMETRY",
+ "slot_index": 0,
+ "links": [
+ 12
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "DA3Inference",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0"
+ },
+ "widgets_values": [
+ 504,
+ "upper_bound_resize",
+ "mono"
+ ]
+ },
+ {
+ "id": 88,
+ "type": "LoadDA3Model",
+ "pos": [
+ 810,
+ -160
+ ],
+ "size": [
+ 400,
+ 140
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model_name",
+ "name": "model_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "model_name"
+ },
+ "link": 106
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "DA3_MODEL",
+ "name": "DA3_MODEL",
+ "type": "DA3_MODEL",
+ "links": [
+ 107
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoadDA3Model",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "depth_anything_3_mono_large.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Depth-Anything-3/resolve/main/geometry_estimation/depth_anything_3_mono_large.safetensors",
+ "directory": "geometry_estimation"
+ }
+ ]
+ },
+ "widgets_values": [
+ "depth_anything_3_mono_large.safetensors",
+ "default"
+ ]
+ }
+ ],
+ "groups": [],
+ "links": [
+ {
+ "id": 12,
+ "origin_id": 87,
+ "origin_slot": 0,
+ "target_id": 86,
+ "target_slot": 0,
+ "type": "DA3_GEOMETRY"
+ },
+ {
+ "id": 19,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 87,
+ "target_slot": 1,
+ "type": "IMAGE"
+ },
+ {
+ "id": 7,
+ "origin_id": 86,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 22,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 87,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 23,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 87,
+ "target_slot": 3,
+ "type": "COMBO"
+ },
+ {
+ "id": 24,
+ "origin_id": -10,
+ "origin_slot": 3,
+ "target_id": 86,
+ "target_slot": 1,
+ "type": "COMFY_DYNAMICCOMBO_V3"
+ },
+ {
+ "id": 25,
+ "origin_id": -10,
+ "origin_slot": 4,
+ "target_id": 86,
+ "target_slot": 2,
+ "type": "COMBO"
+ },
+ {
+ "id": 26,
+ "origin_id": -10,
+ "origin_slot": 5,
+ "target_id": 86,
+ "target_slot": 3,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 106,
+ "origin_id": -10,
+ "origin_slot": 6,
+ "target_id": 88,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 107,
+ "origin_id": 88,
+ "origin_slot": 0,
+ "target_id": 87,
+ "target_slot": 0,
+ "type": "DA3_MODEL"
+ }
+ ],
+ "extra": {},
+ "category": "Conditioning & Preprocessors/Depth",
+ "description": "This subgraph takes an input image and produces a depth map using the Depth Anything 3 model, which recovers spatially consistent geometry from any number of views. It is ideal for single or multi-view images, videos, and 3D scenes where accurate depth estimation is needed for tasks like SLAM, novel view synthesis, or spatial perception. The model uses a plain transformer backbone and supports both monocular and multi-view inputs without."
+ }
+ ]
+ },
+ "extra": {
+ "BlueprintDescription": "This subgraph takes an input image and produces a depth map using the Depth Anything 3 model, which recovers spatially consistent geometry from any number of views. It is ideal for single or multi-view images, videos, and 3D scenes where accurate depth estimation is needed for tasks like SLAM, novel view synthesis, or spatial perception. The model uses a plain transformer backbone and supports both monocular and multi-view inputs without."
+ }
+}
\ No newline at end of file
diff --git a/blueprints/Image Edit (Bernini-R).json b/blueprints/Image Edit (Bernini-R).json
new file mode 100644
index 000000000..9ad7867a4
--- /dev/null
+++ b/blueprints/Image Edit (Bernini-R).json
@@ -0,0 +1,3549 @@
+{
+ "revision": 0,
+ "last_node_id": 76,
+ "last_link_id": 0,
+ "nodes": [
+ {
+ "id": 76,
+ "type": "64670aa5-a932-4e9f-a299-3bfef6ebc043",
+ "pos": [
+ 3240,
+ 4340
+ ],
+ "size": [
+ 510,
+ 850
+ ],
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "source_image",
+ "name": "source_video",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "name": "reference_video",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "label": "reference_image",
+ "name": "reference_images.reference_image_0",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "label": "prompt",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ },
+ {
+ "label": "task_type",
+ "name": "choice",
+ "type": "COMBO",
+ "widget": {
+ "name": "choice"
+ },
+ "link": null
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": null
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": null
+ },
+ {
+ "name": "ref_max_size",
+ "shape": 7,
+ "type": "INT",
+ "widget": {
+ "name": "ref_max_size"
+ },
+ "link": null
+ },
+ {
+ "label": "enable_turbo_mode",
+ "name": "value",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ },
+ {
+ "label": "high_noise_model",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": null
+ },
+ {
+ "label": "low_noise_model",
+ "name": "unet_name_1",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name_1"
+ },
+ "link": null
+ },
+ {
+ "label": "lightning_lora",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": null
+ },
+ {
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": null
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": null
+ },
+ {
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": null
+ },
+ {
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": []
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "120",
+ "value"
+ ],
+ [
+ "54",
+ "choice"
+ ],
+ [
+ "50",
+ "width"
+ ],
+ [
+ "50",
+ "height"
+ ],
+ [
+ "50",
+ "ref_max_size"
+ ],
+ [
+ "70",
+ "value"
+ ],
+ [
+ "5",
+ "unet_name"
+ ],
+ [
+ "12",
+ "unet_name"
+ ],
+ [
+ "11",
+ "lora_name"
+ ],
+ [
+ "9",
+ "clip_name"
+ ],
+ [
+ "7",
+ "vae_name"
+ ],
+ [
+ "19",
+ "noise_seed"
+ ],
+ [
+ "50",
+ "length"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [],
+ "title": "Image Edit (Bernini-R)"
+ }
+ ],
+ "links": [],
+ "version": 0.4,
+ "definitions": {
+ "subgraphs": [
+ {
+ "id": "64670aa5-a932-4e9f-a299-3bfef6ebc043",
+ "version": 1,
+ "state": {
+ "lastGroupId": 9,
+ "lastNodeId": 157,
+ "lastLinkId": 308,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Image Edit (Bernini-R)",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ -60,
+ 4230,
+ 159.744140625,
+ 368
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 4720,
+ 4220,
+ 128,
+ 68
+ ]
+ },
+ "inputs": [
+ {
+ "id": "3df44016-bb49-40a2-a1dc-47d750440516",
+ "name": "source_video",
+ "type": "IMAGE",
+ "linkIds": [
+ 294
+ ],
+ "label": "source_image",
+ "pos": [
+ 75.744140625,
+ 4254
+ ]
+ },
+ {
+ "id": "9e960570-35a6-4f48-bfa3-5f6ded6ede10",
+ "name": "reference_video",
+ "type": "IMAGE",
+ "linkIds": [
+ 162
+ ],
+ "pos": [
+ 75.744140625,
+ 4274
+ ]
+ },
+ {
+ "id": "4ddf8f1f-b92a-4802-96cd-1379ce4dcba3",
+ "name": "reference_images.reference_image_0",
+ "type": "IMAGE",
+ "linkIds": [
+ 163
+ ],
+ "label": "reference_image",
+ "pos": [
+ 75.744140625,
+ 4294
+ ]
+ },
+ {
+ "id": "fb6d520b-6281-4b05-8a36-64ed7ef58850",
+ "name": "text",
+ "type": "STRING",
+ "linkIds": [
+ 308
+ ],
+ "label": "prompt",
+ "pos": [
+ 75.744140625,
+ 4314
+ ]
+ },
+ {
+ "id": "8005758c-ac19-4baf-8895-4661b2bf9327",
+ "name": "choice",
+ "type": "COMBO",
+ "linkIds": [
+ 165
+ ],
+ "label": "task_type",
+ "pos": [
+ 75.744140625,
+ 4334
+ ]
+ },
+ {
+ "id": "8f7316d5-b98d-4702-83db-6f57fd8804c6",
+ "name": "width",
+ "type": "INT",
+ "linkIds": [
+ 166
+ ],
+ "pos": [
+ 75.744140625,
+ 4354
+ ]
+ },
+ {
+ "id": "2dc22817-de2d-4d0f-8763-71795668c1d3",
+ "name": "height",
+ "type": "INT",
+ "linkIds": [
+ 167
+ ],
+ "pos": [
+ 75.744140625,
+ 4374
+ ]
+ },
+ {
+ "id": "ff81d4ba-46f0-40e3-995d-50df973d951c",
+ "name": "ref_max_size",
+ "type": "INT",
+ "linkIds": [
+ 169
+ ],
+ "pos": [
+ 75.744140625,
+ 4394
+ ]
+ },
+ {
+ "id": "2c12a5f5-e9d9-45e7-bb62-bbf7a352731f",
+ "name": "value",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 170
+ ],
+ "label": "enable_turbo_mode",
+ "pos": [
+ 75.744140625,
+ 4414
+ ]
+ },
+ {
+ "id": "ff09c771-83a5-4d92-bc16-006e6eb19406",
+ "name": "unet_name",
+ "type": "COMBO",
+ "linkIds": [
+ 171
+ ],
+ "label": "high_noise_model",
+ "pos": [
+ 75.744140625,
+ 4434
+ ]
+ },
+ {
+ "id": "67aed2f7-f407-4f55-add0-6ae669a069dc",
+ "name": "unet_name_1",
+ "type": "COMBO",
+ "linkIds": [
+ 173
+ ],
+ "label": "low_noise_model",
+ "pos": [
+ 75.744140625,
+ 4454
+ ]
+ },
+ {
+ "id": "7f456845-cdba-46f0-829c-31b72d4a9038",
+ "name": "lora_name",
+ "type": "COMBO",
+ "linkIds": [
+ 174,
+ 175
+ ],
+ "label": "lightning_lora",
+ "pos": [
+ 75.744140625,
+ 4474
+ ]
+ },
+ {
+ "id": "b7332485-fd38-4522-8192-ea862afe9a35",
+ "name": "clip_name",
+ "type": "COMBO",
+ "linkIds": [
+ 176
+ ],
+ "pos": [
+ 75.744140625,
+ 4494
+ ]
+ },
+ {
+ "id": "3328f3bc-c4ce-467e-830e-0e394c8da2b7",
+ "name": "vae_name",
+ "type": "COMBO",
+ "linkIds": [
+ 177
+ ],
+ "pos": [
+ 75.744140625,
+ 4514
+ ]
+ },
+ {
+ "id": "c8a71e1e-2d0b-4f9a-afd8-4186ba4cc241",
+ "name": "noise_seed",
+ "type": "INT",
+ "linkIds": [
+ 283
+ ],
+ "pos": [
+ 75.744140625,
+ 4534
+ ]
+ },
+ {
+ "id": "3663f935-0959-4cb3-923d-d44736198056",
+ "name": "length",
+ "type": "INT",
+ "linkIds": [
+ 295
+ ],
+ "pos": [
+ 75.744140625,
+ 4554
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "5621984a-f548-41d5-b812-481a9122dd81",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "linkIds": [
+ 297
+ ],
+ "pos": [
+ 4744,
+ 4244
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 9,
+ "type": "CLIPLoader",
+ "pos": [
+ 890,
+ 5030
+ ],
+ "size": [
+ 670,
+ 170
+ ],
+ "flags": {},
+ "order": 12,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_name",
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": 176
+ },
+ {
+ "localized_name": "type",
+ "name": "type",
+ "type": "COMBO",
+ "widget": {
+ "name": "type"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "device",
+ "name": "device",
+ "shape": 7,
+ "type": "COMBO",
+ "widget": {
+ "name": "device"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP",
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 7,
+ 8
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors?download=true",
+ "directory": "text_encoders"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "wan",
+ "default"
+ ]
+ },
+ {
+ "id": 7,
+ "type": "VAELoader",
+ "pos": [
+ 890,
+ 5260
+ ],
+ "size": [
+ 670,
+ 110
+ ],
+ "flags": {},
+ "order": 11,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "vae_name",
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": 177
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 99,
+ 119
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAELoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "Wan2_1_VAE_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan2_1_VAE_bf16.safetensors?download=true",
+ "directory": "vae"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "Wan2_1_VAE_bf16.safetensors"
+ ]
+ },
+ {
+ "id": 29,
+ "type": "LoraLoaderModelOnly",
+ "pos": [
+ 890,
+ 4810
+ ],
+ "size": [
+ 670,
+ 170
+ ],
+ "flags": {},
+ "order": 20,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 128
+ },
+ {
+ "localized_name": "lora_name",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": 175
+ },
+ {
+ "localized_name": "strength_model",
+ "name": "strength_model",
+ "type": "FLOAT",
+ "widget": {
+ "name": "strength_model"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 132
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoaderModelOnly",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Lightx2v/lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors?download=true",
+ "directory": "loras"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors",
+ 1.5
+ ],
+ "color": "#332922",
+ "bgcolor": "#593930"
+ },
+ {
+ "id": 4,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 1670,
+ 4670
+ ],
+ "size": [
+ 700,
+ 240
+ ],
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 8
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 118
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走"
+ ],
+ "color": "#223",
+ "bgcolor": "#335"
+ },
+ {
+ "id": 17,
+ "type": "SplitSigmas",
+ "pos": [
+ 3240,
+ 4450
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 17,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "sigmas",
+ "name": "sigmas",
+ "type": "SIGMAS",
+ "link": 33
+ },
+ {
+ "localized_name": "step",
+ "name": "step",
+ "type": "INT",
+ "widget": {
+ "name": "step"
+ },
+ "link": 146
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "high_sigmas",
+ "name": "high_sigmas",
+ "type": "SIGMAS",
+ "links": [
+ 41
+ ]
+ },
+ {
+ "localized_name": "low_sigmas",
+ "name": "low_sigmas",
+ "type": "SIGMAS",
+ "links": [
+ 42
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SplitSigmas",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 3
+ ]
+ },
+ {
+ "id": 27,
+ "type": "KSamplerSelect",
+ "pos": [
+ 3240,
+ 4640
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "sampler_name",
+ "name": "sampler_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "sampler_name"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SAMPLER",
+ "name": "SAMPLER",
+ "type": "SAMPLER",
+ "links": [
+ 53,
+ 56
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerSelect",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "res_multistep"
+ ]
+ },
+ {
+ "id": 5,
+ "type": "UNETLoader",
+ "pos": [
+ 890,
+ 4200
+ ],
+ "size": [
+ 670,
+ 140
+ ],
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 171
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 127,
+ 130
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "wan2.2_bernini_r_high_noise_fp8_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Bernini-R/resolve/main/diffusion_models/wan2.2_bernini_r_high_noise_fp8_scaled.safetensors",
+ "directory": "diffusion_models"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "wan2.2_bernini_r_high_noise_fp8_scaled.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 11,
+ "type": "LoraLoaderModelOnly",
+ "pos": [
+ 890,
+ 4390
+ ],
+ "size": [
+ 670,
+ 170
+ ],
+ "flags": {},
+ "order": 13,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 127
+ },
+ {
+ "localized_name": "lora_name",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": 174
+ },
+ {
+ "localized_name": "strength_model",
+ "name": "strength_model",
+ "type": "FLOAT",
+ "widget": {
+ "name": "strength_model"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 129
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoaderModelOnly",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Lightx2v/lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors?download=true",
+ "directory": "loras"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors",
+ 3
+ ],
+ "color": "#332922",
+ "bgcolor": "#593930"
+ },
+ {
+ "id": 12,
+ "type": "UNETLoader",
+ "pos": [
+ 890,
+ 4620
+ ],
+ "size": [
+ 670,
+ 140
+ ],
+ "flags": {},
+ "order": 14,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 173
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 34,
+ 128,
+ 131
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "wan2.2_bernini_r_low_noise_fp8_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Bernini-R/resolve/main/diffusion_models/wan2.2_bernini_r_low_noise_fp8_scaled.safetensors",
+ "directory": "diffusion_models"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "wan2.2_bernini_r_low_noise_fp8_scaled.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 16,
+ "type": "VAEDecode",
+ "pos": [
+ 4410,
+ 4220
+ ],
+ "size": [
+ 250,
+ 100
+ ],
+ "flags": {},
+ "order": 16,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "samples",
+ "name": "samples",
+ "type": "LATENT",
+ "link": 31
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 99
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 297
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 19,
+ "type": "SamplerCustom",
+ "pos": [
+ 3580,
+ 4220
+ ],
+ "size": [
+ 280,
+ 680
+ ],
+ "flags": {},
+ "order": 19,
+ "mode": 0,
+ "showAdvanced": false,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 133
+ },
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 121
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 123
+ },
+ {
+ "localized_name": "sampler",
+ "name": "sampler",
+ "type": "SAMPLER",
+ "link": 53
+ },
+ {
+ "localized_name": "sigmas",
+ "name": "sigmas",
+ "type": "SIGMAS",
+ "link": 41
+ },
+ {
+ "localized_name": "latent_image",
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 125
+ },
+ {
+ "localized_name": "add_noise",
+ "name": "add_noise",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "add_noise"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "noise_seed",
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": 283
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": 153
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "LATENT",
+ "links": [
+ 40
+ ]
+ },
+ {
+ "localized_name": "denoised_output",
+ "name": "denoised_output",
+ "type": "LATENT",
+ "links": []
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SamplerCustom",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ true,
+ 283365432432581,
+ "randomize",
+ 1
+ ]
+ },
+ {
+ "id": 18,
+ "type": "BasicScheduler",
+ "pos": [
+ 3240,
+ 4230
+ ],
+ "size": [
+ 270,
+ 170
+ ],
+ "flags": {},
+ "order": 18,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 34
+ },
+ {
+ "localized_name": "scheduler",
+ "name": "scheduler",
+ "type": "COMBO",
+ "widget": {
+ "name": "scheduler"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "steps",
+ "name": "steps",
+ "type": "INT",
+ "widget": {
+ "name": "steps"
+ },
+ "link": 143
+ },
+ {
+ "localized_name": "denoise",
+ "name": "denoise",
+ "type": "FLOAT",
+ "widget": {
+ "name": "denoise"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SIGMAS",
+ "name": "SIGMAS",
+ "type": "SIGMAS",
+ "links": [
+ 33
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "BasicScheduler",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "simple",
+ 6,
+ 1
+ ]
+ },
+ {
+ "id": 15,
+ "type": "SamplerCustom",
+ "pos": [
+ 3910,
+ 4220
+ ],
+ "size": [
+ 280,
+ 680
+ ],
+ "flags": {},
+ "order": 15,
+ "mode": 0,
+ "showAdvanced": false,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 134
+ },
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 122
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 124
+ },
+ {
+ "localized_name": "sampler",
+ "name": "sampler",
+ "type": "SAMPLER",
+ "link": 56
+ },
+ {
+ "localized_name": "sigmas",
+ "name": "sigmas",
+ "type": "SIGMAS",
+ "link": 42
+ },
+ {
+ "localized_name": "latent_image",
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 40
+ },
+ {
+ "localized_name": "add_noise",
+ "name": "add_noise",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "add_noise"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "noise_seed",
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": 154
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "LATENT",
+ "links": [
+ 31
+ ]
+ },
+ {
+ "localized_name": "denoised_output",
+ "name": "denoised_output",
+ "type": "LATENT",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SamplerCustom",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ false,
+ 0,
+ "fixed",
+ 1
+ ]
+ },
+ {
+ "id": 50,
+ "type": "BerniniConditioning",
+ "pos": [
+ 1880,
+ 4990
+ ],
+ "size": [
+ 310,
+ 380
+ ],
+ "flags": {},
+ "order": 21,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 117
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 118
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 119
+ },
+ {
+ "localized_name": "source_video",
+ "name": "source_video",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 294
+ },
+ {
+ "localized_name": "reference_video",
+ "name": "reference_video",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 162
+ },
+ {
+ "label": "reference_image_0",
+ "localized_name": "reference_images.reference_image_0",
+ "name": "reference_images.reference_image_0",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 163
+ },
+ {
+ "label": "reference_image_1",
+ "localized_name": "reference_images.reference_image_1",
+ "name": "reference_images.reference_image_1",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "localized_name": "width",
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": 166
+ },
+ {
+ "localized_name": "height",
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": 167
+ },
+ {
+ "localized_name": "length",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": 295
+ },
+ {
+ "localized_name": "batch_size",
+ "name": "batch_size",
+ "type": "INT",
+ "widget": {
+ "name": "batch_size"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "ref_max_size",
+ "name": "ref_max_size",
+ "shape": 7,
+ "type": "INT",
+ "widget": {
+ "name": "ref_max_size"
+ },
+ "link": 169
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "links": [
+ 121,
+ 122
+ ]
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "links": [
+ 123,
+ 124
+ ]
+ },
+ {
+ "localized_name": "latent",
+ "name": "latent",
+ "type": "LATENT",
+ "links": [
+ 125
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "BerniniConditioning",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 928,
+ 1280,
+ 1,
+ 1,
+ 848
+ ],
+ "color": "#322",
+ "bgcolor": "#533"
+ },
+ {
+ "id": 3,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 1670,
+ 4210
+ ],
+ "size": [
+ 710,
+ 390
+ ],
+ "flags": {},
+ "order": 8,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 7
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 140
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 117
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ ""
+ ],
+ "color": "#232",
+ "bgcolor": "#353"
+ },
+ {
+ "id": 53,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2860,
+ 4520
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 23,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 131
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 132
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 148
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 134
+ ]
+ }
+ ],
+ "title": "Switch (Low Noise)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 54,
+ "type": "CustomCombo",
+ "pos": [
+ 890,
+ 3070
+ ],
+ "size": [
+ 230,
+ 350
+ ],
+ "flags": {},
+ "order": 24,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "choice",
+ "name": "choice",
+ "type": "COMBO",
+ "widget": {
+ "name": "choice"
+ },
+ "link": 165
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": null
+ },
+ {
+ "localized_name": "INDEX",
+ "name": "INDEX",
+ "type": "INT",
+ "links": [
+ 135
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CustomCombo",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "Default",
+ 0,
+ "Default",
+ "Text to Image",
+ "Text to Video",
+ "Image Editing",
+ "Subject to Image",
+ ""
+ ]
+ },
+ {
+ "id": 57,
+ "type": "c39e0ea5-b767-460c-b394-b09703772fa6",
+ "pos": [
+ 1400,
+ 3070
+ ],
+ "size": [
+ 390,
+ 440
+ ],
+ "flags": {},
+ "order": 25,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "text_per_line",
+ "name": "text_per_line",
+ "type": "STRING",
+ "widget": {
+ "name": "text_per_line"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "index",
+ "name": "index",
+ "type": "INT",
+ "widget": {
+ "name": "index"
+ },
+ "link": 135
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "selected_line",
+ "name": "selected_line",
+ "type": "STRING",
+ "links": [
+ 137
+ ]
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "2",
+ "string"
+ ],
+ [
+ "56",
+ "value"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": []
+ },
+ {
+ "id": 59,
+ "type": "StringConcatenate",
+ "pos": [
+ 1410,
+ 3770
+ ],
+ "size": [
+ 400,
+ 250
+ ],
+ "flags": {},
+ "order": 26,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "string_a",
+ "name": "string_a",
+ "type": "STRING",
+ "widget": {
+ "name": "string_a"
+ },
+ "link": 137
+ },
+ {
+ "localized_name": "string_b",
+ "name": "string_b",
+ "type": "STRING",
+ "widget": {
+ "name": "string_b"
+ },
+ "link": 307
+ },
+ {
+ "localized_name": "delimiter",
+ "name": "delimiter",
+ "type": "STRING",
+ "widget": {
+ "name": "delimiter"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 140
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "StringConcatenate",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "",
+ "",
+ ""
+ ]
+ },
+ {
+ "id": 62,
+ "type": "PrimitiveInt",
+ "pos": [
+ 2460,
+ 4240
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 141
+ ]
+ }
+ ],
+ "title": "Int (Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 40,
+ "fixed"
+ ]
+ },
+ {
+ "id": 63,
+ "type": "PrimitiveInt",
+ "pos": [
+ 2470,
+ 4780
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 142
+ ]
+ }
+ ],
+ "title": "Int (Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 6,
+ "fixed"
+ ]
+ },
+ {
+ "id": 64,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2860,
+ 4710
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 27,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 141
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 142
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 149
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 143
+ ]
+ }
+ ],
+ "title": "Switch (Steps)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 66,
+ "type": "PrimitiveInt",
+ "pos": [
+ 2460,
+ 4400
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 144
+ ]
+ }
+ ],
+ "title": "Int (Split Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 20,
+ "fixed"
+ ]
+ },
+ {
+ "id": 67,
+ "type": "PrimitiveInt",
+ "pos": [
+ 2470,
+ 4950
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 145
+ ]
+ }
+ ],
+ "title": "Int (Split Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 3,
+ "fixed"
+ ]
+ },
+ {
+ "id": 68,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2860,
+ 4910
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 28,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 144
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 145
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 150
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 146
+ ]
+ }
+ ],
+ "title": "Switch (Low Steps)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 72,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2860,
+ 5100
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 30,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 151
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 152
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 155
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 153,
+ 154
+ ]
+ }
+ ],
+ "title": "Switch (CFG)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 73,
+ "type": "PrimitiveFloat",
+ "pos": [
+ 2470,
+ 5110
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "FLOAT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 152
+ ]
+ }
+ ],
+ "title": "Float (CFG)",
+ "properties": {
+ "Node name for S&R": "PrimitiveFloat",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 1
+ ]
+ },
+ {
+ "id": 71,
+ "type": "PrimitiveFloat",
+ "pos": [
+ 2460,
+ 4560
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "FLOAT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 151
+ ]
+ }
+ ],
+ "title": "Float (CFG)",
+ "properties": {
+ "Node name for S&R": "PrimitiveFloat",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 5
+ ]
+ },
+ {
+ "id": 70,
+ "type": "PrimitiveBoolean",
+ "pos": [
+ 2470,
+ 5290
+ ],
+ "size": [
+ 270,
+ 100
+ ],
+ "flags": {},
+ "order": 29,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value"
+ },
+ "link": 170
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "BOOLEAN",
+ "name": "BOOLEAN",
+ "type": "BOOLEAN",
+ "links": [
+ 147,
+ 148,
+ 149,
+ 150,
+ 155
+ ]
+ }
+ ],
+ "title": "Boolean (Enable Turbo LoRA?)",
+ "properties": {
+ "Node name for S&R": "PrimitiveBoolean",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ true
+ ]
+ },
+ {
+ "id": 52,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 2860,
+ 4330
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 22,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 130
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 129
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 147
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 133
+ ]
+ }
+ ],
+ "title": "Switch (High Noise)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 75,
+ "type": "MarkdownNote",
+ "pos": [
+ 2450,
+ 3950
+ ],
+ "size": [
+ 340,
+ 150
+ ],
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [],
+ "outputs": [],
+ "properties": {},
+ "widgets_values": [
+ "You can find the original settings here: https://github.com/bytedance/Bernini/blob/main/gradio_demo.py"
+ ],
+ "color": "#222",
+ "bgcolor": "#000"
+ },
+ {
+ "id": 120,
+ "type": "PrimitiveStringMultiline",
+ "pos": [
+ 890,
+ 3750
+ ],
+ "size": [
+ 470,
+ 290
+ ],
+ "flags": {},
+ "order": 31,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "STRING",
+ "widget": {
+ "name": "value"
+ },
+ "link": 308
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 307
+ ]
+ }
+ ],
+ "title": "Text Multiline (User Prompt)",
+ "properties": {
+ "Node name for S&R": "PrimitiveStringMultiline",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ ""
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "id": 1,
+ "title": "Prompt & Conditioning",
+ "bounding": [
+ 1650,
+ 4130,
+ 760,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 2,
+ "title": "Models",
+ "bounding": [
+ 870,
+ 4130,
+ 750,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 3,
+ "title": "Sampling",
+ "bounding": [
+ 3210,
+ 4130,
+ 1160,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 8,
+ "title": "Prompt Construction",
+ "bounding": [
+ 870,
+ 2960,
+ 960,
+ 1120
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 4,
+ "title": "System Prompt (Based on task type)",
+ "bounding": [
+ 880,
+ 3000,
+ 920,
+ 680
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 7,
+ "title": "Switch Settings",
+ "bounding": [
+ 2440,
+ 4130,
+ 740,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 5,
+ "title": "Distill LoRA settings",
+ "bounding": [
+ 2450,
+ 4710,
+ 310,
+ 530
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 6,
+ "title": "Original Settings",
+ "bounding": [
+ 2450,
+ 4170,
+ 300,
+ 504
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ }
+ ],
+ "links": [
+ {
+ "id": 128,
+ "origin_id": 12,
+ "origin_slot": 0,
+ "target_id": 29,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 8,
+ "origin_id": 9,
+ "origin_slot": 0,
+ "target_id": 4,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 33,
+ "origin_id": 18,
+ "origin_slot": 0,
+ "target_id": 17,
+ "target_slot": 0,
+ "type": "SIGMAS"
+ },
+ {
+ "id": 146,
+ "origin_id": 68,
+ "origin_slot": 0,
+ "target_id": 17,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 127,
+ "origin_id": 5,
+ "origin_slot": 0,
+ "target_id": 11,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 31,
+ "origin_id": 15,
+ "origin_slot": 0,
+ "target_id": 16,
+ "target_slot": 0,
+ "type": "LATENT"
+ },
+ {
+ "id": 99,
+ "origin_id": 7,
+ "origin_slot": 0,
+ "target_id": 16,
+ "target_slot": 1,
+ "type": "VAE"
+ },
+ {
+ "id": 133,
+ "origin_id": 52,
+ "origin_slot": 0,
+ "target_id": 19,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 121,
+ "origin_id": 50,
+ "origin_slot": 0,
+ "target_id": 19,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 123,
+ "origin_id": 50,
+ "origin_slot": 1,
+ "target_id": 19,
+ "target_slot": 2,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 53,
+ "origin_id": 27,
+ "origin_slot": 0,
+ "target_id": 19,
+ "target_slot": 3,
+ "type": "SAMPLER"
+ },
+ {
+ "id": 41,
+ "origin_id": 17,
+ "origin_slot": 0,
+ "target_id": 19,
+ "target_slot": 4,
+ "type": "SIGMAS"
+ },
+ {
+ "id": 125,
+ "origin_id": 50,
+ "origin_slot": 2,
+ "target_id": 19,
+ "target_slot": 5,
+ "type": "LATENT"
+ },
+ {
+ "id": 153,
+ "origin_id": 72,
+ "origin_slot": 0,
+ "target_id": 19,
+ "target_slot": 8,
+ "type": "FLOAT"
+ },
+ {
+ "id": 34,
+ "origin_id": 12,
+ "origin_slot": 0,
+ "target_id": 18,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 143,
+ "origin_id": 64,
+ "origin_slot": 0,
+ "target_id": 18,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 134,
+ "origin_id": 53,
+ "origin_slot": 0,
+ "target_id": 15,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 122,
+ "origin_id": 50,
+ "origin_slot": 0,
+ "target_id": 15,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 124,
+ "origin_id": 50,
+ "origin_slot": 1,
+ "target_id": 15,
+ "target_slot": 2,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 56,
+ "origin_id": 27,
+ "origin_slot": 0,
+ "target_id": 15,
+ "target_slot": 3,
+ "type": "SAMPLER"
+ },
+ {
+ "id": 42,
+ "origin_id": 17,
+ "origin_slot": 1,
+ "target_id": 15,
+ "target_slot": 4,
+ "type": "SIGMAS"
+ },
+ {
+ "id": 40,
+ "origin_id": 19,
+ "origin_slot": 0,
+ "target_id": 15,
+ "target_slot": 5,
+ "type": "LATENT"
+ },
+ {
+ "id": 154,
+ "origin_id": 72,
+ "origin_slot": 0,
+ "target_id": 15,
+ "target_slot": 8,
+ "type": "FLOAT"
+ },
+ {
+ "id": 117,
+ "origin_id": 3,
+ "origin_slot": 0,
+ "target_id": 50,
+ "target_slot": 0,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 118,
+ "origin_id": 4,
+ "origin_slot": 0,
+ "target_id": 50,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 119,
+ "origin_id": 7,
+ "origin_slot": 0,
+ "target_id": 50,
+ "target_slot": 2,
+ "type": "VAE"
+ },
+ {
+ "id": 7,
+ "origin_id": 9,
+ "origin_slot": 0,
+ "target_id": 3,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 140,
+ "origin_id": 59,
+ "origin_slot": 0,
+ "target_id": 3,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 131,
+ "origin_id": 12,
+ "origin_slot": 0,
+ "target_id": 53,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 132,
+ "origin_id": 29,
+ "origin_slot": 0,
+ "target_id": 53,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 148,
+ "origin_id": 70,
+ "origin_slot": 0,
+ "target_id": 53,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 135,
+ "origin_id": 54,
+ "origin_slot": 1,
+ "target_id": 57,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 137,
+ "origin_id": 57,
+ "origin_slot": 0,
+ "target_id": 59,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 141,
+ "origin_id": 62,
+ "origin_slot": 0,
+ "target_id": 64,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 142,
+ "origin_id": 63,
+ "origin_slot": 0,
+ "target_id": 64,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 149,
+ "origin_id": 70,
+ "origin_slot": 0,
+ "target_id": 64,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 144,
+ "origin_id": 66,
+ "origin_slot": 0,
+ "target_id": 68,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 145,
+ "origin_id": 67,
+ "origin_slot": 0,
+ "target_id": 68,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 150,
+ "origin_id": 70,
+ "origin_slot": 0,
+ "target_id": 68,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 151,
+ "origin_id": 71,
+ "origin_slot": 0,
+ "target_id": 72,
+ "target_slot": 0,
+ "type": "FLOAT"
+ },
+ {
+ "id": 152,
+ "origin_id": 73,
+ "origin_slot": 0,
+ "target_id": 72,
+ "target_slot": 1,
+ "type": "FLOAT"
+ },
+ {
+ "id": 155,
+ "origin_id": 70,
+ "origin_slot": 0,
+ "target_id": 72,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 130,
+ "origin_id": 5,
+ "origin_slot": 0,
+ "target_id": 52,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 129,
+ "origin_id": 11,
+ "origin_slot": 0,
+ "target_id": 52,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 147,
+ "origin_id": 70,
+ "origin_slot": 0,
+ "target_id": 52,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 162,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 50,
+ "target_slot": 4,
+ "type": "IMAGE"
+ },
+ {
+ "id": 163,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 50,
+ "target_slot": 5,
+ "type": "IMAGE"
+ },
+ {
+ "id": 165,
+ "origin_id": -10,
+ "origin_slot": 4,
+ "target_id": 54,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 166,
+ "origin_id": -10,
+ "origin_slot": 5,
+ "target_id": 50,
+ "target_slot": 7,
+ "type": "INT"
+ },
+ {
+ "id": 167,
+ "origin_id": -10,
+ "origin_slot": 6,
+ "target_id": 50,
+ "target_slot": 8,
+ "type": "INT"
+ },
+ {
+ "id": 169,
+ "origin_id": -10,
+ "origin_slot": 7,
+ "target_id": 50,
+ "target_slot": 11,
+ "type": "INT"
+ },
+ {
+ "id": 170,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 70,
+ "target_slot": 0,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 171,
+ "origin_id": -10,
+ "origin_slot": 9,
+ "target_id": 5,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 173,
+ "origin_id": -10,
+ "origin_slot": 10,
+ "target_id": 12,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 174,
+ "origin_id": -10,
+ "origin_slot": 11,
+ "target_id": 11,
+ "target_slot": 1,
+ "type": "COMBO"
+ },
+ {
+ "id": 175,
+ "origin_id": -10,
+ "origin_slot": 11,
+ "target_id": 29,
+ "target_slot": 1,
+ "type": "COMBO"
+ },
+ {
+ "id": 176,
+ "origin_id": -10,
+ "origin_slot": 12,
+ "target_id": 9,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 177,
+ "origin_id": -10,
+ "origin_slot": 13,
+ "target_id": 7,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 283,
+ "origin_id": -10,
+ "origin_slot": 14,
+ "target_id": 19,
+ "target_slot": 7,
+ "type": "INT"
+ },
+ {
+ "id": 294,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 50,
+ "target_slot": 3,
+ "type": "IMAGE"
+ },
+ {
+ "id": 295,
+ "origin_id": -10,
+ "origin_slot": 15,
+ "target_id": 50,
+ "target_slot": 9,
+ "type": "INT"
+ },
+ {
+ "id": 297,
+ "origin_id": 16,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 307,
+ "origin_id": 120,
+ "origin_slot": 0,
+ "target_id": 59,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 308,
+ "origin_id": -10,
+ "origin_slot": 3,
+ "target_id": 120,
+ "target_slot": 0,
+ "type": "STRING"
+ }
+ ],
+ "extra": {},
+ "category": "Image generation and editing/Edit image",
+ "description": "Edits a single image using a text prompt, leveraging Bernini-R's latent semantic planning for changes like object addition, removal, or style transfer. Ideal for creative edits requiring precise semantic understanding, such as adding a snowman to a scene or altering an object's appearance."
+ },
+ {
+ "id": "c39e0ea5-b767-460c-b394-b09703772fa6",
+ "version": 1,
+ "state": {
+ "lastGroupId": 9,
+ "lastNodeId": 157,
+ "lastLinkId": 308,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Select Per-Line Text by Index",
+ "description": "Selects one line from multiline text by zero-based index for batch or list-driven prompt workflows.",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ -990,
+ 8595,
+ 128,
+ 88
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 710,
+ 8585,
+ 128,
+ 68
+ ]
+ },
+ "inputs": [
+ {
+ "id": "75417d82-a934-4ac9-b667-d8dcd5a3bfb3",
+ "name": "text_per_line",
+ "type": "STRING",
+ "linkIds": [
+ 13
+ ],
+ "localized_name": "text_per_line",
+ "pos": [
+ -886,
+ 8619
+ ]
+ },
+ {
+ "id": "46e69a73-1804-4ca6-9175-31445bf0be96",
+ "name": "index",
+ "type": "INT",
+ "linkIds": [
+ 14
+ ],
+ "localized_name": "index",
+ "pos": [
+ -886,
+ 8639
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "e34e8ad1-84d2-4bd2-a460-eb7de6067c10",
+ "name": "selected_line",
+ "type": "STRING",
+ "linkIds": [
+ 10
+ ],
+ "localized_name": "selected_line",
+ "pos": [
+ 734,
+ 8609
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 1,
+ "type": "PreviewAny",
+ "pos": [
+ -500,
+ 8400
+ ],
+ "size": [
+ 230,
+ 180
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "source",
+ "name": "source",
+ "type": "*",
+ "link": 1
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 6
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "PreviewAny",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": [
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 2,
+ "type": "RegexExtract",
+ "pos": [
+ -240,
+ 8740
+ ],
+ "size": [
+ 470,
+ 460
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "showAdvanced": false,
+ "inputs": [
+ {
+ "localized_name": "string",
+ "name": "string",
+ "type": "STRING",
+ "widget": {
+ "name": "string"
+ },
+ "link": 13
+ },
+ {
+ "localized_name": "regex_pattern",
+ "name": "regex_pattern",
+ "type": "STRING",
+ "widget": {
+ "name": "regex_pattern"
+ },
+ "link": 9
+ },
+ {
+ "localized_name": "mode",
+ "name": "mode",
+ "type": "COMBO",
+ "widget": {
+ "name": "mode"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "case_insensitive",
+ "name": "case_insensitive",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "case_insensitive"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "multiline",
+ "name": "multiline",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "multiline"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "dotall",
+ "name": "dotall",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "dotall"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "group_index",
+ "name": "group_index",
+ "type": "INT",
+ "widget": {
+ "name": "group_index"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 10
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "RegexExtract",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": [
+ "You are a helpful assistant.\nYou are a helpful assistant specialized in text-to-image generation.\nYou are a helpful assistant specialized in text-to-video generation.\nYou are a helpful assistant specialized in image editing.\nYou are a helpful assistant specialized in subject-to-image generation.",
+ "",
+ "First Group",
+ false,
+ false,
+ false,
+ 1
+ ]
+ },
+ {
+ "id": 56,
+ "type": "PrimitiveInt",
+ "pos": [
+ -810,
+ 8400
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 14
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 1
+ ]
+ }
+ ],
+ "title": "Int (line index)",
+ "properties": {
+ "Node name for S&R": "Int (line index)",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": [
+ 0,
+ "fixed"
+ ]
+ },
+ {
+ "id": 8,
+ "type": "StringReplace",
+ "pos": [
+ -240,
+ 8400
+ ],
+ "size": [
+ 400,
+ 280
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "string",
+ "name": "string",
+ "type": "STRING",
+ "widget": {
+ "name": "string"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "find",
+ "name": "find",
+ "type": "STRING",
+ "widget": {
+ "name": "find"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "replace",
+ "name": "replace",
+ "type": "STRING",
+ "widget": {
+ "name": "replace"
+ },
+ "link": 6
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 9
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "StringReplace",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": [
+ "^(?:[^\\n]*\\n){index}([^\\n]*)(?:\\n|$)",
+ "index",
+ ""
+ ]
+ }
+ ],
+ "groups": [],
+ "links": [
+ {
+ "id": 1,
+ "origin_id": 56,
+ "origin_slot": 0,
+ "target_id": 1,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 9,
+ "origin_id": 8,
+ "origin_slot": 0,
+ "target_id": 2,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 6,
+ "origin_id": 1,
+ "origin_slot": 0,
+ "target_id": 8,
+ "target_slot": 2,
+ "type": "STRING"
+ },
+ {
+ "id": 10,
+ "origin_id": 2,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 13,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 2,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 14,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 56,
+ "target_slot": 0,
+ "type": "INT"
+ }
+ ],
+ "extra": {
+ "ue_links": [],
+ "links_added_by_ue": []
+ }
+ }
+ ]
+ },
+ "extra": {
+ "BlueprintDescription": "Edits a single image using a text prompt, leveraging Bernini-R's latent semantic planning for changes like object addition, removal, or style transfer. Ideal for creative edits requiring precise semantic understanding, such as adding a snowman to a scene or altering an object's appearance."
+ }
+}
\ No newline at end of file
diff --git a/blueprints/Image to Gaussian Splat (TripoSplat).json b/blueprints/Image to Gaussian Splat (TripoSplat).json
new file mode 100644
index 000000000..13da12be3
--- /dev/null
+++ b/blueprints/Image to Gaussian Splat (TripoSplat).json
@@ -0,0 +1,1983 @@
+{
+ "revision": 0,
+ "last_node_id": 118,
+ "last_link_id": 0,
+ "nodes": [
+ {
+ "id": 118,
+ "type": "6c0b94f2-a3d2-4056-93f7-4072126afe39",
+ "pos": [
+ 790,
+ 1900
+ ],
+ "size": [
+ 430,
+ 670
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "label": "auto_remove_background",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": null
+ },
+ {
+ "label": "num_gaussians",
+ "name": "num_gaussians_1",
+ "type": "INT",
+ "widget": {
+ "name": "num_gaussians_1"
+ },
+ "link": null
+ },
+ {
+ "name": "seed",
+ "type": "INT",
+ "widget": {
+ "name": "seed"
+ },
+ "link": null
+ },
+ {
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": null
+ },
+ {
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": null
+ },
+ {
+ "label": "splat_vae",
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": null
+ },
+ {
+ "label": "flux2_vae",
+ "name": "vae_name_1",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name_1"
+ },
+ "link": null
+ },
+ {
+ "label": "bg_removal_model",
+ "name": "bg_removal_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "bg_removal_name"
+ },
+ "link": null
+ },
+ {
+ "label": "mask",
+ "name": "on_false",
+ "type": "MASK",
+ "link": null
+ },
+ {
+ "label": "enable_preview",
+ "name": "switch_1",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch_1"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "splat",
+ "name": "splat",
+ "type": "SPLAT",
+ "links": []
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "103",
+ "switch"
+ ],
+ [
+ "108",
+ "num_gaussians"
+ ],
+ [
+ "102",
+ "seed"
+ ],
+ [
+ "111",
+ "unet_name"
+ ],
+ [
+ "105",
+ "clip_name"
+ ],
+ [
+ "106",
+ "vae_name"
+ ],
+ [
+ "107",
+ "vae_name"
+ ],
+ [
+ "109",
+ "bg_removal_name"
+ ],
+ [
+ "112",
+ "switch"
+ ],
+ [
+ "101",
+ "$$canvas-image-preview"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [],
+ "title": "Image to Gaussian Splat (TripoSplat)"
+ }
+ ],
+ "links": [],
+ "version": 0.4,
+ "definitions": {
+ "subgraphs": [
+ {
+ "id": "6c0b94f2-a3d2-4056-93f7-4072126afe39",
+ "version": 1,
+ "state": {
+ "lastGroupId": 6,
+ "lastNodeId": 118,
+ "lastLinkId": 219,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Image to Gaussian Splat (TripoSplat)",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ -110,
+ 1050,
+ 194.666015625,
+ 268
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 2250,
+ 700,
+ 128,
+ 68
+ ]
+ },
+ "inputs": [
+ {
+ "id": "736cc4fd-77da-4fb7-8db7-d94296654571",
+ "name": "image",
+ "type": "IMAGE",
+ "linkIds": [
+ 165,
+ 195
+ ],
+ "localized_name": "image",
+ "pos": [
+ 60.666015625,
+ 1074
+ ]
+ },
+ {
+ "id": "bc100771-6c6a-4223-a6b1-62f8c7b1c5b6",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 184
+ ],
+ "label": "auto_remove_background",
+ "pos": [
+ 60.666015625,
+ 1094
+ ]
+ },
+ {
+ "id": "13a86171-bf5d-4328-ae51-116502beb274",
+ "name": "num_gaussians_1",
+ "type": "INT",
+ "linkIds": [
+ 196
+ ],
+ "label": "num_gaussians",
+ "pos": [
+ 60.666015625,
+ 1114
+ ]
+ },
+ {
+ "id": "38ebeca8-4674-4a73-a686-f8b9444c7bb6",
+ "name": "seed",
+ "type": "INT",
+ "linkIds": [
+ 197
+ ],
+ "pos": [
+ 60.666015625,
+ 1134
+ ]
+ },
+ {
+ "id": "6952068a-04ba-4e56-b702-0986f69b0d96",
+ "name": "unet_name",
+ "type": "COMBO",
+ "linkIds": [
+ 201
+ ],
+ "pos": [
+ 60.666015625,
+ 1154
+ ]
+ },
+ {
+ "id": "206819d5-2ecb-4788-8dcf-134138e46bbf",
+ "name": "clip_name",
+ "type": "COMBO",
+ "linkIds": [
+ 202
+ ],
+ "pos": [
+ 60.666015625,
+ 1174
+ ]
+ },
+ {
+ "id": "83a8d3d1-4c75-4ce0-a03c-face70f57ac9",
+ "name": "vae_name",
+ "type": "COMBO",
+ "linkIds": [
+ 203
+ ],
+ "label": "splat_vae",
+ "pos": [
+ 60.666015625,
+ 1194
+ ]
+ },
+ {
+ "id": "dce14e7e-37ca-493b-8dbe-24333d7cee63",
+ "name": "vae_name_1",
+ "type": "COMBO",
+ "linkIds": [
+ 204
+ ],
+ "label": "flux2_vae",
+ "pos": [
+ 60.666015625,
+ 1214
+ ]
+ },
+ {
+ "id": "d9c843e7-567b-4acc-813d-752579cb89b5",
+ "name": "bg_removal_name",
+ "type": "COMBO",
+ "linkIds": [
+ 205
+ ],
+ "label": "bg_removal_model",
+ "pos": [
+ 60.666015625,
+ 1234
+ ]
+ },
+ {
+ "id": "07d672fb-6e35-44d8-b973-7577c3468208",
+ "name": "on_false",
+ "type": "MASK",
+ "linkIds": [
+ 209
+ ],
+ "label": "mask",
+ "pos": [
+ 60.666015625,
+ 1254
+ ]
+ },
+ {
+ "id": "8ae4f3b4-e3d2-4d42-84fa-4e9af9ffc3e7",
+ "name": "switch_1",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 212
+ ],
+ "label": "enable_preview",
+ "pos": [
+ 60.666015625,
+ 1274
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "4185ff5d-4179-4938-9fb6-cea3a8322606",
+ "name": "splat",
+ "type": "SPLAT",
+ "linkIds": [
+ 156,
+ 156
+ ],
+ "localized_name": "splat",
+ "pos": [
+ 2274,
+ 724
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 100,
+ "type": "TripoSplatConditioning",
+ "pos": [
+ 940,
+ 800
+ ],
+ "size": [
+ 290,
+ 120
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_vision",
+ "name": "clip_vision",
+ "type": "CLIP_VISION",
+ "link": 45
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 46
+ },
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 47
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "links": [
+ 48
+ ]
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "links": [
+ 49
+ ]
+ },
+ {
+ "localized_name": "latent",
+ "name": "latent",
+ "type": "LATENT",
+ "links": [
+ 54
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "TripoSplatConditioning",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 101,
+ "type": "PreviewImage",
+ "pos": [
+ 1360,
+ 1290
+ ],
+ "size": [
+ 440,
+ 530
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 4,
+ "inputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 38
+ }
+ ],
+ "outputs": [],
+ "properties": {
+ "Node name for S&R": "PreviewImage",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 102,
+ "type": "KSampler",
+ "pos": [
+ 1350,
+ 570
+ ],
+ "size": [
+ 290,
+ 590
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 211
+ },
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 48
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 49
+ },
+ {
+ "localized_name": "latent_image",
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 54
+ },
+ {
+ "localized_name": "seed",
+ "name": "seed",
+ "type": "INT",
+ "widget": {
+ "name": "seed"
+ },
+ "link": 197
+ },
+ {
+ "localized_name": "steps",
+ "name": "steps",
+ "type": "INT",
+ "widget": {
+ "name": "steps"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "sampler_name",
+ "name": "sampler_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "sampler_name"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "scheduler",
+ "name": "scheduler",
+ "type": "COMBO",
+ "widget": {
+ "name": "scheduler"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "denoise",
+ "name": "denoise",
+ "type": "FLOAT",
+ "widget": {
+ "name": "denoise"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "LATENT",
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 103
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSampler",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 46,
+ "fixed",
+ 20,
+ 3,
+ "dpmpp_2m",
+ "simple",
+ 1
+ ]
+ },
+ {
+ "id": 103,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 1020,
+ 1330
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 208
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 170
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 184
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 95
+ ]
+ }
+ ],
+ "title": "Switch: Mask Source",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ true
+ ]
+ },
+ {
+ "id": 104,
+ "type": "TripoSplatPreprocessImage",
+ "pos": [
+ 940,
+ 990
+ ],
+ "size": [
+ 300,
+ 160
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 195
+ },
+ {
+ "localized_name": "mask",
+ "name": "mask",
+ "type": "MASK",
+ "link": 95
+ },
+ {
+ "localized_name": "erode_radius",
+ "name": "erode_radius",
+ "type": "INT",
+ "widget": {
+ "name": "erode_radius"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "size",
+ "name": "size",
+ "type": "INT",
+ "widget": {
+ "name": "size"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "links": [
+ 38,
+ 47
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "TripoSplatPreprocessImage",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 1,
+ 1024
+ ]
+ },
+ {
+ "id": 105,
+ "type": "CLIPVisionLoader",
+ "pos": [
+ 410,
+ 760
+ ],
+ "size": [
+ 420,
+ 140
+ ],
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_name",
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": 202
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP_VISION",
+ "name": "CLIP_VISION",
+ "type": "CLIP_VISION",
+ "links": [
+ 45
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPVisionLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "models": [
+ {
+ "name": "dino_v3_vit_h.safetensors",
+ "url": "https://huggingface.co/VAST-AI/TripoSplat/resolve/main/clip_vision/dino_v3_vit_h.safetensors",
+ "directory": "clip_vision"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "dino_v3_vit_h.safetensors"
+ ]
+ },
+ {
+ "id": 106,
+ "type": "VAELoader",
+ "pos": [
+ 420,
+ 930
+ ],
+ "size": [
+ 410,
+ 110
+ ],
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "vae_name",
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": 203
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 104,
+ 216
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAELoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "models": [
+ {
+ "name": "triposplat_vae_decoder_fp16.safetensors",
+ "url": "https://huggingface.co/VAST-AI/TripoSplat/resolve/main/vae/triposplat_vae_decoder_fp16.safetensors",
+ "directory": "vae"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "triposplat_vae_decoder_fp16.safetensors"
+ ]
+ },
+ {
+ "id": 107,
+ "type": "VAELoader",
+ "pos": [
+ 410,
+ 1120
+ ],
+ "size": [
+ 420,
+ 110
+ ],
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "vae_name",
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": 204
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 46
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAELoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "models": [
+ {
+ "name": "flux2-vae.safetensors",
+ "url": "https://huggingface.co/VAST-AI/TripoSplat/resolve/main/vae/flux2-vae.safetensors",
+ "directory": "vae"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "flux2-vae.safetensors"
+ ]
+ },
+ {
+ "id": 108,
+ "type": "VAEDecodeTripoSplat",
+ "pos": [
+ 1730,
+ 570
+ ],
+ "size": [
+ 430,
+ 160
+ ],
+ "flags": {},
+ "order": 8,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "samples",
+ "name": "samples",
+ "type": "LATENT",
+ "link": 103
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 104
+ },
+ {
+ "localized_name": "num_gaussians",
+ "name": "num_gaussians",
+ "type": "INT",
+ "widget": {
+ "name": "num_gaussians"
+ },
+ "link": 196
+ },
+ {
+ "localized_name": "seed",
+ "name": "seed",
+ "type": "INT",
+ "widget": {
+ "name": "seed"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "splat",
+ "name": "splat",
+ "type": "SPLAT",
+ "links": [
+ 156
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecodeTripoSplat",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 262144,
+ 790219963981395,
+ "fixed"
+ ]
+ },
+ {
+ "id": 109,
+ "type": "e527b93c-76f7-485d-b285-fcf78914a4d5",
+ "pos": [
+ 410,
+ 1330
+ ],
+ "size": [
+ 350,
+ 160
+ ],
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 165
+ },
+ {
+ "name": "bg_removal_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "bg_removal_name"
+ },
+ "link": 205
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 166,
+ 194
+ ]
+ },
+ {
+ "name": "mask",
+ "type": "MASK",
+ "links": [
+ 170
+ ]
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "115",
+ "bg_removal_name"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": []
+ },
+ {
+ "id": 110,
+ "type": "InvertMask",
+ "pos": [
+ 430,
+ 1540
+ ],
+ "size": [
+ 230,
+ 80
+ ],
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "mask",
+ "name": "mask",
+ "type": "MASK",
+ "link": 209
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MASK",
+ "name": "MASK",
+ "type": "MASK",
+ "links": [
+ 208
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "InvertMask",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 111,
+ "type": "UNETLoader",
+ "pos": [
+ 410,
+ 560
+ ],
+ "size": [
+ 410,
+ 140
+ ],
+ "flags": {},
+ "order": 11,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 201
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 213,
+ 215
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "models": [
+ {
+ "name": "triposplat_fp16.safetensors",
+ "url": "https://huggingface.co/VAST-AI/TripoSplat/resolve/main/diffusion_models/triposplat_fp16.safetensors",
+ "directory": "diffusion_models"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "triposplat_fp16.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 112,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 930,
+ 370
+ ],
+ "size": [
+ 300,
+ 140
+ ],
+ "flags": {},
+ "order": 12,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 213
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 217
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 212
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 211
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ true
+ ]
+ },
+ {
+ "id": 113,
+ "type": "TripoSplatSamplingPreview",
+ "pos": [
+ 940,
+ 560
+ ],
+ "size": [
+ 290,
+ 190
+ ],
+ "flags": {},
+ "order": 13,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 215
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 216
+ },
+ {
+ "localized_name": "octree_level",
+ "name": "octree_level",
+ "type": "INT",
+ "widget": {
+ "name": "octree_level"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "num_gaussians",
+ "name": "num_gaussians",
+ "type": "INT",
+ "widget": {
+ "name": "num_gaussians"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "yaw",
+ "name": "yaw",
+ "type": "FLOAT",
+ "widget": {
+ "name": "yaw"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "pitch",
+ "name": "pitch",
+ "type": "FLOAT",
+ "widget": {
+ "name": "pitch"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "point_size",
+ "name": "point_size",
+ "type": "INT",
+ "widget": {
+ "name": "point_size"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 217
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "TripoSplatSamplingPreview",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 5,
+ 16384,
+ 90,
+ 15,
+ 2
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "id": 1,
+ "title": "Models",
+ "bounding": [
+ 400,
+ 490,
+ 440,
+ 748.625
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 2,
+ "title": "Image Preprocessing",
+ "bounding": [
+ 400,
+ 1260,
+ 910,
+ 370
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ }
+ ],
+ "links": [
+ {
+ "id": 45,
+ "origin_id": 105,
+ "origin_slot": 0,
+ "target_id": 100,
+ "target_slot": 0,
+ "type": "CLIP_VISION"
+ },
+ {
+ "id": 46,
+ "origin_id": 107,
+ "origin_slot": 0,
+ "target_id": 100,
+ "target_slot": 1,
+ "type": "VAE"
+ },
+ {
+ "id": 47,
+ "origin_id": 104,
+ "origin_slot": 0,
+ "target_id": 100,
+ "target_slot": 2,
+ "type": "IMAGE"
+ },
+ {
+ "id": 38,
+ "origin_id": 104,
+ "origin_slot": 0,
+ "target_id": 101,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 103,
+ "origin_id": 102,
+ "origin_slot": 0,
+ "target_id": 108,
+ "target_slot": 0,
+ "type": "LATENT"
+ },
+ {
+ "id": 104,
+ "origin_id": 106,
+ "origin_slot": 0,
+ "target_id": 108,
+ "target_slot": 1,
+ "type": "VAE"
+ },
+ {
+ "id": 48,
+ "origin_id": 100,
+ "origin_slot": 0,
+ "target_id": 102,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 49,
+ "origin_id": 100,
+ "origin_slot": 1,
+ "target_id": 102,
+ "target_slot": 2,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 54,
+ "origin_id": 100,
+ "origin_slot": 2,
+ "target_id": 102,
+ "target_slot": 3,
+ "type": "LATENT"
+ },
+ {
+ "id": 170,
+ "origin_id": 109,
+ "origin_slot": 1,
+ "target_id": 103,
+ "target_slot": 1,
+ "type": "MASK"
+ },
+ {
+ "id": 95,
+ "origin_id": 103,
+ "origin_slot": 0,
+ "target_id": 104,
+ "target_slot": 1,
+ "type": "MASK"
+ },
+ {
+ "id": 165,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 109,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 156,
+ "origin_id": 108,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "SPLAT"
+ },
+ {
+ "id": 184,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 103,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 195,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 104,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 196,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 108,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 197,
+ "origin_id": -10,
+ "origin_slot": 3,
+ "target_id": 102,
+ "target_slot": 4,
+ "type": "INT"
+ },
+ {
+ "id": 201,
+ "origin_id": -10,
+ "origin_slot": 4,
+ "target_id": 111,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 202,
+ "origin_id": -10,
+ "origin_slot": 5,
+ "target_id": 105,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 203,
+ "origin_id": -10,
+ "origin_slot": 6,
+ "target_id": 106,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 204,
+ "origin_id": -10,
+ "origin_slot": 7,
+ "target_id": 107,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 205,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 109,
+ "target_slot": 1,
+ "type": "COMBO"
+ },
+ {
+ "id": 208,
+ "origin_id": 110,
+ "origin_slot": 0,
+ "target_id": 103,
+ "target_slot": 0,
+ "type": "MASK"
+ },
+ {
+ "id": 209,
+ "origin_id": -10,
+ "origin_slot": 9,
+ "target_id": 110,
+ "target_slot": 0,
+ "type": "MASK"
+ },
+ {
+ "id": 211,
+ "origin_id": 112,
+ "origin_slot": 0,
+ "target_id": 102,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 212,
+ "origin_id": -10,
+ "origin_slot": 10,
+ "target_id": 112,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 213,
+ "origin_id": 111,
+ "origin_slot": 0,
+ "target_id": 112,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 215,
+ "origin_id": 111,
+ "origin_slot": 0,
+ "target_id": 113,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 216,
+ "origin_id": 106,
+ "origin_slot": 0,
+ "target_id": 113,
+ "target_slot": 1,
+ "type": "VAE"
+ },
+ {
+ "id": 217,
+ "origin_id": 113,
+ "origin_slot": 0,
+ "target_id": 112,
+ "target_slot": 1,
+ "type": "MODEL"
+ }
+ ],
+ "extra": {},
+ "category": "3D",
+ "description": "This subgraph takes a single 2D image as input and generates a variable number of 3D Gaussians (up to 262,144) as output, enabling high-quality 3D reconstruction. It is ideal for asset creation, AR/VR, game development, and simulation environments, handling diverse image styles from photos to illustrations."
+ },
+ {
+ "id": "e527b93c-76f7-485d-b285-fcf78914a4d5",
+ "version": 1,
+ "state": {
+ "lastGroupId": 6,
+ "lastNodeId": 118,
+ "lastLinkId": 219,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Remove Background (BiRefNet)",
+ "description": "Removes or replaces image backgrounds using BiRefNet segmentation and alpha compositing.",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ -6810,
+ 1480,
+ 150.9140625,
+ 88
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ -6169.049695722246,
+ 1475.2619799128663,
+ 128,
+ 88
+ ]
+ },
+ "inputs": [
+ {
+ "id": "7bc321cd-df31-4c39-aaf7-7f0d01326189",
+ "name": "image",
+ "type": "IMAGE",
+ "linkIds": [
+ 5,
+ 7
+ ],
+ "localized_name": "image",
+ "pos": [
+ -6683.0859375,
+ 1504
+ ]
+ },
+ {
+ "id": "e89d2cd8-daa3-4e29-8a69-851db85072cb",
+ "name": "bg_removal_name",
+ "type": "COMBO",
+ "linkIds": [
+ 12
+ ],
+ "pos": [
+ -6683.0859375,
+ 1524
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "16e7863c-4c38-46c2-aa74-e82991fbfe8d",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "linkIds": [
+ 8
+ ],
+ "localized_name": "IMAGE",
+ "pos": [
+ -6145.049695722246,
+ 1499.2619799128663
+ ]
+ },
+ {
+ "id": "f7240c19-5b80-406e-a8e2-9b12440ee2d6",
+ "name": "mask",
+ "type": "MASK",
+ "linkIds": [
+ 11
+ ],
+ "pos": [
+ -6145.049695722246,
+ 1519.2619799128663
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 114,
+ "type": "RemoveBackground",
+ "pos": [
+ -6540,
+ 1440
+ ],
+ "size": [
+ 310,
+ 100
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "bg_removal_model",
+ "name": "bg_removal_model",
+ "type": "BACKGROUND_REMOVAL",
+ "link": 3
+ },
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 5
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "mask",
+ "name": "mask",
+ "type": "MASK",
+ "links": [
+ 4,
+ 11
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "RemoveBackground",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 115,
+ "type": "LoadBackgroundRemovalModel",
+ "pos": [
+ -6540,
+ 1300
+ ],
+ "size": [
+ 320,
+ 110
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "bg_removal_name",
+ "name": "bg_removal_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "bg_removal_name"
+ },
+ "link": 12
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "bg_model",
+ "name": "bg_model",
+ "type": "BACKGROUND_REMOVAL",
+ "links": [
+ 3
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoadBackgroundRemovalModel",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "models": [
+ {
+ "name": "birefnet.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/BiRefNet/resolve/main/background_removal/birefnet.safetensors",
+ "directory": "background_removal"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "birefnet.safetensors"
+ ]
+ },
+ {
+ "id": 116,
+ "type": "InvertMask",
+ "pos": [
+ -6530,
+ 1570
+ ],
+ "size": [
+ 290,
+ 80
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "mask",
+ "name": "mask",
+ "type": "MASK",
+ "link": 4
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MASK",
+ "name": "MASK",
+ "type": "MASK",
+ "links": [
+ 6
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "InvertMask",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 117,
+ "type": "JoinImageWithAlpha",
+ "pos": [
+ -6530,
+ 1670
+ ],
+ "size": [
+ 290,
+ 100
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 7
+ },
+ {
+ "localized_name": "alpha",
+ "name": "alpha",
+ "type": "MASK",
+ "link": 6
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 8
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "JoinImageWithAlpha",
+ "cnr_id": "comfy-core",
+ "ver": "0.22.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ }
+ ],
+ "groups": [],
+ "links": [
+ {
+ "id": 3,
+ "origin_id": 115,
+ "origin_slot": 0,
+ "target_id": 114,
+ "target_slot": 0,
+ "type": "BACKGROUND_REMOVAL"
+ },
+ {
+ "id": 4,
+ "origin_id": 114,
+ "origin_slot": 0,
+ "target_id": 116,
+ "target_slot": 0,
+ "type": "MASK"
+ },
+ {
+ "id": 6,
+ "origin_id": 116,
+ "origin_slot": 0,
+ "target_id": 117,
+ "target_slot": 1,
+ "type": "MASK"
+ },
+ {
+ "id": 5,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 114,
+ "target_slot": 1,
+ "type": "IMAGE"
+ },
+ {
+ "id": 7,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 117,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 8,
+ "origin_id": 117,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 11,
+ "origin_id": 114,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 1,
+ "type": "MASK"
+ },
+ {
+ "id": 12,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 115,
+ "target_slot": 0,
+ "type": "COMBO"
+ }
+ ],
+ "extra": {}
+ }
+ ]
+ },
+ "extra": {
+ "BlueprintDescription": "This subgraph takes a single 2D image as input and generates a variable number of 3D Gaussians (up to 262,144) as output, enabling high-quality 3D reconstruction. It is ideal for asset creation, AR/VR, game development, and simulation environments, handling diverse image styles from photos to illustrations."
+ }
+}
\ No newline at end of file
diff --git a/blueprints/Text to Image (Anima Base 1.0).json b/blueprints/Text to Image (Anima Base 1.0).json
new file mode 100644
index 000000000..379e7c605
--- /dev/null
+++ b/blueprints/Text to Image (Anima Base 1.0).json
@@ -0,0 +1,1088 @@
+{
+ "revision": 0,
+ "last_node_id": 60,
+ "last_link_id": 0,
+ "nodes": [
+ {
+ "id": 60,
+ "type": "a3c0dab6-b250-4585-a0f9-8fb8b074fb2f",
+ "pos": [
+ -10,
+ 130
+ ],
+ "size": [
+ 500,
+ 640
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "prompt",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": null
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": null
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "widget": {
+ "name": "steps"
+ },
+ "link": null
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": null
+ },
+ {
+ "name": "seed",
+ "type": "INT",
+ "widget": {
+ "name": "seed"
+ },
+ "link": null
+ },
+ {
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": null
+ },
+ {
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": null
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": []
+ }
+ ],
+ "title": "Text to Image (Anima Base 1.0)",
+ "properties": {
+ "proxyWidgets": [
+ [
+ "11",
+ "text"
+ ],
+ [
+ "28",
+ "width"
+ ],
+ [
+ "28",
+ "height"
+ ],
+ [
+ "19",
+ "steps"
+ ],
+ [
+ "19",
+ "cfg"
+ ],
+ [
+ "19",
+ "seed"
+ ],
+ [
+ "44",
+ "unet_name"
+ ],
+ [
+ "45",
+ "clip_name"
+ ],
+ [
+ "15",
+ "vae_name"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.18.1",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": []
+ }
+ ],
+ "links": [],
+ "version": 0.4,
+ "definitions": {
+ "subgraphs": [
+ {
+ "id": "a3c0dab6-b250-4585-a0f9-8fb8b074fb2f",
+ "version": 1,
+ "state": {
+ "lastGroupId": 3,
+ "lastNodeId": 70,
+ "lastLinkId": 104,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Text to Image (Anima Base 1.0)",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ -330,
+ 530,
+ 120,
+ 220
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 1229.9999873482075,
+ 505,
+ 120,
+ 60
+ ]
+ },
+ "inputs": [
+ {
+ "id": "4693f350-6ba0-446d-80d4-3038c661d26c",
+ "name": "text",
+ "type": "STRING",
+ "linkIds": [
+ 95
+ ],
+ "label": "prompt",
+ "pos": [
+ -230,
+ 550
+ ]
+ },
+ {
+ "id": "4a7886a9-4ed7-49bb-afc2-977bb78a303d",
+ "name": "width",
+ "type": "INT",
+ "linkIds": [
+ 96
+ ],
+ "pos": [
+ -230,
+ 570
+ ]
+ },
+ {
+ "id": "f6c04461-d29e-49e3-8790-07bb662bbbfe",
+ "name": "height",
+ "type": "INT",
+ "linkIds": [
+ 97
+ ],
+ "pos": [
+ -230,
+ 590
+ ]
+ },
+ {
+ "id": "7a24f998-3808-4837-8bff-52304ad09fb6",
+ "name": "steps",
+ "type": "INT",
+ "linkIds": [
+ 98
+ ],
+ "pos": [
+ -230,
+ 610
+ ]
+ },
+ {
+ "id": "aaa99698-b222-40fe-b946-28067528a85c",
+ "name": "cfg",
+ "type": "FLOAT",
+ "linkIds": [
+ 99
+ ],
+ "pos": [
+ -230,
+ 630
+ ]
+ },
+ {
+ "id": "053df9ae-7311-4816-aa23-7fa13c656ced",
+ "name": "seed",
+ "type": "INT",
+ "linkIds": [
+ 100
+ ],
+ "pos": [
+ -230,
+ 650
+ ]
+ },
+ {
+ "id": "c59194ea-015c-41a7-8edd-ae7ffc220b63",
+ "name": "unet_name",
+ "type": "COMBO",
+ "linkIds": [
+ 101
+ ],
+ "pos": [
+ -230,
+ 670
+ ]
+ },
+ {
+ "id": "e655aa3b-2db7-4e25-9ea2-61550fa7ae2d",
+ "name": "clip_name",
+ "type": "COMBO",
+ "linkIds": [
+ 102
+ ],
+ "pos": [
+ -230,
+ 690
+ ]
+ },
+ {
+ "id": "94965a7a-74dd-4f5a-87e3-9f87995d554f",
+ "name": "vae_name",
+ "type": "COMBO",
+ "linkIds": [
+ 103
+ ],
+ "pos": [
+ -230,
+ 710
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "ef85ac0a-2152-4232-bfa1-929cfc913718",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "linkIds": [
+ 82
+ ],
+ "localized_name": "IMAGE",
+ "pos": [
+ 1249.9999873482075,
+ 525
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 45,
+ "type": "CLIPLoader",
+ "pos": [
+ -60,
+ 380
+ ],
+ "size": [
+ 310,
+ 150
+ ],
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_name",
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": 102
+ },
+ {
+ "localized_name": "type",
+ "name": "type",
+ "type": "COMBO",
+ "widget": {
+ "name": "type"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "device",
+ "name": "device",
+ "shape": 7,
+ "type": "COMBO",
+ "widget": {
+ "name": "device"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP",
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 80,
+ 81
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.11.0",
+ "models": [
+ {
+ "name": "qwen_3_06b_base.safetensors",
+ "url": "https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/text_encoders/qwen_3_06b_base.safetensors",
+ "directory": "text_encoders"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "qwen_3_06b_base.safetensors",
+ "stable_diffusion",
+ "default"
+ ]
+ },
+ {
+ "id": 15,
+ "type": "VAELoader",
+ "pos": [
+ -50,
+ 610
+ ],
+ "size": [
+ 310,
+ 100
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "vae_name",
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": 103
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 11
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAELoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.3.40",
+ "models": [
+ {
+ "name": "qwen_image_vae.safetensors",
+ "url": "https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/vae/qwen_image_vae.safetensors",
+ "directory": "vae"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "qwen_image_vae.safetensors"
+ ]
+ },
+ {
+ "id": 8,
+ "type": "VAEDecode",
+ "pos": [
+ 880,
+ 840
+ ],
+ "size": [
+ 230,
+ 90
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "samples",
+ "name": "samples",
+ "type": "LATENT",
+ "link": 10
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 11
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "slot_index": 0,
+ "links": [
+ 82
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode",
+ "cnr_id": "comfy-core",
+ "ver": "0.3.40",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 28,
+ "type": "EmptyLatentImage",
+ "pos": [
+ -50,
+ 830
+ ],
+ "size": [
+ 310,
+ 150
+ ],
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "width",
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": 96
+ },
+ {
+ "localized_name": "height",
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": 97
+ },
+ {
+ "localized_name": "batch_size",
+ "name": "batch_size",
+ "type": "INT",
+ "widget": {
+ "name": "batch_size"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "LATENT",
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 78
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "EmptyLatentImage",
+ "cnr_id": "comfy-core",
+ "ver": "0.3.40",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 1024,
+ 1024,
+ 1
+ ]
+ },
+ {
+ "id": 12,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 330,
+ 830
+ ],
+ "size": [
+ 490,
+ 140
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 81
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 40
+ ]
+ }
+ ],
+ "title": "CLIP Text Encode (Negative Prompt)",
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.3.65",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "worst quality, low quality, score_1, score_2, score_3, blurry, jpeg artifacts, sepia"
+ ],
+ "color": "#223",
+ "bgcolor": "#335"
+ },
+ {
+ "id": 19,
+ "type": "KSampler",
+ "pos": [
+ 870,
+ 120
+ ],
+ "size": [
+ 300,
+ 620
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 79
+ },
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 39
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 40
+ },
+ {
+ "localized_name": "latent_image",
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 78
+ },
+ {
+ "localized_name": "seed",
+ "name": "seed",
+ "type": "INT",
+ "widget": {
+ "name": "seed"
+ },
+ "link": 100
+ },
+ {
+ "localized_name": "steps",
+ "name": "steps",
+ "type": "INT",
+ "widget": {
+ "name": "steps"
+ },
+ "link": 98
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": 99
+ },
+ {
+ "localized_name": "sampler_name",
+ "name": "sampler_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "sampler_name"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "scheduler",
+ "name": "scheduler",
+ "type": "COMBO",
+ "widget": {
+ "name": "scheduler"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "denoise",
+ "name": "denoise",
+ "type": "FLOAT",
+ "widget": {
+ "name": "denoise"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "LATENT",
+ "name": "LATENT",
+ "type": "LATENT",
+ "slot_index": 0,
+ "links": [
+ 10
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSampler",
+ "cnr_id": "comfy-core",
+ "ver": "0.3.40",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 875817230929465,
+ "fixed",
+ 30,
+ 4,
+ "er_sde",
+ "simple",
+ 1
+ ]
+ },
+ {
+ "id": 11,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 320,
+ 170
+ ],
+ "size": [
+ 490,
+ 610
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 80
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 95
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 39
+ ]
+ }
+ ],
+ "title": "CLIP Text Encode (Positive Prompt)",
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.3.65",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ ""
+ ],
+ "color": "#232",
+ "bgcolor": "#353"
+ },
+ {
+ "id": 44,
+ "type": "UNETLoader",
+ "pos": [
+ -50,
+ 170
+ ],
+ "size": [
+ 310,
+ 130
+ ],
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 101
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 79
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.11.0",
+ "models": [
+ {
+ "name": "anima-base-v1.0.safetensors",
+ "url": "https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/diffusion_models/anima-base-v1.0.safetensors",
+ "directory": "diffusion_models"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "anima-base-v1.0.safetensors",
+ "default"
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "id": 1,
+ "title": "Model",
+ "bounding": [
+ -80,
+ 80,
+ 360,
+ 640
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 2,
+ "title": "Image Size(1MP)",
+ "bounding": [
+ -80,
+ 750,
+ 360,
+ 240
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 3,
+ "title": "Prompt",
+ "bounding": [
+ 300,
+ 80,
+ 530,
+ 910
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ }
+ ],
+ "links": [
+ {
+ "id": 10,
+ "origin_id": 19,
+ "origin_slot": 0,
+ "target_id": 8,
+ "target_slot": 0,
+ "type": "LATENT"
+ },
+ {
+ "id": 11,
+ "origin_id": 15,
+ "origin_slot": 0,
+ "target_id": 8,
+ "target_slot": 1,
+ "type": "VAE"
+ },
+ {
+ "id": 81,
+ "origin_id": 45,
+ "origin_slot": 0,
+ "target_id": 12,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 79,
+ "origin_id": 44,
+ "origin_slot": 0,
+ "target_id": 19,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 39,
+ "origin_id": 11,
+ "origin_slot": 0,
+ "target_id": 19,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 40,
+ "origin_id": 12,
+ "origin_slot": 0,
+ "target_id": 19,
+ "target_slot": 2,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 78,
+ "origin_id": 28,
+ "origin_slot": 0,
+ "target_id": 19,
+ "target_slot": 3,
+ "type": "LATENT"
+ },
+ {
+ "id": 80,
+ "origin_id": 45,
+ "origin_slot": 0,
+ "target_id": 11,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 82,
+ "origin_id": 8,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 95,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 11,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 96,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 28,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 97,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 28,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 98,
+ "origin_id": -10,
+ "origin_slot": 3,
+ "target_id": 19,
+ "target_slot": 5,
+ "type": "INT"
+ },
+ {
+ "id": 99,
+ "origin_id": -10,
+ "origin_slot": 4,
+ "target_id": 19,
+ "target_slot": 6,
+ "type": "FLOAT"
+ },
+ {
+ "id": 100,
+ "origin_id": -10,
+ "origin_slot": 5,
+ "target_id": 19,
+ "target_slot": 4,
+ "type": "INT"
+ },
+ {
+ "id": 101,
+ "origin_id": -10,
+ "origin_slot": 6,
+ "target_id": 44,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 102,
+ "origin_id": -10,
+ "origin_slot": 7,
+ "target_id": 45,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 103,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 15,
+ "target_slot": 0,
+ "type": "COMBO"
+ }
+ ],
+ "extra": {},
+ "category": "Image generation and editing/Text to image",
+ "description": "This subgraph generates non-photorealistic illustrations from text prompts using a 2-billion-parameter model optimized for anime concepts, characters, and styles. It is ideal for creating artistic images, concept art, or stylized illustrations where photorealism is not required. The model excels with anime and artistic content but performs poorly on realistic subjects."
+ }
+ ]
+ },
+ "extra": {
+ "BlueprintDescription": "This subgraph generates non-photorealistic illustrations from text prompts using a 2-billion-parameter model optimized for anime concepts, characters, and styles. It is ideal for creating artistic images, concept art, or stylized illustrations where photorealism is not required. The model excels with anime and artistic content but performs poorly on realistic subjects."
+ }
+}
\ No newline at end of file
diff --git a/blueprints/Text to Image (Anima).json b/blueprints/Text to Image (Anima).json
index 787908ca9..dcf6e5973 100644
--- a/blueprints/Text to Image (Anima).json
+++ b/blueprints/Text to Image (Anima).json
@@ -1077,9 +1077,12 @@
}
],
"extra": {},
- "category": "Image generation and editing/Text to image"
+ "category": "Image generation and editing/Text to image",
+ "description": "This subgraph converts text prompts into non-photorealistic illustrations using a 2-billion-parameter model optimized for anime and artistic styles. It is ideal for generating concept art, character designs, or stylized illustrations where photorealism is not required. The model excels with anime and artistic content but performs poorly on realistic subjects."
}
]
},
- "extra": {}
+ "extra": {
+ "BlueprintDescription": "This subgraph converts text prompts into non-photorealistic illustrations using a 2-billion-parameter model optimized for anime and artistic styles. It is ideal for generating concept art, character designs, or stylized illustrations where photorealism is not required. The model excels with anime and artistic content but performs poorly on realistic subjects."
+ }
}
\ No newline at end of file
diff --git a/blueprints/Text to Image (Ideogram v4).json b/blueprints/Text to Image (Ideogram v4).json
new file mode 100644
index 000000000..0d5c1d7c7
--- /dev/null
+++ b/blueprints/Text to Image (Ideogram v4).json
@@ -0,0 +1,2473 @@
+{
+ "revision": 0,
+ "last_node_id": 204,
+ "last_link_id": 0,
+ "nodes": [
+ {
+ "id": 204,
+ "type": "3aa9dcf6-e101-4b91-abee-6d7a7c10023b",
+ "pos": [
+ 6380,
+ 1410
+ ],
+ "size": [
+ 440,
+ 690
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "prompt",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ },
+ {
+ "label": "width",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ },
+ {
+ "label": "height",
+ "name": "value_1",
+ "type": "INT",
+ "widget": {
+ "name": "value_1"
+ },
+ "link": null
+ },
+ {
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": null
+ },
+ {
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": null
+ },
+ {
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": null
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": null
+ },
+ {
+ "label": "unconditional_unet",
+ "name": "unet_name_1",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name_1"
+ },
+ "link": null
+ },
+ {
+ "label": "mode",
+ "name": "choice",
+ "type": "COMBO",
+ "widget": {
+ "name": "choice"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": []
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "186",
+ "text"
+ ],
+ [
+ "188",
+ "value"
+ ],
+ [
+ "189",
+ "value"
+ ],
+ [
+ "184",
+ "noise_seed"
+ ],
+ [
+ "185",
+ "unet_name"
+ ],
+ [
+ "187",
+ "clip_name"
+ ],
+ [
+ "177",
+ "vae_name"
+ ],
+ [
+ "200",
+ "unet_name"
+ ],
+ [
+ "202",
+ "choice"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [],
+ "title": "Text to Image (Ideogram v4)"
+ }
+ ],
+ "links": [],
+ "version": 0.4,
+ "definitions": {
+ "subgraphs": [
+ {
+ "id": "3aa9dcf6-e101-4b91-abee-6d7a7c10023b",
+ "version": 1,
+ "state": {
+ "lastGroupId": 9,
+ "lastNodeId": 204,
+ "lastLinkId": 252,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Text to Image (Ideogram v4)",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ 3490,
+ 920,
+ 154.921875,
+ 228
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 6850,
+ 936,
+ 128,
+ 68
+ ]
+ },
+ "inputs": [
+ {
+ "id": "4bc742d1-7b4b-452c-90d9-0d76ebcdae76",
+ "name": "text",
+ "type": "STRING",
+ "linkIds": [
+ 152
+ ],
+ "label": "prompt",
+ "pos": [
+ 3620.921875,
+ 944
+ ]
+ },
+ {
+ "id": "8d4038eb-73c7-45e9-bba1-f068f55e8d32",
+ "name": "value",
+ "type": "INT",
+ "linkIds": [
+ 153
+ ],
+ "label": "width",
+ "pos": [
+ 3620.921875,
+ 964
+ ]
+ },
+ {
+ "id": "281550e6-6acf-4cbe-aec1-9eb803b4dec1",
+ "name": "value_1",
+ "type": "INT",
+ "linkIds": [
+ 154
+ ],
+ "label": "height",
+ "pos": [
+ 3620.921875,
+ 984
+ ]
+ },
+ {
+ "id": "fae56884-2f1a-470b-a25f-40e7a87ef69d",
+ "name": "noise_seed",
+ "type": "INT",
+ "linkIds": [
+ 155
+ ],
+ "pos": [
+ 3620.921875,
+ 1004
+ ]
+ },
+ {
+ "id": "3497309c-a7d7-4e28-9330-142c15881632",
+ "name": "unet_name",
+ "type": "COMBO",
+ "linkIds": [
+ 156
+ ],
+ "pos": [
+ 3620.921875,
+ 1024
+ ]
+ },
+ {
+ "id": "e87126db-7147-465e-b129-370ed2c6cc22",
+ "name": "clip_name",
+ "type": "COMBO",
+ "linkIds": [
+ 157
+ ],
+ "pos": [
+ 3620.921875,
+ 1044
+ ]
+ },
+ {
+ "id": "a1e6c080-b11b-4d5c-a3a8-fcf4df654cf7",
+ "name": "vae_name",
+ "type": "COMBO",
+ "linkIds": [
+ 158
+ ],
+ "pos": [
+ 3620.921875,
+ 1064
+ ]
+ },
+ {
+ "id": "b0d16516-95de-44d9-bea8-3cd2e7c78e9a",
+ "name": "unet_name_1",
+ "type": "COMBO",
+ "linkIds": [
+ 216
+ ],
+ "label": "unconditional_unet",
+ "pos": [
+ 3620.921875,
+ 1084
+ ]
+ },
+ {
+ "id": "249fd825-e6b3-489d-a341-6d8050500f5e",
+ "name": "choice",
+ "type": "COMBO",
+ "linkIds": [
+ 219
+ ],
+ "label": "mode",
+ "pos": [
+ 3620.921875,
+ 1104
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "b81e4f60-e543-4f02-875b-b0f1bdc274f2",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "linkIds": [
+ 25
+ ],
+ "localized_name": "IMAGE",
+ "pos": [
+ 6874,
+ 960
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 177,
+ "type": "VAELoader",
+ "pos": [
+ 4730,
+ 1220
+ ],
+ "size": [
+ 470,
+ 110
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "vae_name",
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": 158
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 17
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAELoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "models": [
+ {
+ "name": "flux2-vae.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/vae/flux2-vae.safetensors",
+ "directory": "vae"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "flux2-vae.safetensors"
+ ]
+ },
+ {
+ "id": 178,
+ "type": "ConditioningZeroOut",
+ "pos": [
+ 5450,
+ 960
+ ],
+ "size": [
+ 250,
+ 80
+ ],
+ "flags": {
+ "collapsed": false
+ },
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "conditioning",
+ "name": "conditioning",
+ "type": "CONDITIONING",
+ "link": 8
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 214
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ConditioningZeroOut",
+ "cnr_id": "comfy-core",
+ "ver": "0.9.1",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 179,
+ "type": "EmptyFlux2LatentImage",
+ "pos": [
+ 5330,
+ 1180
+ ],
+ "size": [
+ 270,
+ 170
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "width",
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": 33
+ },
+ {
+ "localized_name": "height",
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": 36
+ },
+ {
+ "localized_name": "batch_size",
+ "name": "batch_size",
+ "type": "INT",
+ "widget": {
+ "name": "batch_size"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "LATENT",
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 15
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "EmptyFlux2LatentImage",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 1024,
+ 1024,
+ 1
+ ]
+ },
+ {
+ "id": 180,
+ "type": "SamplerCustomAdvanced",
+ "pos": [
+ 6160,
+ 500
+ ],
+ "size": [
+ 290,
+ 170
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "noise",
+ "name": "noise",
+ "type": "NOISE",
+ "link": 11
+ },
+ {
+ "localized_name": "guider",
+ "name": "guider",
+ "type": "GUIDER",
+ "link": 215
+ },
+ {
+ "localized_name": "sampler",
+ "name": "sampler",
+ "type": "SAMPLER",
+ "link": 13
+ },
+ {
+ "localized_name": "sigmas",
+ "name": "sigmas",
+ "type": "SIGMAS",
+ "link": 14
+ },
+ {
+ "localized_name": "latent_image",
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 15
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "LATENT",
+ "links": [
+ 16
+ ]
+ },
+ {
+ "localized_name": "denoised_output",
+ "name": "denoised_output",
+ "type": "LATENT",
+ "links": []
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SamplerCustomAdvanced",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 181,
+ "type": "VAEDecode",
+ "pos": [
+ 6560,
+ 500
+ ],
+ "size": [
+ 230,
+ 100
+ ],
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "samples",
+ "name": "samples",
+ "type": "LATENT",
+ "link": 16
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 17
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "slot_index": 0,
+ "links": [
+ 25
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 182,
+ "type": "KSamplerSelect",
+ "pos": [
+ 5790,
+ 1100
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "sampler_name",
+ "name": "sampler_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "sampler_name"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SAMPLER",
+ "name": "SAMPLER",
+ "type": "SAMPLER",
+ "links": [
+ 13
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerSelect",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "euler"
+ ]
+ },
+ {
+ "id": 183,
+ "type": "Ideogram4Scheduler",
+ "pos": [
+ 5790,
+ 1260
+ ],
+ "size": [
+ 270,
+ 240
+ ],
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "steps",
+ "name": "steps",
+ "type": "INT",
+ "widget": {
+ "name": "steps"
+ },
+ "link": 207
+ },
+ {
+ "localized_name": "width",
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": 34
+ },
+ {
+ "localized_name": "height",
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": 37
+ },
+ {
+ "localized_name": "mu",
+ "name": "mu",
+ "type": "FLOAT",
+ "widget": {
+ "name": "mu"
+ },
+ "link": 208
+ },
+ {
+ "localized_name": "std",
+ "name": "std",
+ "type": "FLOAT",
+ "widget": {
+ "name": "std"
+ },
+ "link": 209
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SIGMAS",
+ "name": "SIGMAS",
+ "type": "SIGMAS",
+ "links": [
+ 14
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "Ideogram4Scheduler",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 20,
+ 1024,
+ 1024,
+ 0.5,
+ 1.75
+ ]
+ },
+ {
+ "id": 184,
+ "type": "RandomNoise",
+ "pos": [
+ 5780,
+ 490
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "noise_seed",
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": 155
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "NOISE",
+ "name": "NOISE",
+ "type": "NOISE",
+ "links": [
+ 11
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "RandomNoise",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 885894517601261,
+ "randomize"
+ ]
+ },
+ {
+ "id": 185,
+ "type": "UNETLoader",
+ "pos": [
+ 4720,
+ 520
+ ],
+ "size": [
+ 470,
+ 170
+ ],
+ "flags": {},
+ "order": 8,
+ "mode": 0,
+ "showAdvanced": true,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 156
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 222
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "models": [
+ {
+ "name": "ideogram4_fp8_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/diffusion_models/ideogram4_fp8_scaled.safetensors",
+ "directory": "diffusion_models"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "ideogram4_fp8_scaled.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 186,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 5270,
+ 500
+ ],
+ "size": [
+ 430,
+ 420
+ ],
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 24
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 152
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "slot_index": 0,
+ "links": [
+ 8,
+ 213
+ ]
+ }
+ ],
+ "title": "CLIP Text Encode (Positive Prompt)",
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 187,
+ "type": "CLIPLoader",
+ "pos": [
+ 4730,
+ 990
+ ],
+ "size": [
+ 470,
+ 170
+ ],
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_name",
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": 157
+ },
+ {
+ "localized_name": "type",
+ "name": "type",
+ "type": "COMBO",
+ "widget": {
+ "name": "type"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "device",
+ "name": "device",
+ "shape": 7,
+ "type": "COMBO",
+ "widget": {
+ "name": "device"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP",
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 24
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "models": [
+ {
+ "name": "qwen3vl_8b_fp8_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Qwen3-VL/resolve/main/text_encoders/qwen3vl_8b_fp8_scaled.safetensors",
+ "directory": "text_encoders"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "qwen3vl_8b_fp8_scaled.safetensors",
+ "ideogram4",
+ "default"
+ ]
+ },
+ {
+ "id": 188,
+ "type": "PrimitiveInt",
+ "pos": [
+ 4240,
+ 1610
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 11,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 153
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 32
+ ]
+ }
+ ],
+ "title": "Int (Width)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 1024,
+ "fixed"
+ ]
+ },
+ {
+ "id": 189,
+ "type": "PrimitiveInt",
+ "pos": [
+ 4250,
+ 1800
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 12,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 154
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 35
+ ]
+ }
+ ],
+ "title": "Int (Height)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 1024,
+ "fixed"
+ ]
+ },
+ {
+ "id": 190,
+ "type": "ComfyMathExpression",
+ "pos": [
+ 5340,
+ 1400
+ ],
+ "size": [
+ 230,
+ 80
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 13,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "a",
+ "localized_name": "values.a",
+ "name": "values.a",
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 32
+ },
+ {
+ "label": "b",
+ "localized_name": "values.b",
+ "name": "values.b",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": null
+ },
+ {
+ "localized_name": "expression",
+ "name": "expression",
+ "type": "STRING",
+ "widget": {
+ "name": "expression"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": null
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 33,
+ 34
+ ]
+ },
+ {
+ "localized_name": "BOOL",
+ "name": "BOOL",
+ "type": "BOOLEAN",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyMathExpression",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "max(((a + 15) // 16) * 16, 256)"
+ ]
+ },
+ {
+ "id": 191,
+ "type": "ComfyMathExpression",
+ "pos": [
+ 5350,
+ 1470
+ ],
+ "size": [
+ 230,
+ 80
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 14,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "a",
+ "localized_name": "values.a",
+ "name": "values.a",
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": 35
+ },
+ {
+ "label": "b",
+ "localized_name": "values.b",
+ "name": "values.b",
+ "shape": 7,
+ "type": "FLOAT,INT,BOOLEAN",
+ "link": null
+ },
+ {
+ "localized_name": "expression",
+ "name": "expression",
+ "type": "STRING",
+ "widget": {
+ "name": "expression"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": null
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 36,
+ 37
+ ]
+ },
+ {
+ "localized_name": "BOOL",
+ "name": "BOOL",
+ "type": "BOOLEAN",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyMathExpression",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "max(((a + 15) // 16) * 16, 256)"
+ ]
+ },
+ {
+ "id": 192,
+ "type": "ComfyNumberConvert",
+ "pos": [
+ 5920,
+ 1870
+ ],
+ "size": [
+ 230,
+ 100
+ ],
+ "flags": {},
+ "order": 15,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "value",
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT,FLOAT,STRING,BOOLEAN",
+ "link": 195
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 208
+ ]
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyNumberConvert",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 193,
+ "type": "JsonExtractString",
+ "pos": [
+ 5450,
+ 1870
+ ],
+ "size": [
+ 400,
+ 200
+ ],
+ "flags": {},
+ "order": 16,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "json_string",
+ "name": "json_string",
+ "type": "STRING",
+ "widget": {
+ "name": "json_string"
+ },
+ "link": 196
+ },
+ {
+ "localized_name": "key",
+ "name": "key",
+ "type": "STRING",
+ "widget": {
+ "name": "key"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 195
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "JsonExtractString",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "",
+ "mu"
+ ]
+ },
+ {
+ "id": 194,
+ "type": "ComfyNumberConvert",
+ "pos": [
+ 5930,
+ 2110
+ ],
+ "size": [
+ 230,
+ 100
+ ],
+ "flags": {},
+ "order": 17,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "value",
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT,FLOAT,STRING,BOOLEAN",
+ "link": 197
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 209
+ ]
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyNumberConvert",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 195,
+ "type": "JsonExtractString",
+ "pos": [
+ 5010,
+ 1630
+ ],
+ "size": [
+ 410,
+ 470
+ ],
+ "flags": {},
+ "order": 18,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "json_string",
+ "name": "json_string",
+ "type": "STRING",
+ "widget": {
+ "name": "json_string"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "key",
+ "name": "key",
+ "type": "STRING",
+ "widget": {
+ "name": "key"
+ },
+ "link": 218
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 199
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "JsonExtractString",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "{\n \"Quality\": {\n \"num_steps\": 48,\n \"mu\": 0.0,\n \"std\": 1.5,\n \"preset_id\": \"V4_QUALITY_48\"\n },\n \"Default\": {\n \"num_steps\": 20,\n \"mu\": 0.0,\n \"std\": 1.75,\n \"preset_id\": \"V4_DEFAULT_20\"\n },\n \"Turbo\": {\n \"num_steps\": 12,\n \"mu\": 0.5,\n \"std\": 1.75,\n \"preset_id\": \"V4_TURBO_12\"\n }\n}",
+ "Default"
+ ]
+ },
+ {
+ "id": 196,
+ "type": "StringReplace",
+ "pos": [
+ 5050,
+ 2150
+ ],
+ "size": [
+ 230,
+ 40
+ ],
+ "flags": {
+ "collapsed": true
+ },
+ "order": 19,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "string",
+ "name": "string",
+ "type": "STRING",
+ "widget": {
+ "name": "string"
+ },
+ "link": 199
+ },
+ {
+ "localized_name": "find",
+ "name": "find",
+ "type": "STRING",
+ "widget": {
+ "name": "find"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "replace",
+ "name": "replace",
+ "type": "STRING",
+ "widget": {
+ "name": "replace"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 196,
+ 200,
+ 201
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "StringReplace",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "",
+ "'",
+ "\""
+ ]
+ },
+ {
+ "id": 197,
+ "type": "JsonExtractString",
+ "pos": [
+ 5460,
+ 1610
+ ],
+ "size": [
+ 400,
+ 200
+ ],
+ "flags": {},
+ "order": 20,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "json_string",
+ "name": "json_string",
+ "type": "STRING",
+ "widget": {
+ "name": "json_string"
+ },
+ "link": 200
+ },
+ {
+ "localized_name": "key",
+ "name": "key",
+ "type": "STRING",
+ "widget": {
+ "name": "key"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 202
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "JsonExtractString",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "",
+ "num_steps"
+ ]
+ },
+ {
+ "id": 198,
+ "type": "JsonExtractString",
+ "pos": [
+ 5450,
+ 2110
+ ],
+ "size": [
+ 400,
+ 200
+ ],
+ "flags": {},
+ "order": 21,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "json_string",
+ "name": "json_string",
+ "type": "STRING",
+ "widget": {
+ "name": "json_string"
+ },
+ "link": 201
+ },
+ {
+ "localized_name": "key",
+ "name": "key",
+ "type": "STRING",
+ "widget": {
+ "name": "key"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 197
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "JsonExtractString",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "",
+ "std"
+ ]
+ },
+ {
+ "id": 199,
+ "type": "ComfyNumberConvert",
+ "pos": [
+ 5920,
+ 1620
+ ],
+ "size": [
+ 230,
+ 100
+ ],
+ "flags": {},
+ "order": 22,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "value",
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT,FLOAT,STRING,BOOLEAN",
+ "link": 202
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": []
+ },
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 207
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ComfyNumberConvert",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 200,
+ "type": "UNETLoader",
+ "pos": [
+ 4730,
+ 740
+ ],
+ "size": [
+ 470,
+ 170
+ ],
+ "flags": {},
+ "order": 23,
+ "mode": 0,
+ "showAdvanced": true,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 216
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 211
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.8.2",
+ "models": [
+ {
+ "name": "ideogram4_unconditional_fp8_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/diffusion_models/ideogram4_unconditional_fp8_scaled.safetensors",
+ "directory": "diffusion_models"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "ideogram4_unconditional_fp8_scaled.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 201,
+ "type": "DualModelGuider",
+ "pos": [
+ 5790,
+ 870
+ ],
+ "size": [
+ 270,
+ 180
+ ],
+ "flags": {},
+ "order": 24,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 223
+ },
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 213
+ },
+ {
+ "localized_name": "model_negative",
+ "name": "model_negative",
+ "shape": 7,
+ "type": "MODEL",
+ "link": 211
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "shape": 7,
+ "type": "CONDITIONING",
+ "link": 214
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "GUIDER",
+ "name": "GUIDER",
+ "type": "GUIDER",
+ "links": [
+ 215
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "DualModelGuider",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 7
+ ]
+ },
+ {
+ "id": 202,
+ "type": "CustomCombo",
+ "pos": [
+ 4720,
+ 1630
+ ],
+ "size": [
+ 270,
+ 280
+ ],
+ "flags": {},
+ "order": 25,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "choice",
+ "name": "choice",
+ "type": "COMBO",
+ "widget": {
+ "name": "choice"
+ },
+ "link": 219
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 218
+ ]
+ },
+ {
+ "localized_name": "INDEX",
+ "name": "INDEX",
+ "type": "INT",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CustomCombo",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "Default",
+ 1,
+ "Quality",
+ "Default",
+ "Turbo",
+ ""
+ ]
+ },
+ {
+ "id": 203,
+ "type": "CFGOverride",
+ "pos": [
+ 5790,
+ 650
+ ],
+ "size": [
+ 260,
+ 170
+ ],
+ "flags": {},
+ "order": 26,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 222
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "start_percent",
+ "name": "start_percent",
+ "type": "FLOAT",
+ "widget": {
+ "name": "start_percent"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "end_percent",
+ "name": "end_percent",
+ "type": "FLOAT",
+ "widget": {
+ "name": "end_percent"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 223
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CFGOverride",
+ "cnr_id": "comfy-core",
+ "ver": "0.23.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 3,
+ 0.7,
+ 1
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "id": 1,
+ "title": "Models",
+ "bounding": [
+ 4700,
+ 420,
+ 530,
+ 1100
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 2,
+ "title": "Latent Size",
+ "bounding": [
+ 5260,
+ 1080,
+ 450,
+ 440
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 3,
+ "title": "Sampling",
+ "bounding": [
+ 5740,
+ 420,
+ 780,
+ 1100
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 4,
+ "title": "Prompt",
+ "bounding": [
+ 5260,
+ 420,
+ 450,
+ 640
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 5,
+ "title": "Image Size",
+ "bounding": [
+ 4130,
+ 1540,
+ 530,
+ 420
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 9,
+ "title": "Preset",
+ "bounding": [
+ 4700,
+ 1540,
+ 1820,
+ 780
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ }
+ ],
+ "links": [
+ {
+ "id": 8,
+ "origin_id": 186,
+ "origin_slot": 0,
+ "target_id": 178,
+ "target_slot": 0,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 33,
+ "origin_id": 190,
+ "origin_slot": 1,
+ "target_id": 179,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 36,
+ "origin_id": 191,
+ "origin_slot": 1,
+ "target_id": 179,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 11,
+ "origin_id": 184,
+ "origin_slot": 0,
+ "target_id": 180,
+ "target_slot": 0,
+ "type": "NOISE"
+ },
+ {
+ "id": 13,
+ "origin_id": 182,
+ "origin_slot": 0,
+ "target_id": 180,
+ "target_slot": 2,
+ "type": "SAMPLER"
+ },
+ {
+ "id": 14,
+ "origin_id": 183,
+ "origin_slot": 0,
+ "target_id": 180,
+ "target_slot": 3,
+ "type": "SIGMAS"
+ },
+ {
+ "id": 15,
+ "origin_id": 179,
+ "origin_slot": 0,
+ "target_id": 180,
+ "target_slot": 4,
+ "type": "LATENT"
+ },
+ {
+ "id": 16,
+ "origin_id": 180,
+ "origin_slot": 0,
+ "target_id": 181,
+ "target_slot": 0,
+ "type": "LATENT"
+ },
+ {
+ "id": 17,
+ "origin_id": 177,
+ "origin_slot": 0,
+ "target_id": 181,
+ "target_slot": 1,
+ "type": "VAE"
+ },
+ {
+ "id": 34,
+ "origin_id": 190,
+ "origin_slot": 1,
+ "target_id": 183,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 37,
+ "origin_id": 191,
+ "origin_slot": 1,
+ "target_id": 183,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 24,
+ "origin_id": 187,
+ "origin_slot": 0,
+ "target_id": 186,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 32,
+ "origin_id": 188,
+ "origin_slot": 0,
+ "target_id": 190,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 35,
+ "origin_id": 189,
+ "origin_slot": 0,
+ "target_id": 191,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 25,
+ "origin_id": 181,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 152,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 186,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 153,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 188,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 154,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 189,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 155,
+ "origin_id": -10,
+ "origin_slot": 3,
+ "target_id": 184,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 156,
+ "origin_id": -10,
+ "origin_slot": 4,
+ "target_id": 185,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 157,
+ "origin_id": -10,
+ "origin_slot": 5,
+ "target_id": 187,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 158,
+ "origin_id": -10,
+ "origin_slot": 6,
+ "target_id": 177,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 195,
+ "origin_id": 193,
+ "origin_slot": 0,
+ "target_id": 192,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 196,
+ "origin_id": 196,
+ "origin_slot": 0,
+ "target_id": 193,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 197,
+ "origin_id": 198,
+ "origin_slot": 0,
+ "target_id": 194,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 199,
+ "origin_id": 195,
+ "origin_slot": 0,
+ "target_id": 196,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 200,
+ "origin_id": 196,
+ "origin_slot": 0,
+ "target_id": 197,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 201,
+ "origin_id": 196,
+ "origin_slot": 0,
+ "target_id": 198,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 202,
+ "origin_id": 197,
+ "origin_slot": 0,
+ "target_id": 199,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 207,
+ "origin_id": 199,
+ "origin_slot": 1,
+ "target_id": 183,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 208,
+ "origin_id": 192,
+ "origin_slot": 0,
+ "target_id": 183,
+ "target_slot": 3,
+ "type": "FLOAT"
+ },
+ {
+ "id": 209,
+ "origin_id": 194,
+ "origin_slot": 0,
+ "target_id": 183,
+ "target_slot": 4,
+ "type": "FLOAT"
+ },
+ {
+ "id": 211,
+ "origin_id": 200,
+ "origin_slot": 0,
+ "target_id": 201,
+ "target_slot": 2,
+ "type": "MODEL"
+ },
+ {
+ "id": 213,
+ "origin_id": 186,
+ "origin_slot": 0,
+ "target_id": 201,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 214,
+ "origin_id": 178,
+ "origin_slot": 0,
+ "target_id": 201,
+ "target_slot": 3,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 215,
+ "origin_id": 201,
+ "origin_slot": 0,
+ "target_id": 180,
+ "target_slot": 1,
+ "type": "GUIDER"
+ },
+ {
+ "id": 216,
+ "origin_id": -10,
+ "origin_slot": 7,
+ "target_id": 200,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 218,
+ "origin_id": 202,
+ "origin_slot": 0,
+ "target_id": 195,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 219,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 202,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 222,
+ "origin_id": 185,
+ "origin_slot": 0,
+ "target_id": 203,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 223,
+ "origin_id": 203,
+ "origin_slot": 0,
+ "target_id": 201,
+ "target_slot": 0,
+ "type": "MODEL"
+ }
+ ],
+ "extra": {},
+ "category": "Image generation and editing/Text to image",
+ "description": "This subgraph generates images using Ideogram v4, accepting plain text or structured JSON prompts for precise layout and style control. It suits detailed illustrations, concept art, or marketing visuals needing predictable composition and color palettes. The model uses flow-matching with asymmetric guidance, so no negative prompt is needed, but JSON prompts yield the best results."
+ }
+ ]
+ },
+ "extra": {
+ "BlueprintDescription": "This subgraph generates images using Ideogram v4, accepting plain text or structured JSON prompts for precise layout and style control. It suits detailed illustrations, concept art, or marketing visuals needing predictable composition and color palettes. The model uses flow-matching with asymmetric guidance, so no negative prompt is needed, but JSON prompts yield the best results."
+ }
+}
\ No newline at end of file
diff --git a/blueprints/Video Depth Estimation (Depth Anything 3).json b/blueprints/Video Depth Estimation (Depth Anything 3).json
new file mode 100644
index 000000000..88084a393
--- /dev/null
+++ b/blueprints/Video Depth Estimation (Depth Anything 3).json
@@ -0,0 +1,825 @@
+{
+ "revision": 0,
+ "last_node_id": 97,
+ "last_link_id": 0,
+ "nodes": [
+ {
+ "id": 97,
+ "type": "253ec5ca-8333-4ddf-a036-9fc0923651b9",
+ "pos": [
+ 410,
+ 500
+ ],
+ "size": [
+ 400,
+ 400
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "video",
+ "type": "VIDEO",
+ "link": null
+ },
+ {
+ "name": "start_time",
+ "type": "FLOAT",
+ "widget": {
+ "name": "start_time"
+ },
+ "link": null
+ },
+ {
+ "name": "duration",
+ "type": "FLOAT",
+ "widget": {
+ "name": "duration"
+ },
+ "link": null
+ },
+ {
+ "name": "resolution",
+ "type": "INT",
+ "widget": {
+ "name": "resolution"
+ },
+ "link": null
+ },
+ {
+ "name": "resize_method",
+ "type": "COMBO",
+ "widget": {
+ "name": "resize_method"
+ },
+ "link": null
+ },
+ {
+ "label": "output_type",
+ "name": "output",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "widget": {
+ "name": "output"
+ },
+ "link": null
+ },
+ {
+ "label": "normalization",
+ "name": "output.normalization",
+ "type": "COMBO",
+ "widget": {
+ "name": "output.normalization"
+ },
+ "link": null
+ },
+ {
+ "name": "output.apply_sky_clip",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "output.apply_sky_clip"
+ },
+ "link": null
+ },
+ {
+ "name": "model_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "model_name"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": []
+ },
+ {
+ "name": "audio",
+ "type": "AUDIO",
+ "links": []
+ },
+ {
+ "name": "fps",
+ "type": "FLOAT",
+ "links": []
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "96",
+ "start_time"
+ ],
+ [
+ "96",
+ "duration"
+ ],
+ [
+ "93",
+ "resolution"
+ ],
+ [
+ "93",
+ "resize_method"
+ ],
+ [
+ "92",
+ "output"
+ ],
+ [
+ "92",
+ "output.normalization"
+ ],
+ [
+ "92",
+ "output.apply_sky_clip"
+ ],
+ [
+ "94",
+ "model_name"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [],
+ "title": "Video Depth Estimation (Depth Anything 3)"
+ }
+ ],
+ "links": [],
+ "version": 0.4,
+ "definitions": {
+ "subgraphs": [
+ {
+ "id": "253ec5ca-8333-4ddf-a036-9fc0923651b9",
+ "version": 1,
+ "state": {
+ "lastGroupId": 4,
+ "lastNodeId": 97,
+ "lastLinkId": 129,
+ "lastRerouteId": 0
+ },
+ "revision": 2,
+ "config": {},
+ "name": "Video Depth Estimation (Depth Anything 3)",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ -230,
+ 130,
+ 167.912109375,
+ 228
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 1520,
+ 140,
+ 128,
+ 108
+ ]
+ },
+ "inputs": [
+ {
+ "id": "698c28c6-cf92-4039-8b39-f3062868ea7c",
+ "name": "video",
+ "type": "VIDEO",
+ "linkIds": [
+ 119
+ ],
+ "pos": [
+ -86.087890625,
+ 154
+ ]
+ },
+ {
+ "id": "97a1f63e-1585-4a40-9dec-e2700120d84a",
+ "name": "start_time",
+ "type": "FLOAT",
+ "linkIds": [
+ 121
+ ],
+ "pos": [
+ -86.087890625,
+ 174
+ ]
+ },
+ {
+ "id": "4dbbd3b3-c5ee-4a56-a0d3-3268d3b2fd64",
+ "name": "duration",
+ "type": "FLOAT",
+ "linkIds": [
+ 122
+ ],
+ "pos": [
+ -86.087890625,
+ 194
+ ]
+ },
+ {
+ "id": "16f55101-f99d-4c0c-bebf-c3b31c54f13e",
+ "name": "resolution",
+ "type": "INT",
+ "linkIds": [
+ 124
+ ],
+ "pos": [
+ -86.087890625,
+ 214
+ ]
+ },
+ {
+ "id": "d9cd7693-4bb3-4ed7-9a75-276b997abcd9",
+ "name": "resize_method",
+ "type": "COMBO",
+ "linkIds": [
+ 125
+ ],
+ "pos": [
+ -86.087890625,
+ 234
+ ]
+ },
+ {
+ "id": "a6e90532-323b-462e-ba9c-1672384d5b31",
+ "name": "output",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "linkIds": [
+ 126
+ ],
+ "label": "output_type",
+ "pos": [
+ -86.087890625,
+ 254
+ ]
+ },
+ {
+ "id": "69e6aeef-437d-4fde-b2fc-d5ab9369238d",
+ "name": "output.normalization",
+ "type": "COMBO",
+ "linkIds": [
+ 127
+ ],
+ "label": "normalization",
+ "pos": [
+ -86.087890625,
+ 274
+ ]
+ },
+ {
+ "id": "73206f72-f89a-4698-885e-5d9277df2998",
+ "name": "output.apply_sky_clip",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 128
+ ],
+ "pos": [
+ -86.087890625,
+ 294
+ ]
+ },
+ {
+ "id": "dddbc7fc-9431-448a-9ed3-9aa62404288b",
+ "name": "model_name",
+ "type": "COMBO",
+ "linkIds": [
+ 129
+ ],
+ "pos": [
+ -86.087890625,
+ 314
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "478ab537-63bc-4d74-a9f0-c975f550880f",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "linkIds": [
+ 7
+ ],
+ "localized_name": "IMAGE",
+ "pos": [
+ 1544,
+ 164
+ ]
+ },
+ {
+ "id": "cdaf037e-79bc-4a94-b06c-0fd32e76f615",
+ "name": "audio",
+ "type": "AUDIO",
+ "linkIds": [
+ 112
+ ],
+ "pos": [
+ 1544,
+ 184
+ ]
+ },
+ {
+ "id": "4c0e5484-d193-49c7-b107-92619628880a",
+ "name": "fps",
+ "type": "FLOAT",
+ "linkIds": [
+ 113
+ ],
+ "pos": [
+ 1544,
+ 204
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 92,
+ "type": "DA3Render",
+ "pos": [
+ 740,
+ 230
+ ],
+ "size": [
+ 380,
+ 130
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "da3_geometry",
+ "name": "da3_geometry",
+ "type": "DA3_GEOMETRY",
+ "link": 12
+ },
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "widget": {
+ "name": "output"
+ },
+ "link": 126
+ },
+ {
+ "localized_name": "output.normalization",
+ "name": "output.normalization",
+ "type": "COMBO",
+ "widget": {
+ "name": "output.normalization"
+ },
+ "link": 127
+ },
+ {
+ "localized_name": "output.apply_sky_clip",
+ "name": "output.apply_sky_clip",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "output.apply_sky_clip"
+ },
+ "link": 128
+ },
+ {
+ "name": "geometry",
+ "type": "DA3_GEOMETRY",
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "slot_index": 0,
+ "links": [
+ 7
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "DA3Render",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0"
+ },
+ "widgets_values": [
+ "depth",
+ "v2_style",
+ false
+ ]
+ },
+ {
+ "id": 93,
+ "type": "DA3Inference",
+ "pos": [
+ 740,
+ -30
+ ],
+ "size": [
+ 390,
+ 130
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "da3_model",
+ "name": "da3_model",
+ "type": "DA3_MODEL",
+ "link": 107
+ },
+ {
+ "localized_name": "image",
+ "name": "image",
+ "type": "IMAGE",
+ "link": 111
+ },
+ {
+ "localized_name": "resolution",
+ "name": "resolution",
+ "type": "INT",
+ "widget": {
+ "name": "resolution"
+ },
+ "link": 124
+ },
+ {
+ "localized_name": "resize_method",
+ "name": "resize_method",
+ "type": "COMBO",
+ "widget": {
+ "name": "resize_method"
+ },
+ "link": 125
+ },
+ {
+ "localized_name": "mode",
+ "name": "mode",
+ "type": "COMFY_DYNAMICCOMBO_V3",
+ "widget": {
+ "name": "mode"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "da3_geometry",
+ "name": "da3_geometry",
+ "type": "DA3_GEOMETRY",
+ "slot_index": 0,
+ "links": [
+ 12
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "DA3Inference",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0"
+ },
+ "widgets_values": [
+ 504,
+ "lower_bound_resize",
+ "mono"
+ ]
+ },
+ {
+ "id": 94,
+ "type": "LoadDA3Model",
+ "pos": [
+ 50,
+ 410
+ ],
+ "size": [
+ 400,
+ 140
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model_name",
+ "name": "model_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "model_name"
+ },
+ "link": 129
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "DA3_MODEL",
+ "name": "DA3_MODEL",
+ "type": "DA3_MODEL",
+ "links": [
+ 107
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoadDA3Model",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "depth_anything_3_mono_large.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Depth-Anything-3/resolve/main/geometry_estimation/depth_anything_3_mono_large.safetensors",
+ "directory": "geometry_estimation"
+ }
+ ]
+ },
+ "widgets_values": [
+ "depth_anything_3_mono_large.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 95,
+ "type": "GetVideoComponents",
+ "pos": [
+ 70,
+ -140
+ ],
+ "size": [
+ 260,
+ 120
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "video",
+ "name": "video",
+ "type": "VIDEO",
+ "link": 120
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "links": [
+ 111
+ ]
+ },
+ {
+ "localized_name": "audio",
+ "name": "audio",
+ "type": "AUDIO",
+ "links": [
+ 112
+ ]
+ },
+ {
+ "localized_name": "fps",
+ "name": "fps",
+ "type": "FLOAT",
+ "links": [
+ 113
+ ]
+ },
+ {
+ "localized_name": "bit_depth",
+ "name": "bit_depth",
+ "type": "INT",
+ "links": null
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "GetVideoComponents",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ }
+ },
+ {
+ "id": 96,
+ "type": "Video Slice",
+ "pos": [
+ 70,
+ -360
+ ],
+ "size": [
+ 270,
+ 170
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "video",
+ "name": "video",
+ "type": "VIDEO",
+ "link": 119
+ },
+ {
+ "localized_name": "start_time",
+ "name": "start_time",
+ "type": "FLOAT",
+ "widget": {
+ "name": "start_time"
+ },
+ "link": 121
+ },
+ {
+ "localized_name": "duration",
+ "name": "duration",
+ "type": "FLOAT",
+ "widget": {
+ "name": "duration"
+ },
+ "link": 122
+ },
+ {
+ "localized_name": "strict_duration",
+ "name": "strict_duration",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "strict_duration"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VIDEO",
+ "name": "VIDEO",
+ "type": "VIDEO",
+ "links": [
+ 120
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "Video Slice",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 0,
+ 5,
+ false
+ ]
+ }
+ ],
+ "groups": [],
+ "links": [
+ {
+ "id": 12,
+ "origin_id": 93,
+ "origin_slot": 0,
+ "target_id": 92,
+ "target_slot": 0,
+ "type": "DA3_GEOMETRY"
+ },
+ {
+ "id": 7,
+ "origin_id": 92,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 107,
+ "origin_id": 94,
+ "origin_slot": 0,
+ "target_id": 93,
+ "target_slot": 0,
+ "type": "DA3_MODEL"
+ },
+ {
+ "id": 111,
+ "origin_id": 95,
+ "origin_slot": 0,
+ "target_id": 93,
+ "target_slot": 1,
+ "type": "IMAGE"
+ },
+ {
+ "id": 112,
+ "origin_id": 95,
+ "origin_slot": 1,
+ "target_id": -20,
+ "target_slot": 1,
+ "type": "AUDIO"
+ },
+ {
+ "id": 113,
+ "origin_id": 95,
+ "origin_slot": 2,
+ "target_id": -20,
+ "target_slot": 2,
+ "type": "FLOAT"
+ },
+ {
+ "id": 119,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 96,
+ "target_slot": 0,
+ "type": "VIDEO"
+ },
+ {
+ "id": 120,
+ "origin_id": 96,
+ "origin_slot": 0,
+ "target_id": 95,
+ "target_slot": 0,
+ "type": "VIDEO"
+ },
+ {
+ "id": 121,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 96,
+ "target_slot": 1,
+ "type": "FLOAT"
+ },
+ {
+ "id": 122,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 96,
+ "target_slot": 2,
+ "type": "FLOAT"
+ },
+ {
+ "id": 124,
+ "origin_id": -10,
+ "origin_slot": 3,
+ "target_id": 93,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 125,
+ "origin_id": -10,
+ "origin_slot": 4,
+ "target_id": 93,
+ "target_slot": 3,
+ "type": "COMBO"
+ },
+ {
+ "id": 126,
+ "origin_id": -10,
+ "origin_slot": 5,
+ "target_id": 92,
+ "target_slot": 1,
+ "type": "COMFY_DYNAMICCOMBO_V3"
+ },
+ {
+ "id": 127,
+ "origin_id": -10,
+ "origin_slot": 6,
+ "target_id": 92,
+ "target_slot": 2,
+ "type": "COMBO"
+ },
+ {
+ "id": 128,
+ "origin_id": -10,
+ "origin_slot": 7,
+ "target_id": 92,
+ "target_slot": 3,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 129,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 94,
+ "target_slot": 0,
+ "type": "COMBO"
+ }
+ ],
+ "extra": {},
+ "category": "Conditioning & Preprocessors/Depth",
+ "description": "This subgraph processes a video input through Depth Anything 3 to produce temporally consistent depth maps for each frame, outputting a depth video. It is ideal for video content requiring spatial geometry estimation, such as 3D reconstruction, SLAM, or novel view synthesis from moving cameras. The model uses a plain transformer backbone trained with a depth-ray representation, supporting any number of views without requiring known camera poses."
+ }
+ ]
+ },
+ "extra": {
+ "BlueprintDescription": "This subgraph processes a video input through Depth Anything 3 to produce temporally consistent depth maps for each frame, outputting a depth video. It is ideal for video content requiring spatial geometry estimation, such as 3D reconstruction, SLAM, or novel view synthesis from moving cameras. The model uses a plain transformer backbone trained with a depth-ray representation, supporting any number of views without requiring known camera poses."
+ }
+}
\ No newline at end of file
diff --git a/blueprints/Video Edit (Bernini-R).json b/blueprints/Video Edit (Bernini-R).json
new file mode 100644
index 000000000..2f09db5fa
--- /dev/null
+++ b/blueprints/Video Edit (Bernini-R).json
@@ -0,0 +1,3732 @@
+{
+ "revision": 0,
+ "last_node_id": 376,
+ "last_link_id": 0,
+ "nodes": [
+ {
+ "id": 376,
+ "type": "70d8911e-8530-4a3d-9889-b39e8fbd131b",
+ "pos": [
+ 4090,
+ 4890
+ ],
+ "size": [
+ 480,
+ 740
+ ],
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "label": "source_video",
+ "localized_name": "video",
+ "name": "video",
+ "type": "VIDEO",
+ "link": null
+ },
+ {
+ "name": "reference_video",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "label": "reference_images",
+ "name": "reference_images.reference_image_0",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "name": "value",
+ "type": "STRING",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ },
+ {
+ "label": "task_type",
+ "name": "choice",
+ "type": "COMBO",
+ "widget": {
+ "name": "choice"
+ },
+ "link": null
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": null
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": null
+ },
+ {
+ "label": "noise_seed",
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": null
+ },
+ {
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": null
+ },
+ {
+ "name": "ref_max_size",
+ "shape": 7,
+ "type": "INT",
+ "widget": {
+ "name": "ref_max_size"
+ },
+ "link": null
+ },
+ {
+ "label": "turbo_mode",
+ "name": "value_1",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value_1"
+ },
+ "link": null
+ },
+ {
+ "label": "high_noise_model",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": null
+ },
+ {
+ "label": "low_noise_model",
+ "name": "unet_name_1",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name_1"
+ },
+ "link": null
+ },
+ {
+ "label": "distill_lora",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": null
+ },
+ {
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": null
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VIDEO",
+ "name": "VIDEO",
+ "type": "VIDEO",
+ "links": []
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "371",
+ "value"
+ ],
+ [
+ "356",
+ "choice"
+ ],
+ [
+ "352",
+ "width"
+ ],
+ [
+ "352",
+ "height"
+ ],
+ [
+ "349",
+ "noise_seed"
+ ],
+ [
+ "352",
+ "length"
+ ],
+ [
+ "352",
+ "ref_max_size"
+ ],
+ [
+ "368",
+ "value"
+ ],
+ [
+ "344",
+ "unet_name"
+ ],
+ [
+ "346",
+ "unet_name"
+ ],
+ [
+ "345",
+ "lora_name"
+ ],
+ [
+ "338",
+ "clip_name"
+ ],
+ [
+ "339",
+ "vae_name"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [],
+ "title": "Video Edit (Bernini-R)"
+ }
+ ],
+ "links": [],
+ "version": 0.4,
+ "definitions": {
+ "subgraphs": [
+ {
+ "id": "70d8911e-8530-4a3d-9889-b39e8fbd131b",
+ "version": 1,
+ "state": {
+ "lastGroupId": 9,
+ "lastNodeId": 376,
+ "lastLinkId": 496,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Video Edit (Bernini-R)",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ 5240,
+ 5360,
+ 149.689453125,
+ 368
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 10004.984375,
+ 5000.9921875,
+ 128,
+ 68
+ ]
+ },
+ "inputs": [
+ {
+ "id": "15c3bfa3-6844-473a-a927-a50284131356",
+ "name": "video",
+ "type": "VIDEO",
+ "linkIds": [
+ 457
+ ],
+ "localized_name": "video",
+ "label": "source_video",
+ "pos": [
+ 5365.689453125,
+ 5384
+ ]
+ },
+ {
+ "id": "c02ac440-58ae-4415-bb24-dabb61b91f69",
+ "name": "reference_video",
+ "type": "IMAGE",
+ "linkIds": [
+ 465
+ ],
+ "pos": [
+ 5365.689453125,
+ 5404
+ ]
+ },
+ {
+ "id": "c46d38f5-b0e8-4620-bd0e-4e86db7bdb1b",
+ "name": "reference_images.reference_image_0",
+ "type": "IMAGE",
+ "linkIds": [
+ 466
+ ],
+ "label": "reference_images",
+ "pos": [
+ 5365.689453125,
+ 5424
+ ]
+ },
+ {
+ "id": "565fc711-6052-4c07-b638-403e01fcf7f8",
+ "name": "value",
+ "type": "STRING",
+ "linkIds": [
+ 467
+ ],
+ "pos": [
+ 5365.689453125,
+ 5444
+ ]
+ },
+ {
+ "id": "bfcd6148-0bae-43b1-9440-a133fbc2663c",
+ "name": "choice",
+ "type": "COMBO",
+ "linkIds": [
+ 468
+ ],
+ "label": "task_type",
+ "pos": [
+ 5365.689453125,
+ 5464
+ ]
+ },
+ {
+ "id": "28fedb03-828c-49d9-91ec-d3669a10c3b9",
+ "name": "width",
+ "type": "INT",
+ "linkIds": [
+ 469
+ ],
+ "pos": [
+ 5365.689453125,
+ 5484
+ ]
+ },
+ {
+ "id": "69994b05-577e-486f-bd10-3360261d7bb8",
+ "name": "height",
+ "type": "INT",
+ "linkIds": [
+ 470
+ ],
+ "pos": [
+ 5365.689453125,
+ 5504
+ ]
+ },
+ {
+ "id": "db300c09-5b92-41ad-990b-9dd8dad35f86",
+ "name": "noise_seed",
+ "type": "INT",
+ "linkIds": [
+ 480
+ ],
+ "label": "noise_seed",
+ "pos": [
+ 5365.689453125,
+ 5524
+ ]
+ },
+ {
+ "id": "db664a31-39e5-4d6a-a5f1-3abac65b35d1",
+ "name": "length",
+ "type": "INT",
+ "linkIds": [
+ 481
+ ],
+ "pos": [
+ 5365.689453125,
+ 5544
+ ]
+ },
+ {
+ "id": "26aa0c9e-9daa-4302-ab5c-5ac9141b9e20",
+ "name": "ref_max_size",
+ "type": "INT",
+ "linkIds": [
+ 482
+ ],
+ "pos": [
+ 5365.689453125,
+ 5564
+ ]
+ },
+ {
+ "id": "ee527a92-8cc9-4b16-9858-9daab9ef2c45",
+ "name": "value_1",
+ "type": "BOOLEAN",
+ "linkIds": [
+ 488
+ ],
+ "label": "turbo_mode",
+ "pos": [
+ 5365.689453125,
+ 5584
+ ]
+ },
+ {
+ "id": "8a6c9f3d-e24e-4d40-9c03-864bd4458376",
+ "name": "unet_name",
+ "type": "COMBO",
+ "linkIds": [
+ 489
+ ],
+ "label": "high_noise_model",
+ "pos": [
+ 5365.689453125,
+ 5604
+ ]
+ },
+ {
+ "id": "f35afd1c-c183-4d18-8672-314527728e9b",
+ "name": "unet_name_1",
+ "type": "COMBO",
+ "linkIds": [
+ 490
+ ],
+ "label": "low_noise_model",
+ "pos": [
+ 5365.689453125,
+ 5624
+ ]
+ },
+ {
+ "id": "fff89f1d-615c-436e-b28a-3b7f915d0b05",
+ "name": "lora_name",
+ "type": "COMBO",
+ "linkIds": [
+ 491,
+ 492
+ ],
+ "label": "distill_lora",
+ "pos": [
+ 5365.689453125,
+ 5644
+ ]
+ },
+ {
+ "id": "d76ff30d-c865-49b4-bccb-fb6e0a9b4f34",
+ "name": "clip_name",
+ "type": "COMBO",
+ "linkIds": [
+ 493
+ ],
+ "pos": [
+ 5365.689453125,
+ 5664
+ ]
+ },
+ {
+ "id": "0850a515-4051-4de3-9343-7db929548ada",
+ "name": "vae_name",
+ "type": "COMBO",
+ "linkIds": [
+ 494
+ ],
+ "pos": [
+ 5365.689453125,
+ 5684
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "7d994238-c919-43c6-9d97-340c9e383743",
+ "name": "VIDEO",
+ "type": "VIDEO",
+ "linkIds": [
+ 458
+ ],
+ "localized_name": "VIDEO",
+ "pos": [
+ 10028.984375,
+ 5024.9921875
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 338,
+ "type": "CLIPLoader",
+ "pos": [
+ 6170,
+ 5760
+ ],
+ "size": [
+ 670,
+ 170
+ ],
+ "flags": {},
+ "order": 8,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip_name",
+ "name": "clip_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "clip_name"
+ },
+ "link": 493
+ },
+ {
+ "localized_name": "type",
+ "name": "type",
+ "type": "COMBO",
+ "widget": {
+ "name": "type"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "device",
+ "name": "device",
+ "shape": 7,
+ "type": "COMBO",
+ "widget": {
+ "name": "device"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CLIP",
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 409,
+ 438
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors?download=true",
+ "directory": "text_encoders"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
+ "wan",
+ "default"
+ ]
+ },
+ {
+ "id": 339,
+ "type": "VAELoader",
+ "pos": [
+ 6170,
+ 5990
+ ],
+ "size": [
+ 670,
+ 110
+ ],
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "vae_name",
+ "name": "vae_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "vae_name"
+ },
+ "link": 494
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VAE",
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 414,
+ 436
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAELoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "Wan2_1_VAE_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan2_1_VAE_bf16.safetensors?download=true",
+ "directory": "vae"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "Wan2_1_VAE_bf16.safetensors"
+ ]
+ },
+ {
+ "id": 340,
+ "type": "LoraLoaderModelOnly",
+ "pos": [
+ 6180,
+ 5550
+ ],
+ "size": [
+ 670,
+ 170
+ ],
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 408
+ },
+ {
+ "localized_name": "lora_name",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": 492
+ },
+ {
+ "localized_name": "strength_model",
+ "name": "strength_model",
+ "type": "FLOAT",
+ "widget": {
+ "name": "strength_model"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 441
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoaderModelOnly",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Lightx2v/lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors?download=true",
+ "directory": "loras"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors",
+ 1.5
+ ],
+ "color": "#332922",
+ "bgcolor": "#593930"
+ },
+ {
+ "id": 341,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 6950,
+ 5400
+ ],
+ "size": [
+ 700,
+ 240
+ ],
+ "flags": {},
+ "order": 11,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 409
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 435
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走"
+ ],
+ "color": "#223",
+ "bgcolor": "#335"
+ },
+ {
+ "id": 342,
+ "type": "SplitSigmas",
+ "pos": [
+ 8520,
+ 5180
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 12,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "sigmas",
+ "name": "sigmas",
+ "type": "SIGMAS",
+ "link": 410
+ },
+ {
+ "localized_name": "step",
+ "name": "step",
+ "type": "INT",
+ "widget": {
+ "name": "step"
+ },
+ "link": 411
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "high_sigmas",
+ "name": "high_sigmas",
+ "type": "SIGMAS",
+ "links": [
+ 422
+ ]
+ },
+ {
+ "localized_name": "low_sigmas",
+ "name": "low_sigmas",
+ "type": "SIGMAS",
+ "links": [
+ 431
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SplitSigmas",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 3
+ ]
+ },
+ {
+ "id": 343,
+ "type": "KSamplerSelect",
+ "pos": [
+ 8520,
+ 5370
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "sampler_name",
+ "name": "sampler_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "sampler_name"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SAMPLER",
+ "name": "SAMPLER",
+ "type": "SAMPLER",
+ "links": [
+ 421,
+ 430
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerSelect",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "res_multistep"
+ ]
+ },
+ {
+ "id": 344,
+ "type": "UNETLoader",
+ "pos": [
+ 6170,
+ 4930
+ ],
+ "size": [
+ 670,
+ 140
+ ],
+ "flags": {},
+ "order": 13,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 489
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 412,
+ 454
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "wan2.2_bernini_r_high_noise_fp8_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Bernini-R/resolve/main/diffusion_models/wan2.2_bernini_r_high_noise_fp8_scaled.safetensors",
+ "directory": "diffusion_models"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "wan2.2_bernini_r_high_noise_fp8_scaled.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 345,
+ "type": "LoraLoaderModelOnly",
+ "pos": [
+ 6170,
+ 5120
+ ],
+ "size": [
+ 670,
+ 170
+ ],
+ "flags": {},
+ "order": 14,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 412
+ },
+ {
+ "localized_name": "lora_name",
+ "name": "lora_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "lora_name"
+ },
+ "link": 491
+ },
+ {
+ "localized_name": "strength_model",
+ "name": "strength_model",
+ "type": "FLOAT",
+ "widget": {
+ "name": "strength_model"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 455
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoaderModelOnly",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors",
+ "url": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Lightx2v/lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors?download=true",
+ "directory": "loras"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors",
+ 3
+ ],
+ "color": "#332922",
+ "bgcolor": "#593930"
+ },
+ {
+ "id": 346,
+ "type": "UNETLoader",
+ "pos": [
+ 6170,
+ 5350
+ ],
+ "size": [
+ 670,
+ 140
+ ],
+ "flags": {},
+ "order": 15,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "unet_name",
+ "name": "unet_name",
+ "type": "COMBO",
+ "widget": {
+ "name": "unet_name"
+ },
+ "link": 490
+ },
+ {
+ "localized_name": "weight_dtype",
+ "name": "weight_dtype",
+ "type": "COMBO",
+ "widget": {
+ "name": "weight_dtype"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "MODEL",
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 408,
+ 425,
+ 440
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UNETLoader",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "models": [
+ {
+ "name": "wan2.2_bernini_r_low_noise_fp8_scaled.safetensors",
+ "url": "https://huggingface.co/Comfy-Org/Bernini-R/resolve/main/diffusion_models/wan2.2_bernini_r_low_noise_fp8_scaled.safetensors",
+ "directory": "diffusion_models"
+ }
+ ],
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "wan2.2_bernini_r_low_noise_fp8_scaled.safetensors",
+ "default"
+ ]
+ },
+ {
+ "id": 347,
+ "type": "VAEDecode",
+ "pos": [
+ 9690,
+ 4950
+ ],
+ "size": [
+ 250,
+ 100
+ ],
+ "flags": {},
+ "order": 16,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "samples",
+ "name": "samples",
+ "type": "LATENT",
+ "link": 413
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 414
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "IMAGE",
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 415
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 348,
+ "type": "CreateVideo",
+ "pos": [
+ 9690,
+ 5120
+ ],
+ "size": [
+ 260,
+ 160
+ ],
+ "flags": {},
+ "order": 17,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "link": 415
+ },
+ {
+ "localized_name": "audio",
+ "name": "audio",
+ "shape": 7,
+ "type": "AUDIO",
+ "link": 416
+ },
+ {
+ "localized_name": "fps",
+ "name": "fps",
+ "type": "FLOAT",
+ "widget": {
+ "name": "fps"
+ },
+ "link": 417
+ },
+ {
+ "localized_name": "bit_depth",
+ "name": "bit_depth",
+ "shape": 7,
+ "type": "INT",
+ "widget": {
+ "name": "bit_depth"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "VIDEO",
+ "name": "VIDEO",
+ "type": "VIDEO",
+ "links": [
+ 458
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CreateVideo",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 24,
+ 8
+ ]
+ },
+ {
+ "id": 349,
+ "type": "SamplerCustom",
+ "pos": [
+ 8860,
+ 4960
+ ],
+ "size": [
+ 280,
+ 680
+ ],
+ "flags": {},
+ "order": 18,
+ "mode": 0,
+ "showAdvanced": false,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 418
+ },
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 419
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 420
+ },
+ {
+ "localized_name": "sampler",
+ "name": "sampler",
+ "type": "SAMPLER",
+ "link": 421
+ },
+ {
+ "localized_name": "sigmas",
+ "name": "sigmas",
+ "type": "SIGMAS",
+ "link": 422
+ },
+ {
+ "localized_name": "latent_image",
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 423
+ },
+ {
+ "localized_name": "add_noise",
+ "name": "add_noise",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "add_noise"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "noise_seed",
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": 480
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": 424
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "LATENT",
+ "links": [
+ 432
+ ]
+ },
+ {
+ "localized_name": "denoised_output",
+ "name": "denoised_output",
+ "type": "LATENT",
+ "links": []
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SamplerCustom",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ true,
+ 852303761886160,
+ "randomize",
+ 1
+ ]
+ },
+ {
+ "id": 350,
+ "type": "BasicScheduler",
+ "pos": [
+ 8520,
+ 4960
+ ],
+ "size": [
+ 270,
+ 170
+ ],
+ "flags": {},
+ "order": 19,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 425
+ },
+ {
+ "localized_name": "scheduler",
+ "name": "scheduler",
+ "type": "COMBO",
+ "widget": {
+ "name": "scheduler"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "steps",
+ "name": "steps",
+ "type": "INT",
+ "widget": {
+ "name": "steps"
+ },
+ "link": 426
+ },
+ {
+ "localized_name": "denoise",
+ "name": "denoise",
+ "type": "FLOAT",
+ "widget": {
+ "name": "denoise"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "SIGMAS",
+ "name": "SIGMAS",
+ "type": "SIGMAS",
+ "links": [
+ 410
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "BasicScheduler",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ "simple",
+ 6,
+ 1
+ ]
+ },
+ {
+ "id": 351,
+ "type": "SamplerCustom",
+ "pos": [
+ 9190,
+ 4950
+ ],
+ "size": [
+ 280,
+ 680
+ ],
+ "flags": {},
+ "order": 20,
+ "mode": 0,
+ "showAdvanced": false,
+ "inputs": [
+ {
+ "localized_name": "model",
+ "name": "model",
+ "type": "MODEL",
+ "link": 427
+ },
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 428
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 429
+ },
+ {
+ "localized_name": "sampler",
+ "name": "sampler",
+ "type": "SAMPLER",
+ "link": 430
+ },
+ {
+ "localized_name": "sigmas",
+ "name": "sigmas",
+ "type": "SIGMAS",
+ "link": 431
+ },
+ {
+ "localized_name": "latent_image",
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 432
+ },
+ {
+ "localized_name": "add_noise",
+ "name": "add_noise",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "add_noise"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "noise_seed",
+ "name": "noise_seed",
+ "type": "INT",
+ "widget": {
+ "name": "noise_seed"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "cfg",
+ "name": "cfg",
+ "type": "FLOAT",
+ "widget": {
+ "name": "cfg"
+ },
+ "link": 433
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "LATENT",
+ "links": [
+ 413
+ ]
+ },
+ {
+ "localized_name": "denoised_output",
+ "name": "denoised_output",
+ "type": "LATENT",
+ "links": []
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SamplerCustom",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ false,
+ 0,
+ "fixed",
+ 1
+ ]
+ },
+ {
+ "id": 352,
+ "type": "BerniniConditioning",
+ "pos": [
+ 7160,
+ 5720
+ ],
+ "size": [
+ 310,
+ 380
+ ],
+ "flags": {},
+ "order": 21,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 434
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 435
+ },
+ {
+ "localized_name": "vae",
+ "name": "vae",
+ "type": "VAE",
+ "link": 436
+ },
+ {
+ "localized_name": "source_video",
+ "name": "source_video",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 437
+ },
+ {
+ "localized_name": "reference_video",
+ "name": "reference_video",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 465
+ },
+ {
+ "label": "reference_image_0",
+ "localized_name": "reference_images.reference_image_0",
+ "name": "reference_images.reference_image_0",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": 466
+ },
+ {
+ "label": "reference_image_1",
+ "localized_name": "reference_images.reference_image_1",
+ "name": "reference_images.reference_image_1",
+ "shape": 7,
+ "type": "IMAGE",
+ "link": null
+ },
+ {
+ "localized_name": "width",
+ "name": "width",
+ "type": "INT",
+ "widget": {
+ "name": "width"
+ },
+ "link": 469
+ },
+ {
+ "localized_name": "height",
+ "name": "height",
+ "type": "INT",
+ "widget": {
+ "name": "height"
+ },
+ "link": 470
+ },
+ {
+ "localized_name": "length",
+ "name": "length",
+ "type": "INT",
+ "widget": {
+ "name": "length"
+ },
+ "link": 481
+ },
+ {
+ "localized_name": "batch_size",
+ "name": "batch_size",
+ "type": "INT",
+ "widget": {
+ "name": "batch_size"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "ref_max_size",
+ "name": "ref_max_size",
+ "shape": 7,
+ "type": "INT",
+ "widget": {
+ "name": "ref_max_size"
+ },
+ "link": 482
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "positive",
+ "name": "positive",
+ "type": "CONDITIONING",
+ "links": [
+ 419,
+ 428
+ ]
+ },
+ {
+ "localized_name": "negative",
+ "name": "negative",
+ "type": "CONDITIONING",
+ "links": [
+ 420,
+ 429
+ ]
+ },
+ {
+ "localized_name": "latent",
+ "name": "latent",
+ "type": "LATENT",
+ "links": [
+ 423
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "BerniniConditioning",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ 480,
+ 832,
+ 81,
+ 1,
+ 848
+ ],
+ "color": "#322",
+ "bgcolor": "#533"
+ },
+ {
+ "id": 353,
+ "type": "GetVideoComponents",
+ "pos": [
+ 6170,
+ 6220
+ ],
+ "size": [
+ 230,
+ 150
+ ],
+ "flags": {},
+ "order": 22,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "video",
+ "name": "video",
+ "type": "VIDEO",
+ "link": 457
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "images",
+ "name": "images",
+ "type": "IMAGE",
+ "links": [
+ 437
+ ]
+ },
+ {
+ "localized_name": "audio",
+ "name": "audio",
+ "type": "AUDIO",
+ "links": [
+ 416
+ ]
+ },
+ {
+ "localized_name": "fps",
+ "name": "fps",
+ "type": "FLOAT",
+ "links": [
+ 417
+ ]
+ },
+ {
+ "localized_name": "bit_depth",
+ "name": "bit_depth",
+ "type": "INT",
+ "links": []
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "GetVideoComponents",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ }
+ },
+ {
+ "id": 354,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 6950,
+ 4940
+ ],
+ "size": [
+ 710,
+ 390
+ ],
+ "flags": {},
+ "order": 23,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "clip",
+ "name": "clip",
+ "type": "CLIP",
+ "link": 438
+ },
+ {
+ "localized_name": "text",
+ "name": "text",
+ "type": "STRING",
+ "widget": {
+ "name": "text"
+ },
+ "link": 439
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "CONDITIONING",
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 434
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0",
+ "enableTabs": false,
+ "tabWidth": 65,
+ "tabXOffset": 10,
+ "hasSecondTab": false,
+ "secondTabText": "Send Back",
+ "secondTabOffset": 80,
+ "secondTabWidth": 65
+ },
+ "widgets_values": [
+ ""
+ ],
+ "color": "#232",
+ "bgcolor": "#353"
+ },
+ {
+ "id": 355,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 8140,
+ 5250
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 24,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 440
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 441
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 442
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 427
+ ]
+ }
+ ],
+ "title": "Switch (Low Noise)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 356,
+ "type": "CustomCombo",
+ "pos": [
+ 6170,
+ 3800
+ ],
+ "size": [
+ 460,
+ 600
+ ],
+ "flags": {},
+ "order": 25,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "choice",
+ "name": "choice",
+ "type": "COMBO",
+ "widget": {
+ "name": "choice"
+ },
+ "link": 468
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": []
+ },
+ {
+ "localized_name": "INDEX",
+ "name": "INDEX",
+ "type": "INT",
+ "links": [
+ 443
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CustomCombo",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "Video Editing (Content Propagation)",
+ 7,
+ "Default",
+ "Text to Image",
+ "Text to Video",
+ "Image Editing",
+ "Subject to Image",
+ "Image to Video",
+ "Video Editing",
+ "Video Editing (Content Propagation)",
+ "Video Editing with Reference",
+ "Ads / Content Insertion",
+ "Video Editing (Action / Position)",
+ "Video Editing (Style / Motion)",
+ ""
+ ]
+ },
+ {
+ "id": 357,
+ "type": "a98d3dcb-12b1-467c-94b8-723a89533c30",
+ "pos": [
+ 6680,
+ 3800
+ ],
+ "size": [
+ 390,
+ 440
+ ],
+ "flags": {},
+ "order": 26,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "text_per_line",
+ "name": "text_per_line",
+ "type": "STRING",
+ "widget": {
+ "name": "text_per_line"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "index",
+ "name": "index",
+ "type": "INT",
+ "widget": {
+ "name": "index"
+ },
+ "link": 443
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "selected_line",
+ "name": "selected_line",
+ "type": "STRING",
+ "links": [
+ 444
+ ]
+ }
+ ],
+ "properties": {
+ "proxyWidgets": [
+ [
+ "373",
+ "string"
+ ],
+ [
+ "374",
+ "value"
+ ]
+ ],
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": []
+ },
+ {
+ "id": 358,
+ "type": "StringConcatenate",
+ "pos": [
+ 6680,
+ 4500
+ ],
+ "size": [
+ 400,
+ 250
+ ],
+ "flags": {},
+ "order": 27,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "string_a",
+ "name": "string_a",
+ "type": "STRING",
+ "widget": {
+ "name": "string_a"
+ },
+ "link": 444
+ },
+ {
+ "localized_name": "string_b",
+ "name": "string_b",
+ "type": "STRING",
+ "widget": {
+ "name": "string_b"
+ },
+ "link": 459
+ },
+ {
+ "localized_name": "delimiter",
+ "name": "delimiter",
+ "type": "STRING",
+ "widget": {
+ "name": "delimiter"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 439
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "StringConcatenate",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "",
+ "",
+ ""
+ ]
+ },
+ {
+ "id": 359,
+ "type": "PrimitiveInt",
+ "pos": [
+ 7740,
+ 4970
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 445
+ ]
+ }
+ ],
+ "title": "Int (Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 40,
+ "fixed"
+ ]
+ },
+ {
+ "id": 360,
+ "type": "PrimitiveInt",
+ "pos": [
+ 7750,
+ 5510
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 446
+ ]
+ }
+ ],
+ "title": "Int (Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 6,
+ "fixed"
+ ]
+ },
+ {
+ "id": 361,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 8140,
+ 5440
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 28,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 445
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 446
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 447
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 426
+ ]
+ }
+ ],
+ "title": "Switch (Steps)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 362,
+ "type": "PrimitiveInt",
+ "pos": [
+ 7740,
+ 5130
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 448
+ ]
+ }
+ ],
+ "title": "Int (Split Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 20,
+ "fixed"
+ ]
+ },
+ {
+ "id": 363,
+ "type": "PrimitiveInt",
+ "pos": [
+ 7750,
+ 5680
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 449
+ ]
+ }
+ ],
+ "title": "Int (Split Steps)",
+ "properties": {
+ "Node name for S&R": "PrimitiveInt",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 3,
+ "fixed"
+ ]
+ },
+ {
+ "id": 364,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 8140,
+ 5640
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 29,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 448
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 449
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 450
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 411
+ ]
+ }
+ ],
+ "title": "Switch (Low Steps)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 365,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 8140,
+ 5830
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 30,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 451
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 452
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 453
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 424,
+ 433
+ ]
+ }
+ ],
+ "title": "Switch (CFG)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 366,
+ "type": "PrimitiveFloat",
+ "pos": [
+ 7750,
+ 5840
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "FLOAT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 452
+ ]
+ }
+ ],
+ "title": "Float (CFG)",
+ "properties": {
+ "Node name for S&R": "PrimitiveFloat",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 1
+ ]
+ },
+ {
+ "id": 367,
+ "type": "PrimitiveFloat",
+ "pos": [
+ 7740,
+ 5290
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "FLOAT",
+ "widget": {
+ "name": "value"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "FLOAT",
+ "name": "FLOAT",
+ "type": "FLOAT",
+ "links": [
+ 451
+ ]
+ }
+ ],
+ "title": "Float (CFG)",
+ "properties": {
+ "Node name for S&R": "PrimitiveFloat",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ 5
+ ]
+ },
+ {
+ "id": 368,
+ "type": "PrimitiveBoolean",
+ "pos": [
+ 7750,
+ 6020
+ ],
+ "size": [
+ 270,
+ 100
+ ],
+ "flags": {},
+ "order": 31,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "value"
+ },
+ "link": 488
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "BOOLEAN",
+ "name": "BOOLEAN",
+ "type": "BOOLEAN",
+ "links": [
+ 442,
+ 447,
+ 450,
+ 453,
+ 456
+ ]
+ }
+ ],
+ "title": "Boolean (Enable Turbo LoRA?)",
+ "properties": {
+ "Node name for S&R": "PrimitiveBoolean",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ true
+ ]
+ },
+ {
+ "id": 369,
+ "type": "ComfySwitchNode",
+ "pos": [
+ 8140,
+ 5060
+ ],
+ "size": [
+ 270,
+ 130
+ ],
+ "flags": {},
+ "order": 32,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "on_false",
+ "name": "on_false",
+ "type": "*",
+ "link": 454
+ },
+ {
+ "localized_name": "on_true",
+ "name": "on_true",
+ "type": "*",
+ "link": 455
+ },
+ {
+ "localized_name": "switch",
+ "name": "switch",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "switch"
+ },
+ "link": 456
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "output",
+ "name": "output",
+ "type": "*",
+ "links": [
+ 418
+ ]
+ }
+ ],
+ "title": "Switch (High Noise)",
+ "properties": {
+ "Node name for S&R": "ComfySwitchNode",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ false
+ ]
+ },
+ {
+ "id": 370,
+ "type": "MarkdownNote",
+ "pos": [
+ 7730,
+ 4680
+ ],
+ "size": [
+ 340,
+ 150
+ ],
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [],
+ "outputs": [],
+ "properties": {},
+ "widgets_values": [
+ "You can find the original settings here: https://github.com/bytedance/Bernini/blob/main/gradio_demo.py"
+ ],
+ "color": "#222",
+ "bgcolor": "#000"
+ },
+ {
+ "id": 371,
+ "type": "PrimitiveStringMultiline",
+ "pos": [
+ 6160,
+ 4510
+ ],
+ "size": [
+ 470,
+ 230
+ ],
+ "flags": {},
+ "order": 33,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "STRING",
+ "widget": {
+ "name": "value"
+ },
+ "link": 467
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 459
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "PrimitiveStringMultiline",
+ "cnr_id": "comfy-core",
+ "ver": "0.24.0"
+ },
+ "widgets_values": [
+ "Replace the gray studio backdrop with a daytime urban street: brick buildings, shop windows, sidewalk, and soft overcast light. Keep the model's outfit, accessories, body pose, motion, and full-body framing unchanged. Only the environment behind the subject should change."
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "id": 1,
+ "title": "Prompt & Conditioning",
+ "bounding": [
+ 6930,
+ 4860,
+ 760,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 2,
+ "title": "Models",
+ "bounding": [
+ 6150,
+ 4860,
+ 750,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 3,
+ "title": "Sampling",
+ "bounding": [
+ 8490,
+ 4860,
+ 1160,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 8,
+ "title": "Prompt Construction",
+ "bounding": [
+ 6150,
+ 3690,
+ 960,
+ 1120
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 4,
+ "title": "System Prompt (Based on task type)",
+ "bounding": [
+ 6160,
+ 3730,
+ 920,
+ 680
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 7,
+ "title": "Switch Settings",
+ "bounding": [
+ 7720,
+ 4860,
+ 740,
+ 1270
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 5,
+ "title": "Distill LoRA settings",
+ "bounding": [
+ 7730,
+ 5440,
+ 310,
+ 530
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ },
+ {
+ "id": 6,
+ "title": "Original Settings",
+ "bounding": [
+ 7730,
+ 4900,
+ 300,
+ 504
+ ],
+ "color": "#3f789e",
+ "flags": {}
+ }
+ ],
+ "links": [
+ {
+ "id": 408,
+ "origin_id": 346,
+ "origin_slot": 0,
+ "target_id": 340,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 409,
+ "origin_id": 338,
+ "origin_slot": 0,
+ "target_id": 341,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 410,
+ "origin_id": 350,
+ "origin_slot": 0,
+ "target_id": 342,
+ "target_slot": 0,
+ "type": "SIGMAS"
+ },
+ {
+ "id": 411,
+ "origin_id": 364,
+ "origin_slot": 0,
+ "target_id": 342,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 412,
+ "origin_id": 344,
+ "origin_slot": 0,
+ "target_id": 345,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 413,
+ "origin_id": 351,
+ "origin_slot": 0,
+ "target_id": 347,
+ "target_slot": 0,
+ "type": "LATENT"
+ },
+ {
+ "id": 414,
+ "origin_id": 339,
+ "origin_slot": 0,
+ "target_id": 347,
+ "target_slot": 1,
+ "type": "VAE"
+ },
+ {
+ "id": 415,
+ "origin_id": 347,
+ "origin_slot": 0,
+ "target_id": 348,
+ "target_slot": 0,
+ "type": "IMAGE"
+ },
+ {
+ "id": 416,
+ "origin_id": 353,
+ "origin_slot": 1,
+ "target_id": 348,
+ "target_slot": 1,
+ "type": "AUDIO"
+ },
+ {
+ "id": 417,
+ "origin_id": 353,
+ "origin_slot": 2,
+ "target_id": 348,
+ "target_slot": 2,
+ "type": "FLOAT"
+ },
+ {
+ "id": 418,
+ "origin_id": 369,
+ "origin_slot": 0,
+ "target_id": 349,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 419,
+ "origin_id": 352,
+ "origin_slot": 0,
+ "target_id": 349,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 420,
+ "origin_id": 352,
+ "origin_slot": 1,
+ "target_id": 349,
+ "target_slot": 2,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 421,
+ "origin_id": 343,
+ "origin_slot": 0,
+ "target_id": 349,
+ "target_slot": 3,
+ "type": "SAMPLER"
+ },
+ {
+ "id": 422,
+ "origin_id": 342,
+ "origin_slot": 0,
+ "target_id": 349,
+ "target_slot": 4,
+ "type": "SIGMAS"
+ },
+ {
+ "id": 423,
+ "origin_id": 352,
+ "origin_slot": 2,
+ "target_id": 349,
+ "target_slot": 5,
+ "type": "LATENT"
+ },
+ {
+ "id": 424,
+ "origin_id": 365,
+ "origin_slot": 0,
+ "target_id": 349,
+ "target_slot": 8,
+ "type": "FLOAT"
+ },
+ {
+ "id": 425,
+ "origin_id": 346,
+ "origin_slot": 0,
+ "target_id": 350,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 426,
+ "origin_id": 361,
+ "origin_slot": 0,
+ "target_id": 350,
+ "target_slot": 2,
+ "type": "INT"
+ },
+ {
+ "id": 427,
+ "origin_id": 355,
+ "origin_slot": 0,
+ "target_id": 351,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 428,
+ "origin_id": 352,
+ "origin_slot": 0,
+ "target_id": 351,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 429,
+ "origin_id": 352,
+ "origin_slot": 1,
+ "target_id": 351,
+ "target_slot": 2,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 430,
+ "origin_id": 343,
+ "origin_slot": 0,
+ "target_id": 351,
+ "target_slot": 3,
+ "type": "SAMPLER"
+ },
+ {
+ "id": 431,
+ "origin_id": 342,
+ "origin_slot": 1,
+ "target_id": 351,
+ "target_slot": 4,
+ "type": "SIGMAS"
+ },
+ {
+ "id": 432,
+ "origin_id": 349,
+ "origin_slot": 0,
+ "target_id": 351,
+ "target_slot": 5,
+ "type": "LATENT"
+ },
+ {
+ "id": 433,
+ "origin_id": 365,
+ "origin_slot": 0,
+ "target_id": 351,
+ "target_slot": 8,
+ "type": "FLOAT"
+ },
+ {
+ "id": 434,
+ "origin_id": 354,
+ "origin_slot": 0,
+ "target_id": 352,
+ "target_slot": 0,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 435,
+ "origin_id": 341,
+ "origin_slot": 0,
+ "target_id": 352,
+ "target_slot": 1,
+ "type": "CONDITIONING"
+ },
+ {
+ "id": 436,
+ "origin_id": 339,
+ "origin_slot": 0,
+ "target_id": 352,
+ "target_slot": 2,
+ "type": "VAE"
+ },
+ {
+ "id": 437,
+ "origin_id": 353,
+ "origin_slot": 0,
+ "target_id": 352,
+ "target_slot": 3,
+ "type": "IMAGE"
+ },
+ {
+ "id": 438,
+ "origin_id": 338,
+ "origin_slot": 0,
+ "target_id": 354,
+ "target_slot": 0,
+ "type": "CLIP"
+ },
+ {
+ "id": 439,
+ "origin_id": 358,
+ "origin_slot": 0,
+ "target_id": 354,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 440,
+ "origin_id": 346,
+ "origin_slot": 0,
+ "target_id": 355,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 441,
+ "origin_id": 340,
+ "origin_slot": 0,
+ "target_id": 355,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 442,
+ "origin_id": 368,
+ "origin_slot": 0,
+ "target_id": 355,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 443,
+ "origin_id": 356,
+ "origin_slot": 1,
+ "target_id": 357,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 444,
+ "origin_id": 357,
+ "origin_slot": 0,
+ "target_id": 358,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 459,
+ "origin_id": 371,
+ "origin_slot": 0,
+ "target_id": 358,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 445,
+ "origin_id": 359,
+ "origin_slot": 0,
+ "target_id": 361,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 446,
+ "origin_id": 360,
+ "origin_slot": 0,
+ "target_id": 361,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 447,
+ "origin_id": 368,
+ "origin_slot": 0,
+ "target_id": 361,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 448,
+ "origin_id": 362,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 449,
+ "origin_id": 363,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 1,
+ "type": "INT"
+ },
+ {
+ "id": 450,
+ "origin_id": 368,
+ "origin_slot": 0,
+ "target_id": 364,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 451,
+ "origin_id": 367,
+ "origin_slot": 0,
+ "target_id": 365,
+ "target_slot": 0,
+ "type": "FLOAT"
+ },
+ {
+ "id": 452,
+ "origin_id": 366,
+ "origin_slot": 0,
+ "target_id": 365,
+ "target_slot": 1,
+ "type": "FLOAT"
+ },
+ {
+ "id": 453,
+ "origin_id": 368,
+ "origin_slot": 0,
+ "target_id": 365,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 454,
+ "origin_id": 344,
+ "origin_slot": 0,
+ "target_id": 369,
+ "target_slot": 0,
+ "type": "MODEL"
+ },
+ {
+ "id": 455,
+ "origin_id": 345,
+ "origin_slot": 0,
+ "target_id": 369,
+ "target_slot": 1,
+ "type": "MODEL"
+ },
+ {
+ "id": 456,
+ "origin_id": 368,
+ "origin_slot": 0,
+ "target_id": 369,
+ "target_slot": 2,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 457,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 353,
+ "target_slot": 0,
+ "type": "VIDEO"
+ },
+ {
+ "id": 458,
+ "origin_id": 348,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "VIDEO"
+ },
+ {
+ "id": 465,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 352,
+ "target_slot": 4,
+ "type": "IMAGE"
+ },
+ {
+ "id": 466,
+ "origin_id": -10,
+ "origin_slot": 2,
+ "target_id": 352,
+ "target_slot": 5,
+ "type": "IMAGE"
+ },
+ {
+ "id": 467,
+ "origin_id": -10,
+ "origin_slot": 3,
+ "target_id": 371,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 468,
+ "origin_id": -10,
+ "origin_slot": 4,
+ "target_id": 356,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 469,
+ "origin_id": -10,
+ "origin_slot": 5,
+ "target_id": 352,
+ "target_slot": 7,
+ "type": "INT"
+ },
+ {
+ "id": 470,
+ "origin_id": -10,
+ "origin_slot": 6,
+ "target_id": 352,
+ "target_slot": 8,
+ "type": "INT"
+ },
+ {
+ "id": 480,
+ "origin_id": -10,
+ "origin_slot": 7,
+ "target_id": 349,
+ "target_slot": 7,
+ "type": "INT"
+ },
+ {
+ "id": 481,
+ "origin_id": -10,
+ "origin_slot": 8,
+ "target_id": 352,
+ "target_slot": 9,
+ "type": "INT"
+ },
+ {
+ "id": 482,
+ "origin_id": -10,
+ "origin_slot": 9,
+ "target_id": 352,
+ "target_slot": 11,
+ "type": "INT"
+ },
+ {
+ "id": 488,
+ "origin_id": -10,
+ "origin_slot": 10,
+ "target_id": 368,
+ "target_slot": 0,
+ "type": "BOOLEAN"
+ },
+ {
+ "id": 489,
+ "origin_id": -10,
+ "origin_slot": 11,
+ "target_id": 344,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 490,
+ "origin_id": -10,
+ "origin_slot": 12,
+ "target_id": 346,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 491,
+ "origin_id": -10,
+ "origin_slot": 13,
+ "target_id": 345,
+ "target_slot": 1,
+ "type": "COMBO"
+ },
+ {
+ "id": 492,
+ "origin_id": -10,
+ "origin_slot": 13,
+ "target_id": 340,
+ "target_slot": 1,
+ "type": "COMBO"
+ },
+ {
+ "id": 493,
+ "origin_id": -10,
+ "origin_slot": 14,
+ "target_id": 338,
+ "target_slot": 0,
+ "type": "COMBO"
+ },
+ {
+ "id": 494,
+ "origin_id": -10,
+ "origin_slot": 15,
+ "target_id": 339,
+ "target_slot": 0,
+ "type": "COMBO"
+ }
+ ],
+ "extra": {},
+ "category": "Video generation and editing/Video Edit",
+ "description": "This subgraph uses Depth Anything 3 to predict spatially consistent geometry from any number of images or video frames, with or without known camera poses. It outputs depth maps, camera poses, and optionally 3D Gaussian parameters for novel view synthesis."
+ },
+ {
+ "id": "a98d3dcb-12b1-467c-94b8-723a89533c30",
+ "version": 1,
+ "state": {
+ "lastGroupId": 9,
+ "lastNodeId": 376,
+ "lastLinkId": 496,
+ "lastRerouteId": 0
+ },
+ "revision": 0,
+ "config": {},
+ "name": "Select Per-Line Text by Index",
+ "description": "Selects one line from multiline text by zero-based index for batch or list-driven prompt workflows.",
+ "inputNode": {
+ "id": -10,
+ "bounding": [
+ -990,
+ 8595,
+ 128,
+ 88
+ ]
+ },
+ "outputNode": {
+ "id": -20,
+ "bounding": [
+ 710,
+ 8585,
+ 128,
+ 68
+ ]
+ },
+ "inputs": [
+ {
+ "id": "75417d82-a934-4ac9-b667-d8dcd5a3bfb3",
+ "name": "text_per_line",
+ "type": "STRING",
+ "linkIds": [
+ 13
+ ],
+ "localized_name": "text_per_line",
+ "pos": [
+ -886,
+ 8619
+ ]
+ },
+ {
+ "id": "46e69a73-1804-4ca6-9175-31445bf0be96",
+ "name": "index",
+ "type": "INT",
+ "linkIds": [
+ 14
+ ],
+ "localized_name": "index",
+ "pos": [
+ -886,
+ 8639
+ ]
+ }
+ ],
+ "outputs": [
+ {
+ "id": "e34e8ad1-84d2-4bd2-a460-eb7de6067c10",
+ "name": "selected_line",
+ "type": "STRING",
+ "linkIds": [
+ 10
+ ],
+ "localized_name": "selected_line",
+ "pos": [
+ 734,
+ 8609
+ ]
+ }
+ ],
+ "widgets": [],
+ "nodes": [
+ {
+ "id": 372,
+ "type": "PreviewAny",
+ "pos": [
+ -500,
+ 8400
+ ],
+ "size": [
+ 230,
+ 180
+ ],
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "source",
+ "name": "source",
+ "type": "*",
+ "link": 1
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 6
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "PreviewAny",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": [
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 373,
+ "type": "RegexExtract",
+ "pos": [
+ -240,
+ 8740
+ ],
+ "size": [
+ 470,
+ 460
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "showAdvanced": false,
+ "inputs": [
+ {
+ "localized_name": "string",
+ "name": "string",
+ "type": "STRING",
+ "widget": {
+ "name": "string"
+ },
+ "link": 13
+ },
+ {
+ "localized_name": "regex_pattern",
+ "name": "regex_pattern",
+ "type": "STRING",
+ "widget": {
+ "name": "regex_pattern"
+ },
+ "link": 9
+ },
+ {
+ "localized_name": "mode",
+ "name": "mode",
+ "type": "COMBO",
+ "widget": {
+ "name": "mode"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "case_insensitive",
+ "name": "case_insensitive",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "case_insensitive"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "multiline",
+ "name": "multiline",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "multiline"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "dotall",
+ "name": "dotall",
+ "type": "BOOLEAN",
+ "widget": {
+ "name": "dotall"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "group_index",
+ "name": "group_index",
+ "type": "INT",
+ "widget": {
+ "name": "group_index"
+ },
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 10
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "RegexExtract",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": [
+ "You are a helpful assistant.\nYou are a helpful assistant specialized in text-to-image generation.\nYou are a helpful assistant specialized in text-to-video generation.\nYou are a helpful assistant specialized in image editing.\nYou are a helpful assistant specialized in subject-to-image generation.\nYou are a helpful assistant specialized in image-to-video generation.\nYou are a helpful assistant specialized in video editing.\nYou are a helpful assistant specialized in video editing on content propagation.\nYou are a helpful assistant specialized in video editing with reference.\nYou are a helpful assistant specialized in ads insertion.\nYou are a helpful assistant for editing. You may need to adjust the subject's action or position.\nYou are a helpful assistant for editing. You might need to adjust the video's style, lighting, colors, textures, and the subject's pose or action.",
+ "",
+ "First Group",
+ false,
+ false,
+ false,
+ 1
+ ]
+ },
+ {
+ "id": 374,
+ "type": "PrimitiveInt",
+ "pos": [
+ -810,
+ 8400
+ ],
+ "size": [
+ 270,
+ 110
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "value",
+ "name": "value",
+ "type": "INT",
+ "widget": {
+ "name": "value"
+ },
+ "link": 14
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "INT",
+ "name": "INT",
+ "type": "INT",
+ "links": [
+ 1
+ ]
+ }
+ ],
+ "title": "Int (line index)",
+ "properties": {
+ "Node name for S&R": "Int (line index)",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": [
+ 0,
+ "fixed"
+ ]
+ },
+ {
+ "id": 375,
+ "type": "StringReplace",
+ "pos": [
+ -240,
+ 8400
+ ],
+ "size": [
+ 400,
+ 280
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "localized_name": "string",
+ "name": "string",
+ "type": "STRING",
+ "widget": {
+ "name": "string"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "find",
+ "name": "find",
+ "type": "STRING",
+ "widget": {
+ "name": "find"
+ },
+ "link": null
+ },
+ {
+ "localized_name": "replace",
+ "name": "replace",
+ "type": "STRING",
+ "widget": {
+ "name": "replace"
+ },
+ "link": 6
+ }
+ ],
+ "outputs": [
+ {
+ "localized_name": "STRING",
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 9
+ ]
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "StringReplace",
+ "cnr_id": "comfy-core",
+ "ver": "0.19.0",
+ "ue_properties": {
+ "widget_ue_connectable": {},
+ "input_ue_unconnectable": {}
+ }
+ },
+ "widgets_values": [
+ "^(?:[^\\n]*\\n){index}([^\\n]*)(?:\\n|$)",
+ "index",
+ ""
+ ]
+ }
+ ],
+ "groups": [],
+ "links": [
+ {
+ "id": 1,
+ "origin_id": 374,
+ "origin_slot": 0,
+ "target_id": 372,
+ "target_slot": 0,
+ "type": "INT"
+ },
+ {
+ "id": 9,
+ "origin_id": 375,
+ "origin_slot": 0,
+ "target_id": 373,
+ "target_slot": 1,
+ "type": "STRING"
+ },
+ {
+ "id": 6,
+ "origin_id": 372,
+ "origin_slot": 0,
+ "target_id": 375,
+ "target_slot": 2,
+ "type": "STRING"
+ },
+ {
+ "id": 10,
+ "origin_id": 373,
+ "origin_slot": 0,
+ "target_id": -20,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 13,
+ "origin_id": -10,
+ "origin_slot": 0,
+ "target_id": 373,
+ "target_slot": 0,
+ "type": "STRING"
+ },
+ {
+ "id": 14,
+ "origin_id": -10,
+ "origin_slot": 1,
+ "target_id": 374,
+ "target_slot": 0,
+ "type": "INT"
+ }
+ ],
+ "extra": {
+ "ue_links": [],
+ "links_added_by_ue": []
+ }
+ }
+ ]
+ },
+ "extra": {
+ "BlueprintDescription": "This subgraph uses Depth Anything 3 to predict spatially consistent geometry from any number of images or video frames, with or without known camera poses. It outputs depth maps, camera poses, and optionally 3D Gaussian parameters for novel view synthesis."
+ }
+}
\ No newline at end of file
From c7b246edc4401307172b22eb257896c1b5eb6a24 Mon Sep 17 00:00:00 2001
From: EXA4V
Date: Wed, 17 Jun 2026 04:01:05 +0200
Subject: [PATCH 4/5] docs: add M3 and M4 to Apple Silicon supported chips list
(#14449)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 61036bd81..06f0d7050 100644
--- a/README.md
+++ b/README.md
@@ -309,7 +309,7 @@ After this you should have everything installed and can proceed to running Comfy
#### Apple Mac silicon
-You can install ComfyUI in Apple Mac silicon (M1 or M2) with any recent macOS version.
+You can install ComfyUI in Apple Mac silicon (M1, M2, M3 or M4) with any recent macOS version.
1. Install pytorch nightly. For instructions, read the [Accelerated PyTorch training on Mac](https://developer.apple.com/metal/pytorch/) Apple Developer guide (make sure to install the latest pytorch nightly).
1. Follow the [ComfyUI manual installation](#manual-install-windows-linux) instructions for Windows and Linux.
From f026b01ba576d98442839861a0eb0046bc2250d3 Mon Sep 17 00:00:00 2001
From: comfyanonymous <121283862+comfyanonymous@users.noreply.github.com>
Date: Tue, 16 Jun 2026 20:02:53 -0700
Subject: [PATCH 5/5] Update links to new comfyui desktop repo. (#14516)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 06f0d7050..c75353d36 100644
--- a/README.md
+++ b/README.md
@@ -140,7 +140,7 @@ ComfyUI follows a weekly release cycle targeting Monday but this regularly chang
- Commits outside of the stable release tags may be very unstable and break many custom nodes.
- Serves as the foundation for the desktop release
-2. **[ComfyUI Desktop](https://github.com/Comfy-Org/desktop)**
+2. **[ComfyUI Desktop](https://github.com/Comfy-Org/Comfy-Desktop)**
- Builds a new release using the latest stable core version
3. **[ComfyUI Frontend](https://github.com/Comfy-Org/ComfyUI_frontend)**