No way to copy and paste keyframes in Fusion page???

Get answers to your questions about color grading, editing and finishing with DaVinci Resolve.
  • Author
  • Message
Offline
User avatar

AndrewTheGreat

  • Posts: 174
  • Joined: Tue Nov 19, 2024 12:00 pm
  • Location: UAE, Dubai
  • Real Name: Andy Fed

No way to copy and paste keyframes in Fusion page???

PostTue Apr 22, 2025 3:30 pm

Hi, guys. I'm stumbling against a problem I cannot understand how it even exists in such a profound piece of software as Davinci Resolve.
Here's a Fusion setup:
image_2025-04-22_182459124.png
image_2025-04-22_182459124.png (72.68 KiB) Viewed 840 times

There's a background with 4 Polygon masks (just lines). I animated the 1 one, eased the keyframes. Next I want to copy and paste those keyframes to the rest 3 polygons. But the standard Ctrl+C\Ctrl+V commands don't work neither in the Keyframes tab nor in the Splines tab. Nor do I see any context menu for that.
ChatGPT says I have to have a property enabled in order to copy-paste keyframes from a similar property. So I have to enable the animation for the said property, then delete the keyframe it created and only then I'll be able to paste the earlier copied kayframes for the same property in another node. Is this how it really works? Because if so - it's catastrophic not to have an easy user-friendly way of doing such basic things as copy-pasting keyframes between nodes.

Please correct me if I'm getting it wrong.
15y Premiere Pro user. Started to learn DVR as of Apr 2025
Offline
User avatar

KrunoSmithy

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

Re: No way to copy and paste keyframes in Fusion page???

PostTue Apr 22, 2025 4:40 pm

There are various ways of approaching keyframes. When it comes to copy and paste, its done on the nodes. You select node you want to copy from, and you CTRL + C copy it. And in the other node where you want to paste, you right click next to the parameter you want and CTRL + P for paste.

This is a way it could be done, but personally I almost never use it. Generally I would use various other methods, like instancing, expression linking, publish and connect to, duplication of the node, duplication of the node with duplicate tool etc. So actual copy and paste is rarely needed and its not dynamically linked so I prefer other methods because they not only do the same thing, they also keep the link alive allowing to keep the workflow flexible and build upon previous animations.

Once you get used to working that way, copy and pasting individual keyframes seems slower and less efficient. But if you wanted to, that is how you would do it. Generally I would recommend you don't work and than try to do things later. Instead work so that as you work you can stay flexible. Fusion is full of tools that allow you to keep flexible if you do them before you need to make changes, and the other way around is a hassle. So a lot of it has to do with making the right choices in the composition as you work, so that any changes or added complexity you need later, is easy to do.

However. if you wanted to make batch changes after the fact, you can do it in the spline editor as well, in several ways. The easy way is to show the nodes you want to copy from and paste to, right click on for copy and right click for paste. There are other options you can find in the right click menu, but that is the easiest most obvious one. You can do the same in keyframe editor not just spline editor.

sshot-1156.jpg
sshot-1156.jpg (185 KiB) Viewed 522 times


Splines can also be exported and imported, for cross collaboration between differnt machines, composition and other programs to support it.

Individual points also can be published to various outputs, from trackers to paths and those can be used to connect other splines and all sorts of elements.

You can also use various modifers including collection of modifers as nodes, called VonkUltra. Pretty powerful set of modifers as nodes. And you can use various third party scripts to speed up work or perform niche actions. One good one, is script for batch changing of parameters. Its called Change Batch Parameter. You can find it on reactor or on this page.

There are other good ones there as well, to auto connect multiple nodes to multi merge node or do the same with shapes, and similar quality of life additions that mostly you would use if you work with these types all the time. Auto rename is also good one. Script that auto renames nodes.
Offline
User avatar

AndrewTheGreat

  • Posts: 174
  • Joined: Tue Nov 19, 2024 12:00 pm
  • Location: UAE, Dubai
  • Real Name: Andy Fed

Re: No way to copy and paste keyframes in Fusion page???

PostWed Apr 23, 2025 6:19 am

Hi, @KrunoSmithy
Looks like you are the only one who really knows DVR )) Thank you for your input.
As for:
You select node you want to copy from, and you CTRL + C copy it. And in the other node where you want to paste, you right click next to the parameter you want and CTRL + P for paste.

it doesn't work, or I don't get it right. Here's my node tree:
Screenshot 2025-04-23 090621.png
Screenshot 2025-04-23 090621.png (45.81 KiB) Viewed 454 times

You can see it has 4 Line nodes which are Polygons. I created an animation in the first one (don't pay attention to Line 2 - I created the animation there from scratch, not by copy-pasting), so by default there's no parameters - in this case it's Length - to paste the keyframes to in the other nodes until I turn on the animation in the Length in them too. Also I don't see the Length parameter in the Splines window if I turn on Show all parameters in the 3-dot menu. So unless there's a Length parameter in the node shown in the Splines tab, I cannot paste the copied values anywhere - Ctrl+V just doesn't work.

Generally I would use various other methods, like instancing, expression linking, publish and connect to, duplication of the node, duplication of the node with duplicate tool etc.

I understand that these methods are better in terms of Fusion logics, but I cannot get it how I can use them, if I need to add the same keyframed animation to 4 nodes but this animation should start and end at different moments. With the keyframes copy-pasted I can just move them in time to the parts where I need the animation to happen. Can I do that with the methods you mentioned?

So right now the easiest way for me would have been to just duplicate one node with the animation keyframed in it and then correct the animation timing in the duplicates by moving the keyframes in them, but you see I tracked the polygons to an object on the video first and moved the 4 of them to the needed location in the video already...
15y Premiere Pro user. Started to learn DVR as of Apr 2025
Offline
User avatar

KrunoSmithy

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

Re: No way to copy and paste keyframes in Fusion page???

PostWed Apr 23, 2025 9:10 am

AndrewTheGreat wrote:it doesn't work, or I don't get it right. Here's my node tree:


Hmm. You have publish point to a tracker. IntelliTracker in this case. At least from what I can see. So probably you did it right, but you didn't mention the publish point to a tracker situation, which means that you would likely have to take a differnt approach than simple copy and paste. Tracker is the X factor here and it has its own tracking data. I would have to see the entire set up to be sure, but likely the best thing to do in situation where you have a point being controlled by a tracker is to track the point you want, no lines at the time, and than use the tracking data on what you want to follow the tracking point.

Depending on what kind of animation or VFX you are doing, and what level of control you need, there are many ways to go about it.

Generally what I would do is use is use tracker and than perform match move later. You could always connect the point to a track as well, via connect to... menu, but I prefer most of the time to use tracker node or its derivative transform with tracking data to do match move. As most things in fusion, its few steps to set up but than you are clear to work with more flexibility later on.

Basically, you use tracker to track. Than when you have performed the tracking you match move either the whole animation if that is what you need or in the case of specific polygon point, you can select the point, publish it and connect it to tracker.

For example , lets say camera is moving away from the this stature on the desk and I wanted my four lines to gradually grow and appear in time and position offset, but I want second point on the line to match the point I tracked.

I can make one line and animate its lenght, color and all that. Than I would use duplicate node to offset it in position and timing, giving me four lines with are duplicates of the first with time offset so the lenght parameter is lagging behind in each line. And if I connect second point of the first line to tracker position than all the four lines also match the movement. At this point I could change lines or position or whatever, and it would all work.

sshot-1158.jpg
sshot-1158.jpg (194.61 KiB) Viewed 433 times


Otherwise if I just needed to extend a line, I would animate the lenght, use duplicate node to offset position and or time.

Code: Select all
{
   Tools = ordered() {
      BSpline1_1 = BSplineMask {
         DrawMode = "ClickAppend",
         DrawMode2 = "InsertAndModify",
         CtrlWZoom = false,
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.0234, },
            Solid = Input { Value = 0, },
            WriteLength = Input {
               SourceOp = "BSpline1_1Length",
               Source = "Value",
            },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               SourceOp = "BSpline1_1Polyline",
               Source = "Value",
            },
            Polyline2 = Input {
               Value = BSplinePolyline {
                  Order = 4,
                  Type = "Tensioned",
                  Knots = { }
               },
               Disabled = true,
            }
         },
         ViewInfo = OperatorInfo { Pos = { -434.217, -40.8807 } },
      },
      BSpline1_1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 25, 0 } },
            [75] = { 1, LH = { 50, 1 } }
         }
      },
      BSpline1_1Polyline = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [0] = { 0, Flags = { LockedY = true }, Value = BSplinePolyline {
                  Points = {
                     { X = -0.4125, Y = -0.00740740740740742 },
                     { X = 0.406252650547024, Y = -0.00740740740740742 }
                  },
                  Order = 4,
                  Type = "Tensioned",
                  Knots = { }
               } }
         }
      },
      Duplicate1_1 = Fuse.Duplicate {
         Inputs = {
            Copies = Input { Value = 4, },
            TimeOffset = Input {
               SourceOp = "Duplicate1_1TimeOffset",
               Source = "Value",
            },
            Center = Input { Value = { 0.5, 0.65 }, },
            GainNest = Input { Value = 1, },
            Polyline = Input {
               Value = Polyline {
               },
            },
            Background = Input {
               SourceOp = "Background4_1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -324.217, 36.089 } },
      },
      Duplicate1_1TimeOffset = BezierSpline {
         SplineColor = { Red = 243, Green = 56, Blue = 70 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 25, 3.33333333333333 }, Flags = { Linear = true } },
            [75] = { 10, LH = { 50, 6.66666666666667 }, Flags = { Linear = true } }
         }
      },
      Background4_1 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "BSpline1_1",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 500, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.333333333333333, },
            TopLeftGreen = Input { Value = 0.666666666666667, },
            TopLeftBlue = Input { Value = 1, },
            GradientType = Input { Value = FuID { "Radial" }, },
            Start = Input { Value = { 0.5, 0.5 }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1 },
                     [1] = { 0, 0, 0, 1 }
                  }
               },
            }
         },
         ViewInfo = OperatorInfo { Pos = { -434.217, 36.089 } },
      },
      Transform1_1 = Transform {
         Inputs = {
            Center = Input { Value = { 0.5, 0.265 }, },
            Input = Input {
               SourceOp = "Duplicate1_1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -214.217, 36.089 } },
      }
   }
}


sshot-1159.jpg
sshot-1159.jpg (208.78 KiB) Viewed 433 times

.....................

Another way you can change lenght parameter in a polygon or B-spline, regardless of shape or difference is to leverage some scripting. The other day I saw a cool method for that. Using QGIS, a free open source Map data software. Which can be used to export data about for example borders of countries in vector shapes. This can be imported as SVG to fusion and than you can animate each polyline to draw so instead of drawing them manually, they are driven by script that works on all of them. This is also something you might be able to leverage for your project.

JustCropIt made a nice post about it.

1. Install the For Slash Command for the console via Reactor [WSL thread here]

https://www.steakunderwater.com/wesuckl ... e&start=15

The /for slash-command is used to quickly and easily apply changes across a number of tools.

*Version 2 includes new additions for batch renaming nodes, with setting the clip name and node attributes, and selectively rendering branches of a comp by Movalex and Andrew Hazelden. Also a version up/down versioning feature was adapted from code by PingKing*

1. Import the SVG

2. Select the SVG group and open it

3. Select all nodes in it

4. Open the console and type/paste in `/for selected animate WriteLength & set WriteLength at 0 to 0.0 & set WriteLength at 100 to 1.0`. This will add a keyframe at frame 0 and 100 for the Length setting with a value of 0.0 and 1.0 respectively. Nice but very linear

5. Open the **Spline** panel and under the hamburger menu select **Select All Tools**

6. Click the **Zoom to Fit** button (next:ish to the hamburger menu) and drag select all points/keyframes then press `f`. Easing achieved.

7. Now if Fusion treats your masks the same it does for me there might be some small glitches. I’ve learned that this is GPU related (for me) so to get rid of any glitches it would be nice to disable the GPU for all the masks… so… with all nodes still selected, in the console type/paste `/for selected PolylineMask set UseGPU to 0`

And done.

Here is video tutorial by Will Croshaw that demo it with borders.

https://www.youtube.com/@willcroshaw-cw4is
Offline
User avatar

KrunoSmithy

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

Re: No way to copy and paste keyframes in Fusion page???

PostWed Apr 23, 2025 9:11 am

AndrewTheGreat wrote:You can see it has 4 Line nodes which are Polygons. I created an animation in the first one (don't pay attention to Line 2 - I created the animation there from scratch, not by copy-pasting), so by default there's no parameters - in this case it's Length - to paste the keyframes to in the other nodes until I turn on the animation in the Length in them too. Also I don't see the Length parameter in the Splines window if I turn on Show all parameters in the 3-dot menu. So unless there's a Length parameter in the node shown in the Splines tab, I cannot paste the copied values anywhere - Ctrl+V just doesn't work.


I believe that when you copy and paste from the menu in the spline or keyframe editor, you are copying and pasting all parameters of the node. When you copy a node from the node flow and paste it from the right-click menu next to a parameter on another node, you only change and activate that specific parameter, for example, length. If you only wanted to copy the length setting, you would copy the node from where you want the value, select the other node, and in that node's length parameter section, right-click next to the slider and choose "paste settings."

There are good use cases for both methods, but also some caveats, so we have many options for different situations.

Generally, by default, a polygon node, for example, will need to have "Solid" unchecked for the length parameter to be visible. So, if you wanted to copy the length setting to another node directly, you would first have to turn off "Solid" to be able to do so, which is specific to that combination of parameters. However, the copy and paste method works for every node, including macros, so it's very useful.

Copying and pasting from the spline or keyframe editor will copy and paste all parameters, but override the ones you may wish to keep. Therefore, this is good when you want a clone, but not when you don't want to copy everything. Its mostly a matter of choosing correct method at the right time.

Instancing is sometimes a better method. This gives you a linked clone, but you can de-instance some parameters that you want to change.

The "Publish and Connect To..." method is great when you want to connect only one or two elements, and they don't have to be from the same node or parameters; only the values need to be compatible. For example, you can have a change in the length parameter drive the position of text on a polyline, etc.

"Publish and Connect To" can be further expanded by using modifiers, which can also have their modifiers, so you can have dynamically linked parameters that build on each other.

For example, you can link length to a position change on a path, and then add a modifier to that for an angle offset or something like that. Now you have a change in length on a polyline driving the position of something on the path, and a modifier also offsetting it as well. If you add expressions to this, you can do even more.

Plus there are custom scripts, macros, modfier nodes like Vonk Ultra etc.
Offline
User avatar

KrunoSmithy

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

Re: No way to copy and paste keyframes in Fusion page???

PostWed Apr 23, 2025 9:13 am

AndrewTheGreat wrote:So right now the easiest way for me would have been to just duplicate one node with the animation keyframed in it and then correct the animation timing in the duplicates by moving the keyframes in them, but you see I tracked the polygons to an object on the video first and moved the 4 of them to the needed location in the video already...


It's not completely clear to me what the final animation will look like, so I can't comment on specifics. However, if you simply want duplicate nodes offset in time, use the duplicate tool. If you want all four points to end in the same tracker location but start at different locations, then manually use the "connect to tracker position" method for each copied and pasted node. If you have a more complex situation where you want to offset very different elements in time, I would usually use a time speed or time stretcher node to offset each element, or all of them together, depending on what I'm doing.

For example, let's say I'm working on a sequence of motion graphics transitions and elements. I would generally animate the individual sequences independently, starting from frame 0. This makes it easy to animate everything as if it's the only thing in the composition. Once I'm happy with the animation, I would add a time speed tool and offset it by as many frames as needed, then add it to the main flow. This is generally easier than manually keyframing with an offset, and it's also easier to adjust the overall timing of the animation later. All I would have to do is select the time speed nodes for each of these groups of animations and batch-change the value. And if I needed individual, smaller animations to also dynamically adjust, I would use animation curves or keyframe stretcher modifiers for those, so they can adapt on the fly.

You can also use wireless nodes to take assets from one point in the flow, build independently away from other nodes, and wirelessly move them to the main flow. This helps avoid clutter when building complex setups. Wireless nodes also allow you to place the same elements in different places in the flow without creating messy, tangled connection lines.

Return to DaVinci Resolve

Who is online

Users browsing this forum: Google [Bot], Shrinivas Ramani and 212 guests