diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..c10c889 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +assets/* export-ignore \ No newline at end of file diff --git a/assets/time.gif b/assets/time.gif new file mode 100644 index 0000000..57e1ac7 Binary files /dev/null and b/assets/time.gif differ diff --git a/examples/mask_examples.json b/examples/mask_examples.json index 8f4c141..dad096c 100644 --- a/examples/mask_examples.json +++ b/examples/mask_examples.json @@ -1,6 +1,6 @@ { - "last_node_id": 227, - "last_link_id": 325, + "last_node_id": 249, + "last_link_id": 391, "nodes": [ { "id": 103, @@ -15,7 +15,7 @@ }, "flags": {}, "order": 0, - "mode": 0, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -68,7 +68,7 @@ "1": 130 }, "flags": {}, - "order": 26, + "order": 29, "mode": 0, "inputs": [ { @@ -130,7 +130,7 @@ 26 ], "flags": {}, - "order": 45, + "order": 53, "mode": 0, "inputs": [ { @@ -172,8 +172,8 @@ "1": 270 }, "flags": {}, - "order": 40, - "mode": 0, + "order": 44, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -225,8 +225,8 @@ "1": 270 }, "flags": {}, - "order": 32, - "mode": 0, + "order": 33, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -279,8 +279,8 @@ "1": 270 }, "flags": {}, - "order": 19, - "mode": 0, + "order": 18, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -334,7 +334,7 @@ }, "flags": {}, "order": 1, - "mode": 0, + "mode": 4, "outputs": [ { "name": "EMITTER_MOVEMENT", @@ -369,8 +369,8 @@ "1": 270 }, "flags": {}, - "order": 20, - "mode": 0, + "order": 19, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -424,7 +424,7 @@ }, "flags": {}, "order": 2, - "mode": 0, + "mode": 4, "outputs": [ { "name": "EMITTER_MOVEMENT", @@ -459,8 +459,8 @@ "1": 270 }, "flags": {}, - "order": 21, - "mode": 0, + "order": 20, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -513,7 +513,7 @@ }, "flags": {}, "order": 3, - "mode": 0, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -567,7 +567,7 @@ }, "flags": {}, "order": 4, - "mode": 0, + "mode": 4, "inputs": [ { "name": "previous_vortex", @@ -606,11 +606,11 @@ ], "size": [ 410, - 909 + 310 ], "flags": {}, - "order": 74, - "mode": 0, + "order": 83, + "mode": 4, "inputs": [ { "name": "images", @@ -681,7 +681,7 @@ }, "flags": {}, "order": 5, - "mode": 0, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -734,8 +734,8 @@ "1": 270 }, "flags": {}, - "order": 22, - "mode": 0, + "order": 21, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -790,8 +790,8 @@ 310 ], "flags": {}, - "order": 73, - "mode": 0, + "order": 82, + "mode": 4, "inputs": [ { "name": "images", @@ -858,11 +858,11 @@ ], "size": [ 410, - 909 + 310 ], "flags": {}, - "order": 71, - "mode": 0, + "order": 80, + "mode": 4, "inputs": [ { "name": "images", @@ -932,8 +932,8 @@ "1": 130 }, "flags": {}, - "order": 33, - "mode": 0, + "order": 34, + "mode": 4, "inputs": [ { "name": "image", @@ -975,7 +975,7 @@ }, "flags": {}, "order": 6, - "mode": 0, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -1028,8 +1028,8 @@ "1": 270 }, "flags": {}, - "order": 23, - "mode": 0, + "order": 22, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -1081,8 +1081,8 @@ "1": 154 }, "flags": {}, - "order": 24, - "mode": 0, + "order": 23, + "mode": 4, "inputs": [ { "name": "previous_well", @@ -1124,7 +1124,7 @@ }, "flags": {}, "order": 7, - "mode": 0, + "mode": 4, "inputs": [ { "name": "previous_well", @@ -1166,8 +1166,8 @@ 310 ], "flags": {}, - "order": 78, - "mode": 0, + "order": 86, + "mode": 4, "inputs": [ { "name": "images", @@ -1233,11 +1233,11 @@ 1781 ], "size": [ - 235.1999969482422, - 286 + 240, + 630 ], "flags": {}, - "order": 25, + "order": 24, "mode": 0, "inputs": [ { @@ -1331,7 +1331,7 @@ "1": 130 }, "flags": {}, - "order": 35, + "order": 39, "mode": 0, "inputs": [ { @@ -1381,7 +1381,8 @@ "type": "INT", "links": [ 182, - 231 + 231, + 328 ], "slot_index": 0, "widget": { @@ -1397,42 +1398,6 @@ "fixed" ] }, - { - "id": 136, - "type": "PrimitiveNode", - "pos": [ - -2551, - 1058 - ], - "size": { - "0": 210, - "1": 82 - }, - "flags": {}, - "order": 9, - "mode": 0, - "outputs": [ - { - "name": "INT", - "type": "INT", - "links": [ - 183, - 232 - ], - "slot_index": 0, - "widget": { - "name": "height" - } - } - ], - "properties": { - "Run widget replace on values": false - }, - "widgets_values": [ - 768, - "fixed" - ] - }, { "id": 130, "type": "PrimitiveNode", @@ -1445,7 +1410,7 @@ "1": 82 }, "flags": {}, - "order": 10, + "order": 9, "mode": 0, "outputs": [ { @@ -1469,113 +1434,6 @@ "fixed" ] }, - { - "id": 138, - "type": "VHS_VideoCombine", - "pos": [ - 370, - 877 - ], - "size": [ - 315, - 310 - ], - "flags": {}, - "order": 80, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 193 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00094.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 139, - "type": "MaskToImage", - "pos": [ - -105, - 1006 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 63, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 267 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 193 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, { "id": 181, "type": "ParticleEmitter", @@ -1588,8 +1446,8 @@ "1": 270 }, "flags": {}, - "order": 27, - "mode": 0, + "order": 25, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -1642,8 +1500,8 @@ "1": 181.7848663330078 }, "flags": {}, - "order": 11, - "mode": 0, + "order": 10, + "mode": 4, "outputs": [ { "name": "EMITTER_MOVEMENT", @@ -1679,8 +1537,8 @@ "1": 181.7848663330078 }, "flags": {}, - "order": 12, - "mode": 0, + "order": 11, + "mode": 4, "outputs": [ { "name": "EMITTER_MOVEMENT", @@ -1716,7 +1574,7 @@ }, "flags": {}, "order": 36, - "mode": 0, + "mode": 4, "inputs": [ { "name": "previous_emitter", @@ -1766,11 +1624,11 @@ ], "size": [ 315, - 310 + 738.84375 ], "flags": {}, - "order": 67, - "mode": 0, + "order": 74, + "mode": 4, "inputs": [ { "name": "images", @@ -1840,8 +1698,8 @@ "1": 26 }, "flags": {}, - "order": 53, - "mode": 0, + "order": 59, + "mode": 4, "inputs": [ { "name": "mask", @@ -1876,8 +1734,8 @@ 310 ], "flags": {}, - "order": 70, - "mode": 0, + "order": 77, + "mode": 4, "inputs": [ { "name": "images", @@ -1947,8 +1805,8 @@ "1": 298 }, "flags": {}, - "order": 44, - "mode": 0, + "order": 48, + "mode": 4, "inputs": [ { "name": "masks", @@ -1984,77 +1842,6 @@ 0.39 ] }, - { - "id": 190, - "type": "VHS_VideoCombine", - "pos": [ - 2430, - 5520 - ], - "size": [ - 315, - 310 - ], - "flags": {}, - "order": 86, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 253 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00112.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, { "id": 185, "type": "MaskMorph", @@ -2067,8 +1854,8 @@ "1": 322 }, "flags": {}, - "order": 42, - "mode": 0, + "order": 46, + "mode": 4, "inputs": [ { "name": "masks", @@ -2117,7 +1904,7 @@ "1": 394 }, "flags": {}, - "order": 13, + "order": 12, "mode": 0, "outputs": [ { @@ -2151,238 +1938,6 @@ 0 ] }, - { - "id": 199, - "type": "MaskWarp", - "pos": [ - 1184, - 6469 - ], - "size": { - "0": 315, - "1": 346 - }, - "flags": {}, - "order": 28, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 263 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 265 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskWarp" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 0, - 0, - "ease_in_out", - false, - "perlin", - 0.05, - 298.90000000000003, - 3 - ] - }, - { - "id": 203, - "type": "MaskWarp", - "pos": [ - -298, - 1144 - ], - "size": { - "0": 315, - "1": 346 - }, - "flags": {}, - "order": 48, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 266 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 267, - 268 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskWarp" - }, - "widgets_values": [ - 1, - false, - 0, - 0, - 0, - 0, - 0, - "ease_in_out", - false, - "perlin", - 0.05, - 298.90000000000003, - 3 - ] - }, - { - "id": 179, - "type": "ParticleEmitter", - "pos": [ - 2455, - 1141 - ], - "size": { - "0": 285.6000061035156, - "1": 270 - }, - "flags": {}, - "order": 46, - "mode": 0, - "inputs": [ - { - "name": "previous_emitter", - "type": "PARTICLE_EMITTER", - "link": 242, - "slot_index": 0 - }, - { - "name": "emitter_movement", - "type": "EMITTER_MOVEMENT", - "link": null, - "slot_index": 1 - } - ], - "outputs": [ - { - "name": "PARTICLE_EMITTER", - "type": "PARTICLE_EMITTER", - "links": [ - 241 - ], - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "ParticleEmitter" - }, - "widgets_values": [ - 0, - 0.48, - 0, - 7, - 17.6, - 351, - 16.8, - "(255,0,0)", - 0.21 - ] - }, - { - "id": 133, - "type": "TextMaskNode", - "pos": [ - -1135, - 1079 - ], - "size": { - "0": 315, - "1": 342 - }, - "flags": {}, - "order": 29, - "mode": 0, - "inputs": [ - { - "name": "width", - "type": "INT", - "link": 232, - "widget": { - "name": "width" - } - }, - { - "name": "height", - "type": "INT", - "link": 231, - "widget": { - "name": "height" - } - }, - { - "name": "batch_size", - "type": "INT", - "link": 262, - "widget": { - "name": "batch_size" - } - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 246 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "TextMaskNode" - }, - "widgets_values": [ - 768, - 512, - "RyanOnTheInside", - "Arial", - 50, - "(255,255,255)", - "(0,0,0)", - 0.5, - 0.5, - 0, - 1, - 30 - ] - }, { "id": 198, "type": "PrimitiveNode", @@ -2395,14 +1950,16 @@ "1": 82 }, "flags": {}, - "order": 14, + "order": 13, "mode": 0, "outputs": [ { "name": "INT", "type": "INT", "links": [ - 262 + 262, + 329, + 363 ], "slot_index": 0, "widget": { @@ -2418,56 +1975,6 @@ "fixed" ] }, - { - "id": 176, - "type": "MaskMorph", - "pos": [ - -704, - 1137 - ], - "size": { - "0": 315, - "1": 322 - }, - "flags": {}, - "order": 38, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 246 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 266 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskMorph" - }, - "widgets_values": [ - 0.34, - false, - 0, - 0, - 0, - 0, - 0, - "ease_in_out", - true, - "dilate", - 3, - 4 - ] - }, { "id": 164, "type": "VHS_VideoCombine", @@ -2480,8 +1987,8 @@ 310 ], "flags": {}, - "order": 77, - "mode": 0, + "order": 85, + "mode": 4, "inputs": [ { "name": "images", @@ -2551,8 +2058,8 @@ "1": 454 }, "flags": {}, - "order": 58, - "mode": 0, + "order": 66, + "mode": 4, "inputs": [ { "name": "masks", @@ -2626,8 +2133,8 @@ "1": 454 }, "flags": {}, - "order": 62, - "mode": 0, + "order": 70, + "mode": 4, "inputs": [ { "name": "masks", @@ -2662,8 +2169,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 221, - 282 + 221 ], "shape": 3, "slot_index": 1 @@ -2702,8 +2208,8 @@ "1": 454 }, "flags": {}, - "order": 61, - "mode": 0, + "order": 69, + "mode": 4, "inputs": [ { "name": "masks", @@ -2765,52 +2271,6 @@ 0.68 ] }, - { - "id": 213, - "type": "TextMaskNode", - "pos": [ - 7802.457575074447, - -3784.9684488571847 - ], - "size": { - "0": 315, - "1": 342 - }, - "flags": {}, - "order": 15, - "mode": 0, - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "TextMaskNode" - }, - "widgets_values": [ - 512, - 512, - "Hello World", - "Arial", - 32, - "(255,255,255)", - "(0,0,0)", - 0.5, - 0.5, - 0, - 0.9, - 1 - ] - }, { "id": 104, "type": "VHS_VideoCombine", @@ -2823,8 +2283,8 @@ 310 ], "flags": {}, - "order": 51, - "mode": 0, + "order": 57, + "mode": 4, "inputs": [ { "name": "images", @@ -2894,8 +2354,8 @@ "1": 454 }, "flags": {}, - "order": 59, - "mode": 0, + "order": 67, + "mode": 4, "inputs": [ { "name": "masks", @@ -2930,8 +2390,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 194, - 286 + 194 ], "shape": 3, "slot_index": 1 @@ -2970,8 +2429,8 @@ "1": 454 }, "flags": {}, - "order": 56, - "mode": 0, + "order": 64, + "mode": 4, "inputs": [ { "name": "masks", @@ -3006,8 +2465,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 157, - 319 + 157 ], "shape": 3, "slot_index": 1 @@ -3046,8 +2504,8 @@ "1": 454 }, "flags": {}, - "order": 41, - "mode": 0, + "order": 45, + "mode": 4, "inputs": [ { "name": "masks", @@ -3083,8 +2541,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 145, - 289 + 145 ], "shape": 3, "slot_index": 1 @@ -3115,16 +2572,16 @@ "id": 172, "type": "VHS_VideoCombine", "pos": [ - 1217, - 3154 + 1181.2037879868071, + 3343.3521874804596 ], "size": [ 315, 310 ], "flags": {}, - "order": 83, - "mode": 0, + "order": 78, + "mode": 4, "inputs": [ { "name": "images", @@ -3186,16 +2643,16 @@ "id": 208, "type": "OpticalFlowMaskModulation", "pos": [ - 299, - 3373 + 263.2037879868053, + 3562.3521874804596 ], "size": { "0": 386.3999938964844, "1": 366 }, "flags": {}, - "order": 49, - "mode": 0, + "order": 51, + "mode": 4, "inputs": [ { "name": "masks", @@ -3249,7 +2706,7 @@ "1": 130 }, "flags": {}, - "order": 34, + "order": 35, "mode": 0, "inputs": [ { @@ -3285,16 +2742,16 @@ "id": 218, "type": "VHS_VideoCombine", "pos": [ - 1612, - 3717 + 1576.2037879868071, + 3906.352187480455 ], "size": [ 315, 310 ], "flags": {}, - "order": 84, - "mode": 0, + "order": 79, + "mode": 4, "inputs": [ { "name": "images", @@ -3356,16 +2813,16 @@ "id": 171, "type": "MaskToImage", "pos": [ - 837, - 3335 + 801.2037879868059, + 3524.3521874804596 ], "size": { "0": 210, "1": 26 }, "flags": {}, - "order": 65, - "mode": 0, + "order": 62, + "mode": 4, "inputs": [ { "name": "mask", @@ -3378,8 +2835,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 229, - 306 + 229 ], "shape": 3, "slot_index": 0 @@ -3393,16 +2849,16 @@ "id": 204, "type": "MaskToImage", "pos": [ - 762, - 3944 + 726.2037879868059, + 4133.35218748046 ], "size": { "0": 296.50048828125, "1": 26 }, "flags": {}, - "order": 66, - "mode": 0, + "order": 63, + "mode": 4, "inputs": [ { "name": "mask", @@ -3415,8 +2871,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 297, - 307 + 297 ], "shape": 3, "slot_index": 0 @@ -3430,15 +2885,15 @@ "id": 217, "type": "_mfc", "pos": [ - -551, - 3172 + -550, + 3830 ], "size": { "0": 315, "1": 130 }, "flags": {}, - "order": 39, + "order": 38, "mode": 0, "inputs": [ { @@ -3470,18 +2925,1793 @@ ] }, { - "id": 216, + "id": 221, + "type": "PrimitiveNode", + "pos": [ + -1720, + 3790 + ], + "size": { + "0": 210, + "1": 82 + }, + "flags": {}, + "order": 14, + "mode": 0, + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 303, + 304 + ], + "widget": { + "name": "frame_load_cap" + }, + "slot_index": 0 + } + ], + "properties": { + "Run widget replace on values": false + }, + "widgets_values": [ + 30, + "fixed" + ] + }, + { + "id": 207, + "type": "OpticalFlowMaskModulation", + "pos": [ + 261.2037879868053, + 4073.352187480458 + ], + "size": { + "0": 386.3999938964844, + "1": 366 + }, + "flags": {}, + "order": 52, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 295 + }, + { + "name": "images", + "type": "IMAGE", + "link": 294 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 296 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "OpticalFlowMaskModulation" + }, + "widgets_values": [ + 1, + false, + 1, + 0, + "Farneback", + 0.04, + 0, + 1, + 5, + 15, + 0.8, + "fade", + 50 + ] + }, + { + "id": 56, "type": "VHS_LoadVideo", "pos": [ - -1248, - 2851 + -1350, + 4240 ], "size": [ 235.1999969482422, - 286 + 622.7999954223633 ], "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + }, + { + "name": "frame_load_cap", + "type": "INT", + "link": 304, + "widget": { + "name": "frame_load_cap" + } + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 273, + 294 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "frame_count", + "type": "INT", + "links": null, + "shape": 3 + }, + { + "name": "audio", + "type": "AUDIO", + "links": null, + "shape": 3 + }, + { + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "pexels-polina-tankilevitch-5385809 (1080p).mp4", + "force_rate": 15, + "force_size": "Custom", + "custom_width": 512, + "custom_height": 768, + "frame_load_cap": 30, + "skip_first_frames": 0, + "select_every_nth": 1, + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "frame_load_cap": 30, + "skip_first_frames": 0, + "force_rate": 15, + "select_every_nth": 1, + "filename": "pexels-polina-tankilevitch-5385809 (1080p).mp4", + "type": "input", + "format": "video/mp4", + "force_size": "512x768" + }, + "muted": false + } + } + }, + { + "id": 202, + "type": "VHS_VideoCombine", + "pos": [ + 5110, + 5325 + ], + "size": [ + 751.7349243164062, + 310 + ], + "flags": {}, + "order": 50, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 264 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_00098.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 186, + "type": "MaskTransform", + "pos": [ + 1240, + 7860 + ], + "size": { + "0": 344.3999938964844, + "1": 322 + }, + "flags": {}, + "order": 47, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 251 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 259, + 310 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskTransform" + }, + "widgets_values": [ + 1, + false, + 0, + 0, + 0, + 0, + 0, + "ease_in_out", + true, + "rotate", + 169.5, + 171.4 + ] + }, + { + "id": 195, + "type": "MaskToImage", + "pos": [ + 2040, + 8920 + ], + "size": { + "0": 210, + "1": 26 + }, + "flags": {}, + "order": 61, + "mode": 4, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 260 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 256 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + } + }, + { + "id": 191, + "type": "MaskToImage", + "pos": [ + 2030, + 6890 + ], + "size": { + "0": 210, + "1": 26 + }, + "flags": {}, + "order": 58, + "mode": 4, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 258 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 254 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + } + }, + { + "id": 201, + "type": "MaskToImage", + "pos": [ + 1808, + 6429 + ], + "size": { + "0": 210, + "1": 26 + }, + "flags": {}, + "order": 37, + "mode": 4, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 265 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 264 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + } + }, + { + "id": 210, + "type": "ImageScaleBy", + "pos": [ + 3297, + 1285 + ], + "size": { + "0": 315, + "1": 82 + }, + "flags": {}, + "order": 93, + "mode": 4, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 277 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ImageScaleBy" + }, + "widgets_values": [ + "nearest-exact", + 2 + ] + }, + { + "id": 177, + "type": "VHS_VideoCombine", + "pos": [ + 3850, + 805 + ], + "size": [ + 602.3653564453125, + 664.2435709635417 + ], + "flags": {}, + "order": 94, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 318 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "masks/RyanOnTheInside", + "format": "video/ffmpeg-gif", + "dither": "sierra2_4a", + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "RyanOnTheInside_00014.gif", + "subfolder": "masks", + "type": "output", + "format": "video/ffmpeg-gif", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 120, + "type": "VHS_VideoCombine", + "pos": [ + 2320, + -980 + ], + "size": [ + 410, + 310 + ], + "flags": {}, + "order": 81, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 163 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "gravwells", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "gravwells_00001.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 121, + "type": "ParticleEmissionMask", + "pos": [ + 1660, + -930 + ], + "size": { + "0": 360.8669128417969, + "1": 454 + }, + "flags": {}, + "order": 65, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 171 + }, + { + "name": "emitters", + "type": "PARTICLE_EMITTER", + "link": 165, + "slot_index": 1 + }, + { + "name": "vortices", + "type": "VORTEX", + "link": null + }, + { + "name": "wells", + "type": "GRAVITY_WELL", + "link": 167, + "slot_index": 3 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [], + "shape": 3 + }, + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 163 + ], + "shape": 3, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "ParticleEmissionMask" + }, + "widgets_values": [ + 0.99, + false, + 0, + 0, + 340, + 4, + 0, + 0, + 0, + 0, + 0, + true, + 1, + 10, + 0.68 + ] + }, + { + "id": 155, + "type": "ParticleEmissionMask", + "pos": [ + 4140, + -800 + ], + "size": { + "0": 360.8669128417969, + "1": 454 + }, + "flags": {}, + "order": 68, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 209 + }, + { + "name": "emitters", + "type": "PARTICLE_EMITTER", + "link": 210, + "slot_index": 1 + }, + { + "name": "vortices", + "type": "VORTEX", + "link": 214, + "slot_index": 2 + }, + { + "name": "wells", + "type": "GRAVITY_WELL", + "link": null, + "slot_index": 3 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [], + "shape": 3 + }, + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 208 + ], + "shape": 3, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "ParticleEmissionMask" + }, + "widgets_values": [ + 0.99, + false, + 0, + 0, + 340, + 4, + 0, + 0, + 0, + 1, + 0, + true, + 1, + 10, + 0.68 + ] + }, + { + "id": 154, + "type": "VHS_VideoCombine", + "pos": [ + 4860, + -770 + ], + "size": [ + 410, + 310 + ], + "flags": {}, + "order": 84, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 208 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "vortex", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "vortex_00001.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 139, + "type": "MaskToImage", + "pos": [ + 281, + 899 + ], + "size": { + "0": 210, + "1": 26 + }, + "flags": {}, + "order": 88, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 348 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 193 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + } + }, + { + "id": 236, + "type": "MaskTransform", + "pos": [ + -941, + 579 + ], + "size": { + "0": 344.3999938964844, + "1": 322 + }, + "flags": {}, + "order": 40, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 342 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskTransform" + }, + "widgets_values": [ + 0.97, + false, + 0, + 0, + 0, + 0, + 0, + "ease_in_out", + false, + "scale", + 1.5, + 1.5 + ] + }, + { + "id": 176, + "type": "MaskMorph", + "pos": [ + -462, + 1044 + ], + "size": { + "0": 315, + "1": 322 + }, + "flags": {}, + "order": 54, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 347 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 266 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskMorph" + }, + "widgets_values": [ + 0.34, + false, + 0, + 0, + 0, + 0, + 0, + "ease_in_out", + true, + "dilate", + 3, + 4 + ] + }, + { + "id": 203, + "type": "MaskWarp", + "pos": [ + -80, + 990 + ], + "size": { + "0": 315, + "1": 346 + }, + "flags": {}, + "order": 71, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 266 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 268, + 348 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskWarp" + }, + "widgets_values": [ + 1, + false, + 0, + 0, + 0, + 0, + 0, + "ease_in_out", + false, + "perlin", + 0.05, + 298.90000000000003, + 3 + ] + }, + { + "id": 179, + "type": "ParticleEmitter", + "pos": [ + 2412, + 1037 + ], + "size": { + "0": 285.6000061035156, + "1": 270 + }, + "flags": {}, + "order": 49, + "mode": 4, + "inputs": [ + { + "name": "previous_emitter", + "type": "PARTICLE_EMITTER", + "link": 242, + "slot_index": 0 + }, + { + "name": "emitter_movement", + "type": "EMITTER_MOVEMENT", + "link": null, + "slot_index": 1 + } + ], + "outputs": [ + { + "name": "PARTICLE_EMITTER", + "type": "PARTICLE_EMITTER", + "links": [ + 241 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ParticleEmitter" + }, + "widgets_values": [ + 0, + 0.48, + 0, + 7, + 17.6, + 351, + 16.8, + "(255,0,0)", + 0.21 + ] + }, + { + "id": 237, + "type": "MaskTransform", + "pos": [ + -913, + 1070 + ], + "size": { + "0": 344.3999938964844, + "1": 322 + }, + "flags": {}, + "order": 41, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 344 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 347 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskTransform" + }, + "widgets_values": [ + 1, + false, + 0, + 0, + 0, + 0, + 0, + "none", + true, + "scale", + 0.4, + 0.4 + ] + }, + { + "id": 133, + "type": "TextMaskNode", + "pos": [ + -1395, + 1021 + ], + "size": { + "0": 315, + "1": 342 + }, + "flags": {}, "order": 30, + "mode": 4, + "inputs": [ + { + "name": "width", + "type": "INT", + "link": 232, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": 231, + "widget": { + "name": "height" + } + }, + { + "name": "batch_size", + "type": "INT", + "link": 262, + "widget": { + "name": "batch_size" + } + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 342, + 344 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "IMAGE", + "type": "IMAGE", + "links": [], + "shape": 3, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "TextMaskNode" + }, + "widgets_values": [ + 768, + 512, + "Particle Systems", + "Arial", + 45, + "(255,255,255)", + "(0,0,0)", + 0.5, + 0.5, + 0, + 1, + 30 + ] + }, + { + "id": 138, + "type": "VHS_VideoCombine", + "pos": [ + 814, + 631 + ], + "size": [ + 315, + 521 + ], + "flags": {}, + "order": 96, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 193 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02019.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 231, + "type": "MaskToImage", + "pos": [ + -213, + 1846 + ], + "size": { + "0": 210, + "1": 26 + }, + "flags": {}, + "order": 72, + "mode": 4, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 352 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 333, + 338 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + } + }, + { + "id": 234, + "type": "OpticalFlowMaskModulation", + "pos": [ + 443, + 1595 + ], + "size": { + "0": 386.3999938964844, + "1": 366 + }, + "flags": {}, + "order": 90, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 351 + }, + { + "name": "images", + "type": "IMAGE", + "link": 338 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 335 + ], + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "OpticalFlowMaskModulation" + }, + "widgets_values": [ + 0.99, + false, + 0, + 0, + "Farneback", + 0.04, + 0, + 1, + 5, + 15, + 0.8, + "fade", + 50 + ] + }, + { + "id": 194, + "type": "VHS_VideoCombine", + "pos": [ + 2388, + 7859 + ], + "size": [ + 315, + 310 + ], + "flags": {}, + "order": 75, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 255 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_00090.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 229, + "type": "TextMaskNode", + "pos": [ + -1597, + 1824 + ], + "size": { + "0": 315, + "1": 342 + }, + "flags": {}, + "order": 31, + "mode": 4, + "inputs": [ + { + "name": "width", + "type": "INT", + "link": 327, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": 328, + "widget": { + "name": "height" + } + }, + { + "name": "batch_size", + "type": "INT", + "link": 329, + "widget": { + "name": "batch_size" + } + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 349 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "IMAGE", + "type": "IMAGE", + "links": [], + "shape": 3, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "TextMaskNode" + }, + "widgets_values": [ + 768, + 512, + "Optical Flow", + "Arial", + 36, + "(255,255,255)", + "(0,0,0)", + 0.03, + 0.03, + 0, + 1, + 30 + ] + }, + { + "id": 228, + "type": "MaskTransform", + "pos": [ + -1251, + 1839 + ], + "size": { + "0": 344.3999938964844, + "1": 322 + }, + "flags": {}, + "order": 42, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 349 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 350 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskTransform" + }, + "widgets_values": [ + 1, + false, + 0, + 0, + 0, + 0, + 0, + "ease_in_out", + false, + "translate", + 252, + 224.10000000000002 + ] + }, + { + "id": 235, + "type": "MaskTransform", + "pos": [ + -817, + 1827 + ], + "size": { + "0": 344.3999938964844, + "1": 322 + }, + "flags": {}, + "order": 55, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 350 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 351, + 352 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskTransform" + }, + "widgets_values": [ + 1, + false, + 0, + 0, + 5, + 0, + 0, + "ease_in_out", + false, + "scale", + 1.3, + 1.3 + ] + }, + { + "id": 232, + "type": "MaskToImage", + "pos": [ + 1225, + 1767 + ], + "size": { + "0": 210, + "1": 26 + }, + "flags": {}, + "order": 97, + "mode": 4, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 335 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + } + }, + { + "id": 178, + "type": "ParticleEmissionMask", + "pos": [ + 2825, + 925 + ], + "size": { + "0": 360.8669128417969, + "1": 454 + }, + "flags": {}, + "order": 87, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 268 + }, + { + "name": "emitters", + "type": "PARTICLE_EMITTER", + "link": 241, + "slot_index": 1 + }, + { + "name": "vortices", + "type": "VORTEX", + "link": null + }, + { + "name": "wells", + "type": "GRAVITY_WELL", + "link": null + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [], + "shape": 3 + }, + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 277, + 318, + 359 + ], + "shape": 3, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "ParticleEmissionMask" + }, + "widgets_values": [ + 0.99, + false, + 0, + 0, + 340, + 4, + 0, + 0, + 0, + 0, + 0, + true, + 1, + 10, + 0.68 + ] + }, + { + "id": 240, + "type": "VHS_VideoCombine", + "pos": [ + 4929, + 828 + ], + "size": [ + 601.5174560546875, + 663.6783040364583 + ], + "flags": {}, + "order": 95, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 359 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "masks/particle_systems", + "format": "video/ffmpeg-gif", + "dither": "sierra2_4a", + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "particle_systems_00001.gif", + "subfolder": "masks", + "type": "output", + "format": "video/ffmpeg-gif", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 216, + "type": "VHS_LoadVideo", + "pos": [ + -1250, + 3510 + ], + "size": [ + 235.1999969482422, + 622.7999954223633 + ], + "flags": {}, + "order": 27, "mode": 0, "inputs": [ { @@ -3564,11 +4794,120 @@ } }, { - "id": 221, + "id": 230, + "type": "VHS_VideoCombine", + "pos": [ + 49, + 1703 + ], + "size": [ + 320, + 524 + ], + "flags": {}, + "order": 89, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 333 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02031.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 136, "type": "PrimitiveNode", "pos": [ - -1721, - 3131 + -2572, + 1163 + ], + "size": { + "0": 210, + "1": 80 + }, + "flags": {}, + "order": 15, + "mode": 0, + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": [ + 183, + 232, + 327, + 361 + ], + "slot_index": 0, + "widget": { + "name": "height" + } + } + ], + "properties": { + "Run widget replace on values": false + }, + "widgets_values": [ + 768, + "fixed" + ] + }, + { + "id": 246, + "type": "PrimitiveNode", + "pos": [ + -1563, + 2489 ], "size": { "0": 210, @@ -3582,47 +4921,41 @@ "name": "INT", "type": "INT", "links": [ - 303, - 304 + 368 ], + "slot_index": 0, "widget": { - "name": "frame_load_cap" - }, - "slot_index": 0 + "name": "height" + } } ], "properties": { "Run widget replace on values": false }, "widgets_values": [ - 30, + 256, "fixed" ] }, { - "id": 207, - "type": "OpticalFlowMaskModulation", + "id": 199, + "type": "MaskWarp", "pos": [ - 297, - 3884 + 1184, + 6469 ], "size": { - "0": 386.3999938964844, - "1": 366 + "0": 315, + "1": 346 }, "flags": {}, - "order": 50, - "mode": 0, + "order": 26, + "mode": 4, "inputs": [ { "name": "masks", "type": "MASK", - "link": 295 - }, - { - "name": "images", - "type": "IMAGE", - "link": 294 + "link": 263 } ], "outputs": [ @@ -3630,425 +4963,14 @@ "name": "MASK", "type": "MASK", "links": [ - 296 + 265 ], "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "OpticalFlowMaskModulation" - }, - "widgets_values": [ - 1, - false, - 1, - 0, - "Farneback", - 0.04, - 0, - 1, - 5, - 15, - 0.8, - "fade", - 50 - ] - }, - { - "id": 222, - "type": "VHS_VideoCombine", - "pos": [ - 5559, - 3351 - ], - "size": [ - 315, - 262 - ], - "flags": {}, - "order": 90, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 305 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "masks/opticalflow_examples", - "format": "video/ffmpeg-gif", - "dither": "sierra2_4a", - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "opticalflow_examples_00001.gif", - "subfolder": "masks", - "type": "output", - "format": "video/ffmpeg-gif", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 56, - "type": "VHS_LoadVideo", - "pos": [ - -1351, - 3575 - ], - "size": [ - 235.1999969482422, - 682.5777723524305 - ], - "flags": {}, - "order": 31, - "mode": 0, - "inputs": [ - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - }, - { - "name": "frame_load_cap", - "type": "INT", - "link": 304, - "widget": { - "name": "frame_load_cap" - } - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 273, - 294, - 298 - ], - "shape": 3, - "slot_index": 0 - }, - { - "name": "frame_count", - "type": "INT", - "links": null, - "shape": 3 - }, - { - "name": "audio", - "type": "AUDIO", - "links": null, - "shape": 3 - }, - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_LoadVideo" - }, - "widgets_values": { - "video": "pexels-polina-tankilevitch-5385809 (1080p).mp4", - "force_rate": 15, - "force_size": "Custom", - "custom_width": 512, - "custom_height": 768, - "frame_load_cap": 30, - "skip_first_frames": 0, - "select_every_nth": 1, - "choose video to upload": "image", - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "frame_load_cap": 30, - "skip_first_frames": 0, - "force_rate": 15, - "select_every_nth": 1, - "filename": "pexels-polina-tankilevitch-5385809 (1080p).mp4", - "type": "input", - "format": "video/mp4", - "force_size": "512x768" - }, - "muted": false - } - } - }, - { - "id": 219, - "type": "ImageConcatMulti", - "pos": [ - 4919, - 3218 - ], - "size": { - "0": 210, - "1": 170 - }, - "flags": {}, - "order": 85, - "mode": 0, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 298 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 306 - }, - { - "name": "image_3", - "type": "IMAGE", - "link": 307 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 302, - 305 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageConcatMulti" - }, - "widgets_values": [ - 3, - "right", - false, - null - ] - }, - { - "id": 220, - "type": "VHS_VideoCombine", - "pos": [ - 5805, - 1738 - ], - "size": [ - 2078.699462890625, - 310 - ], - "flags": {}, - "order": 89, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 302 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00109.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 202, - "type": "VHS_VideoCombine", - "pos": [ - 5110, - 5325 - ], - "size": [ - 751.7349243164062, - 310 - ], - "flags": {}, - "order": 47, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 264 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00098.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 186, - "type": "MaskTransform", - "pos": [ - 1240, - 7860 - ], - "size": { - "0": 344.3999938964844, - "1": 322 - }, - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 251 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 259, - 310 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskTransform" + "Node name for S&R": "MaskWarp" }, "widgets_values": [ 1, @@ -4059,26 +4981,144 @@ 0, 0, "ease_in_out", + false, + "perlin", + 0.05, + 298.90000000000003, + 3 + ] + }, + { + "id": 190, + "type": "VHS_VideoCombine", + "pos": [ + 2373, + 5392 + ], + "size": [ + 315, + 738.84375 + ], + "flags": {}, + "order": 92, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 253 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_00112.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 197, + "type": "MovingShape", + "pos": [ + 99, + 5443 + ], + "size": { + "0": 315, + "1": 394 + }, + "flags": {}, + "order": 17, + "mode": 4, + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 311 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MovingShape" + }, + "widgets_values": [ + 512, + 768, + 30, + "(255,255,255)", + "square", + 50, + 50, + 0, + 0, + 0, + 0, + "ease_in_out", + 0, true, - "rotate", - 169.5, - 171.4 + 0 ] }, { "id": 188, "type": "MaskMath", "pos": [ - 1825, - 5961 + 1337, + 5712 ], "size": { "0": 315, "1": 294 }, "flags": {}, - "order": 54, - "mode": 0, + "order": 60, + "mode": 4, "inputs": [ { "name": "masks", @@ -4118,248 +5158,20 @@ "subtract" ] }, - { - "id": 194, - "type": "VHS_VideoCombine", - "pos": [ - 1696, - 7952 - ], - "size": [ - 315, - 310 - ], - "flags": {}, - "order": 68, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 255 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00090.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 197, - "type": "MovingShape", - "pos": [ - 469, - 5965 - ], - "size": { - "0": 315, - "1": 394 - }, - "flags": {}, - "order": 17, - "mode": 0, - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [ - 311 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MovingShape" - }, - "widgets_values": [ - 512, - 768, - 30, - "(255,255,255)", - "square", - 50, - 50, - 0, - 0, - 0, - 0, - "ease_in_out", - 0, - true, - 0 - ] - }, - { - "id": 195, - "type": "MaskToImage", - "pos": [ - 2040, - 8920 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 55, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 260 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 256, - 312 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 191, - "type": "MaskToImage", - "pos": [ - 2030, - 6890 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 52, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 258 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 254, - 313 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, - { - "id": 201, - "type": "MaskToImage", - "pos": [ - 1808, - 6429 - ], - "size": { - "0": 210, - "1": 26 - }, - "flags": {}, - "order": 37, - "mode": 0, - "inputs": [ - { - "name": "mask", - "type": "MASK", - "link": 265 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 264, - 314 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "MaskToImage" - } - }, { "id": 189, "type": "MaskToImage", "pos": [ - 2020, - 5540 + 1937, + 5611 ], "size": { "0": 210, "1": 26 }, "flags": {}, - "order": 69, - "mode": 0, + "order": 76, + "mode": 4, "inputs": [ { "name": "mask", @@ -4372,8 +5184,7 @@ "name": "IMAGE", "type": "IMAGE", "links": [ - 253, - 315 + 253 ], "shape": 3, "slot_index": 0 @@ -4384,153 +5195,407 @@ } }, { - "id": 224, + "id": 243, "type": "VHS_VideoCombine", "pos": [ - 6573, - 6632 + 1330, + 2300 ], "size": [ - 751.7349243164062, - 310 + 320, + 424 ], "flags": {}, + "order": 99, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 364 + }, + { + "name": "audio", + "type": "AUDIO", + "link": null + }, + { + "name": "meta_batch", + "type": "VHS_BatchManager", + "link": null + }, + { + "name": "vae", + "type": "VAE", + "link": null + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 15, + "loop_count": 0, + "filename_prefix": "AnimateDiff", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_02065.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 15 + }, + "muted": false + } + } + }, + { + "id": 248, + "type": "MaskTransform", + "pos": [ + -673, + 2373 + ], + "size": { + "0": 344.3999938964844, + "1": 322 + }, + "flags": {}, + "order": 43, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 386 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 387 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskTransform" + }, + "widgets_values": [ + 0.47000000000000003, + false, + 0, + 0, + 0, + 0, + 0, + "ease_in_out", + true, + "rotate", + 369, + 0 + ] + }, + { + "id": 242, + "type": "TextMaskNode", + "pos": [ + -1142, + 2394 + ], + "size": { + "0": 315, + "1": 342 + }, + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "width", + "type": "INT", + "link": 361, + "widget": { + "name": "width" + } + }, + { + "name": "height", + "type": "INT", + "link": 368, + "widget": { + "name": "height" + } + }, + { + "name": "batch_size", + "type": "INT", + "link": 363, + "widget": { + "name": "batch_size" + } + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 386 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "IMAGE", + "type": "IMAGE", + "links": [], + "shape": 3, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "TextMaskNode" + }, + "widgets_values": [ + 768, + 256, + "Time", + "Arial", + 50, + "(255,255,255)", + "(0,0,0)", + 0.5, + 0.47000000000000003, + 0, + 1, + 30 + ] + }, + { + "id": 241, + "type": "MaskTransform", + "pos": [ + -260, + 2373 + ], + "size": { + "0": 344.3999938964844, + "1": 322 + }, + "flags": {}, + "order": 56, + "mode": 4, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 387 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 388 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskTransform" + }, + "widgets_values": [ + 0.47000000000000003, + false, + 0, + 0, + 0, + 0, + 0, + "ease_in_out", + true, + "translate", + 700, + 0 + ] + }, + { + "id": 245, + "type": "MaskTransform", + "pos": [ + 139, + 2373 + ], + "size": { + "0": 344.3999938964844, + "1": 322 + }, + "flags": {}, + "order": 73, + "mode": 0, + "inputs": [ + { + "name": "masks", + "type": "MASK", + "link": 388 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 389 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskTransform" + }, + "widgets_values": [ + 1, + false, + 0, + 0, + 0, + 0, + 0, + "none", + false, + "scale", + 1.5, + 1.5 + ] + }, + { + "id": 249, + "type": "MaskRings", + "pos": [ + 547, + 2392 + ], + "size": { + "0": 315, + "1": 298 + }, + "flags": {}, "order": 91, "mode": 0, "inputs": [ { - "name": "images", - "type": "IMAGE", - "link": 316 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null + "name": "masks", + "type": "MASK", + "link": 389 } ], "outputs": [ { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00113.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 223, - "type": "ImageConcatMulti", - "pos": [ - 5800, - 6981 - ], - "size": { - "0": 210, - "1": 190 - }, - "flags": {}, - "order": 87, - "mode": 0, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 312 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 313 - }, - { - "name": "image_3", - "type": "IMAGE", - "link": 314 - }, - { - "name": "image_4", - "type": "IMAGE", - "link": 315 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", + "name": "MASK", + "type": "MASK", "links": [ - 316, - 317 + 390 ], "shape": 3, "slot_index": 0 } ], "properties": { - "Node name for S&R": "ImageConcatMulti" + "Node name for S&R": "MaskRings" }, "widgets_values": [ - 4, - "right", + 1, false, - null + 0, + 0, + 0, + 0, + 0, + "ease_in_out", + true, + 4, + 0.5 ] }, { - "id": 225, + "id": 244, + "type": "MaskToImage", + "pos": [ + 930, + 2380 + ], + "size": { + "0": 210, + "1": 26 + }, + "flags": {}, + "order": 98, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 390 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 364, + 391 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + } + }, + { + "id": 233, "type": "VHS_VideoCombine", "pos": [ - 6414, - 7480 + 2252, + 1914 ], "size": [ - 751.7349243164062, - 262 + 601.5174560546875, + 469.83915201822913 ], "flags": {}, - "order": 92, + "order": 100, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 317 + "link": 391 }, { "name": "audio", @@ -4562,7 +5627,7 @@ "widgets_values": { "frame_rate": 15, "loop_count": 0, - "filename_prefix": "masks/temporal_examples", + "filename_prefix": "masks/time", "format": "video/ffmpeg-gif", "dither": "sierra2_4a", "pingpong": false, @@ -4571,7 +5636,7 @@ "hidden": false, "paused": false, "params": { - "filename": "temporal_examples_00002.gif", + "filename": "time_00001.gif", "subfolder": "masks", "type": "output", "format": "video/ffmpeg-gif", @@ -4580,821 +5645,6 @@ "muted": false } } - }, - { - "id": 210, - "type": "ImageScaleBy", - "pos": [ - 3297, - 1285 - ], - "size": { - "0": 315, - "1": 82 - }, - "flags": {}, - "order": 81, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 277 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageScaleBy" - }, - "widgets_values": [ - "nearest-exact", - 2 - ] - }, - { - "id": 178, - "type": "ParticleEmissionMask", - "pos": [ - 2825, - 925 - ], - "size": { - "0": 360.8669128417969, - "1": 454 - }, - "flags": {}, - "order": 64, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 268 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 241, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": null - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": null - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 277, - 318 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 0.99, - false, - 0, - 0, - 340, - 4, - 0, - 0, - 0, - 0, - 0, - true, - 1, - 10, - 0.68 - ] - }, - { - "id": 177, - "type": "VHS_VideoCombine", - "pos": [ - 3850, - 805 - ], - "size": [ - 602.3653564453125, - 262 - ], - "flags": {}, - "order": 82, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 318 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "masks/RyanOnTheInside", - "format": "video/ffmpeg-gif", - "dither": "sierra2_4a", - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "RyanOnTheInside_00001.gif", - "subfolder": "masks", - "type": "output", - "format": "video/ffmpeg-gif", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 215, - "type": "VHS_VideoCombine", - "pos": [ - 9806, - -2945 - ], - "size": [ - 315, - 262 - ], - "flags": {}, - "order": 94, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 325 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "masks/particle_examples", - "format": "video/ffmpeg-gif", - "dither": "sierra2_4a", - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "particle_examples_00002.gif", - "subfolder": "masks", - "type": "output", - "format": "video/ffmpeg-gif", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 120, - "type": "VHS_VideoCombine", - "pos": [ - 2320, - -980 - ], - "size": [ - 410, - 310 - ], - "flags": {}, - "order": 72, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 163 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "gravwells", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "gravwells_00001.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 121, - "type": "ParticleEmissionMask", - "pos": [ - 1660, - -930 - ], - "size": { - "0": 360.8669128417969, - "1": 454 - }, - "flags": {}, - "order": 57, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 171 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 165, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": null - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": 167, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 163, - 321 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 0.99, - false, - 0, - 0, - 340, - 4, - 0, - 0, - 0, - 0, - 0, - true, - 1, - 10, - 0.68 - ] - }, - { - "id": 211, - "type": "ImageConcatMulti", - "pos": [ - 8404, - -3209 - ], - "size": { - "0": 210, - "1": 170 - }, - "flags": {}, - "order": 79, - "mode": 0, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 289 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 282 - }, - { - "name": "image_3", - "type": "IMAGE", - "link": 286 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 322 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageConcatMulti" - }, - "widgets_values": [ - 3, - "right", - false, - null - ] - }, - { - "id": 227, - "type": "ImageConcatMulti", - "pos": [ - 8628, - -2961 - ], - "size": { - "0": 210, - "1": 170 - }, - "flags": {}, - "order": 76, - "mode": 0, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 320 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 321 - }, - { - "name": "image_3", - "type": "IMAGE", - "link": 319 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 323 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageConcatMulti" - }, - "widgets_values": [ - 3, - "right", - false, - null - ] - }, - { - "id": 214, - "type": "MovingShape", - "pos": [ - 8207, - -3806 - ], - "size": { - "0": 315, - "1": 394 - }, - "flags": {}, - "order": 18, - "mode": 0, - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "MovingShape" - }, - "widgets_values": [ - 512, - 512, - 30, - "(255,255,255)", - "square", - 100, - 100, - 0, - 0, - 0, - 0, - "linear", - 0, - false, - 0 - ] - }, - { - "id": 212, - "type": "VHS_VideoCombine", - "pos": [ - 10070, - -4430 - ], - "size": [ - 996.1886596679688, - 310 - ], - "flags": {}, - "order": 93, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 324 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "AnimateDiff", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": true, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "AnimateDiff_00115.mp4", - "subfolder": "", - "type": "output", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } - }, - { - "id": 226, - "type": "ImageConcatMulti", - "pos": [ - 8976, - -3005 - ], - "size": { - "0": 210, - "1": 150 - }, - "flags": {}, - "order": 88, - "mode": 0, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 322 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 323 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 324, - 325 - ], - "shape": 3, - "slot_index": 0 - } - ], - "properties": { - "Node name for S&R": "ImageConcatMulti" - }, - "widgets_values": [ - 2, - "right", - false, - null - ] - }, - { - "id": 155, - "type": "ParticleEmissionMask", - "pos": [ - 4140, - -800 - ], - "size": { - "0": 360.8669128417969, - "1": 454 - }, - "flags": {}, - "order": 60, - "mode": 0, - "inputs": [ - { - "name": "masks", - "type": "MASK", - "link": 209 - }, - { - "name": "emitters", - "type": "PARTICLE_EMITTER", - "link": 210, - "slot_index": 1 - }, - { - "name": "vortices", - "type": "VORTEX", - "link": 214, - "slot_index": 2 - }, - { - "name": "wells", - "type": "GRAVITY_WELL", - "link": null, - "slot_index": 3 - } - ], - "outputs": [ - { - "name": "MASK", - "type": "MASK", - "links": [], - "shape": 3 - }, - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 208, - 320 - ], - "shape": 3, - "slot_index": 1 - } - ], - "properties": { - "Node name for S&R": "ParticleEmissionMask" - }, - "widgets_values": [ - 0.99, - false, - 0, - 0, - 340, - 4, - 0, - 0, - 0, - 1, - 0, - true, - 1, - 10, - 0.68 - ] - }, - { - "id": 154, - "type": "VHS_VideoCombine", - "pos": [ - 4860, - -770 - ], - "size": [ - 410, - 310 - ], - "flags": {}, - "order": 75, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 208 - }, - { - "name": "audio", - "type": "AUDIO", - "link": null - }, - { - "name": "meta_batch", - "type": "VHS_BatchManager", - "link": null - }, - { - "name": "vae", - "type": "VAE", - "link": null - } - ], - "outputs": [ - { - "name": "Filenames", - "type": "VHS_FILENAMES", - "links": null, - "shape": 3 - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 15, - "loop_count": 0, - "filename_prefix": "vortex", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "vortex_00001.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 15 - }, - "muted": false - } - } } ], "links": [ @@ -5798,14 +6048,6 @@ 1, "EMITTER_MOVEMENT" ], - [ - 246, - 133, - 0, - 176, - 0, - "MASK" - ], [ 247, 183, @@ -5942,14 +6184,6 @@ 0, "MASK" ], - [ - 267, - 203, - 0, - 139, - 0, - "MASK" - ], [ 268, 203, @@ -5982,30 +6216,6 @@ 0, "IMAGE" ], - [ - 282, - 167, - 1, - 211, - 1, - "IMAGE" - ], - [ - 286, - 141, - 1, - 211, - 2, - "IMAGE" - ], - [ - 289, - 102, - 1, - 211, - 0, - "IMAGE" - ], [ 291, 216, @@ -6054,22 +6264,6 @@ 0, "IMAGE" ], - [ - 298, - 56, - 0, - 219, - 0, - "IMAGE" - ], - [ - 302, - 219, - 0, - 220, - 0, - "IMAGE" - ], [ 303, 221, @@ -6086,30 +6280,6 @@ 2, "*" ], - [ - 305, - 219, - 0, - 222, - 0, - "IMAGE" - ], - [ - 306, - 171, - 0, - 219, - 1, - "IMAGE" - ], - [ - 307, - 204, - 0, - 219, - 2, - "IMAGE" - ], [ 310, 186, @@ -6126,54 +6296,6 @@ 1, "MASK" ], - [ - 312, - 195, - 0, - 223, - 0, - "IMAGE" - ], - [ - 313, - 191, - 0, - 223, - 1, - "IMAGE" - ], - [ - 314, - 201, - 0, - 223, - 2, - "IMAGE" - ], - [ - 315, - 189, - 0, - 223, - 3, - "IMAGE" - ], - [ - 316, - 223, - 0, - 224, - 0, - "IMAGE" - ], - [ - 317, - 223, - 0, - 225, - 0, - "IMAGE" - ], [ 318, 178, @@ -6183,58 +6305,202 @@ "IMAGE" ], [ - 319, - 115, + 327, + 136, + 0, + 229, + 0, + "INT" + ], + [ + 328, + 135, + 0, + 229, 1, - 227, + "INT" + ], + [ + 329, + 198, + 0, + 229, 2, - "IMAGE" + "INT" ], [ - 320, - 155, - 1, - 227, + 333, + 231, + 0, + 230, 0, "IMAGE" ], [ - 321, - 121, - 1, - 227, + 335, + 234, + 0, + 232, + 0, + "MASK" + ], + [ + 338, + 231, + 0, + 234, 1, "IMAGE" ], [ - 322, - 211, + 342, + 133, 0, - 226, + 236, 0, - "IMAGE" + "MASK" ], [ - 323, - 227, + 344, + 133, 0, - 226, + 237, + 0, + "MASK" + ], + [ + 347, + 237, + 0, + 176, + 0, + "MASK" + ], + [ + 348, + 203, + 0, + 139, + 0, + "MASK" + ], + [ + 349, + 229, + 0, + 228, + 0, + "MASK" + ], + [ + 350, + 228, + 0, + 235, + 0, + "MASK" + ], + [ + 351, + 235, + 0, + 234, + 0, + "MASK" + ], + [ + 352, + 235, + 0, + 231, + 0, + "MASK" + ], + [ + 359, + 178, 1, - "IMAGE" - ], - [ - 324, - 226, - 0, - 212, + 240, 0, "IMAGE" ], [ - 325, - 226, + 361, + 136, 0, - 215, + 242, + 0, + "INT" + ], + [ + 363, + 198, + 0, + 242, + 2, + "INT" + ], + [ + 364, + 244, + 0, + 243, + 0, + "IMAGE" + ], + [ + 368, + 246, + 0, + 242, + 1, + "INT" + ], + [ + 386, + 242, + 0, + 248, + 0, + "MASK" + ], + [ + 387, + 248, + 0, + 241, + 0, + "MASK" + ], + [ + 388, + 241, + 0, + 245, + 0, + "MASK" + ], + [ + 389, + 245, + 0, + 249, + 0, + "MASK" + ], + [ + 390, + 249, + 0, + 244, + 0, + "MASK" + ], + [ + 391, + 244, + 0, + 233, 0, "IMAGE" ] @@ -6249,7 +6515,8 @@ 6053 ], "color": "#3f789e", - "font_size": 500 + "font_size": 500, + "locked": false }, { "title": "Initial Plume", @@ -6260,7 +6527,8 @@ 115 ], "color": "#A88", - "font_size": 75 + "font_size": 75, + "locked": false }, { "title": "Temporal Masks", @@ -6271,7 +6539,8 @@ 5214 ], "color": "#3f789e", - "font_size": 300 + "font_size": 300, + "locked": false }, { "title": "Simulation Gravity", @@ -6282,7 +6551,8 @@ 98 ], "color": "#A88", - "font_size": 75 + "font_size": 75, + "locked": false }, { "title": "Eastward simulation wind", @@ -6293,18 +6563,20 @@ 119 ], "color": "#A88", - "font_size": 75 + "font_size": 75, + "locked": false }, { "title": "Optical Flow", "bounding": [ - -91, - 2712, + -128, + 2902, 4320, 1834 ], "color": "#3f789e", - "font_size": 300 + "font_size": 300, + "locked": false } ], "config": {}, @@ -6312,8 +6584,8 @@ "ds": { "scale": 0.1, "offset": { - "0": 5597.44268311216, - "1": 3995.674021868648 + "0": 6635.775639000176, + "1": 3039.0521128085834 } } }, diff --git a/nodes/masks/mask_base.py b/nodes/masks/mask_base.py index 7de0cb9..d1ed1c8 100644 --- a/nodes/masks/mask_base.py +++ b/nodes/masks/mask_base.py @@ -139,9 +139,10 @@ class MaskBase(ABC): class TemporalMaskBase(MaskBase, ABC): @classmethod def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES() return { "required": { - **super().INPUT_TYPES()["required"], + **parent_inputs["required"], "start_frame": ("INT", {"default": 0, "min": 0, "max": 1000, "step": 1}), "end_frame": ("INT", {"default": 0, "min": 0, "max": 1000, "step": 1}), "effect_duration": ("INT", {"default": 0, "min": 0, "max": 1000, "step": 1}), @@ -150,6 +151,9 @@ class TemporalMaskBase(MaskBase, ABC): } } + def __init__(self): + super().__init__() + @abstractmethod def process_single_mask(self, mask: np.ndarray, strength: float, **kwargs) -> np.ndarray: """ @@ -208,9 +212,10 @@ class TemporalMaskBase(MaskBase, ABC): class ParticleSystemMaskBase(MaskBase, ABC): @classmethod def INPUT_TYPES(cls): + parent_inputs = super().INPUT_TYPES() return { "required": { - **super().INPUT_TYPES()["required"], + **parent_inputs["required"], "emitters": ("PARTICLE_EMITTER",), "particle_count": ("INT", {"default": 200, "min": 1, "max": 10000, "step": 1}), "particle_lifetime": ("FLOAT", {"default": 4.0, "min": 0.1, "max": 10.0, "step": 0.1}), @@ -593,6 +598,9 @@ class OpticalFlowMaskBase(MaskBase, ABC): CATEGORY = "/RyanOnTheInside/masks/" + def __init__(self): + super().__init__() + def process_mask(self, mask: np.ndarray, strength: float, images: np.ndarray, flow_method: str, flow_threshold: float, magnitude_threshold: float, frame_index: int, **kwargs) -> np.ndarray: if frame_index == 0 or frame_index >= len(images) - 1: return mask diff --git a/nodes/masks/mask_utils.py b/nodes/masks/mask_utils.py index 629dc17..e3e82af 100644 --- a/nodes/masks/mask_utils.py +++ b/nodes/masks/mask_utils.py @@ -61,12 +61,16 @@ def rotate_mask(mask: np.ndarray, angle: float) -> np.ndarray: def scale_mask(mask: np.ndarray, scale_x: float, scale_y: float) -> np.ndarray: height, width = mask.shape[:2] - M = cv2.getAffineTransform( - np.float32([[0, 0], [width, 0], [0, height]]), - np.float32([[0, 0], [width * scale_x, 0], [0, height * scale_y]]) - ) + center_x, center_y = width / 2, height / 2 + + M = np.float32([ + [scale_x, 0, center_x * (1 - scale_x)], + [0, scale_y, center_y * (1 - scale_y)] + ]) + return warp_affine(mask, M) + def transform_mask(mask: np.ndarray, transform_type: str, x_value: float, y_value: float) -> np.ndarray: if transform_type == "translate": return translate_mask(mask, x_value, y_value) diff --git a/nodes/masks/utility_nodes.py b/nodes/masks/utility_nodes.py index c87ded4..fc79d9e 100644 --- a/nodes/masks/utility_nodes.py +++ b/nodes/masks/utility_nodes.py @@ -160,8 +160,8 @@ class TextMaskNode: "font_size": ("INT", {"default": 32, "min": 1, "max": 1000}), "font_color": ("STRING", {"default": "(255,255,255)"}), "background_color": ("STRING", {"default": "(0,0,0)"}), - "x_position": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0}), - "y_position": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0}), + "x_position": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step":0.01}), + "y_position": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step":0.01}), "rotation": ("FLOAT", {"default": 0, "min": 0, "max": 360}), "max_width_ratio": ("FLOAT", {"default": 0.9, "min": 0.1, "max": 1.0}), "batch_size": ("INT", {"default": 1, "min": 1, "max": 10000}), diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..dd683e9 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,25 @@ +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "ComfyUI_RyanOnTheInside" +description = "Custom nodes introducing particle simulations, optical flow, and temporal masks" +version = "0.1.0" +license = { text = "CC BY-NC 4.0" } +dependencies = [ + "opencv-python==4.10", + "scipy", + "pillow", + "librosa", + "pymunk==6.8.1", + "matplotlib" +] + +[project.urls] +Repository = "https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside" + +[tool.comfy] +PublisherId = "ryanontheinside" +DisplayName = "RyanOnTheInside" +Icon = "" \ No newline at end of file diff --git a/readme.md b/readme.md index dac8a7f..061eceb 100644 --- a/readme.md +++ b/readme.md @@ -6,13 +6,18 @@ RyanOnTheInside node pack introduces the following (so far): - Optical Flow - Temporal Masks - RyanOnTheInside particle demo header + +
+ RyanOnTheInside particle demo header + RyanOnTheInside optical flow demo +
+ Time + Plume examples using two particle emitters +
+ Plume examples using two particle emitters +
- Plume examples using two particle emitters - - Plume examples using two particle emitters - - *Some examples using particle emitters and vortices* +*Some examples using particle emitters and vortices* ## Installation @@ -160,6 +165,10 @@ Motion-based effects: - Directional flow isolation and emphasis - in progress - Advanced blending and modulation options + Particle System Demo + + *Motion generated trails* + ### Optical Flow Mask Nodes #### General optical mask settings diff --git a/requirements.txt b/requirements.txt index 3c6a9a2..2f81875 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,6 @@ -opencv-python -numpy -torch -tqdm +opencv-python==4.10 scipy pillow librosa -pymunk -matplotlib -Pillow \ No newline at end of file +pymunk==6.8.1 +matplotlib \ No newline at end of file