Low Framerates for SubComps or Fusion Clips (Same Timing)

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

joymonger

  • Posts: 69
  • Joined: Wed Apr 15, 2020 3:28 pm
  • Real Name: Paige Saunders

Low Framerates for SubComps or Fusion Clips (Same Timing)

PostWed Nov 03, 2021 5:29 pm

I often want to have an animated clip with lower framerates, or sometimes to "animate on twos" because it looks better and makes me feel like I work at Vox.

A standard scenario would be a 24fps timeline with a talking head. I create a fusion comp animating a graph which is overlaid. II basically want to force it to hold every second frame for two frames so that what comes out looks like a stylized 12fps.

However changing the frame-rate on the clip changes the length (speed), I went to export the clip in a second timeline and the export settings were locked to 29.97 (I know sometimes you can change this but this project for whatever reason is locked down), I have ended up exporting in ProRes then re-encoding using a different application to drop the frames, then bringing it back in. All quite time consuming.

My Question(s)
What is your workflow for accomplishing this? What do you do when your project locks up framerates like this, why is it happening? Is there a node that allows you "hold every X frames"? Would BMD consider adding some features like this given that animation is so often a different framerate to normal footage?
Attachments
Screen Shot 2021-11-03 at 12.55.00 PM.png
Locked timeline settings
Screen Shot 2021-11-03 at 12.55.00 PM.png (109.53 KiB) Viewed 712 times
MBP M1Max
Offline
User avatar

TheBloke

  • Posts: 1905
  • Joined: Sat Nov 02, 2019 11:49 pm
  • Location: UK
  • Real Name: Tom Jobbins

Re: Low Framerates for SubComps or Fusion Clips (Same Timing

PostWed Nov 03, 2021 6:29 pm

You can't change the FPS of a timeline once it has any clips on it, that's a Resolve limitation. You can make a new timeline at the desired FPS then copy the clip(s) from the original; that works OK.

However as you're doing your animations in Fusion, you could also do your retiming in Fusion as well.

Copy the node code given at the end of this post and paste it into your Fusion composition. It'll create a TimeStretcher node. Add that node as the last node in your comp, immediately before MediaOut, and the comp will only display on every other frame, without affecting the duration of the clip.

This is achieved with an expression on TimeStretcher's "Source Time" propery. The expression is:
Code: Select all
iif (time % 2 == 0, time, time-1)
This expression says: If the current frame number is divisible by 2, output the current frame number; if it's not, output the current frame number minus one.

The result is that this will display frames: 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, etc.

Here's the node:
Code: Select all
{
   Tools = ordered() {
      TimeStretcher1 = TimeStretcher {
         CtrlWZoom = false,
         Inputs = {
            SourceTime = Input {
               Value = 58,
               Expression = "iif (time % 2 == 0, time, time-1)",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 247.333, 32.2121 } },
      }
   },
   ActiveTool = "TimeStretcher1"
}
Resolve Studio 17.4.3 and Fusion Studio 17.4.3 on macOS 11.6.1

Hackintosh:: X299, Intel i9-10980XE, 128GB DDR4, AMD 6900XT 16GB
Monitors: 1 x 3840x2160 & 3 x 1920x1200
Disk: 2TB NVMe + 4TB RAID0 NVMe; NAS: 36TB RAID6
BMD Speed Editor
Offline

joymonger

  • Posts: 69
  • Joined: Wed Apr 15, 2020 3:28 pm
  • Real Name: Paige Saunders

Re: Low Framerates for SubComps or Fusion Clips (Same Timing

PostThu Nov 04, 2021 12:58 am

Damm that's a good solution.

It works because you can just hit "fusion" and then paste the node whenever you need the functionality.

For people viewing this later. I rejigged the code into something flexible. This code will play every 10 frames, just change the value for showEvery from 10 to whatever you want.
Code: Select all
{
   Tools = ordered() {
      FrameSkipper = TimeStretcher {
         CtrlWZoom = false,
         Inputs = {
            SourceTime = Input {
               Source = "Value",
               Expression = ":showEvery=10; thisFrame=time%showEvery; return iif (thisFrame == 0, time, time-thisFrame);",
            },
         }
      }
   }
}
Attachments
Screen Shot 2021-11-03 at 8.53.11 PM.png
Frameskipper
Screen Shot 2021-11-03 at 8.53.11 PM.png (27.78 KiB) Viewed 492 times
MBP M1Max
Offline
User avatar

TheBloke

  • Posts: 1905
  • Joined: Sat Nov 02, 2019 11:49 pm
  • Location: UK
  • Real Name: Tom Jobbins

Re: Low Framerates for SubComps or Fusion Clips (Same Timing

PostThu Nov 04, 2021 7:49 am

Looks good. If you wanted to re-use something like this regularly, I'd suggest saving it as a Macro rather than pasting it in every time. Then it'd be automatically available in any comp, and can be added like any other tool.

Also, if you want even more time remapping options, check out the free community tool Time Machine, available in the Reactor plugin manager.

It has a bunch of options for remapping time in various advanced ways. One of them is called "Skip", which replicates what we did here with expressions. Eg set Skip = 1 to skip every other frame, or Skip = 10 to hold for 10 frames as you were doing with your example above.

Image

Time Machine also comes with a 3D version for remapping 3D elements, and a Modifier version which can be attached to any individual parameter. Neither of which is possible with Fusion's stock time remapping tools.
Resolve Studio 17.4.3 and Fusion Studio 17.4.3 on macOS 11.6.1

Hackintosh:: X299, Intel i9-10980XE, 128GB DDR4, AMD 6900XT 16GB
Monitors: 1 x 3840x2160 & 3 x 1920x1200
Disk: 2TB NVMe + 4TB RAID0 NVMe; NAS: 36TB RAID6
BMD Speed Editor

Return to DaVinci Resolve

Who is online

Users browsing this forum: Bing [Bot] and 185 guests