This commit is contained in:
peteromallet
2024-02-13 23:34:28 +01:00
parent 74c326a9a2
commit f688b4fa26
2 changed files with 427 additions and 424 deletions
+15 -12
View File
@@ -44,7 +44,7 @@ class BatchCreativeInterpolationNode:
"linear_strength_value": ("STRING", {"multiline": False, "default": "(0.3,0.4)"}), "linear_strength_value": ("STRING", {"multiline": False, "default": "(0.3,0.4)"}),
"dynamic_strength_values": ("STRING", {"multiline": True, "default": "(0.0,1.0),(0.0,1.0),(0.0,1.0),(0.0,1.0)"}), "dynamic_strength_values": ("STRING", {"multiline": True, "default": "(0.0,1.0),(0.0,1.0),(0.0,1.0),(0.0,1.0)"}),
"soft_scaled_cn_weights_multiplier": ("FLOAT", {"default": 0.85, "min": 0.0, "max": 10.0, "step": 0.1}), "soft_scaled_cn_weights_multiplier": ("FLOAT", {"default": 0.85, "min": 0.0, "max": 10.0, "step": 0.1}),
"buffer": ("INT", {"default": 4, "min": 0, "max": 16, "step": 1}), "buffer": ("INT", {"default": 4, "min": 1, "max": 16, "step": 1}),
"relative_cn_strength": ("FLOAT", {"default": 0.1, "min": 0.0, "max": 10.0, "step": 0.01}), "relative_cn_strength": ("FLOAT", {"default": 0.1, "min": 0.0, "max": 10.0, "step": 0.01}),
"relative_ipadapter_strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}), "relative_ipadapter_strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
"ipadapter_noise": ("FLOAT", {"default": 0.3, "min": 0.0, "max": 1.0, "step": 0.01}), "ipadapter_noise": ("FLOAT", {"default": 0.3, "min": 0.0, "max": 1.0, "step": 0.01}),
@@ -205,20 +205,22 @@ class BatchCreativeInterpolationNode:
return [linear_key_frame_influence_value for _ in range(number_of_outputs)] return [linear_key_frame_influence_value for _ in range(number_of_outputs)]
def calculate_weights(batch_index_from, batch_index_to, strength_from, strength_to, interpolation,revert_direction_at_midpoint, last_key_frame_position,i, number_of_items,buffer): def calculate_weights(batch_index_from, batch_index_to, strength_from, strength_to, interpolation,revert_direction_at_midpoint, last_key_frame_position,i, number_of_items,buffer):
# Initialize variables based on the position of the keyframe # Initialize variables based on the position of the keyframe
range_start = batch_index_from range_start = batch_index_from
range_end = batch_index_to range_end = batch_index_to
# if it's the first value, set influence range from 1.0 to 0.0 # if it's the first value, set influence range from 1.0 to 0.0
'''
if buffer > 0: if buffer > 0:
if i == 0: if i == 0:
range_start = 0 range_start = 0
elif i == 1: else:
range_start = buffer if batch_index_from <= buffer:
range_start = buffer
else: else:
if i == 1: if i == 1:
range_start = 0 range_start = 0
'''
if i == number_of_items - 1: if i == number_of_items - 1:
range_end = last_key_frame_position range_end = last_key_frame_position
@@ -346,15 +348,15 @@ class BatchCreativeInterpolationNode:
elif i == 1: # first image elif i == 1: # first image
# GET IMAGE AND KEYFRAME INFLUENCE VALUES # GET IMAGE AND KEYFRAME INFLUENCE VALUES
image = images[0] image = images[i-1]
key_frame_influence_from, key_frame_influence_to = key_frame_influence_values[0] key_frame_influence_from, key_frame_influence_to = key_frame_influence_values[i-1]
start_strength, mid_strength, end_strength = strength_values[0] start_strength, mid_strength, end_strength = strength_values[i-1]
keyframe_position = keyframe_positions[i] keyframe_position = keyframe_positions[i]
next_key_frame_position = keyframe_positions[i+1] next_key_frame_position = keyframe_positions[i+1]
batch_index_from = keyframe_position batch_index_from = keyframe_position
batch_index_to_excl = calculate_influence_frame_number(keyframe_position, next_key_frame_position, key_frame_influence_to) batch_index_to_excl = calculate_influence_frame_number(keyframe_position, next_key_frame_position, key_frame_influence_to)
weights, frame_numbers = calculate_weights(batch_index_from, batch_index_to_excl, mid_strength, end_strength, interpolation, False, last_key_frame_position, i, len(keyframe_positions), buffer) weights, frame_numbers = calculate_weights(batch_index_from, batch_index_to_excl, mid_strength, end_strength, interpolation, False, last_key_frame_position, i, len(keyframe_positions), buffer)
# interpolation = "ease-in" # interpolation = "ease-in"
@@ -368,9 +370,10 @@ class BatchCreativeInterpolationNode:
keyframe_position = keyframe_positions[i] keyframe_position = keyframe_positions[i]
previous_key_frame_position = keyframe_positions[i-1] previous_key_frame_position = keyframe_positions[i-1]
batch_index_from = calculate_influence_frame_number(keyframe_position, previous_key_frame_position, key_frame_influence_from) batch_index_from = calculate_influence_frame_number(keyframe_position, previous_key_frame_position, key_frame_influence_from)
batch_index_to_excl = keyframe_position
batch_index_to_excl = keyframe_position
weights, frame_numbers = calculate_weights(batch_index_from, batch_index_to_excl, start_strength, mid_strength, interpolation, False, last_key_frame_position, i, len(keyframe_positions), buffer) weights, frame_numbers = calculate_weights(batch_index_from, batch_index_to_excl, start_strength, mid_strength, interpolation, False, last_key_frame_position, i, len(keyframe_positions), buffer)
# interpolation = "ease-out" # interpolation = "ease-out"
+412 -412
View File
@@ -179,7 +179,7 @@
"hidden": false, "hidden": false,
"paused": false, "paused": false,
"params": { "params": {
"filename": "AD__00602.mp4", "filename": "AD__00686.mp4",
"subfolder": "steerable-motion", "subfolder": "steerable-motion",
"type": "output", "type": "output",
"format": "video/h264-mp4" "format": "video/h264-mp4"
@@ -312,72 +312,6 @@
"Node name for S&R": "GetImageSize+" "Node name for S&R": "GetImageSize+"
} }
}, },
{
"id": 401,
"type": "VHS_LoadImagesPath",
"pos": [
-1426.3693935183685,
-1835.5733992417513
],
"size": [
320,
194
],
"flags": {},
"order": 5,
"mode": 0,
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
737,
881,
908,
975
],
"shape": 3,
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
},
{
"name": "INT",
"type": "INT",
"links": [],
"shape": 3,
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "VHS_LoadImagesPath"
},
"widgets_values": {
"directory": "/workspace/ComfyUI/input//Dance into shadow/",
"image_load_cap": 0,
"skip_first_images": 0,
"select_every_nth": 1,
"choose folder to upload": "image",
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"frame_load_cap": 0,
"skip_first_images": 0,
"filename": "/workspace/ComfyUI/input//Dance into shadow/",
"type": "path",
"format": "folder",
"select_every_nth": 1
}
}
},
"color": "#332922",
"bgcolor": "#593930"
},
{ {
"id": 541, "id": 541,
"type": "PromptSchedule", "type": "PromptSchedule",
@@ -569,7 +503,7 @@
"1": 58 "1": 58
}, },
"flags": {}, "flags": {},
"order": 6, "order": 5,
"mode": 0, "mode": 0,
"inputs": [ "inputs": [
{ {
@@ -608,7 +542,7 @@
"1": 365.04229736328125 "1": 365.04229736328125
}, },
"flags": {}, "flags": {},
"order": 7, "order": 6,
"mode": 0, "mode": 0,
"inputs": [ "inputs": [
{ {
@@ -668,7 +602,7 @@
"1": 300 "1": 300
}, },
"flags": {}, "flags": {},
"order": 8, "order": 7,
"mode": 0, "mode": 0,
"inputs": [], "inputs": [],
"outputs": [], "outputs": [],
@@ -794,46 +728,6 @@
"split_index": 4 "split_index": 4
} }
}, },
{
"id": 552,
"type": "ADE_AnimateDiffLoRALoader",
"pos": [
2603,
-1261
],
"size": {
"0": 316.65606689453125,
"1": 82
},
"flags": {},
"order": 9,
"mode": 4,
"inputs": [
{
"name": "prev_motion_lora",
"type": "MOTION_LORA",
"link": null
}
],
"outputs": [
{
"name": "MOTION_LORA",
"type": "MOTION_LORA",
"links": [
1007
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ADE_AnimateDiffLoRALoader"
},
"widgets_values": [
"400_woman_dancing_temporal_unet.safetensors",
0.65
]
},
{ {
"id": 451, "id": 451,
"type": "Note Plus (mtb)", "type": "Note Plus (mtb)",
@@ -854,7 +748,7 @@
"1": 147.40196228027344 "1": 147.40196228027344
}, },
"flags": {}, "flags": {},
"order": 10, "order": 8,
"mode": 0, "mode": 0,
"inputs": [], "inputs": [],
"outputs": [], "outputs": [],
@@ -889,7 +783,7 @@
"1": 163.1022491455078 "1": 163.1022491455078
}, },
"flags": {}, "flags": {},
"order": 11, "order": 9,
"mode": 0, "mode": 0,
"inputs": [], "inputs": [],
"outputs": [], "outputs": [],
@@ -924,7 +818,7 @@
"1": 390 "1": 390
}, },
"flags": {}, "flags": {},
"order": 12, "order": 10,
"mode": 0, "mode": 0,
"inputs": [], "inputs": [],
"outputs": [], "outputs": [],
@@ -1037,59 +931,6 @@
0.675 0.675
] ]
}, },
{
"id": 548,
"type": "BatchValueScheduleLatentInput",
"pos": [
2057,
-2119
],
"size": {
"0": 352.79998779296875,
"1": 140
},
"flags": {},
"order": 33,
"mode": 0,
"inputs": [
{
"name": "num_latents",
"type": "LATENT",
"link": 1006
}
],
"outputs": [
{
"name": "FLOAT",
"type": "FLOAT",
"links": [
998
],
"shape": 3,
"slot_index": 0
},
{
"name": "INT",
"type": "INT",
"links": null,
"shape": 3,
"slot_index": 1
},
{
"name": "LATENT",
"type": "LATENT",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "BatchValueScheduleLatentInput"
},
"widgets_values": [
"0:(1.3)",
true
]
},
{ {
"id": 547, "id": 547,
"type": "ADE_UseEvolvedSampling", "type": "ADE_UseEvolvedSampling",
@@ -1258,46 +1099,6 @@
], ],
"shape": 2 "shape": 2
}, },
{
"id": 536,
"type": "ADE_AnimateDiffLoRALoader",
"pos": [
3002,
-1263
],
"size": {
"0": 308.66558837890625,
"1": 82
},
"flags": {},
"order": 25,
"mode": 4,
"inputs": [
{
"name": "prev_motion_lora",
"type": "MOTION_LORA",
"link": 1007
}
],
"outputs": [
{
"name": "MOTION_LORA",
"type": "MOTION_LORA",
"links": [
1004
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ADE_AnimateDiffLoRALoader"
},
"widgets_values": [
"400_woman_dancing_temporal_unet.safetensors",
0.4
]
},
{ {
"id": 436, "id": 436,
"type": "PreviewImage", "type": "PreviewImage",
@@ -1332,7 +1133,7 @@
], ],
"size": { "size": {
"0": 785.2230224609375, "0": 785.2230224609375,
"1": 213.7488555908203 "1": 246
}, },
"flags": {}, "flags": {},
"order": 23, "order": 23,
@@ -1368,7 +1169,7 @@
"1": 260 "1": 260
}, },
"flags": {}, "flags": {},
"order": 13, "order": 11,
"mode": 0, "mode": 0,
"inputs": [], "inputs": [],
"outputs": [], "outputs": [],
@@ -1403,7 +1204,7 @@
"1": 256.3551330566406 "1": 256.3551330566406
}, },
"flags": {}, "flags": {},
"order": 14, "order": 12,
"mode": 0, "mode": 0,
"inputs": [], "inputs": [],
"outputs": [], "outputs": [],
@@ -1438,7 +1239,7 @@
"1": 347.8489685058594 "1": 347.8489685058594
}, },
"flags": {}, "flags": {},
"order": 15, "order": 13,
"mode": 0, "mode": 0,
"inputs": [], "inputs": [],
"outputs": [], "outputs": [],
@@ -1473,7 +1274,7 @@
"1": 265.0110778808594 "1": 265.0110778808594
}, },
"flags": {}, "flags": {},
"order": 16, "order": 14,
"mode": 0, "mode": 0,
"inputs": [], "inputs": [],
"outputs": [], "outputs": [],
@@ -1508,7 +1309,7 @@
"1": 147.5499725341797 "1": 147.5499725341797
}, },
"flags": {}, "flags": {},
"order": 17, "order": 15,
"mode": 0, "mode": 0,
"inputs": [], "inputs": [],
"outputs": [], "outputs": [],
@@ -1523,62 +1324,6 @@
"bgcolor": "#335", "bgcolor": "#335",
"shape": 1 "shape": 1
}, },
{
"id": 470,
"type": "LoraLoader",
"pos": [
-725,
-1357
],
"size": {
"0": 314.343994140625,
"1": 126
},
"flags": {},
"order": 22,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 896
},
{
"name": "clip",
"type": "CLIP",
"link": 893
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
909
],
"shape": 3,
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
994,
996
],
"shape": 3,
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "LoraLoader"
},
"widgets_values": [
"v3_sd15_adapter.ckpt",
0.4,
0.25
]
},
{ {
"id": 467, "id": 467,
"type": "ACN_SparseCtrlLoaderAdvanced", "type": "ACN_SparseCtrlLoaderAdvanced",
@@ -1675,6 +1420,233 @@
"Node name for S&R": "ACN_SparseCtrlRGBPreprocessor" "Node name for S&R": "ACN_SparseCtrlRGBPreprocessor"
} }
}, },
{
"id": 556,
"type": "Note Plus (mtb)",
"pos": {
"0": -780,
"1": -1948,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0
},
"size": {
"0": 411.70318603515625,
"1": 196.17578125
},
"flags": {},
"order": 16,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Note+ (mtb)",
"properties": {},
"widgets_values": [
"## Tweak Sparse Ctrl end_percent to improve adherence ⮕\n<br>\nI'd recommend that you increase the `end_percent` to the right to improve adherence. Higher values tend to cause flickering. However, increase the adapter strength below along with it below to fix this to an extend. Increasing `end_percent` above 0.5 will also cause issues.",
"markdown",
""
],
"color": "#223",
"bgcolor": "#335",
"shape": 1
},
{
"id": 445,
"type": "Note Plus (mtb)",
"pos": {
"0": -1594,
"1": -1461,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0
},
"size": {
"0": 650,
"1": 1040
},
"flags": {},
"order": 17,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Note+ (mtb)",
"properties": {},
"widgets_values": [
"# A brief guide\n\n<br>\n\n## Philosophy for getting the most from this:\n\n<br>\n\nThis isn’t a tool like text to video that will perform well out of the box - it’s more like a paint brush, an artistic tool that you need to figure out how to get the best from. \n\n<br>\n\nThrough trial and error, you'll need to build an understanding of how the motion and settings work, what its limitations are, which inputs work best with it, etc.\n\n<br>\n\nIf you can figure out how to wield it, this approach can provide enough control for you to make beautiful things that match your imagination precisely.\n\n<br>\n\n## How to use this:\n<br> \n1.Select a folder with the images in them above. The most important thing that will influence the quality of your creation is the input images.\n\n<br> \n\n2.Try the basic settings to start. Based on the resulting generation, try to understand what happened - you can learn about the settings and observe the graphs to the right.\n\n<br>\n\n3.Tweak the settings until you achieve your desired effect. \n\n<br>\n\n## What this will &amp; won't be suitable for:\n\nI believe that this will be good for a wide range of storytelling-driven and abstract motion.\n\nHowever, it probably won't be good for complex motion - other approaches like vid2vid are far more suitable for this.\n\n## If you're having problems:\n\n<br>\n\nFirst, download the latest version of this workflow from [here](https://raw.githubusercontent.com/peteromallet/steerable-motion/main/demo/creative_interpolation_example.json) and get the latest version of the node from Comfy Manager.\n\n<br>\n\nIf that doesn't work, drop into [our Discord](https://discord.gg/V72vk8T67n) and share your problem and I'll try to help ASAP.\n\n<br>\n\n\n## Want to join a community of people who are pushing open source models to their technical and artistic limits?\n\n<br>\n\nYou're welcome to join [our Discord](https://discord.gg/UJf6aum7WZ).\n\n<br>\n\nPlease share anything you generate in the steerable-motion channel.",
"markdown",
""
],
"color": "#223",
"bgcolor": "#335",
"shape": 1
},
{
"id": 456,
"type": "Note Plus (mtb)",
"pos": {
"0": 212,
"1": -940,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0
},
"size": {
"0": 210,
"1": 186.09225463867188
},
"flags": {},
"order": 18,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Note+ (mtb)",
"properties": {},
"widgets_values": [
"## ⬅ Download the models from Comfy Manager\n<br>\nSee details on where to find them on the left.",
"markdown",
""
],
"color": "#223",
"bgcolor": "#335",
"shape": 1
},
{
"id": 470,
"type": "LoraLoader",
"pos": [
-725,
-1357
],
"size": {
"0": 314.343994140625,
"1": 126
},
"flags": {},
"order": 22,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 896
},
{
"name": "clip",
"type": "CLIP",
"link": 893
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
909
],
"shape": 3,
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
994,
996
],
"shape": 3,
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "LoraLoader"
},
"widgets_values": [
"v3_sd15_adapter.ckpt",
0.05,
0.25
]
},
{
"id": 401,
"type": "VHS_LoadImagesPath",
"pos": [
-1426,
-1836
],
"size": [
320,
194
],
"flags": {},
"order": 19,
"mode": 0,
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
737,
881,
908,
975
],
"shape": 3,
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
},
{
"name": "INT",
"type": "INT",
"links": [],
"shape": 3,
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "VHS_LoadImagesPath"
},
"widgets_values": {
"directory": "/workspace/ComfyUI/input//Disappearing/",
"image_load_cap": 0,
"skip_first_images": 0,
"select_every_nth": 1,
"choose folder to upload": "image",
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"frame_load_cap": 0,
"skip_first_images": 0,
"filename": "/workspace/ComfyUI/input//Disappearing/",
"type": "path",
"format": "folder",
"select_every_nth": 1
}
}
},
"color": "#332922",
"bgcolor": "#593930"
},
{ {
"id": 468, "id": 468,
"type": "ACN_AdvancedControlNetApply", "type": "ACN_AdvancedControlNetApply",
@@ -1770,154 +1742,14 @@
"widgets_values": [ "widgets_values": [
0.6, 0.6,
0, 0,
0.2 0.05
] ]
}, },
{
"id": 556,
"type": "Note Plus (mtb)",
"pos": {
"0": -780,
"1": -1948,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0
},
"size": {
"0": 411.70318603515625,
"1": 196.17578125
},
"flags": {},
"order": 18,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Note+ (mtb)",
"properties": {},
"widgets_values": [
"## Tweak Sparse Ctrl end_percent to improve adherence ⮕\n<br>\nI'd recommend that you increase the `end_percent` to the right to improve adherence. Higher values tend to cause flickering. However, increase the adapter strength below along with it below to fix this to an extend. Increasing `end_percent` above 0.5 will also cause issues.",
"markdown",
""
],
"color": "#223",
"bgcolor": "#335",
"shape": 1
},
{
"id": 445,
"type": "Note Plus (mtb)",
"pos": {
"0": -1594,
"1": -1461,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0
},
"size": {
"0": 650,
"1": 1040
},
"flags": {},
"order": 19,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Note+ (mtb)",
"properties": {},
"widgets_values": [
"# A brief guide\n\n<br>\n\n## Philosophy for getting the most from this:\n\n<br>\n\nThis isn’t a tool like text to video that will perform well out of the box - it’s more like a paint brush, an artistic tool that you need to figure out how to get the best from. \n\n<br>\n\nThrough trial and error, you'll need to build an understanding of how the motion and settings work, what its limitations are, which inputs work best with it, etc.\n\n<br>\n\nIf you can figure out how to wield it, this approach can provide enough control for you to make beautiful things that match your imagination precisely.\n\n<br>\n\n## How to use this:\n<br> \n1.Select a folder with the images in them above. The most important thing that will influence the quality of your creation is the input images.\n\n<br> \n\n2.Try the basic settings to start. Based on the resulting generation, try to understand what happened - you can learn about the settings and observe the graphs to the right.\n\n<br>\n\n3.Tweak the settings until you achieve your desired effect. \n\n<br>\n\n## What this will &amp; won't be suitable for:\n\nI believe that this will be good for a wide range of storytelling-driven and abstract motion.\n\nHowever, it probably won't be good for complex motion - other approaches like vid2vid are far more suitable for this.\n\n## If you're having problems:\n\n<br>\n\nFirst, download the latest version of this workflow from [here](https://raw.githubusercontent.com/peteromallet/steerable-motion/main/demo/creative_interpolation_example.json) and get the latest version of the node from Comfy Manager.\n\n<br>\n\nIf that doesn't work, drop into [our Discord](https://discord.gg/V72vk8T67n) and share your problem and I'll try to help ASAP.\n\n<br>\n\n\n## Want to join a community of people who are pushing open source models to their technical and artistic limits?\n\n<br>\n\nYou're welcome to join [our Discord](https://discord.gg/UJf6aum7WZ).\n\n<br>\n\nPlease share anything you generate in the steerable-motion channel.",
"markdown",
""
],
"color": "#223",
"bgcolor": "#335",
"shape": 1
},
{
"id": 456,
"type": "Note Plus (mtb)",
"pos": {
"0": 212,
"1": -940,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0
},
"size": {
"0": 210,
"1": 186.09225463867188
},
"flags": {},
"order": 20,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Note+ (mtb)",
"properties": {},
"widgets_values": [
"## ⬅ Download the models from Comfy Manager\n<br>\nSee details on where to find them on the left.",
"markdown",
""
],
"color": "#223",
"bgcolor": "#335",
"shape": 1
},
{
"id": 551,
"type": "Note Plus (mtb)",
"pos": {
"0": 3001,
"1": -1142,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0
},
"size": {
"0": 322.51995849609375,
"1": 163.89112854003906
},
"flags": {},
"order": 21,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Note+ (mtb)",
"properties": {},
"widgets_values": [
"## You can add Motion LoRAs above\n<br>\nThese are great for complex movements. Just un-bypass the nodes. You can learn more about training them [here](https://github.com/ExponentialML/AnimateDiff-MotionDirector).",
"markdown",
""
],
"color": "#223",
"bgcolor": "#335",
"shape": 1
},
{ {
"id": 207, "id": 207,
"type": "KSampler Adv. (Efficient)", "type": "KSampler Adv. (Efficient)",
"pos": [ "pos": [
1455, 1460,
-2190 -2190
], ],
"size": { "size": {
@@ -2030,12 +1862,180 @@
"bgcolor": "#333355", "bgcolor": "#333355",
"shape": 1 "shape": 1
}, },
{
"id": 548,
"type": "BatchValueScheduleLatentInput",
"pos": [
2057,
-2119
],
"size": {
"0": 352.79998779296875,
"1": 140
},
"flags": {},
"order": 33,
"mode": 0,
"inputs": [
{
"name": "num_latents",
"type": "LATENT",
"link": 1006
}
],
"outputs": [
{
"name": "FLOAT",
"type": "FLOAT",
"links": [
998
],
"shape": 3,
"slot_index": 0
},
{
"name": "INT",
"type": "INT",
"links": null,
"shape": 3,
"slot_index": 1
},
{
"name": "LATENT",
"type": "LATENT",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "BatchValueScheduleLatentInput"
},
"widgets_values": [
"0:(1.3)",
true
]
},
{
"id": 552,
"type": "ADE_AnimateDiffLoRALoader",
"pos": [
2603,
-1261
],
"size": {
"0": 316.65606689453125,
"1": 82
},
"flags": {},
"order": 20,
"mode": 4,
"inputs": [
{
"name": "prev_motion_lora",
"type": "MOTION_LORA",
"link": null
}
],
"outputs": [
{
"name": "MOTION_LORA",
"type": "MOTION_LORA",
"links": [
1007
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ADE_AnimateDiffLoRALoader"
},
"widgets_values": [
"400_woman_dancing_temporal_un222et.safetensors",
0
]
},
{
"id": 536,
"type": "ADE_AnimateDiffLoRALoader",
"pos": [
3000,
-1268
],
"size": {
"0": 308.66558837890625,
"1": 82
},
"flags": {},
"order": 25,
"mode": 0,
"inputs": [
{
"name": "prev_motion_lora",
"type": "MOTION_LORA",
"link": 1007
}
],
"outputs": [
{
"name": "MOTION_LORA",
"type": "MOTION_LORA",
"links": [
1004
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ADE_AnimateDiffLoRALoader"
},
"widgets_values": [
"400_woman_dancing_temporal_unet.safetensors",
0.3
]
},
{
"id": 551,
"type": "Note Plus (mtb)",
"pos": {
"0": 3001,
"1": -1142,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0
},
"size": {
"0": 322.51995849609375,
"1": 163.89112854003906
},
"flags": {},
"order": 21,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Note+ (mtb)",
"properties": {},
"widgets_values": [
"## You can add Motion LoRAs above\n<br>\nThese are great for complex movements. Just un-bypass the nodes. You can learn more about training them [here](https://github.com/ExponentialML/AnimateDiff-MotionDirector).",
"markdown",
""
],
"color": "#223",
"bgcolor": "#335",
"shape": 1
},
{ {
"id": 473, "id": 473,
"type": "BatchCreativeInterpolation", "type": "BatchCreativeInterpolation",
"pos": [ "pos": [
-271, -260,
-608 -651
], ],
"size": { "size": {
"0": 378.3703308105469, "0": 378.3703308105469,