Jump to: Board index » General » Fusion

Paint interactivity slows after painting on upstream nodes

Learn about 3D compositing, animation, broadcast design and VFX workflows.
  • Author
  • Message
Offline
User avatar

goohoobler1

  • Posts: 97
  • Joined: Wed Jul 27, 2022 9:34 pm
  • Real Name: George Port

Paint interactivity slows after painting on upstream nodes

PostWed Jul 02, 2025 9:02 am

Note: This post has been substantially re edited again after original posting to make clear what the problem actually is and what the straightforward solution is:

The problem seems to be that downstream Chained Paint nodes will interactively slow down after an upstream Paint node is used for Cloning. This slow down effect is only for the current Fusion session and everything seems to return to normal after a Save, Close and Reopen of the containing file (or after copy and pasting the nodes).

The Solution (as stated in a below post from Daniel Koch) is :
After painting with an Upstream Paint node, change the "Paint Mode" from "Stroke/MultiStroke/etc" back to "Select" before moving to any other Paint nodes Downstream:


That's it, no need to read any further in this post unless you want to check if this is your problem.
For a explanation of why it happens and how to fix, please jump down to Daniel's post below.
--------

To demonstrate:
Copy the nodes below to a new comp. Set the viewer to display Paint2. Try painting on Paint2 (fast and interactive, right..). Try selecting Stroke and then the Clone Apply mode and try some cloning (still fast).
Now Set the viewer to display Paint1. Try painting on Paint1 (fast and interactive, right..). Try selecting Stroke and then the Clone Apply mode and try some cloning (still fast).
Now, Set the viewer back to display Paint2. Try painting on Paint2 (slower). Try selecting Stroke and then the Clone Apply mode and try some cloning and keep painting separate strokes for a few minutes... You should see the interactivity slow down to unusable delays.
This is the problem. This is the bug.
And now copy and paste the nodes and Set the viewer to display Paint2_1. Try painting on Paint2_1 (fast and interactive, right..). Try selecting Stroke and then the Clone Apply mode and try some cloning (still fast). So something seems to be triggering a slowdown when the upstream Paint node does some Cloning.

As a professional VFX company , we use the Paint nodes extensively for wire/rig removals and paint outs so we end up with Dozens of Paint nodes with Thousands of cloned strokes , so interactivity is very important to us...

Tested with Fusion Studio 20.0.1 on Win 11 machine.

Here are the simple nodes:
Code: Select all
{
   Tools = ordered() {
      Background1 = Background {
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, }
         },
         ViewInfo = OperatorInfo { Pos = { 29.3333, 67.3636 } },
      },
      Paint1 = Paint {
         Inputs = {
            Input = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "Stroke1",
               Source = "Out",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 139.333, 67.3636 } },
      },
      Stroke1 = Stroke {
         Points = {
            { X = 0.00228173, Y = 0.161023, Time = 70831862 },
            { X = 0.00228173, Y = 0.149912, Time = 70832164, YSpeed = -0.0206954 },
            { X = 0.00228173, Y = 0.142504, Time = 70832172, YSpeed = -0.520831 },
            { X = 0.00228173, Y = 0.131393, Time = 70832180, YSpeed = -0.781252 },
            { X = 0.00228173, Y = 0.105467, Time = 70832204, YSpeed = -0.607639 },
            { X = 0.00228173, Y = 0.0943562, Time = 70832204, YSpeed = -0.607639 },
            { X = 0.00228173, Y = 0.0647266, Time = 70832221, YSpeed = -0.980393 },
            { X = 0.00228173, Y = 0.0388007, Time = 70832237, YSpeed = -0.911459 },
            { X = 0.00228173, Y = 0.00546736, Time = 70832254, YSpeed = -1.10294 },
            { X = 0.000198394, Y = -0.0204586, Time = 70832271, XSpeed = -0.122549, YSpeed = -0.857843 },
            { X = -0.00188494, Y = -0.0389771, Time = 70832287, XSpeed = -0.130208, YSpeed = -0.651041 },
            { X = -0.00188494, Y = -0.0537919, Time = 70832304, YSpeed = -0.490197 },
            { X = -0.00188494, Y = -0.0574957, Time = 70832322, YSpeed = -0.115741 },
            { X = -0.00188494, Y = -0.0723104, Time = 70832338, YSpeed = -0.520833 },
            { X = -0.00188494, Y = -0.0797179, Time = 70832387, YSpeed = -0.0850342 },
            { X = -0.00188494, Y = -0.0834216, Time = 70832428, YSpeed = -0.0508131 },
            { X = -0.00188494, Y = -0.0871252, Time = 70832444, YSpeed = -0.130207 },
            { X = -0.00188494, Y = -0.0945327, Time = 70832455, YSpeed = -0.378789 },
            { X = -0.00188494, Y = -0.0982364, Time = 70832471, YSpeed = -0.130209 },
            { X = -0.00188494, Y = -0.10194, Time = 70832488, YSpeed = -0.122549 },
            { X = -0.00188494, Y = -0.105644, Time = 70832504, YSpeed = -0.130209 }
         },
         IsThreaded = false,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         CtrlWZoom = false,
         Inputs = {
            Center = Input { Value = { 0.289384940763315, 0.498236374060313 }, }
         },
      },
      Paint2 = Paint {
         CtrlWZoom = false,
         Inputs = {
            Input = Input {
               SourceOp = "Paint1",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "Stroke3",
               Source = "Out",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 249.333, 67.3636 } },
      },
      Stroke3 = Stroke {
         Points = {
            { X = -0.0636363, Y = 0.115404, Time = 70839845 },
            { X = -0.061553, Y = 0.115404, Time = 70839956, XSpeed = 0.0187688 },
            { X = -0.055303, Y = 0.122811, Time = 70839978, XSpeed = 0.284091, YSpeed = 0.189393 },
            { X = -0.0511364, Y = 0.133923, Time = 70839994, XSpeed = 0.260416, YSpeed = 0.390626 },
            { X = -0.0386364, Y = 0.145034, Time = 70840011, XSpeed = 0.735294, YSpeed = 0.367646 },
            { X = -0.0344697, Y = 0.152441, Time = 70840013, XSpeed = 2.08334, YSpeed = 2.08334 },
            { X = -0.0282197, Y = 0.159849, Time = 70840028, XSpeed = 0.416666, YSpeed = 0.277779 },
            { X = -0.024053, Y = 0.167256, Time = 70840028, XSpeed = 0.416666, YSpeed = 0.277779 },
            { X = -0.0136364, Y = 0.174663, Time = 70840046, XSpeed = 0.578704, YSpeed = 0.231482 },
            { X = -0.00738636, Y = 0.178367, Time = 70840066, XSpeed = 0.3125, YSpeed = 0.104167 },
            { X = 0.000946969, Y = 0.185775, Time = 70840079, XSpeed = 0.641025, YSpeed = 0.320514 },
            { X = 0.0030303, Y = 0.185775, Time = 70840095, XSpeed = 0.130208 },
            { X = 0.00511366, Y = 0.185775, Time = 70840128, XSpeed = 0.0631322 },
            { X = 0.00719699, Y = 0.185775, Time = 70840178, XSpeed = 0.0416666 },
            { X = 0.00928032, Y = 0.185775, Time = 70840180, XSpeed = 1.04167 },
            { X = 0.0113637, Y = 0.185775, Time = 70840211, XSpeed = 0.0672042 },
            { X = 0.0155303, Y = 0.185775, Time = 70840245, XSpeed = 0.122549 },
            { X = 0.019697, Y = 0.185775, Time = 70840278, XSpeed = 0.126263 },
            { X = 0.0217803, Y = 0.178367, Time = 70840308, XSpeed = 0.0694444, YSpeed = -0.138889 },
            { X = 0.0238636, Y = 0.174663, Time = 70840325, XSpeed = 0.122549, YSpeed = -0.122549 },
            { X = 0.025947, Y = 0.159849, Time = 70840357, XSpeed = 0.0651041, YSpeed = -0.260416 },
            { X = 0.0280303, Y = 0.148737, Time = 70840373, XSpeed = 0.130208, YSpeed = -0.390626 },
            { X = 0.0280303, Y = 0.14133, Time = 70840380, YSpeed = -0.595235 },
            { X = 0.0280303, Y = 0.137626, Time = 70840394, YSpeed = -0.14881 },
            { X = 0.0301136, Y = 0.130219, Time = 70840400, XSpeed = 0.347222, YSpeed = -0.694446 },
            { X = 0.0301136, Y = 0.126515, Time = 70840412, YSpeed = -0.173612 },
            { X = 0.032197, Y = 0.1117, Time = 70840428, XSpeed = 0.130208, YSpeed = -0.520833 },
            { X = 0.032197, Y = 0.107997, Time = 70840445, YSpeed = -0.122549 },
            { X = 0.032197, Y = 0.100589, Time = 70840462, YSpeed = -0.245099 },
            { X = 0.032197, Y = 0.0894782, Time = 70840479, YSpeed = -0.367646 },
            { X = 0.032197, Y = 0.0820708, Time = 70840502, YSpeed = -0.18116 },
            { X = 0.032197, Y = 0.0783671, Time = 70840512, YSpeed = -0.208334 },
            { X = 0.032197, Y = 0.0709597, Time = 70840530, YSpeed = -0.23148 },
            { X = 0.032197, Y = 0.0598485, Time = 70840546, YSpeed = -0.390626 },
            { X = 0.032197, Y = 0.0524411, Time = 70840562, YSpeed = -0.260417 },
            { X = 0.032197, Y = 0.0376263, Time = 70840579, YSpeed = -0.490195 },
            { X = 0.032197, Y = 0.0302189, Time = 70840595, YSpeed = -0.260417 },
            { X = 0.0301136, Y = 0.000589311, Time = 70840617, XSpeed = -0.0946969, YSpeed = -0.757575 },
            { X = 0.0280303, Y = -0.00681812, Time = 70840628, XSpeed = -0.189394, YSpeed = -0.378789 },
            { X = 0.025947, Y = -0.0179292, Time = 70840646, XSpeed = -0.115741, YSpeed = -0.347221 },
            { X = 0.0238636, Y = -0.0253366, Time = 70840662, XSpeed = -0.130208, YSpeed = -0.260417 },
            { X = 0.0217803, Y = -0.0327441, Time = 70840679, XSpeed = -0.122549, YSpeed = -0.245099 },
            { X = 0.0176136, Y = -0.0401514, Time = 70840695, XSpeed = -0.260416, YSpeed = -0.260415 },
            { X = 0.0176136, Y = -0.0438551, Time = 70840712, YSpeed = -0.122549 },
            { X = 0.013447, Y = -0.0512626, Time = 70840731, XSpeed = -0.219298, YSpeed = -0.219299 },
            { X = 0.00719699, Y = -0.0623736, Time = 70840746, XSpeed = -0.416666, YSpeed = -0.416666 },
            { X = 0.0030303, Y = -0.0697811, Time = 70840763, XSpeed = -0.2451, YSpeed = -0.245099 },
            { X = -0.00321969, Y = -0.0771885, Time = 70840780, XSpeed = -0.367647, YSpeed = -0.245099 },
            { X = -0.00946969, Y = -0.0808922, Time = 70840796, XSpeed = -0.390625, YSpeed = -0.130209 },
            { X = -0.011553, Y = -0.0845959, Time = 70840796, XSpeed = -0.390625, YSpeed = -0.130209 },
            { X = -0.0157197, Y = -0.0882996, Time = 70840813, XSpeed = -0.245098, YSpeed = -0.122547 },
            { X = -0.017803, Y = -0.0920033, Time = 70840855, XSpeed = -0.0496031, YSpeed = -0.0496033 },
            { X = -0.0219697, Y = -0.0920033, Time = 70840870, XSpeed = -0.277779 },
            { X = -0.024053, Y = -0.0920033, Time = 70840878, XSpeed = -0.260416 },
            { X = -0.0261364, Y = -0.095707, Time = 70840895, XSpeed = -0.122549, YSpeed = -0.122549 },
            { X = -0.030303, Y = -0.0994107, Time = 70840912, XSpeed = -0.245098, YSpeed = -0.122549 },
            { X = -0.0323863, Y = -0.103114, Time = 70840928, XSpeed = -0.130208, YSpeed = -0.130209 },
            { X = -0.0344697, Y = -0.103114, Time = 70840945, XSpeed = -0.122549 },
            { X = -0.0386364, Y = -0.106818, Time = 70840963, XSpeed = -0.231482, YSpeed = -0.115741 },
            { X = -0.0407197, Y = -0.106818, Time = 70840978, XSpeed = -0.138889 },
            { X = -0.0448864, Y = -0.110522, Time = 70840995, XSpeed = -0.245098, YSpeed = -0.122547 },
            { X = -0.0469697, Y = -0.114226, Time = 70841011, XSpeed = -0.130208, YSpeed = -0.130209 },
            { X = -0.049053, Y = -0.114226, Time = 70841013, XSpeed = -1.04167 },
            { X = -0.0511364, Y = -0.117929, Time = 70841029, XSpeed = -0.130209, YSpeed = -0.130209 },
            { X = -0.0532197, Y = -0.117929, Time = 70841095, XSpeed = -0.0315656 },
            { X = -0.055303, Y = -0.121633, Time = 70841163, XSpeed = -0.0306372, YSpeed = -0.0306373 },
            { X = -0.0532197, Y = -0.121633, Time = 70841373, XSpeed = 0.00992063 },
            { X = -0.0448864, Y = -0.121633, Time = 70841395, XSpeed = 0.378788 },
            { X = -0.0407197, Y = -0.121633, Time = 70841398, XSpeed = 1.38889 },
            { X = -0.0344697, Y = -0.121633, Time = 70841412, XSpeed = 0.446429 },
            { X = -0.0323863, Y = -0.121633, Time = 70841413, XSpeed = 2.08333 },
            { X = -0.0261364, Y = -0.121633, Time = 70841430, XSpeed = 0.367647 },
            { X = -0.0219697, Y = -0.121633, Time = 70841446, XSpeed = 0.260416 },
            { X = -0.0198864, Y = -0.121633, Time = 70841463, XSpeed = 0.122549 },
            { X = -0.00946969, Y = -0.121633, Time = 70841491, XSpeed = 0.372024 },
            { X = -0.00530303, Y = -0.121633, Time = 70841499, XSpeed = 0.520833 },
            { X = 0.00719699, Y = -0.121633, Time = 70841513, XSpeed = 0.892858 },
            { X = 0.0176136, Y = -0.121633, Time = 70841530, XSpeed = 0.612745 },
            { X = 0.025947, Y = -0.121633, Time = 70841547, XSpeed = 0.490196 },
            { X = 0.032197, Y = -0.121633, Time = 70841565, XSpeed = 0.347222 },
            { X = 0.0342803, Y = -0.121633, Time = 70841580, XSpeed = 0.138889 },
            { X = 0.0363637, Y = -0.121633, Time = 70841600, XSpeed = 0.104168 },
            { X = 0.0405303, Y = -0.121633, Time = 70841629, XSpeed = 0.143678 },
            { X = 0.044697, Y = -0.125337, Time = 70841651, XSpeed = 0.189394, YSpeed = -0.0946972 },
            { X = 0.0467803, Y = -0.125337, Time = 70841662, XSpeed = 0.189394 },
            { X = 0.0488636, Y = -0.125337, Time = 70841679, XSpeed = 0.122549 },
            { X = 0.0530303, Y = -0.12904, Time = 70841696, XSpeed = 0.245098, YSpeed = -0.122549 },
            { X = 0.0551136, Y = -0.12904, Time = 70841712, XSpeed = 0.130208 }
         },
         IsThreaded = false,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         CtrlWZoom = false,
         Inputs = {
            Center = Input { Value = { 0.534469685951869, 0.488299593660567 }, }
         },
      }
   },
   ActiveTool = "Paint2"
}


Screenshot 2025-07-02 153245.png
Screenshot 2025-07-02 153245.png (213.43 KiB) Viewed 299 times

S2_Screen Recording 2025-07-02 044221_6.gif
Before: fast interactions
S2_Screen Recording 2025-07-02 044221_6.gif (1001.32 KiB) Viewed 411 times

S2_Screen Recording 2025-07-02 044056.gif
After: slow interactions
S2_Screen Recording 2025-07-02 044056.gif (988.45 KiB) Viewed 411 times


Original Post (so the following posts make sense):
When painting on large film frames (5K and up) and chaining paint nodes, when you clone on an earlier node, then later nodes will slow down so interactivity becomes like stirring glue.
If you save , close, then reopen the file, and try cloning on the last node, the painting is again at the usual , fast interaction...
This demo file is constructed so painting is as fast as possible on an 8K frame by sandwiching Paint nodes between Instanced SetDomain nodes that just allow painting on a small area in the bottom left corner.

To test - copy the nodes quoted below into a blank composition.
View the right most SetDomain Instance while painting with the Paint3_1 node. Should be speedy when doing solid color, multistroke clone or stroke clone painting.
Now select to view the Instanced SetDomain node to the right of the Paint3_1 node and do some multistroke clone or stroke clone painting. Speed should still be good.
Now go back to right most SetDomain Instance while painting with the Paint3_1 node again, now you should see the paint strokes are slow to react and gluey in behavior. No amount of Cache clearing will return the interactivity speed to that node.
Now save, close , then reopen the file , view the right most SetDomain Instance while painting with the Paint3_1 node and try multistroke clone or stroke clone painting . Back to speedy interactions again..

Tested with Fusion Studio 20.0.1 on Win 11 machine.

Original demo nodes:
Code: Select all
{
   Tools = ordered() {
      Background1_1 = Background {
         Inputs = {
            Width = Input { Value = 8192, },
            Height = Input { Value = 4096, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, }
         },
         ViewInfo = OperatorInfo { Pos = { -80.4836, 38.0217 } },
      },
      SetDomain1_2 = SetDomain {
         Inputs = {
            Mode = Input { Value = FuID { "Set" }, },
            Right = Input { Value = 0.262430939226519, },
            Top = Input { Value = 0.251381215469613, },
            Input = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 71, 38.8788 } },
      },
      Paint1_1 = Paint {
         Inputs = {
            Input = Input {
               SourceOp = "SetDomain1_2",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "Multistroke1",
               Source = "Out",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 236, 38.8788 } },
      },
      Multistroke1 = Multistroke {
         IsThreaded = true,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         CtrlWZoom = false,
         Inputs = {
            Paint = Input {
               SourceOp = "CloneMultistroke10",
               Source = "Out",
            }
         },
         Strokes = {
            {
               Time = 0,
               Params = {
                  ProcessLayersCustom = {
                     Value = ScriptVal { {
                           ":Default"
                        } }
                  },
               },
               { X = -0.402624, Y = -0.312155, T = 0 },
               { X = -0.401934, Y = -0.312155, T = 80 },
               { X = -0.400552, Y = -0.309392, T = 103 },
               { X = -0.399862, Y = -0.308011, T = 104 },
               { X = -0.39779, Y = -0.303867, T = 122 },
               { X = -0.395718, Y = -0.302486, T = 137 },
               { X = -0.395028, Y = -0.299724, T = 148 },
               { X = -0.392956, Y = -0.296961, T = 162 },
               { X = -0.390193, Y = -0.294199, T = 179 },
               { X = -0.388812, Y = -0.292818, T = 196 },
               { X = -0.38605, Y = -0.290055, T = 225 },
               { X = -0.385359, Y = -0.288674, T = 260 },
               { X = -0.383978, Y = -0.287293, T = 337 },
               { X = -0.383287, Y = -0.287293, T = 575 },
               { X = -0.383287, Y = -0.288674, T = 583 },
               { X = -0.383287, Y = -0.291436, T = 595 },
               { X = -0.383978, Y = -0.298343, T = 612 },
               { X = -0.384668, Y = -0.30663, T = 628 },
               { X = -0.38605, Y = -0.313536, T = 645 },
               { X = -0.38674, Y = -0.321823, T = 662 },
               { X = -0.387431, Y = -0.328729, T = 678 },
               { X = -0.387431, Y = -0.331492, T = 680 },
               { X = -0.387431, Y = -0.338398, T = 696 },
               { X = -0.388122, Y = -0.343923, T = 713 },
               { X = -0.388122, Y = -0.348066, T = 729 },
               { X = -0.388122, Y = -0.354972, T = 746 },
               { X = -0.388122, Y = -0.360497, T = 763 },
               { X = -0.388122, Y = -0.366022, T = 780 },
               { X = -0.388122, Y = -0.371547, T = 796 },
               { X = -0.388122, Y = -0.378453, T = 813 },
               { X = -0.388122, Y = -0.385359, T = 829 },
               { X = -0.388122, Y = -0.390884, T = 846 },
               { X = -0.388122, Y = -0.39779, T = 863 },
               { X = -0.388122, Y = -0.400552, T = 864 },
               { X = -0.388122, Y = -0.406077, T = 880 },
               { X = -0.388122, Y = -0.411602, T = 896 },
               { X = -0.388122, Y = -0.417127, T = 913 },
               { X = -0.388122, Y = -0.41989, T = 930 },
               { X = -0.388122, Y = -0.424033, T = 946 },
               { X = -0.388122, Y = -0.428177, T = 963 },
               { X = -0.388122, Y = -0.430939, T = 980 },
               { X = -0.388122, Y = -0.433702, T = 996 },
               { X = -0.388122, Y = -0.435083, T = 1013 },
               { X = -0.388122, Y = -0.437845, T = 1030 },
               { X = -0.388812, Y = -0.437845, T = 1432 },
               { X = -0.389503, Y = -0.437845, T = 1439 },
               { X = -0.390193, Y = -0.437845, T = 1447 },
               { X = -0.390884, Y = -0.437845, T = 1463 },
               { X = -0.392956, Y = -0.437845, T = 1464 },
               { X = -0.394337, Y = -0.437845, T = 1479 },
               { X = -0.395028, Y = -0.436464, T = 1480 },
               { X = -0.398481, Y = -0.436464, T = 1496 },
               { X = -0.400552, Y = -0.436464, T = 1513 },
               { X = -0.403315, Y = -0.436464, T = 1530 },
               { X = -0.404006, Y = -0.436464, T = 1546 },
               { X = -0.405387, Y = -0.436464, T = 1567 },
               { X = -0.404006, Y = -0.436464, T = 1871 },
               { X = -0.402624, Y = -0.436464, T = 1887 },
               { X = -0.401934, Y = -0.436464, T = 1903 },
               { X = -0.399862, Y = -0.436464, T = 1903 },
               { X = -0.397099, Y = -0.436464, T = 1929 },
               { X = -0.393646, Y = -0.436464, T = 1947 },
               { X = -0.391575, Y = -0.436464, T = 1964 },
               { X = -0.390193, Y = -0.436464, T = 1979 },
               { X = -0.388812, Y = -0.436464, T = 1996 },
               { X = -0.387431, Y = -0.436464, T = 2013 },
               { X = -0.38674, Y = -0.436464, T = 2015 },
               { X = -0.383978, Y = -0.437845, T = 2031 },
               { X = -0.382597, Y = -0.437845, T = 2047 },
               { X = -0.381215, Y = -0.437845, T = 2047 },
               { X = -0.379834, Y = -0.437845, T = 2065 },
               { X = -0.377762, Y = -0.437845, T = 2080 },
               { X = -0.376381, Y = -0.437845, T = 2098 },
               { X = -0.375691, Y = -0.437845, T = 2223 },
               { X = -0.375, Y = -0.437845, T = 2255 },
               { X = -0.374309, Y = -0.437845, T = 2271 }
            }
         }
      },
      CloneMultistroke10 = CloneMultistroke {
         IsThreaded = true,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         CtrlWZoom = false,
         Strokes = {
            {
               Time = 1,
               Params = {
                  ProcessLayersCustom = {
                     Value = ScriptVal { {
                           ":Default"
                        } }
                  },
               },
               { X = -0.446133, Y = -0.316298, T = 0 },
               { X = -0.447514, Y = -0.316298, T = 18 },
               { X = -0.449586, Y = -0.323204, T = 33 },
               { X = -0.453729, Y = -0.353591, T = 67 },
               { X = -0.45511, Y = -0.367403, T = 82 },
               { X = -0.457182, Y = -0.381215, T = 99 },
               { X = -0.457873, Y = -0.396409, T = 116 },
               { X = -0.457873, Y = -0.399171, T = 120 },
               { X = -0.459254, Y = -0.404696, T = 133 },
               { X = -0.459254, Y = -0.415746, T = 169 },
               { X = -0.459254, Y = -0.417127, T = 216 },
               { X = -0.458564, Y = -0.417127, T = 238 },
               { X = -0.455801, Y = -0.417127, T = 268 },
               { X = -0.446823, Y = -0.407459, T = 283 },
               { X = -0.435083, Y = -0.388122, T = 299 },
               { X = -0.424724, Y = -0.371547, T = 316 },
               { X = -0.411602, Y = -0.350829, T = 339 },
               { X = -0.410221, Y = -0.348066, T = 349 },
               { X = -0.408149, Y = -0.345304, T = 350 },
               { X = -0.407459, Y = -0.343923, T = 367 },
               { X = -0.406768, Y = -0.342541, T = 384 },
               { X = -0.406077, Y = -0.342541, T = 450 },
               { X = -0.405387, Y = -0.364641, T = 467 },
               { X = -0.405387, Y = -0.379834, T = 483 },
               { X = -0.405387, Y = -0.388122, T = 500 },
               { X = -0.405387, Y = -0.390884, T = 517 },
               { X = -0.404696, Y = -0.393646, T = 533 },
               { X = -0.399862, Y = -0.388122, T = 630 },
               { X = -0.395028, Y = -0.379834, T = 638 },
               { X = -0.390193, Y = -0.368785, T = 650 },
               { X = -0.379834, Y = -0.35221, T = 667 },
               { X = -0.375691, Y = -0.345304, T = 683 },
               { X = -0.375, Y = -0.345304, T = 733 },
               { X = -0.373619, Y = -0.35221, T = 750 },
               { X = -0.372238, Y = -0.360497, T = 751 },
               { X = -0.369475, Y = -0.389503, T = 767 },
               { X = -0.366022, Y = -0.410221, T = 784 },
               { X = -0.364641, Y = -0.415746, T = 800 },
               { X = -0.36326, Y = -0.417127, T = 817 },
               { X = -0.361878, Y = -0.417127, T = 833 },
               { X = -0.353591, Y = -0.411602, T = 850 },
               { X = -0.343232, Y = -0.390884, T = 867 },
               { X = -0.332873, Y = -0.370166, T = 884 },
               { X = -0.321823, Y = -0.343923, T = 900 },
               { X = -0.313536, Y = -0.321823, T = 917 },
               { X = -0.308702, Y = -0.305249, T = 933 },
               { X = -0.30663, Y = -0.301105, T = 935 },
               { X = -0.305939, Y = -0.298343, T = 951 },
               { X = -0.305249, Y = -0.298343, T = 1000 },
               { X = -0.305249, Y = -0.313536, T = 1034 },
               { X = -0.305249, Y = -0.338398, T = 1058 },
               { X = -0.303867, Y = -0.349448, T = 1071 },
               { X = -0.303867, Y = -0.353591, T = 1084 },
               { X = -0.302486, Y = -0.359116, T = 1100 },
               { X = -0.302486, Y = -0.360497, T = 1117 },
               { X = -0.301105, Y = -0.360497, T = 1183 },
               { X = -0.301105, Y = -0.359116, T = 1210 },
               { X = -0.300414, Y = -0.357735, T = 1220 }
            }
         }
      },
      Instance_SetDomain1_1_4 = SetDomain {
         SourceOp = "SetDomain1_2",
         Inputs = {
            SettingsNest = Input {
            },
            LayersNest = Input {
            },
            Input = Input {
               SourceOp = "Paint1_1",
               Source = "Output",
            },
            Foreground = Input {
            },
            CommentsNest = Input {
            },
            FrameRenderScriptNest = Input {
            },
            StartRenderScripts = Input {
            },
            EndRenderScripts = Input {
            }
         },
         ViewInfo = OperatorInfo { Pos = { 346, 38.8788 } },
      },
      Paint2_1 = Paint {
         Inputs = {
            Input = Input {
               SourceOp = "Instance_SetDomain1_1_4",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "Multistroke2",
               Source = "Out",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 456, 38.8788 } },
      },
      Multistroke2 = Multistroke {
         IsThreaded = true,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         CtrlWZoom = false,
         Inputs = {
            Paint = Input {
               SourceOp = "Multistroke13",
               Source = "Out",
            },
            ["PaintApplyColor.Green"] = Input { Value = 0, }
         },
         Strokes = {
            {
               Time = 0,
               Params = {
                  ProcessLayersCustom = {
                     Value = ScriptVal { {
                           ":Default"
                        } }
                  },
                  ["PaintApplyColor.Green"] = {
                     Value = 0
                  },
               },
               { X = -0.423343, Y = -0.346685, T = 0 },
               { X = -0.423343, Y = -0.345304, T = 128 },
               { X = -0.423343, Y = -0.343923, T = 141 },
               { X = -0.422652, Y = -0.342541, T = 146 },
               { X = -0.42058, Y = -0.339779, T = 163 },
               { X = -0.418508, Y = -0.335635, T = 179 },
               { X = -0.415746, Y = -0.331492, T = 196 },
               { X = -0.412293, Y = -0.327348, T = 213 },
               { X = -0.40884, Y = -0.321823, T = 229 },
               { X = -0.407459, Y = -0.320442, T = 231 },
               { X = -0.405387, Y = -0.319061, T = 248 },
               { X = -0.402624, Y = -0.314917, T = 264 },
               { X = -0.401934, Y = -0.313536, T = 280 },
               { X = -0.401243, Y = -0.312155, T = 297 },
               { X = -0.399862, Y = -0.310773, T = 313 },
               { X = -0.398481, Y = -0.309392, T = 330 },
               { X = -0.39779, Y = -0.309392, T = 347 },
               { X = -0.395718, Y = -0.30663, T = 364 },
               { X = -0.392265, Y = -0.305249, T = 381 },
               { X = -0.391575, Y = -0.303867, T = 397 },
               { X = -0.389503, Y = -0.303867, T = 414 },
               { X = -0.387431, Y = -0.302486, T = 431 },
               { X = -0.38674, Y = -0.302486, T = 431 },
               { X = -0.384668, Y = -0.301105, T = 448 },
               { X = -0.381906, Y = -0.299724, T = 464 },
               { X = -0.379834, Y = -0.299724, T = 481 },
               { X = -0.375691, Y = -0.298343, T = 498 },
               { X = -0.372238, Y = -0.298343, T = 514 },
               { X = -0.368785, Y = -0.298343, T = 531 },
               { X = -0.368094, Y = -0.298343, T = 547 },
               { X = -0.366022, Y = -0.298343, T = 564 },
               { X = -0.364641, Y = -0.298343, T = 581 },
               { X = -0.36395, Y = -0.298343, T = 597 },
               { X = -0.362569, Y = -0.298343, T = 614 },
               { X = -0.360497, Y = -0.298343, T = 631 },
               { X = -0.359807, Y = -0.298343, T = 632 },
               { X = -0.355663, Y = -0.298343, T = 648 },
               { X = -0.352901, Y = -0.298343, T = 665 },
               { X = -0.348757, Y = -0.299724, T = 685 },
               { X = -0.345304, Y = -0.301105, T = 698 },
               { X = -0.343923, Y = -0.301105, T = 714 },
               { X = -0.343232, Y = -0.301105, T = 731 },
               { X = -0.343232, Y = -0.302486, T = 748 },
               { X = -0.342541, Y = -0.303867, T = 764 },
               { X = -0.341851, Y = -0.305249, T = 781 },
               { X = -0.34116, Y = -0.30663, T = 798 },
               { X = -0.34047, Y = -0.308011, T = 814 },
               { X = -0.339779, Y = -0.309392, T = 831 },
               { X = -0.339779, Y = -0.314917, T = 847 },
               { X = -0.338398, Y = -0.319061, T = 864 },
               { X = -0.338398, Y = -0.323204, T = 881 },
               { X = -0.338398, Y = -0.327348, T = 898 },
               { X = -0.338398, Y = -0.331492, T = 914 },
               { X = -0.338398, Y = -0.335635, T = 931 },
               { X = -0.337707, Y = -0.338398, T = 947 },
               { X = -0.337017, Y = -0.339779, T = 964 },
               { X = -0.337017, Y = -0.343923, T = 981 },
               { X = -0.337017, Y = -0.345304, T = 998 },
               { X = -0.337017, Y = -0.348066, T = 1015 },
               { X = -0.337017, Y = -0.350829, T = 1031 },
               { X = -0.337017, Y = -0.353591, T = 1048 },
               { X = -0.337017, Y = -0.356354, T = 1064 },
               { X = -0.337017, Y = -0.357735, T = 1081 },
               { X = -0.337017, Y = -0.360497, T = 1097 },
               { X = -0.337017, Y = -0.364641, T = 1114 },
               { X = -0.338398, Y = -0.368785, T = 1131 },
               { X = -0.34116, Y = -0.374309, T = 1148 },
               { X = -0.342541, Y = -0.378453, T = 1164 },
               { X = -0.344613, Y = -0.382597, T = 1181 },
               { X = -0.345994, Y = -0.385359, T = 1198 },
               { X = -0.348066, Y = -0.389503, T = 1214 },
               { X = -0.349448, Y = -0.392265, T = 1231 },
               { X = -0.350138, Y = -0.393646, T = 1232 },
               { X = -0.351519, Y = -0.395028, T = 1248 },
               { X = -0.35221, Y = -0.39779, T = 1265 },
               { X = -0.352901, Y = -0.399171, T = 1281 },
               { X = -0.354972, Y = -0.401934, T = 1297 },
               { X = -0.355663, Y = -0.403315, T = 1314 },
               { X = -0.356354, Y = -0.404696, T = 1331 },
               { X = -0.357735, Y = -0.406077, T = 1348 },
               { X = -0.359807, Y = -0.40884, T = 1365 },
               { X = -0.361878, Y = -0.411602, T = 1382 },
               { X = -0.364641, Y = -0.412983, T = 1398 },
               { X = -0.366022, Y = -0.414365, T = 1415 },
               { X = -0.367403, Y = -0.417127, T = 1415 },
               { X = -0.370856, Y = -0.421271, T = 1432 },
               { X = -0.373619, Y = -0.424033, T = 1448 },
               { X = -0.377072, Y = -0.426796, T = 1465 },
               { X = -0.378453, Y = -0.426796, T = 1481 },
               { X = -0.379144, Y = -0.426796, T = 1498 },
               { X = -0.381906, Y = -0.429558, T = 1532 },
               { X = -0.382597, Y = -0.430939, T = 1541 },
               { X = -0.383287, Y = -0.430939, T = 1550 },
               { X = -0.384668, Y = -0.430939, T = 1565 },
               { X = -0.38605, Y = -0.43232, T = 1581 },
               { X = -0.387431, Y = -0.433702, T = 1598 },
               { X = -0.389503, Y = -0.433702, T = 1615 },
               { X = -0.390193, Y = -0.435083, T = 1615 },
               { X = -0.392956, Y = -0.436464, T = 1632 },
               { X = -0.395718, Y = -0.437845, T = 1648 },
               { X = -0.397099, Y = -0.439227, T = 1668 },
               { X = -0.399171, Y = -0.440608, T = 1682 },
               { X = -0.399862, Y = -0.441989, T = 1699 },
               { X = -0.401243, Y = -0.44337, T = 1715 },
               { X = -0.402624, Y = -0.444751, T = 1732 },
               { X = -0.404696, Y = -0.446133, T = 1749 },
               { X = -0.406077, Y = -0.447514, T = 1781 },
               { X = -0.406768, Y = -0.448895, T = 1798 },
               { X = -0.407459, Y = -0.450276, T = 1799 },
               { X = -0.406077, Y = -0.450276, T = 2088 },
               { X = -0.401934, Y = -0.446133, T = 2095 },
               { X = -0.400552, Y = -0.444751, T = 2103 },
               { X = -0.396409, Y = -0.441989, T = 2115 },
               { X = -0.387431, Y = -0.437845, T = 2131 },
               { X = -0.379144, Y = -0.435083, T = 2148 },
               { X = -0.371547, Y = -0.430939, T = 2165 },
               { X = -0.367403, Y = -0.429558, T = 2181 },
               { X = -0.366022, Y = -0.429558, T = 2198 },
               { X = -0.364641, Y = -0.429558, T = 2200 },
               { X = -0.36326, Y = -0.429558, T = 2216 },
               { X = -0.362569, Y = -0.429558, T = 2232 },
               { X = -0.361878, Y = -0.429558, T = 2249 },
               { X = -0.359116, Y = -0.428177, T = 2266 },
               { X = -0.357044, Y = -0.428177, T = 2282 },
               { X = -0.354972, Y = -0.428177, T = 2298 },
               { X = -0.35221, Y = -0.428177, T = 2315 },
               { X = -0.350829, Y = -0.428177, T = 2332 },
               { X = -0.348066, Y = -0.428177, T = 2349 },
               { X = -0.346685, Y = -0.428177, T = 2366 },
               { X = -0.345304, Y = -0.428177, T = 2382 },
               { X = -0.343232, Y = -0.428177, T = 2399 },
               { X = -0.342541, Y = -0.429558, T = 2415 },
               { X = -0.34047, Y = -0.43232, T = 2432 },
               { X = -0.339779, Y = -0.43232, T = 2449 },
               { X = -0.337707, Y = -0.435083, T = 2466 },
               { X = -0.335635, Y = -0.437845, T = 2482 },
               { X = -0.334945, Y = -0.437845, T = 2499 },
               { X = -0.333564, Y = -0.440608, T = 2516 },
               { X = -0.331492, Y = -0.441989, T = 2532 },
               { X = -0.330801, Y = -0.441989, T = 2549 },
               { X = -0.33011, Y = -0.44337, T = 2566 },
               { X = -0.328039, Y = -0.444751, T = 2582 },
               { X = -0.326657, Y = -0.446133, T = 2599 },
               { X = -0.325967, Y = -0.447514, T = 2599 },
               { X = -0.324586, Y = -0.448895, T = 2616 },
               { X = -0.321823, Y = -0.451657, T = 2633 },
               { X = -0.320442, Y = -0.453039, T = 2649 },
               { X = -0.319061, Y = -0.45442, T = 2666 },
               { X = -0.31768, Y = -0.45442, T = 2683 },
               { X = -0.316989, Y = -0.455801, T = 2699 },
               { X = -0.316298, Y = -0.457182, T = 2716 },
               { X = -0.314917, Y = -0.457182, T = 2733 },
               { X = -0.314917, Y = -0.458564, T = 2751 },
               { X = -0.314227, Y = -0.458564, T = 2770 },
               { X = -0.313536, Y = -0.458564, T = 2783 },
               { X = -0.312845, Y = -0.458564, T = 2799 },
               { X = -0.312155, Y = -0.461326, T = 2848 },
               { X = -0.311464, Y = -0.461326, T = 2952 }
            }
         }
      },
      Multistroke13 = Multistroke {
         IsThreaded = true,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         CtrlWZoom = false,
         Inputs = {
            ["PaintApplyColor.Green"] = Input { Value = 0, }
         },
         Strokes = {
            {
               Time = 1,
               Params = {
                  ProcessLayersCustom = {
                     Value = ScriptVal { {
                           ":Default"
                        } }
                  },
                  ["PaintApplyColor.Green"] = {
                     Value = 0
                  },
               },
               { X = -0.462707, Y = -0.310773, T = 0 },
               { X = -0.462017, Y = -0.312155, T = 43 },
               { X = -0.461326, Y = -0.314917, T = 54 },
               { X = -0.459945, Y = -0.314917, T = 58 },
               { X = -0.457873, Y = -0.320442, T = 72 },
               { X = -0.451657, Y = -0.325967, T = 89 },
               { X = -0.444751, Y = -0.335635, T = 105 },
               { X = -0.436464, Y = -0.346685, T = 122 },
               { X = -0.427486, Y = -0.361878, T = 139 },
               { X = -0.42058, Y = -0.370166, T = 155 },
               { X = -0.413674, Y = -0.381215, T = 172 },
               { X = -0.408149, Y = -0.390884, T = 189 },
               { X = -0.404006, Y = -0.400552, T = 205 },
               { X = -0.400552, Y = -0.410221, T = 222 },
               { X = -0.399171, Y = -0.412983, T = 223 },
               { X = -0.397099, Y = -0.418508, T = 240 },
               { X = -0.395028, Y = -0.421271, T = 257 },
               { X = -0.394337, Y = -0.424033, T = 273 },
               { X = -0.393646, Y = -0.425414, T = 329 },
               { X = -0.393646, Y = -0.421271, T = 425 },
               { X = -0.392265, Y = -0.406077, T = 440 },
               { X = -0.392265, Y = -0.385359, T = 458 },
               { X = -0.392265, Y = -0.370166, T = 476 },
               { X = -0.392265, Y = -0.359116, T = 494 },
               { X = -0.392265, Y = -0.353591, T = 495 },
               { X = -0.392265, Y = -0.349448, T = 507 },
               { X = -0.392956, Y = -0.343923, T = 523 },
               { X = -0.393646, Y = -0.338398, T = 540 },
               { X = -0.395028, Y = -0.335635, T = 556 },
               { X = -0.396409, Y = -0.331492, T = 573 },
               { X = -0.397099, Y = -0.328729, T = 590 },
               { X = -0.39779, Y = -0.327348, T = 607 },
               { X = -0.398481, Y = -0.324586, T = 607 },
               { X = -0.399862, Y = -0.31768, T = 624 },
               { X = -0.400552, Y = -0.313536, T = 640 },
               { X = -0.401934, Y = -0.309392, T = 656 },
               { X = -0.402624, Y = -0.305249, T = 674 },
               { X = -0.402624, Y = -0.302486, T = 690 },
               { X = -0.403315, Y = -0.299724, T = 706 },
               { X = -0.404006, Y = -0.298343, T = 724 },
               { X = -0.403315, Y = -0.298343, T = 839 },
               { X = -0.401934, Y = -0.299724, T = 847 },
               { X = -0.399171, Y = -0.302486, T = 873 },
               { X = -0.395718, Y = -0.30663, T = 890 },
               { X = -0.390193, Y = -0.314917, T = 906 },
               { X = -0.381906, Y = -0.325967, T = 923 },
               { X = -0.373619, Y = -0.339779, T = 939 },
               { X = -0.364641, Y = -0.354972, T = 956 },
               { X = -0.359807, Y = -0.364641, T = 973 },
               { X = -0.357044, Y = -0.370166, T = 975 },
               { X = -0.354972, Y = -0.375691, T = 990 },
               { X = -0.345994, Y = -0.396409, T = 1008 },
               { X = -0.343232, Y = -0.401934, T = 1024 },
               { X = -0.34047, Y = -0.411602, T = 1040 },
               { X = -0.338398, Y = -0.414365, T = 1057 },
               { X = -0.335635, Y = -0.417127, T = 1074 },
               { X = -0.334254, Y = -0.41989, T = 1107 },
               { X = -0.333564, Y = -0.421271, T = 1123 },
               { X = -0.332873, Y = -0.421271, T = 1303 },
               { X = -0.332873, Y = -0.418508, T = 1311 },
               { X = -0.334254, Y = -0.412983, T = 1323 },
               { X = -0.334945, Y = -0.401934, T = 1340 },
               { X = -0.337707, Y = -0.388122, T = 1356 },
               { X = -0.339779, Y = -0.372928, T = 1373 },
               { X = -0.343923, Y = -0.354972, T = 1390 },
               { X = -0.346685, Y = -0.342541, T = 1407 },
               { X = -0.347376, Y = -0.337017, T = 1407 },
               { X = -0.349448, Y = -0.328729, T = 1424 },
               { X = -0.350829, Y = -0.321823, T = 1440 },
               { X = -0.35221, Y = -0.316298, T = 1457 },
               { X = -0.352901, Y = -0.310773, T = 1474 },
               { X = -0.354282, Y = -0.305249, T = 1491 },
               { X = -0.354282, Y = -0.301105, T = 1507 },
               { X = -0.354972, Y = -0.296961, T = 1526 },
               { X = -0.354972, Y = -0.29558, T = 1541 },
               { X = -0.355663, Y = -0.291436, T = 1558 },
               { X = -0.355663, Y = -0.290055, T = 1574 },
               { X = -0.356354, Y = -0.287293, T = 1591 },
               { X = -0.354972, Y = -0.287293, T = 1694 },
               { X = -0.354282, Y = -0.287293, T = 1696 },
               { X = -0.353591, Y = -0.287293, T = 1706 },
               { X = -0.350829, Y = -0.290055, T = 1724 },
               { X = -0.348757, Y = -0.292818, T = 1741 },
               { X = -0.346685, Y = -0.29558, T = 1757 },
               { X = -0.343232, Y = -0.298343, T = 1774 },
               { X = -0.34047, Y = -0.303867, T = 1790 },
               { X = -0.337707, Y = -0.30663, T = 1791 },
               { X = -0.333564, Y = -0.314917, T = 1808 },
               { X = -0.328729, Y = -0.323204, T = 1824 },
               { X = -0.322514, Y = -0.331492, T = 1841 },
               { X = -0.316989, Y = -0.342541, T = 1857 },
               { X = -0.309392, Y = -0.354972, T = 1874 },
               { X = -0.304558, Y = -0.364641, T = 1891 },
               { X = -0.301796, Y = -0.368785, T = 1908 },
               { X = -0.301105, Y = -0.371547, T = 1924 },
               { X = -0.300414, Y = -0.375691, T = 1941 },
               { X = -0.299033, Y = -0.378453, T = 1958 },
               { X = -0.297652, Y = -0.379834, T = 1975 },
               { X = -0.296961, Y = -0.383978, T = 1991 },
               { X = -0.296961, Y = -0.385359, T = 2008 }
            }
         }
      },
      Instance_SetDomain1_2_1 = SetDomain {
         SourceOp = "SetDomain1_2",
         Inputs = {
            SettingsNest = Input {
            },
            LayersNest = Input {
            },
            Input = Input {
               SourceOp = "Paint2_1",
               Source = "Output",
            },
            Foreground = Input {
            },
            CommentsNest = Input {
            },
            FrameRenderScriptNest = Input {
            },
            StartRenderScripts = Input {
            },
            EndRenderScripts = Input {
            }
         },
         ViewInfo = OperatorInfo { Pos = { 566, 38.8788 } },
      },
      Paint3_1 = Paint {
         Inputs = {
            Input = Input {
               SourceOp = "Instance_SetDomain1_2_1",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "Multistroke3",
               Source = "Out",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 676, 38.8788 } },
      },
      Multistroke3 = Multistroke {
         IsThreaded = true,
         Brushes = { "SoftBrush" },
         ApplyModes = {
            "PaintApplyColor",
            "PaintApplyRubThrough"
         },
         CtrlWZoom = false,
         Inputs = {
            Paint = Input {
               SourceOp = "Multistroke14",
               Source = "Out",
            },
            ["PaintApplyColor.Green"] = Input { Value = 0, },
            ["PaintApplyColor.Blue"] = Input { Value = 0, },
            ["PaintApplyRubThrough.Offset"] = Input { Value = { 0.51, 0.5 }, }
         },
         Strokes = {
            {
               Time = 0,
               Params = {
                  ProcessLayersCustom = {
                     Value = ScriptVal { {
                           ":Default"
                        } }
                  },
                  ["PaintApplyColor.Green"] = {
                     Value = 0
                  },
                  ["PaintApplyColor.Blue"] = {
                     Value = 0
                  },
                  ["PaintApplyRubThrough.Offset"] = {
                     Value = { 0.51, 0.5 }
                  },
               },
               { X = -0.39779, Y = -0.319061, T = 0 },
               { X = -0.397099, Y = -0.31768, T = 173 },
               { X = -0.395028, Y = -0.314917, T = 178 },
               { X = -0.393646, Y = -0.312155, T = 190 },
               { X = -0.390193, Y = -0.308011, T = 192 },
               { X = -0.38605, Y = -0.302486, T = 208 },
               { X = -0.381906, Y = -0.298343, T = 225 },
               { X = -0.379144, Y = -0.29558, T = 241 },
               { X = -0.377072, Y = -0.29558, T = 258 },
               { X = -0.373619, Y = -0.292818, T = 275 },
               { X = -0.371547, Y = -0.292818, T = 291 },
               { X = -0.367403, Y = -0.291436, T = 309 },
               { X = -0.36395, Y = -0.290055, T = 336 },
               { X = -0.361188, Y = -0.288674, T = 337 },
               { X = -0.359116, Y = -0.288674, T = 357 },
               { X = -0.354972, Y = -0.285912, T = 373 },
               { X = -0.351519, Y = -0.285912, T = 390 },
               { X = -0.350138, Y = -0.285912, T = 392 },
               { X = -0.347376, Y = -0.285912, T = 408 },
               { X = -0.345304, Y = -0.283149, T = 425 },
               { X = -0.344613, Y = -0.283149, T = 441 },
               { X = -0.343232, Y = -0.283149, T = 458 },
               { X = -0.342541, Y = -0.283149, T = 475 },
               { X = -0.341851, Y = -0.283149, T = 491 },
               { X = -0.34116, Y = -0.283149, T = 508 },
               { X = -0.34047, Y = -0.283149, T = 525 },
               { X = -0.339088, Y = -0.283149, T = 541 },
               { X = -0.338398, Y = -0.283149, T = 558 },
               { X = -0.336326, Y = -0.283149, T = 575 },
               { X = -0.334945, Y = -0.283149, T = 607 },
               { X = -0.334945, Y = -0.28453, T = 645 },
               { X = -0.334254, Y = -0.285912, T = 657 },
               { X = -0.333564, Y = -0.285912, T = 674 },
               { X = -0.332873, Y = -0.287293, T = 705 },
               { X = -0.332182, Y = -0.287293, T = 723 },
               { X = -0.331492, Y = -0.288674, T = 736 },
               { X = -0.330801, Y = -0.290055, T = 752 },
               { X = -0.330801, Y = -0.291436, T = 775 },
               { X = -0.33011, Y = -0.292818, T = 791 },
               { X = -0.33011, Y = -0.294199, T = 815 },
               { X = -0.33011, Y = -0.29558, T = 839 },
               { X = -0.328729, Y = -0.298343, T = 863 },
               { X = -0.328729, Y = -0.299724, T = 895 },
               { X = -0.328729, Y = -0.301105, T = 903 },
               { X = -0.328729, Y = -0.302486, T = 924 },
               { X = -0.328729, Y = -0.303867, T = 941 },
               { X = -0.328729, Y = -0.30663, T = 958 },
               { X = -0.328729, Y = -0.308011, T = 988 },
               { X = -0.328729, Y = -0.309392, T = 1003 },
               { X = -0.328729, Y = -0.310773, T = 1024 },
               { X = -0.328729, Y = -0.312155, T = 1047 },
               { X = -0.328729, Y = -0.313536, T = 1055 },
               { X = -0.328729, Y = -0.316298, T = 1079 },
               { X = -0.328729, Y = -0.31768, T = 1104 },
               { X = -0.328729, Y = -0.320442, T = 1127 },
               { X = -0.32942, Y = -0.320442, T = 1135 },
               { X = -0.33011, Y = -0.320442, T = 1143 },
               { X = -0.33011, Y = -0.321823, T = 1158 },
               { X = -0.330801, Y = -0.321823, T = 1174 },
               { X = -0.331492, Y = -0.321823, T = 1176 },
               { X = -0.332873, Y = -0.324586, T = 1192 },
               { X = -0.334254, Y = -0.327348, T = 1209 },
               { X = -0.337017, Y = -0.33011, T = 1250 },
               { X = -0.339779, Y = -0.334254, T = 1274 },
               { X = -0.34047, Y = -0.334254, T = 1291 },
               { X = -0.341851, Y = -0.337017, T = 1308 },
               { X = -0.343232, Y = -0.338398, T = 1324 },
               { X = -0.343923, Y = -0.338398, T = 1341 },
               { X = -0.346685, Y = -0.34116, T = 1358 },
               { X = -0.348066, Y = -0.342541, T = 1374 },
               { X = -0.348757, Y = -0.343923, T = 1375 },
               { X = -0.349448, Y = -0.343923, T = 1391 },
               { X = -0.35221, Y = -0.345304, T = 1408 },
               { X = -0.352901, Y = -0.346685, T = 1424 },
               { X = -0.353591, Y = -0.346685, T = 1441 },
               { X = -0.354282, Y = -0.348066, T = 1458 },
               { X = -0.355663, Y = -0.348066, T = 1474 },
               { X = -0.357044, Y = -0.349448, T = 1491 },
               { X = -0.358425, Y = -0.350829, T = 1508 },
               { X = -0.371547, Y = -0.360497, T = 1656 },
               { X = -0.372238, Y = -0.360497, T = 1663 },
               { X = -0.373619, Y = -0.360497, T = 1679 },
               { X = -0.375, Y = -0.360497, T = 1692 },
               { X = -0.375691, Y = -0.360497, T = 1708 },
               { X = -0.377072, Y = -0.361878, T = 1725 },
               { X = -0.377762, Y = -0.361878, T = 1741 },
               { X = -0.378453, Y = -0.361878, T = 1758 },
               { X = -0.379834, Y = -0.361878, T = 1775 },
               { X = -0.379834, Y = -0.36326, T = 1776 },
               { X = -0.380525, Y = -0.36326, T = 1799 },
               { X = -0.381215, Y = -0.36326, T = 1808 },
               { X = -0.381906, Y = -0.36326, T = 1832 },
               { X = -0.382597, Y = -0.36326, T = 1858 },
               { X = -0.383287, Y = -0.36326, T = 1875 },
               { X = -0.383978, Y = -0.36326, T = 1892 },
               { X = -0.384668, Y = -0.36326, T = 1919 },
               { X = -0.38605, Y = -0.36326, T = 1975 },
               { X = -0.38674, Y = -0.36326, T = 2015 },
               { X = -0.387431, Y = -0.36326, T = 2047 },
               { X = -0.38674, Y = -0.364641, T = 2303 },
               { X = -0.38605, Y = -0.364641, T = 2328 },
               { X = -0.385359, Y = -0.364641, T = 2335 },
               { X = -0.384668, Y = -0.364641, T = 2343 },
               { X = -0.383287, Y = -0.364641, T = 2359 },
               { X = -0.382597, Y = -0.364641, T = 2386 },
               { X = -0.381906, Y = -0.364641, T = 2392 },
               { X = -0.381215, Y = -0.364641, T = 2409 },
               { X = -0.379834, Y = -0.364641, T = 2426 },
               { X = -0.378453, Y = -0.364641, T = 2442 },
               { X = -0.372928, Y = -0.364641, T = 2481 },
               { X = -0.371547, Y = -0.364641, T = 2492 },
               { X = -0.368094, Y = -0.364641, T = 2509 },
               { X = -0.36395, Y = -0.364641, T = 2525 },
               { X = -0.361878, Y = -0.364641, T = 2542 },
               { X = -0.360497, Y = -0.364641, T = 2543 },
               { X = -0.359807, Y = -0.364641, T = 2559 },
               { X = -0.359116, Y = -0.364641, T = 2559 },
               { X = -0.358425, Y = -0.364641, T = 2575 },
               { X = -0.357044, Y = -0.364641, T = 2592 },
               { X = -0.356354, Y = -0.364641, T = 2609 },
               { X = -0.354972, Y = -0.364641, T = 2626 },
               { X = -0.352901, Y = -0.364641, T = 2643 },
               { X = -0.350829, Y = -0.364641, T = 2659 },
               { X = -0.348757, Y = -0.364641, T = 2676 },
               { X = -0.347376, Y = -0.364641, T = 2692 },
               { X = -0.345304, Y = -0.364641, T = 2709 },
               { X = -0.343923, Y = -0.364641, T = 2726 },
               { X = -0.343232, Y = -0.364641, T = 2743 },
               { X = -0.342541, Y = -0.364641, T = 2744 },
               { X = -0.341851, Y = -0.364641, T = 2760 },
               { X = -0.34116, Y = -0.364641, T = 2776 },
               { X = -0.34047, Y = -0.364641, T = 2795 },
               { X = -0.334945, Y = -0.367403, T = 2898 },
               { X = -0.334945, Y = -0.368785, T = 2910 },
               { X = -0.334254, Y = -0.370166, T = 2926 },
               { X = -0.332873, Y = -0.370166, T = 2944 },
               { X = -0.331492, Y = -0.371547, T = 2976 },
               { X = -0.330801, Y = -0.371547, T = 2992 },
               { X = -0.330801, Y = -0.372928, T = 3009 },
               { X = -0.32942, Y = -0.374309, T = 3026 },
               { X = -0.328039, Y = -0.375691, T = 3043 },
               { X = -0.326657, Y = -0.378453, T = 3059 },
               { X = -0.325967, Y = -0.378453, T = 3076 },
               { X = -0.324586, Y = -0.382597, T = 3103 },
               { X = -0.323204, Y = -0.382597, T = 3117 },
               { X = -0.322514, Y = -0.383978, T = 3143 },
               { X = -0.321823, Y = -0.385359, T = 3167 },
               { X = -0.321823, Y = -0.38674, T = 3199 },
               { X = -0.321823, Y = -0.388122, T = 3239 },
               { X = -0.321133, Y = -0.389503, T = 3247 },
               { X = -0.321133, Y = -0.390884, T = 3271 },
               { X = -0.321133, Y = -0.392265, T = 3287 },
               { X = -0.321133, Y = -0.393646, T = 3303 },
               { X = -0.321133, Y = -0.395028, T = 3319 },
               { X = -0.321133, Y = -0.396409, T = 3327 },
               { X = -0.321133, Y = -0.399171, T = 3359 },
               { X = -0.321133, Y = -0.400552, T = 3384 },
               { X = -0.321133, Y = -0.401934, T = 3407 },
               { X = -0.321133, Y = -0.404696, T = 3415 },
               { X = -0.321823, Y = -0.406077, T = 3431 },
               { X = -0.321823, Y = -0.407459, T = 3447 },
               { X = -0.321823, Y = -0.40884, T = 3460 },
               { X = -0.322514, Y = -0.410221, T = 3476 },
               { X = -0.323204, Y = -0.412983, T = 3493 },
               { X = -0.323204, Y = -0.414365, T = 3510 },
               { X = -0.323895, Y = -0.414365, T = 3526 },
               { X = -0.323895, Y = -0.415746, T = 3543 },
               { X = -0.324586, Y = -0.418508, T = 3560 },
               { X = -0.325276, Y = -0.41989, T = 3600 },
               { X = -0.325276, Y = -0.422652, T = 3624 },
               { X = -0.325967, Y = -0.422652, T = 3640 },
               { X = -0.325967, Y = -0.424033, T = 3655 },
               { X = -0.327348, Y = -0.425414, T = 3671 },
               { X = -0.328039, Y = -0.426796, T = 3693 },
               { X = -0.328729, Y = -0.428177, T = 3697 },
               { X = -0.32942, Y = -0.429558, T = 3710 },
               { X = -0.332182, Y = -0.433702, T = 3748 },
               { X = -0.333564, Y = -0.433702, T = 3759 },
               { X = -0.334254, Y = -0.435083, T = 3776 },
               { X = -0.334945, Y = -0.435083, T = 3793 },
               { X = -0.336326, Y = -0.436464, T = 3810 },
               { X = -0.336326, Y = -0.437845, T = 3827 },
               { X = -0.337707, Y = -0.439227, T = 3843 },
               { X = -0.339088, Y = -0.439227, T = 3860 },
               { X = -0.339779, Y = -0.440608, T = 3877 },
               { X = -0.341851, Y = -0.441989, T = 3893 },
               { X = -0.342541, Y = -0.44337, T = 3910 },
               { X = -0.343232, Y = -0.44337, T = 3912 },
               { X = -0.345304, Y = -0.444751, T = 3928 },
               { X = -0.345994, Y = -0.444751, T = 3944 },
               { X = -0.348757, Y = -0.446133, T = 3961 },
               { X = -0.350138, Y = -0.447514, T = 3978 },
               { X = -0.351519, Y = -0.448895, T = 3994 },
               { X = -0.353591, Y = -0.448895, T = 4011 },
               { X = -0.355663, Y = -0.448895, T = 4027 },
               { X = -0.36326, Y = -0.451657, T = 4134 },
               { X = -0.364641, Y = -0.451657, T = 4145 },
               { X = -0.365331, Y = -0.451657, T = 4161 },
               { X = -0.366022, Y = -0.451657, T = 4178 },
               { X = -0.366713, Y = -0.451657, T = 4194 },
               { X = -0.367403, Y = -0.451657, T = 4211 },
               { X = -0.368094, Y = -0.451657, T = 4228 },
               { X = -0.369475, Y = -0.451657, T = 4260 },
               { X = -0.370166, Y = -0.451657, T = 4277 },
               { X = -0.370856, Y = -0.451657, T = 4293 },
               { X = -0.371547, Y = -0.451657, T = 4311 },
               { X = -0.372238, Y = -0.451657, T = 4327 },
               { X = -0.372928, Y = -0.451657, T = 4359 },
               { X = -0.373619, Y = -0.451657, T = 4383 },
               { X = -0.374309, Y = -0.451657, T = 4408 },
               { X = -0.374309, Y = -0.450276, T = 4415 },
               { X = -0.375691, Y = -0.450276, T = 4431 },
               { X = -0.376381, Y = -0.448895, T = 4444 },
               { X = -0.377072, Y = -0.448895, T = 4460 },
               { X = -0.377762, Y = -0.447514, T = 4477 },
               { X = -0.379144, Y = -0.447514, T = 4494 },
               { X = -0.379834, Y = -0.446133, T = 4511 },
               { X = -0.380525, Y = -0.446133, T = 4512 },
               { X = -0.381906, Y = -0.446133, T = 4528 },
               { X = -0.383287, Y = -0.44337, T = 4546 },
               { X = -0.383978, Y = -0.44337, T = 4577 },
               { X = -0.384668, Y = -0.44337, T = 4599 },
               { X = -0.384668, Y = -0.441989, T = 4611 },
               { X = -0.388122, Y = -0.439227, T = 4672 },
               { X = -0.388812, Y = -0.439227, T = 4679 },
               { X = -0.389503, Y = -0.437845, T = 4743 }
            }
         }
      },
      Multistroke14 = Multistroke {
         IsThreaded = true,
         Brushes = { "SoftBrush" },
         ApplyModes = {
            "PaintApplyColor",
            "PaintApplyRubThrough"
         },
         CtrlWZoom = false,
         Inputs = {
            ApplyMode = Input { Value = FuID { "PaintApplyRubThrough" }, },
            ["PaintApplyRubThrough.Offset"] = Input { Value = { 0.51, 0.5 }, },
            ["PaintApplyColor.Red"] = Input { Value = 0, }
         },
         Strokes = {
            {
               Time = 1,
               Params = {
                  ProcessLayersCustom = {
                     Value = ScriptVal { {
                           ":Default"
                        } }
                  },
                  ["PaintApplyColor.Red"] = {
                     Value = 0
                  },
               },
               { X = -0.256906, Y = -0.325967, T = 0 },
               { X = -0.258287, Y = -0.325967, T = 145 },
               { X = -0.259669, Y = -0.328729, T = 152 },
               { X = -0.26174, Y = -0.33011, T = 165 },
               { X = -0.267265, Y = -0.337017, T = 182 },
               { X = -0.276243, Y = -0.348066, T = 199 },
               { X = -0.280387, Y = -0.353591, T = 200 },
               { X = -0.285912, Y = -0.360497, T = 216 },
               { X = -0.290746, Y = -0.368785, T = 217 },
               { X = -0.302486, Y = -0.381215, T = 233 },
               { X = -0.315608, Y = -0.395028, T = 250 },
               { X = -0.325276, Y = -0.406077, T = 266 },
               { X = -0.333564, Y = -0.417127, T = 283 },
               { X = -0.339088, Y = -0.422652, T = 300 },
               { X = -0.343923, Y = -0.428177, T = 316 },
               { X = -0.346685, Y = -0.430939, T = 333 },
               { X = -0.347376, Y = -0.43232, T = 350 },
               { X = -0.350138, Y = -0.433702, T = 366 },
               { X = -0.354972, Y = -0.437845, T = 400 },
               { X = -0.355663, Y = -0.437845, T = 401 },
               { X = -0.354972, Y = -0.435083, T = 528 },
               { X = -0.35221, Y = -0.422652, T = 536 },
               { X = -0.348757, Y = -0.412983, T = 549 },
               { X = -0.341851, Y = -0.388122, T = 566 },
               { X = -0.336326, Y = -0.367403, T = 583 },
               { X = -0.332182, Y = -0.353591, T = 599 },
               { X = -0.331492, Y = -0.349448, T = 601 },
               { X = -0.33011, Y = -0.346685, T = 616 },
               { X = -0.328729, Y = -0.342541, T = 616 },
               { X = -0.328039, Y = -0.338398, T = 634 },
               { X = -0.325967, Y = -0.334254, T = 649 },
               { X = -0.323895, Y = -0.327348, T = 666 },
               { X = -0.321823, Y = -0.321823, T = 683 },
               { X = -0.320442, Y = -0.31768, T = 700 },
               { X = -0.319751, Y = -0.313536, T = 717 },
               { X = -0.319751, Y = -0.312155, T = 733 },
               { X = -0.319751, Y = -0.310773, T = 804 },
               { X = -0.321133, Y = -0.310773, T = 873 },
               { X = -0.323204, Y = -0.310773, T = 880 },
               { X = -0.326657, Y = -0.310773, T = 888 },
               { X = -0.333564, Y = -0.316298, T = 899 },
               { X = -0.345304, Y = -0.327348, T = 915 },
               { X = -0.357735, Y = -0.338398, T = 933 },
               { X = -0.366713, Y = -0.346685, T = 949 },
               { X = -0.374309, Y = -0.35221, T = 966 },
               { X = -0.380525, Y = -0.359116, T = 983 },
               { X = -0.383978, Y = -0.364641, T = 985 },
               { X = -0.38674, Y = -0.368785, T = 1000 },
               { X = -0.389503, Y = -0.372928, T = 1001 },
               { X = -0.395028, Y = -0.381215, T = 1017 },
               { X = -0.400552, Y = -0.388122, T = 1033 },
               { X = -0.405387, Y = -0.395028, T = 1050 },
               { X = -0.40884, Y = -0.399171, T = 1066 },
               { X = -0.412983, Y = -0.404696, T = 1083 },
               { X = -0.416436, Y = -0.407459, T = 1100 },
               { X = -0.421271, Y = -0.410221, T = 1117 },
               { X = -0.428177, Y = -0.415746, T = 1150 },
               { X = -0.429558, Y = -0.417127, T = 1160 },
               { X = -0.430939, Y = -0.417127, T = 1167 },
               { X = -0.43232, Y = -0.417127, T = 1184 },
               { X = -0.43232, Y = -0.418508, T = 1185 },
               { X = -0.43232, Y = -0.414365, T = 1273 },
               { X = -0.43163, Y = -0.40884, T = 1283 },
               { X = -0.424033, Y = -0.395028, T = 1299 },
               { X = -0.416436, Y = -0.382597, T = 1316 },
               { X = -0.40884, Y = -0.367403, T = 1333 },
               { X = -0.403315, Y = -0.35221, T = 1349 },
               { X = -0.398481, Y = -0.34116, T = 1366 },
               { X = -0.397099, Y = -0.331492, T = 1383 },
               { X = -0.395028, Y = -0.327348, T = 1385 },
               { X = -0.394337, Y = -0.323204, T = 1400 },
               { X = -0.393646, Y = -0.319061, T = 1417 },
               { X = -0.392956, Y = -0.314917, T = 1434 },
               { X = -0.392956, Y = -0.313536, T = 1451 },
               { X = -0.391575, Y = -0.309392, T = 1467 },
               { X = -0.390884, Y = -0.308011, T = 1484 },
               { X = -0.392956, Y = -0.308011, T = 1712 },
               { X = -0.394337, Y = -0.308011, T = 1720 },
               { X = -0.397099, Y = -0.308011, T = 1733 },
               { X = -0.404006, Y = -0.309392, T = 1750 },
               { X = -0.411602, Y = -0.313536, T = 1767 },
               { X = -0.41989, Y = -0.31768, T = 1783 },
               { X = -0.427486, Y = -0.321823, T = 1800 },
               { X = -0.429558, Y = -0.323204, T = 1800 },
               { X = -0.434392, Y = -0.327348, T = 1817 },
               { X = -0.437155, Y = -0.327348, T = 1833 },
               { X = -0.439917, Y = -0.331492, T = 1850 },
               { X = -0.44268, Y = -0.334254, T = 1867 },
               { X = -0.445442, Y = -0.337017, T = 1884 },
               { X = -0.448895, Y = -0.339779, T = 1900 },
               { X = -0.451657, Y = -0.342541, T = 1916 },
               { X = -0.453729, Y = -0.345304, T = 1934 },
               { X = -0.456492, Y = -0.349448, T = 1950 },
               { X = -0.459254, Y = -0.350829, T = 1966 },
               { X = -0.460635, Y = -0.35221, T = 1969 },
               { X = -0.464779, Y = -0.353591, T = 1984 },
               { X = -0.467541, Y = -0.357735, T = 2001 },
               { X = -0.472376, Y = -0.360497, T = 2018 },
               { X = -0.475138, Y = -0.361878, T = 2034 },
               { X = -0.476519, Y = -0.36326, T = 2051 },
               { X = -0.47721, Y = -0.364641, T = 2070 },
               { X = -0.477901, Y = -0.364641, T = 2084 }
            },
            {
               Time = 1,
               Params = {
                  ApplyMode = {
                     Value = FuID { "PaintApplyRubThrough" }
                  },
               },
               { X = -0.367058, Y = -0.438536, T = 0 },
               { X = -0.366367, Y = -0.438536, T = 130 },
               { X = -0.365677, Y = -0.438536, T = 152 },
               { X = -0.365331, Y = -0.438536, T = 165 },
               { X = -0.364641, Y = -0.438536, T = 168 },
               { X = -0.363605, Y = -0.437155, T = 185 },
               { X = -0.361533, Y = -0.437155, T = 202 },
               { X = -0.359116, Y = -0.437155, T = 219 },
               { X = -0.355663, Y = -0.437155, T = 236 },
               { X = -0.351865, Y = -0.437155, T = 252 },
               { X = -0.347721, Y = -0.437155, T = 269 },
               { X = -0.342887, Y = -0.437155, T = 285 },
               { X = -0.338743, Y = -0.437155, T = 302 },
               { X = -0.337017, Y = -0.437155, T = 303 },
               { X = -0.334254, Y = -0.437155, T = 319 },
               { X = -0.331837, Y = -0.437155, T = 336 },
               { X = -0.329765, Y = -0.437155, T = 352 },
               { X = -0.322859, Y = -0.43163, T = 476 },
               { X = -0.322514, Y = -0.43163, T = 486 },
               { X = -0.322514, Y = -0.430939, T = 503 },
               { X = -0.322514, Y = -0.429558, T = 535 },
               { X = -0.322514, Y = -0.428867, T = 552 },
               { X = -0.322514, Y = -0.428177, T = 569 },
               { X = -0.322514, Y = -0.426796, T = 586 },
               { X = -0.322514, Y = -0.424724, T = 602 },
               { X = -0.323204, Y = -0.422652, T = 619 },
               { X = -0.323895, Y = -0.42058, T = 628 },
               { X = -0.32424, Y = -0.41989, T = 636 },
               { X = -0.324931, Y = -0.417127, T = 654 },
               { X = -0.326312, Y = -0.413674, T = 670 },
               { X = -0.326657, Y = -0.412293, T = 687 },
               { X = -0.327693, Y = -0.410912, T = 688 },
               { X = -0.328039, Y = -0.410221, T = 704 },
               { X = -0.329075, Y = -0.408149, T = 742 },
               { X = -0.330456, Y = -0.406077, T = 753 },
               { X = -0.331146, Y = -0.404696, T = 770 },
               { X = -0.331492, Y = -0.404006, T = 786 },
               { X = -0.332873, Y = -0.402624, T = 803 },
               { X = -0.333909, Y = -0.401243, T = 820 },
               { X = -0.334599, Y = -0.401243, T = 836 },
               { X = -0.33529, Y = -0.400552, T = 853 },
               { X = -0.335981, Y = -0.400552, T = 870 },
               { X = -0.336326, Y = -0.399862, T = 887 },
               { X = -0.337362, Y = -0.399862, T = 887 },
               { X = -0.338398, Y = -0.399171, T = 904 },
               { X = -0.339779, Y = -0.399171, T = 920 },
               { X = -0.34116, Y = -0.398481, T = 937 },
               { X = -0.341851, Y = -0.398481, T = 954 },
               { X = -0.342541, Y = -0.398481, T = 970 },
               { X = -0.342887, Y = -0.398481, T = 987 }
            }
         }
      },
      Instance_SetDomain1_3 = SetDomain {
         CtrlWZoom = false,
         SourceOp = "SetDomain1_2",
         Inputs = {
            SettingsNest = Input {
            },
            LayersNest = Input {
            },
            Input = Input {
               SourceOp = "Paint3_1",
               Source = "Output",
            },
            Foreground = Input {
            },
            CommentsNest = Input {
            },
            FrameRenderScriptNest = Input {
            },
            StartRenderScripts = Input {
            },
            EndRenderScripts = Input {
            }
         },
         ViewInfo = OperatorInfo { Pos = { 786, 38.8788 } },
      }
   },
   ActiveTool = "Instance_SetDomain1_3"
}
Last edited by goohoobler1 on Thu Jul 03, 2025 9:12 pm, edited 2 times in total.
Windows 11 Pro (22H2)
Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
64.0 GB RAM
Nvidia 4070Ti Super (16GB VRAM)
AMD Ryzen 3970X @ 3.69 GHz
128 GB RAM
Nvidia 3090 (24GB VRAM)
Resolve Studio / Fusion Studio v20.0 Release (Beta 4)
Offline
User avatar

KrunoSmithy

  • Posts: 4595
  • Joined: Fri Oct 20, 2023 11:01 pm
  • Real Name: Kruno Stifter

Re: Bug: Fusion - Paint slows down when cloning on large ima

PostWed Jul 02, 2025 1:38 pm

I do see sometimes lag, but not sure when it happens. I also see issues with overaly privew not clearing propelly and soetimes combo of overlay and time strech options can cause crash of fusion. Still not entirely sure in what scenario to reproduce it realibly.

About your test: I'm not sure I am clear on your instructions. It seems like you repeating the same thing. Selecting right most instance of set domain and painting with the same paint node or differnt paint nodes? I am not clear on that. Can you elaborate? Is it always about painting on the last most node and looking at the last most isntance of set domain or painting on diferent paint nodes but always looking at last instance of set domain or something else entirely?

What is the reason you are using these set domains in a chain, instead of one? The paint tool still had a domain of entire frame before set domain limits it. I am not sure if the problem is because of chaining set domains instances.

Usually I would use auto domain with strokes on transparent background. Either painting on empty background node with "source tool" having original media to source from or by using Brithness/contrast node to extract storkes. Although if blackamgic is listenting we need a checkbox to do this automatically. and set domain automatically as well.

I also sometimes use difference key to extract frames because some paint modes don't support source tool to be from another node. Which than can be used with auto domain.

And or crop / uncrop workflows. Although the fastest rendering when you don't need to sample each frame is to deactivate update for the paint tool. Same for large images. Runs in real time. And if you have to playback the footage to sample from new frame, than its best to stabilize and crop/uncrop if its footage.

Try this. Chain paint nodes if you like, between crop and uncrop.

Code: Select all
{
   Tools = ordered() {
      Background1_1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 500, },
            Width = Input { Value = 8192, },
            Height = Input { Value = 4096, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, }
         },
         ViewInfo = OperatorInfo { Pos = { -1134.48, 95.5974 } },
      },
      CropAndAHalf1 = Crop {
         CustomData = {
            SxSFilename = "Macros:\\CropAndAHalf.setting",
            Path = {
               Map = {
                  ["Setting:"] = "Macros:\\"
               }
            },
         },
         Inputs = {
            XSize = Input { Value = 1920, },
            YSize = Input { Value = 1080, },
            Input = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -979.15, 53.7793 } },
         UserControls = ordered() {
            ExportInvertedCrop = {
               INP_Integer = false,
               LINKID_DataType = "Number",
               BTNCS_Execute = "                  comp:StartUndo('Export Inverted Crop');\n                  crop = comp.ActiveTool;\n                  newcrop = comp:AddTool(\"Crop\", -32768, -32768);\n                  newcrop.XOffset:SetExpression(\"-\"..crop:GetAttrs().TOOLS_Name..\".XOffset\");\n                  newcrop.YOffset:SetExpression(\"-\"..crop:GetAttrs().TOOLS_Name..\".YOffset\");\n                  newcrop.XSize:SetExpression(crop:GetAttrs().TOOLS_Name..\".Input.OriginalWidth\");\n                  newcrop.YSize:SetExpression(crop:GetAttrs().TOOLS_Name..\".Input.OriginalHeight\");\n                  newcrop.ClippingMode = \"None\";\n                  newcrop:SetAttrs({ TOOLS_Name = crop:GetAttrs().TOOLS_Name..\"_Inverted\" });\n                  comp:EndUndo();\n                  ",
               ICS_ControlPage = "Crop",
               INPID_InputControl = "ButtonControl",
               LINKS_Name = "Export Inverted Crop",
            }
         }
      },
      Paint1 = Paint {
         Inputs = {
            Input = Input {
               SourceOp = "CropAndAHalf1",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "Stroke2",
               Source = "Out",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -852.666, 53.7793 } },
      },
      Stroke2 = Stroke {
         Points = {
         },
         IsThreaded = false,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         Inputs = {
            Paint = Input {
               SourceOp = "Stroke1",
               Source = "Out",
            },
            BrushControls = Input { Value = 1, },
            ["SoftBrush.Size"] = Input { Value = 0.0890857209756746, },
            ["SoftBrush.Softness"] = Input { Value = 1.5, }
         },
      },
      Stroke1 = Stroke {
         Points = {
            { X = -0.217998, Y = -0.260883, Time = 1057308 },
            { X = -0.217998, Y = -0.250466, Time = 1057392, YSpeed = 0.0697544 },
            { X = -0.217998, Y = -0.229633, Time = 1057400, YSpeed = 1.46484 },
            { X = -0.217998, Y = -0.2088, Time = 1057411, YSpeed = 1.06534 },
            { X = -0.212116, Y = -0.1463, Time = 1057425, XSpeed = 0.420168, YSpeed = 2.51116 },
            { X = -0.194469, Y = -0.0421331, Time = 1057441, XSpeed = 1.10294, YSpeed = 3.66211 },
            { X = -0.165057, Y = 0.0620336, Time = 1057458, XSpeed = 1.7301, YSpeed = 3.44669 },
            { X = -0.135645, Y = 0.145367, Time = 1057474, XSpeed = 1.83824, YSpeed = 2.92969 },
            { X = -0.117998, Y = 0.19745, Time = 1057491, XSpeed = 1.03806, YSpeed = 1.72335 },
            { X = -0.100351, Y = 0.218284, Time = 1057512, XSpeed = 0.840336, YSpeed = 0.558035 },
            { X = -0.0944687, Y = 0.218284, Time = 1057525, XSpeed = 0.452489 },
            { X = -0.0885864, Y = 0.218284, Time = 1057541, XSpeed = 0.367647 },
            { X = -0.082704, Y = 0.218284, Time = 1057558, XSpeed = 0.346021 },
            { X = -0.0709393, Y = 0.218284, Time = 1057575, XSpeed = 0.692041 },
            { X = -0.065057, Y = 0.176617, Time = 1057592, XSpeed = 0.346021, YSpeed = -1.37868 },
            { X = -0.0591746, Y = 0.124534, Time = 1057608, XSpeed = 0.367647, YSpeed = -1.83105 },
            { X = -0.0591746, Y = 0.0932836, Time = 1057630, YSpeed = -0.799006 },
            { X = -0.0591746, Y = 0.0516169, Time = 1057641, YSpeed = -2.13068 },
            { X = -0.0709393, Y = 0.0203669, Time = 1057658, XSpeed = -0.692041, YSpeed = -1.03401 },
            { X = -0.100351, Y = -0.000466406, Time = 1057674, XSpeed = -1.83824, YSpeed = -0.732421 },
            { X = -0.123881, Y = -0.000466406, Time = 1057691, XSpeed = -1.38408 },
            { X = -0.141528, Y = -0.000466406, Time = 1057708, XSpeed = -1.03806 },
            { X = -0.14741, Y = -0.000466406, Time = 1057729, XSpeed = -0.280112 },
            { X = -0.14741, Y = -0.0108831, Time = 1057784, YSpeed = -0.106534 },
            { X = -0.14741, Y = -0.0212997, Time = 1057792, YSpeed = -0.732419 },
            { X = -0.123881, Y = -0.0317164, Time = 1057810, XSpeed = 1.30719, YSpeed = -0.325521 },
            { X = -0.0768217, Y = -0.0525497, Time = 1057825, XSpeed = 3.13725, YSpeed = -0.781249 },
            { X = -0.0415276, Y = -0.0629664, Time = 1057846, XSpeed = 1.68067, YSpeed = -0.279018 },
            { X = -0.0121158, Y = -0.0629664, Time = 1057858, XSpeed = 2.45098 },
            { X = 0.00553125, Y = -0.0629664, Time = 1057875, XSpeed = 1.03806 },
            { X = 0.0231783, Y = -0.0421331, Time = 1057891, XSpeed = 1.10294, YSpeed = 0.732421 },
            { X = 0.034943, Y = -0.000466406, Time = 1057908, XSpeed = 0.692041, YSpeed = 1.37868 },
            { X = 0.0467077, Y = 0.0516169, Time = 1057925, XSpeed = 0.692041, YSpeed = 1.72334 },
            { X = 0.0525901, Y = 0.145367, Time = 1057945, XSpeed = 0.294118, YSpeed = 2.63672 },
            { X = 0.0525901, Y = 0.1662, Time = 1057958, YSpeed = 0.901444 },
            { X = 0.0525901, Y = 0.207867, Time = 1057974, YSpeed = 1.46484 },
            { X = 0.0525901, Y = 0.239117, Time = 1057991, YSpeed = 1.03401 },
            { X = 0.0525901, Y = 0.25995, Time = 1058008, YSpeed = 0.68934 },
            { X = 0.0467077, Y = 0.25995, Time = 1058043, XSpeed = -0.168067 },
            { X = 0.0408254, Y = 0.25995, Time = 1058061, XSpeed = -0.326797 },
            { X = 0.034943, Y = 0.2287, Time = 1058074, XSpeed = -0.452489, YSpeed = -1.35216 },
            { X = 0.0290607, Y = 0.155784, Time = 1058091, XSpeed = -0.346021, YSpeed = -2.41268 },
            { X = 0.0290607, Y = 0.0412003, Time = 1058108, YSpeed = -3.79136 },
            { X = 0.0408254, Y = -0.0837997, Time = 1058124, XSpeed = 0.735294, YSpeed = -4.39453 },
            { X = 0.0937665, Y = -0.17755, Time = 1058141, XSpeed = 3.11419, YSpeed = -3.10202 },
            { X = 0.158472, Y = -0.24005, Time = 1058158, XSpeed = 3.80623, YSpeed = -2.06801 },
            { X = 0.217296, Y = -0.260883, Time = 1058178, XSpeed = 2.94118, YSpeed = -0.585937 },
            { X = 0.234943, Y = -0.260883, Time = 1058191, XSpeed = 1.35746 },
            { X = 0.240825, Y = -0.260883, Time = 1058208, XSpeed = 0.346022 },
            { X = 0.234943, Y = -0.260883, Time = 1058280, XSpeed = -0.0816998 },
            { X = 0.223178, Y = -0.24005, Time = 1058288, XSpeed = -1.47059, YSpeed = 1.46484 },
            { X = 0.205531, Y = -0.229633, Time = 1058298, XSpeed = -1.7647, YSpeed = 0.585939 },
            { X = 0.170237, Y = -0.2088, Time = 1058308, XSpeed = -3.52941, YSpeed = 1.17187 },
            { X = 0.0996489, Y = -0.156716, Time = 1058324, XSpeed = -4.41176, YSpeed = 1.83106 },
            { X = 0.0290607, Y = -0.0837997, Time = 1058341, XSpeed = -4.15225, YSpeed = 2.41268 },
            { X = -0.0121158, Y = -0.0317164, Time = 1058358, XSpeed = -2.42215, YSpeed = 1.72334 },
            { X = -0.0297629, Y = -0.000466406, Time = 1058374, XSpeed = -1.10294, YSpeed = 1.09863 },
            { X = -0.0297629, Y = 0.00995028, Time = 1058391, YSpeed = 0.34467 },
            { X = -0.0356452, Y = 0.00995028, Time = 1058412, XSpeed = -0.280112 },
            { X = -0.0238805, Y = 0.00995028, Time = 1058448, XSpeed = 0.326797 },
            { X = -0.000351101, Y = 0.00995028, Time = 1058459, XSpeed = 2.13904 },
            { X = 0.0761195, Y = 0.00995028, Time = 1058475, XSpeed = 4.77941 },
            { X = 0.146708, Y = -0.000466406, Time = 1058492, XSpeed = 4.15225, YSpeed = -0.34467 },
            { X = 0.199649, Y = -0.0108831, Time = 1058508, XSpeed = 3.30882, YSpeed = -0.366212 },
            { X = 0.229061, Y = -0.0108831, Time = 1058529, XSpeed = 1.40056 },
            { X = 0.240825, Y = -0.0108831, Time = 1058542, XSpeed = 0.904977 },
            { X = 0.246708, Y = -0.0108831, Time = 1058664, XSpeed = 0.0482158 }
         },
         IsThreaded = false,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         Inputs = {
            BrushControls = Input { Value = 1, },
            ["SoftBrush.Size"] = Input { Value = 0.0890857209756746, },
            ["SoftBrush.Softness"] = Input { Value = 1.5, },
            Center = Input { Value = { 0.406233459711075, 0.594216406345367 }, }
         },
      },
      CropAndAHalf1_Inverted = Crop {
         CustomData = {
            SxSFilename = "Macros:\\CropAndAHalf.setting",
            Path = {
               Map = {
                  ["Setting:"] = "Macros:\\"
               }
            },
         },
         Inputs = {
            XOffset = Input { Expression = "-CropAndAHalf1.XOffset", },
            YOffset = Input { Expression = "-CropAndAHalf1.YOffset", },
            XSize = Input {
               Value = 8192,
               Expression = "CropAndAHalf1.Input.OriginalWidth",
            },
            YSize = Input {
               Value = 4096,
               Expression = "CropAndAHalf1.Input.OriginalHeight",
            },
            Input = Input {
               SourceOp = "Paint1",
               Source = "Output",
            },
            ClippingMode = Input { Value = FuID { "None" }, }
         },
         ViewInfo = OperatorInfo { Pos = { -485.817, 53.7793 } },
         UserControls = ordered() {
            ExportInvertedCrop = {
               INP_Integer = false,
               LINKID_DataType = "Number",
               BTNCS_Execute = "                  comp:StartUndo('Export Inverted Crop');\n                  crop = comp.ActiveTool;\n                  newcrop = comp:AddTool(\"Crop\", -32768, -32768);\n                  newcrop.XOffset:SetExpression(\"-\"..crop:GetAttrs().TOOLS_Name..\".XOffset\");\n                  newcrop.YOffset:SetExpression(\"-\"..crop:GetAttrs().TOOLS_Name..\".YOffset\");\n                  newcrop.XSize:SetExpression(crop:GetAttrs().TOOLS_Name..\".Input.OriginalWidth\");\n                  newcrop.YSize:SetExpression(crop:GetAttrs().TOOLS_Name..\".Input.OriginalHeight\");\n                  newcrop.ClippingMode = \"None\";\n                  newcrop:SetAttrs({ TOOLS_Name = crop:GetAttrs().TOOLS_Name..\"_Inverted\" });\n                  comp:EndUndo();\n                  ",
               ICS_ControlPage = "Crop",
               INPID_InputControl = "ButtonControl",
               LINKS_Name = "Export Inverted Crop",
            }
         }
      },
      Merge1 = Merge {
         CtrlWZoom = false,
         Inputs = {
            Background = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "CropAndAHalf1_Inverted",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -485.817, 95.5974 } },
      }
   }
}


...or variation on the theme....

Code: Select all
{
   Tools = ordered() {
      Background1_1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 500, },
            Width = Input { Value = 8192, },
            Height = Input { Value = 4096, },
            Depth = Input { Value = 3, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, }
         },
         ViewInfo = OperatorInfo { Pos = { -1134.48, 95.5974 } },
      },
      CropAndAHalf1 = Crop {
         CustomData = {
            SxSFilename = "Macros:\\CropAndAHalf.setting",
            Path = {
               Map = {
                  ["Setting:"] = "Macros:\\"
               }
            },
         },
         Inputs = {
            XSize = Input { Value = 1920, },
            YSize = Input { Value = 1080, },
            Input = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -979.15, 53.7793 } },
         UserControls = ordered() {
            ExportInvertedCrop = {
               INP_Integer = false,
               LINKID_DataType = "Number",
               BTNCS_Execute = "                  comp:StartUndo('Export Inverted Crop');\n                  crop = comp.ActiveTool;\n                  newcrop = comp:AddTool(\"Crop\", -32768, -32768);\n                  newcrop.XOffset:SetExpression(\"-\"..crop:GetAttrs().TOOLS_Name..\".XOffset\");\n                  newcrop.YOffset:SetExpression(\"-\"..crop:GetAttrs().TOOLS_Name..\".YOffset\");\n                  newcrop.XSize:SetExpression(crop:GetAttrs().TOOLS_Name..\".Input.OriginalWidth\");\n                  newcrop.YSize:SetExpression(crop:GetAttrs().TOOLS_Name..\".Input.OriginalHeight\");\n                  newcrop.ClippingMode = \"None\";\n                  newcrop:SetAttrs({ TOOLS_Name = crop:GetAttrs().TOOLS_Name..\"_Inverted\" });\n                  comp:EndUndo();\n                  ",
               ICS_ControlPage = "Crop",
               INPID_InputControl = "ButtonControl",
               LINKS_Name = "Export Inverted Crop",
            }
         }
      },
      Paint1 = Paint {
         CtrlWZoom = false,
         Inputs = {
            Input = Input {
               SourceOp = "CropAndAHalf1",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "Stroke2",
               Source = "Out",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -858.666, 22.2641 } },
      },
      Stroke2 = Stroke {
         Points = {
         },
         IsThreaded = false,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         Inputs = {
            Paint = Input {
               SourceOp = "Stroke1",
               Source = "Out",
            },
            BrushControls = Input { Value = 1, },
            ["SoftBrush.Size"] = Input { Value = 0.0890857209756746, },
            ["SoftBrush.Softness"] = Input { Value = 1.5, }
         },
      },
      Stroke1 = Stroke {
         Points = {
            { X = -0.217998, Y = -0.260883, Time = 1057308 },
            { X = -0.217998, Y = -0.250466, Time = 1057392, YSpeed = 0.0697544 },
            { X = -0.217998, Y = -0.229633, Time = 1057400, YSpeed = 1.46484 },
            { X = -0.217998, Y = -0.2088, Time = 1057411, YSpeed = 1.06534 },
            { X = -0.212116, Y = -0.1463, Time = 1057425, XSpeed = 0.420168, YSpeed = 2.51116 },
            { X = -0.194469, Y = -0.0421331, Time = 1057441, XSpeed = 1.10294, YSpeed = 3.66211 },
            { X = -0.165057, Y = 0.0620336, Time = 1057458, XSpeed = 1.7301, YSpeed = 3.44669 },
            { X = -0.135645, Y = 0.145367, Time = 1057474, XSpeed = 1.83824, YSpeed = 2.92969 },
            { X = -0.117998, Y = 0.19745, Time = 1057491, XSpeed = 1.03806, YSpeed = 1.72335 },
            { X = -0.100351, Y = 0.218284, Time = 1057512, XSpeed = 0.840336, YSpeed = 0.558035 },
            { X = -0.0944687, Y = 0.218284, Time = 1057525, XSpeed = 0.452489 },
            { X = -0.0885864, Y = 0.218284, Time = 1057541, XSpeed = 0.367647 },
            { X = -0.082704, Y = 0.218284, Time = 1057558, XSpeed = 0.346021 },
            { X = -0.0709393, Y = 0.218284, Time = 1057575, XSpeed = 0.692041 },
            { X = -0.065057, Y = 0.176617, Time = 1057592, XSpeed = 0.346021, YSpeed = -1.37868 },
            { X = -0.0591746, Y = 0.124534, Time = 1057608, XSpeed = 0.367647, YSpeed = -1.83105 },
            { X = -0.0591746, Y = 0.0932836, Time = 1057630, YSpeed = -0.799006 },
            { X = -0.0591746, Y = 0.0516169, Time = 1057641, YSpeed = -2.13068 },
            { X = -0.0709393, Y = 0.0203669, Time = 1057658, XSpeed = -0.692041, YSpeed = -1.03401 },
            { X = -0.100351, Y = -0.000466406, Time = 1057674, XSpeed = -1.83824, YSpeed = -0.732421 },
            { X = -0.123881, Y = -0.000466406, Time = 1057691, XSpeed = -1.38408 },
            { X = -0.141528, Y = -0.000466406, Time = 1057708, XSpeed = -1.03806 },
            { X = -0.14741, Y = -0.000466406, Time = 1057729, XSpeed = -0.280112 },
            { X = -0.14741, Y = -0.0108831, Time = 1057784, YSpeed = -0.106534 },
            { X = -0.14741, Y = -0.0212997, Time = 1057792, YSpeed = -0.732419 },
            { X = -0.123881, Y = -0.0317164, Time = 1057810, XSpeed = 1.30719, YSpeed = -0.325521 },
            { X = -0.0768217, Y = -0.0525497, Time = 1057825, XSpeed = 3.13725, YSpeed = -0.781249 },
            { X = -0.0415276, Y = -0.0629664, Time = 1057846, XSpeed = 1.68067, YSpeed = -0.279018 },
            { X = -0.0121158, Y = -0.0629664, Time = 1057858, XSpeed = 2.45098 },
            { X = 0.00553125, Y = -0.0629664, Time = 1057875, XSpeed = 1.03806 },
            { X = 0.0231783, Y = -0.0421331, Time = 1057891, XSpeed = 1.10294, YSpeed = 0.732421 },
            { X = 0.034943, Y = -0.000466406, Time = 1057908, XSpeed = 0.692041, YSpeed = 1.37868 },
            { X = 0.0467077, Y = 0.0516169, Time = 1057925, XSpeed = 0.692041, YSpeed = 1.72334 },
            { X = 0.0525901, Y = 0.145367, Time = 1057945, XSpeed = 0.294118, YSpeed = 2.63672 },
            { X = 0.0525901, Y = 0.1662, Time = 1057958, YSpeed = 0.901444 },
            { X = 0.0525901, Y = 0.207867, Time = 1057974, YSpeed = 1.46484 },
            { X = 0.0525901, Y = 0.239117, Time = 1057991, YSpeed = 1.03401 },
            { X = 0.0525901, Y = 0.25995, Time = 1058008, YSpeed = 0.68934 },
            { X = 0.0467077, Y = 0.25995, Time = 1058043, XSpeed = -0.168067 },
            { X = 0.0408254, Y = 0.25995, Time = 1058061, XSpeed = -0.326797 },
            { X = 0.034943, Y = 0.2287, Time = 1058074, XSpeed = -0.452489, YSpeed = -1.35216 },
            { X = 0.0290607, Y = 0.155784, Time = 1058091, XSpeed = -0.346021, YSpeed = -2.41268 },
            { X = 0.0290607, Y = 0.0412003, Time = 1058108, YSpeed = -3.79136 },
            { X = 0.0408254, Y = -0.0837997, Time = 1058124, XSpeed = 0.735294, YSpeed = -4.39453 },
            { X = 0.0937665, Y = -0.17755, Time = 1058141, XSpeed = 3.11419, YSpeed = -3.10202 },
            { X = 0.158472, Y = -0.24005, Time = 1058158, XSpeed = 3.80623, YSpeed = -2.06801 },
            { X = 0.217296, Y = -0.260883, Time = 1058178, XSpeed = 2.94118, YSpeed = -0.585937 },
            { X = 0.234943, Y = -0.260883, Time = 1058191, XSpeed = 1.35746 },
            { X = 0.240825, Y = -0.260883, Time = 1058208, XSpeed = 0.346022 },
            { X = 0.234943, Y = -0.260883, Time = 1058280, XSpeed = -0.0816998 },
            { X = 0.223178, Y = -0.24005, Time = 1058288, XSpeed = -1.47059, YSpeed = 1.46484 },
            { X = 0.205531, Y = -0.229633, Time = 1058298, XSpeed = -1.7647, YSpeed = 0.585939 },
            { X = 0.170237, Y = -0.2088, Time = 1058308, XSpeed = -3.52941, YSpeed = 1.17187 },
            { X = 0.0996489, Y = -0.156716, Time = 1058324, XSpeed = -4.41176, YSpeed = 1.83106 },
            { X = 0.0290607, Y = -0.0837997, Time = 1058341, XSpeed = -4.15225, YSpeed = 2.41268 },
            { X = -0.0121158, Y = -0.0317164, Time = 1058358, XSpeed = -2.42215, YSpeed = 1.72334 },
            { X = -0.0297629, Y = -0.000466406, Time = 1058374, XSpeed = -1.10294, YSpeed = 1.09863 },
            { X = -0.0297629, Y = 0.00995028, Time = 1058391, YSpeed = 0.34467 },
            { X = -0.0356452, Y = 0.00995028, Time = 1058412, XSpeed = -0.280112 },
            { X = -0.0238805, Y = 0.00995028, Time = 1058448, XSpeed = 0.326797 },
            { X = -0.000351101, Y = 0.00995028, Time = 1058459, XSpeed = 2.13904 },
            { X = 0.0761195, Y = 0.00995028, Time = 1058475, XSpeed = 4.77941 },
            { X = 0.146708, Y = -0.000466406, Time = 1058492, XSpeed = 4.15225, YSpeed = -0.34467 },
            { X = 0.199649, Y = -0.0108831, Time = 1058508, XSpeed = 3.30882, YSpeed = -0.366212 },
            { X = 0.229061, Y = -0.0108831, Time = 1058529, XSpeed = 1.40056 },
            { X = 0.240825, Y = -0.0108831, Time = 1058542, XSpeed = 0.904977 },
            { X = 0.246708, Y = -0.0108831, Time = 1058664, XSpeed = 0.0482158 }
         },
         IsThreaded = false,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         Inputs = {
            BrushControls = Input { Value = 1, },
            ["SoftBrush.Size"] = Input { Value = 0.0890857209756746, },
            ["SoftBrush.Softness"] = Input { Value = 1.5, },
            Center = Input { Value = { 0.406233459711075, 0.594216406345367 }, }
         },
      },
      DifferenceKeyer1 = DifferenceKeyer {
         Inputs = {
            High = Input { Value = 0.01, },
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            Background = Input {
               SourceOp = "CropAndAHalf1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Paint1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -573.333, 53.7793 } },
      },
      AutoDomain1 = AutoDomain {
         Inputs = {
            Input = Input {
               SourceOp = "DifferenceKeyer1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -444, 53.7793 } },
      },
      CropAndAHalf1_Inverted = Crop {
         CustomData = {
            SxSFilename = "Macros:\\CropAndAHalf.setting",
            Path = {
               Map = {
                  ["Setting:"] = "Macros:\\"
               }
            },
         },
         Inputs = {
            XOffset = Input { Expression = "-CropAndAHalf1.XOffset", },
            YOffset = Input { Expression = "-CropAndAHalf1.YOffset", },
            XSize = Input {
               Value = 8192,
               Expression = "CropAndAHalf1.Input.OriginalWidth",
            },
            YSize = Input {
               Value = 4096,
               Expression = "CropAndAHalf1.Input.OriginalHeight",
            },
            Input = Input {
               SourceOp = "AutoDomain1",
               Source = "Output",
            },
            ClippingMode = Input { Value = FuID { "None" }, }
         },
         ViewInfo = OperatorInfo { Pos = { -308, 53.7793 } },
         UserControls = ordered() {
            ExportInvertedCrop = {
               INP_Integer = false,
               LINKID_DataType = "Number",
               BTNCS_Execute = "                  comp:StartUndo('Export Inverted Crop');\n                  crop = comp.ActiveTool;\n                  newcrop = comp:AddTool(\"Crop\", -32768, -32768);\n                  newcrop.XOffset:SetExpression(\"-\"..crop:GetAttrs().TOOLS_Name..\".XOffset\");\n                  newcrop.YOffset:SetExpression(\"-\"..crop:GetAttrs().TOOLS_Name..\".YOffset\");\n                  newcrop.XSize:SetExpression(crop:GetAttrs().TOOLS_Name..\".Input.OriginalWidth\");\n                  newcrop.YSize:SetExpression(crop:GetAttrs().TOOLS_Name..\".Input.OriginalHeight\");\n                  newcrop.ClippingMode = \"None\";\n                  newcrop:SetAttrs({ TOOLS_Name = crop:GetAttrs().TOOLS_Name..\"_Inverted\" });\n                  comp:EndUndo();\n                  ",
               ICS_ControlPage = "Crop",
               INPID_InputControl = "ButtonControl",
               LINKS_Name = "Export Inverted Crop",
            }
         }
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "CropAndAHalf1_Inverted",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -308, 95.5974 } },
      }
   }
}


P.S.

Deacitvating update for a nodes seems to be the fastest method of rendering if you don't need to sample each frame. I do that often. Especially with large stills. Or any situation where I don't need the update. Blackmagic should make that official feature in tools, not just some obsure menu option for testing. And grouping many strokes also can yield better rendering performance, but I have to confirm that to make sure its not placebo.
Offline
User avatar

goohoobler1

  • Posts: 97
  • Joined: Wed Jul 27, 2022 9:34 pm
  • Real Name: George Port

Re: Bug: Fusion- Paint slows down when cloning on chained no

PostWed Jul 02, 2025 7:16 pm

While I appreciate the workflow tips and code examples, you don't seem to see what the problem is , or actually address that. Probably my fault for the convoluted workflow example (but with this type of bug, if you can reliably repeat it , then that is usually the code snippet to include).
Anyway - the problem is chained paint nodes interaction slowing down - not the speedy, and easy to adjust SetDomain workflow I demonstrated...
However on further experimentation it turns out that the problem is simpler to demonstrate and is unrelated to large frames or DOD or crop or anything other than chaining Paint nodes;
To demonstrate:
Copy the nodes below to a new comp. Set the viewer to display Paint2. Try painting on Paint2 (fast and interactive, right..). Try selecting Stroke and then the Clone Apply mode and try some cloning (still fast).
Now Set the viewer to display Paint1. Try painting on Paint1 (fast and interactive, right..). Try selecting Stroke and then the Clone Apply mode and try some cloning (still fast).
Now, Set the viewer back to display Paint2. Try painting on Paint2 (slower). Try selecting Stroke and then the Clone Apply mode and try some cloning and keep painting separate strokes for a few minutes... You should see the interactivity slow down to unusable delays.
This is the problem. This is the bug.
And now copy and paste the nodes and Set the viewer to display Paint2_1. Try painting on Paint2_1 (fast and interactive, right..). Try selecting Stroke and then the Clone Apply mode and try some cloning (still fast). So something seems to be triggering a slowdown when the upstream Paint node does some Cloning.

As a professional VFX company , we use the Paint nodes extensively for wire/rig removals and paint outs so we end up with Dozens of Paint nodes with Thousands of cloned strokes , so interactivity is very important to us...



Here are the simple nodes:

Code: Select all
{
   Tools = ordered() {
      Background1 = Background {
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, }
         },
         ViewInfo = OperatorInfo { Pos = { 29.3333, 67.3636 } },
      },
      Paint1 = Paint {
         Inputs = {
            Input = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "Stroke1",
               Source = "Out",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 139.333, 67.3636 } },
      },
      Stroke1 = Stroke {
         Points = {
            { X = 0.00228173, Y = 0.161023, Time = 70831862 },
            { X = 0.00228173, Y = 0.149912, Time = 70832164, YSpeed = -0.0206954 },
            { X = 0.00228173, Y = 0.142504, Time = 70832172, YSpeed = -0.520831 },
            { X = 0.00228173, Y = 0.131393, Time = 70832180, YSpeed = -0.781252 },
            { X = 0.00228173, Y = 0.105467, Time = 70832204, YSpeed = -0.607639 },
            { X = 0.00228173, Y = 0.0943562, Time = 70832204, YSpeed = -0.607639 },
            { X = 0.00228173, Y = 0.0647266, Time = 70832221, YSpeed = -0.980393 },
            { X = 0.00228173, Y = 0.0388007, Time = 70832237, YSpeed = -0.911459 },
            { X = 0.00228173, Y = 0.00546736, Time = 70832254, YSpeed = -1.10294 },
            { X = 0.000198394, Y = -0.0204586, Time = 70832271, XSpeed = -0.122549, YSpeed = -0.857843 },
            { X = -0.00188494, Y = -0.0389771, Time = 70832287, XSpeed = -0.130208, YSpeed = -0.651041 },
            { X = -0.00188494, Y = -0.0537919, Time = 70832304, YSpeed = -0.490197 },
            { X = -0.00188494, Y = -0.0574957, Time = 70832322, YSpeed = -0.115741 },
            { X = -0.00188494, Y = -0.0723104, Time = 70832338, YSpeed = -0.520833 },
            { X = -0.00188494, Y = -0.0797179, Time = 70832387, YSpeed = -0.0850342 },
            { X = -0.00188494, Y = -0.0834216, Time = 70832428, YSpeed = -0.0508131 },
            { X = -0.00188494, Y = -0.0871252, Time = 70832444, YSpeed = -0.130207 },
            { X = -0.00188494, Y = -0.0945327, Time = 70832455, YSpeed = -0.378789 },
            { X = -0.00188494, Y = -0.0982364, Time = 70832471, YSpeed = -0.130209 },
            { X = -0.00188494, Y = -0.10194, Time = 70832488, YSpeed = -0.122549 },
            { X = -0.00188494, Y = -0.105644, Time = 70832504, YSpeed = -0.130209 }
         },
         IsThreaded = false,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         CtrlWZoom = false,
         Inputs = {
            Center = Input { Value = { 0.289384940763315, 0.498236374060313 }, }
         },
      },
      Paint2 = Paint {
         CtrlWZoom = false,
         Inputs = {
            Input = Input {
               SourceOp = "Paint1",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "Stroke3",
               Source = "Out",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 249.333, 67.3636 } },
      },
      Stroke3 = Stroke {
         Points = {
            { X = -0.0636363, Y = 0.115404, Time = 70839845 },
            { X = -0.061553, Y = 0.115404, Time = 70839956, XSpeed = 0.0187688 },
            { X = -0.055303, Y = 0.122811, Time = 70839978, XSpeed = 0.284091, YSpeed = 0.189393 },
            { X = -0.0511364, Y = 0.133923, Time = 70839994, XSpeed = 0.260416, YSpeed = 0.390626 },
            { X = -0.0386364, Y = 0.145034, Time = 70840011, XSpeed = 0.735294, YSpeed = 0.367646 },
            { X = -0.0344697, Y = 0.152441, Time = 70840013, XSpeed = 2.08334, YSpeed = 2.08334 },
            { X = -0.0282197, Y = 0.159849, Time = 70840028, XSpeed = 0.416666, YSpeed = 0.277779 },
            { X = -0.024053, Y = 0.167256, Time = 70840028, XSpeed = 0.416666, YSpeed = 0.277779 },
            { X = -0.0136364, Y = 0.174663, Time = 70840046, XSpeed = 0.578704, YSpeed = 0.231482 },
            { X = -0.00738636, Y = 0.178367, Time = 70840066, XSpeed = 0.3125, YSpeed = 0.104167 },
            { X = 0.000946969, Y = 0.185775, Time = 70840079, XSpeed = 0.641025, YSpeed = 0.320514 },
            { X = 0.0030303, Y = 0.185775, Time = 70840095, XSpeed = 0.130208 },
            { X = 0.00511366, Y = 0.185775, Time = 70840128, XSpeed = 0.0631322 },
            { X = 0.00719699, Y = 0.185775, Time = 70840178, XSpeed = 0.0416666 },
            { X = 0.00928032, Y = 0.185775, Time = 70840180, XSpeed = 1.04167 },
            { X = 0.0113637, Y = 0.185775, Time = 70840211, XSpeed = 0.0672042 },
            { X = 0.0155303, Y = 0.185775, Time = 70840245, XSpeed = 0.122549 },
            { X = 0.019697, Y = 0.185775, Time = 70840278, XSpeed = 0.126263 },
            { X = 0.0217803, Y = 0.178367, Time = 70840308, XSpeed = 0.0694444, YSpeed = -0.138889 },
            { X = 0.0238636, Y = 0.174663, Time = 70840325, XSpeed = 0.122549, YSpeed = -0.122549 },
            { X = 0.025947, Y = 0.159849, Time = 70840357, XSpeed = 0.0651041, YSpeed = -0.260416 },
            { X = 0.0280303, Y = 0.148737, Time = 70840373, XSpeed = 0.130208, YSpeed = -0.390626 },
            { X = 0.0280303, Y = 0.14133, Time = 70840380, YSpeed = -0.595235 },
            { X = 0.0280303, Y = 0.137626, Time = 70840394, YSpeed = -0.14881 },
            { X = 0.0301136, Y = 0.130219, Time = 70840400, XSpeed = 0.347222, YSpeed = -0.694446 },
            { X = 0.0301136, Y = 0.126515, Time = 70840412, YSpeed = -0.173612 },
            { X = 0.032197, Y = 0.1117, Time = 70840428, XSpeed = 0.130208, YSpeed = -0.520833 },
            { X = 0.032197, Y = 0.107997, Time = 70840445, YSpeed = -0.122549 },
            { X = 0.032197, Y = 0.100589, Time = 70840462, YSpeed = -0.245099 },
            { X = 0.032197, Y = 0.0894782, Time = 70840479, YSpeed = -0.367646 },
            { X = 0.032197, Y = 0.0820708, Time = 70840502, YSpeed = -0.18116 },
            { X = 0.032197, Y = 0.0783671, Time = 70840512, YSpeed = -0.208334 },
            { X = 0.032197, Y = 0.0709597, Time = 70840530, YSpeed = -0.23148 },
            { X = 0.032197, Y = 0.0598485, Time = 70840546, YSpeed = -0.390626 },
            { X = 0.032197, Y = 0.0524411, Time = 70840562, YSpeed = -0.260417 },
            { X = 0.032197, Y = 0.0376263, Time = 70840579, YSpeed = -0.490195 },
            { X = 0.032197, Y = 0.0302189, Time = 70840595, YSpeed = -0.260417 },
            { X = 0.0301136, Y = 0.000589311, Time = 70840617, XSpeed = -0.0946969, YSpeed = -0.757575 },
            { X = 0.0280303, Y = -0.00681812, Time = 70840628, XSpeed = -0.189394, YSpeed = -0.378789 },
            { X = 0.025947, Y = -0.0179292, Time = 70840646, XSpeed = -0.115741, YSpeed = -0.347221 },
            { X = 0.0238636, Y = -0.0253366, Time = 70840662, XSpeed = -0.130208, YSpeed = -0.260417 },
            { X = 0.0217803, Y = -0.0327441, Time = 70840679, XSpeed = -0.122549, YSpeed = -0.245099 },
            { X = 0.0176136, Y = -0.0401514, Time = 70840695, XSpeed = -0.260416, YSpeed = -0.260415 },
            { X = 0.0176136, Y = -0.0438551, Time = 70840712, YSpeed = -0.122549 },
            { X = 0.013447, Y = -0.0512626, Time = 70840731, XSpeed = -0.219298, YSpeed = -0.219299 },
            { X = 0.00719699, Y = -0.0623736, Time = 70840746, XSpeed = -0.416666, YSpeed = -0.416666 },
            { X = 0.0030303, Y = -0.0697811, Time = 70840763, XSpeed = -0.2451, YSpeed = -0.245099 },
            { X = -0.00321969, Y = -0.0771885, Time = 70840780, XSpeed = -0.367647, YSpeed = -0.245099 },
            { X = -0.00946969, Y = -0.0808922, Time = 70840796, XSpeed = -0.390625, YSpeed = -0.130209 },
            { X = -0.011553, Y = -0.0845959, Time = 70840796, XSpeed = -0.390625, YSpeed = -0.130209 },
            { X = -0.0157197, Y = -0.0882996, Time = 70840813, XSpeed = -0.245098, YSpeed = -0.122547 },
            { X = -0.017803, Y = -0.0920033, Time = 70840855, XSpeed = -0.0496031, YSpeed = -0.0496033 },
            { X = -0.0219697, Y = -0.0920033, Time = 70840870, XSpeed = -0.277779 },
            { X = -0.024053, Y = -0.0920033, Time = 70840878, XSpeed = -0.260416 },
            { X = -0.0261364, Y = -0.095707, Time = 70840895, XSpeed = -0.122549, YSpeed = -0.122549 },
            { X = -0.030303, Y = -0.0994107, Time = 70840912, XSpeed = -0.245098, YSpeed = -0.122549 },
            { X = -0.0323863, Y = -0.103114, Time = 70840928, XSpeed = -0.130208, YSpeed = -0.130209 },
            { X = -0.0344697, Y = -0.103114, Time = 70840945, XSpeed = -0.122549 },
            { X = -0.0386364, Y = -0.106818, Time = 70840963, XSpeed = -0.231482, YSpeed = -0.115741 },
            { X = -0.0407197, Y = -0.106818, Time = 70840978, XSpeed = -0.138889 },
            { X = -0.0448864, Y = -0.110522, Time = 70840995, XSpeed = -0.245098, YSpeed = -0.122547 },
            { X = -0.0469697, Y = -0.114226, Time = 70841011, XSpeed = -0.130208, YSpeed = -0.130209 },
            { X = -0.049053, Y = -0.114226, Time = 70841013, XSpeed = -1.04167 },
            { X = -0.0511364, Y = -0.117929, Time = 70841029, XSpeed = -0.130209, YSpeed = -0.130209 },
            { X = -0.0532197, Y = -0.117929, Time = 70841095, XSpeed = -0.0315656 },
            { X = -0.055303, Y = -0.121633, Time = 70841163, XSpeed = -0.0306372, YSpeed = -0.0306373 },
            { X = -0.0532197, Y = -0.121633, Time = 70841373, XSpeed = 0.00992063 },
            { X = -0.0448864, Y = -0.121633, Time = 70841395, XSpeed = 0.378788 },
            { X = -0.0407197, Y = -0.121633, Time = 70841398, XSpeed = 1.38889 },
            { X = -0.0344697, Y = -0.121633, Time = 70841412, XSpeed = 0.446429 },
            { X = -0.0323863, Y = -0.121633, Time = 70841413, XSpeed = 2.08333 },
            { X = -0.0261364, Y = -0.121633, Time = 70841430, XSpeed = 0.367647 },
            { X = -0.0219697, Y = -0.121633, Time = 70841446, XSpeed = 0.260416 },
            { X = -0.0198864, Y = -0.121633, Time = 70841463, XSpeed = 0.122549 },
            { X = -0.00946969, Y = -0.121633, Time = 70841491, XSpeed = 0.372024 },
            { X = -0.00530303, Y = -0.121633, Time = 70841499, XSpeed = 0.520833 },
            { X = 0.00719699, Y = -0.121633, Time = 70841513, XSpeed = 0.892858 },
            { X = 0.0176136, Y = -0.121633, Time = 70841530, XSpeed = 0.612745 },
            { X = 0.025947, Y = -0.121633, Time = 70841547, XSpeed = 0.490196 },
            { X = 0.032197, Y = -0.121633, Time = 70841565, XSpeed = 0.347222 },
            { X = 0.0342803, Y = -0.121633, Time = 70841580, XSpeed = 0.138889 },
            { X = 0.0363637, Y = -0.121633, Time = 70841600, XSpeed = 0.104168 },
            { X = 0.0405303, Y = -0.121633, Time = 70841629, XSpeed = 0.143678 },
            { X = 0.044697, Y = -0.125337, Time = 70841651, XSpeed = 0.189394, YSpeed = -0.0946972 },
            { X = 0.0467803, Y = -0.125337, Time = 70841662, XSpeed = 0.189394 },
            { X = 0.0488636, Y = -0.125337, Time = 70841679, XSpeed = 0.122549 },
            { X = 0.0530303, Y = -0.12904, Time = 70841696, XSpeed = 0.245098, YSpeed = -0.122549 },
            { X = 0.0551136, Y = -0.12904, Time = 70841712, XSpeed = 0.130208 }
         },
         IsThreaded = false,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         CtrlWZoom = false,
         Inputs = {
            Center = Input { Value = { 0.534469685951869, 0.488299593660567 }, }
         },
      }
   }
}
Windows 11 Pro (22H2)
Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
64.0 GB RAM
Nvidia 4070Ti Super (16GB VRAM)
AMD Ryzen 3970X @ 3.69 GHz
128 GB RAM
Nvidia 3090 (24GB VRAM)
Resolve Studio / Fusion Studio v20.0 Release (Beta 4)
Offline
User avatar

KrunoSmithy

  • Posts: 4595
  • Joined: Fri Oct 20, 2023 11:01 pm
  • Real Name: Kruno Stifter

Re: Bug: Fusion - Paint slows down when cloning on large ima

PostWed Jul 02, 2025 8:04 pm

George, I'm having trouble replicating the problem. And the way you explain it seems very convoluted so I'm not sure if I'm doing the same steps or is it specific to you this bug. Chaining paint nodes or something else?

Thin white strokes on a black background are not very good way to test cloning. its hard to see what it happening. I tried to replicate this on actual images to see it better. But I'm not seeing the slowdown until I get to a point where I would expect one because of that many strokes. I made about 50 strokes on each paint node, with no noticeable decrease in rendering. After that I did start to notice some delay, but I would expect after so many strokes to slow down. This is in the manual as well, which is why multistroke is recommended for many strokes.

"Stroke: It can become slow if hundreds of strokes are used in an image; when creating a lot of paint strokes, it is better to use Multistroke"

I'm not seeing a problem until I get to a sizable number of strokes. Are you saying that you are getting slowdown soon as I switch back and forth between paint 1 and 2 ? If its a problem from simply trying to paint on another node I woudl call that a bug. If its a problem after many strokes you get a delay I would not call that a bug, but perhaps not optimized tool . Maybe Blackamgic can join the conversation for once and comment on it, since sometimes its hard to say what is by design and what is a bug. They refuse to acknowledge one way or the other and can be left to speculation. Sometimes they say fixed but not clear what was fixed or why or what was the problem and other times they write their super frustrating "General performance and stability improvements." Which could mean everything and noting.

Lets try to narrow down the problem. What is the number of strokes and in what context that you expect slowdown? Because it can't go on indefinitively with vector paint strokes as modifiers. What else can you use as reference? Have you always had this problem or only now? Since when? Is this new or old issue for you? As far as I recall stroke was always slowing down with many paint strokes. Which is why I mentioned the methods from previous reply that can be used to avoid some of the delay and provide faster rendering times.
Offline
User avatar

goohoobler1

  • Posts: 97
  • Joined: Wed Jul 27, 2022 9:34 pm
  • Real Name: George Port

Re: Bug: Fusion - Paint slows down after cloning on prev nod

PostWed Jul 02, 2025 9:14 pm

I don't think it is that convoluted now...
Do some Stroke Cloning on the Paint1 node - then do some Stroke Cloning on the Paint2 node - keep painting separate cloned strokes for at least 1 minute (40+ strokes ) - It should gradually slow down in interactivity .

Notes:
You should use Stroke Clone (not Multistroke Clone) when painting on both Paint nodes.
Paint1 does not seem to exhibit any slow down - only Paint2 and any other downstream Paint nodes.
If you copy and paste all the nodes and try Stroke Clone painting on the copy of Paint2 (without painting on Paint1) then there seems to be no obvious slow down when painting another 50 strokes (on the same frame, with the same number of clone strokes underneath).
The paint cursor appears to blink out for longer periods while the delay is processed after each stroke.

I have had an employee quit because of this issue (which we couldn't properly identify at the time because reloading the file would make the issue disappear).

Stroke Cloning is how tricky rig removals are done. With MultiStoke Clones for the frame by frame cleanup. As I said, in most cleanup situations we have dozens of chained Paint nodes with Thousands of Stroke Clone strokes and Thousands of Multistroke strokes...

As noted in my sig - this is on Windows 11 PCs v20.0.1 and the bug has probably been there for many years...
Windows 11 Pro (22H2)
Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
64.0 GB RAM
Nvidia 4070Ti Super (16GB VRAM)
AMD Ryzen 3970X @ 3.69 GHz
128 GB RAM
Nvidia 3090 (24GB VRAM)
Resolve Studio / Fusion Studio v20.0 Release (Beta 4)
Offline
User avatar

KrunoSmithy

  • Posts: 4595
  • Joined: Fri Oct 20, 2023 11:01 pm
  • Real Name: Kruno Stifter

Re: Bug: Fusion - Paint slows down after cloning on prev nod

PostWed Jul 02, 2025 9:41 pm

I hope someone from Blackmagic would join the conversation to shed some more light on this. And if possible optimize / fix it.
Offline
User avatar

daniel.koch

Blackmagic Design

  • Posts: 175
  • Joined: Wed Apr 15, 2015 5:54 am

Re: Bug: Fusion - Paint slows down after cloning on prev nod

PostThu Jul 03, 2025 6:34 am

Hi George, please try this and let me know if it helps - in Paint1, after painting, change the paint mode from Stroke/MultiStroke/etc back to Select:

Select.png
Select.png (31.05 KiB) Viewed 223 times

You should then find that painting in Paint2 is full speed again, same as if you'd reloaded the comp or copy/pasted the nodes (you'll note that in these cases too, the mode will be set back to Select).

The reason for this is due to how painting works in Fusion. Because responsiveness and latency are so important when painting, the Paint tool will bypass most of the usual caching mechanisms and output the painted area directly, to minimise overhead and other processing. But because caching is of course important to render speeds (including when cloning with downstream paint tools), it caches normally when not painting, in Select mode (and I think in other non-stroke paint modes) - and it will also switch back to Select mode when reloaded or pasted so that later renders are full speed.
Offline
User avatar

KrunoSmithy

  • Posts: 4595
  • Joined: Fri Oct 20, 2023 11:01 pm
  • Real Name: Kruno Stifter

Re: Bug: Fusion - Paint slows down after cloning on prev nod

PostThu Jul 03, 2025 11:04 am

daniel.koch wrote:Hi George, please try this and let me know if it helps - in Paint1, after painting, change the paint mode from Stroke/MultiStroke/etc back to Select:.


Thank you for clarifying that Daniel. I didn't realize that is how it works, but I happened to get used to switching to select tool for another reason. So it worked for me.

The reason why I was switching to select tool was because coming over from Photoshop I was used to cloning by sampling what I see. And as I work I would sample over areas I cloned over. Making it easy to cover up something with small area to source from. But in Fusion paint tool by default seems to sample from original source, even if its not visible in the viewer. Casing lot of frustration. Because its cloning not from what I can see and think I'm sampling from but from what was in the original image.

After lot of frustration I found that if I click on the select tool than back to stroke or multistroke, I can actually sample what I see, and not what is underneath.

Can you please implement a feature where there is a checkbox to do this automatically, where fusion paint tool would sample from what is visible, by essentially each time new sample point is made, it would auto select the select tool and clear out cache and sample from what is visible in the viewer.

I had similar issue using Boris FX Silhouette paint tool, but I found they have a useful option to choose where paint tool is sampling from. Its in the panel for the paint tool. They have option for input (original image) output (what is now new cloned area visible in the viewer.) so it works like in Photoshop and every other normal painting application.

Can you please implement that feature in fusion. Or at very least give us some kind of keyboard shortcut we can set up to do it as we paint. Otherwise going back to click select tool and back to stroke tool each time is super slow and quite frustrating. And there is no need to be like that. Please can you implement the feature.

Thank you.
Offline
User avatar

goohoobler1

  • Posts: 97
  • Joined: Wed Jul 27, 2022 9:34 pm
  • Real Name: George Port

Re: Bug: Fusion - Paint slows down after cloning on prev nod

PostThu Jul 03, 2025 8:21 pm

Thank you Daniel for the behind the scenes explanation, we appreciate the increased interaction that the staff are giving us.
Yes, the noted fix of setting all Upstream Paint nodes to Select (so they are no longer in active paint mode) does indeed solve the issue and keeps fast interactivity in all of the Downstream Paint nodes.
I have changed the title of this thread and amended the first post so any future sufferers from this issue can get good info.
While I appreciate that this is an as designed feature to keep things fast , it would be good to add a highlighted "Tip" in the manual explaining that switching to select mode would avoid downstream slowdowns , so people coming across this behavior have some chance to understand.
There may still be time to add it to the V20 manual...

And speaking of Cache , is there any chance the "Force Cache" command can be made to work on all reference Magic Mask frames (since those frames invalidate all the caching for all the downstream nodes)? Or can you give us a fix or workaround?

https://forum.blackmagicdesign.com/viewtopic.php?f=21&t=222077&p=1149891&
Windows 11 Pro (22H2)
Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
64.0 GB RAM
Nvidia 4070Ti Super (16GB VRAM)
AMD Ryzen 3970X @ 3.69 GHz
128 GB RAM
Nvidia 3090 (24GB VRAM)
Resolve Studio / Fusion Studio v20.0 Release (Beta 4)
Offline
User avatar

Chad Capeland

  • Posts: 3311
  • Joined: Mon Nov 10, 2014 9:40 pm

Re: Bug: Fusion - Paint slows down after cloning on prev nod

PostThu Jul 03, 2025 10:26 pm

goohoobler1 wrote:
And speaking of Cache , is there any chance the "Force Cache" command can be made to work on all reference Magic Mask frames



All Force Cache does is make the cached outputs of that tool very high priority so they are nearly the last to get cleared when running out of RAM. It doesn't cause cache to be created. Magic Mask's failure to cache has nothing to do with the priority of output.
Chad Capeland
Indicated, LLC
www.floweffects.com

Return to Fusion

Who is online

Users browsing this forum: No registered users and 83 guests