Jump to: Board index » General » Fusion

KeyStretcher help

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

Jamie Dickinson

  • Posts: 204
  • Joined: Thu Aug 22, 2013 7:38 am

KeyStretcher help

PostWed Nov 18, 2020 12:01 pm

Can anyone point me to some explanation of how this modifier is supposed to work and what the inputs should do?
I've been trying to apply this to the timing of the Displacement along a Path. The original moves on quickly, drifts slowly for a while then moves off quickly. I was hoping that I could stretch the time during the drift slowly section while maintaining the speed of the move on and move off. Ideally this will trim with timings from the Edit Page?
Thanks
Offline

Sander de Regt

  • Posts: 1948
  • Joined: Thu Nov 13, 2014 10:09 pm

Re: KeyStretcher help

PostWed Nov 18, 2020 12:14 pm

What you're describing is how it's supposed to work.

The Keyframestretcher - as far as I know - takes the global in/out of a Fusion composition and stretches your animation based on in/out points that you set in the modifier. (or in the tool, which I found to be little more intuitive) There are quite a couple of decent enough tutorials on how to use it on Youtube now.

Fusion/Resolve 17 also added something called the Animation Curve Modifier which is related conceptually, but not quite the same thing. I'm not quite sure what the difference is, but from the manual I gathered that the Animation Curve Modifier is a bit more flexible than the keyframe stretcher, but don't hold me to that assessment.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

Jamie Dickinson

  • Posts: 204
  • Joined: Thu Aug 22, 2013 7:38 am

Re: KeyStretcher help

PostWed Nov 18, 2020 12:20 pm

It was the Anim Curves that got me looking this because this actually seems more useful in this sort of case.
I'm having more luck applying the KeyStretcher to the Centre XY directly and not to the Displacement on the path but the controls still make very little sense!
Offline

Sander de Regt

  • Posts: 1948
  • Joined: Thu Nov 13, 2014 10:09 pm

Re: KeyStretcher help

PostWed Nov 18, 2020 12:36 pm

Displacement is a tricky parameter to work with, that's for sure. Because it's difficult to create a link in your mind to what the curves are showing you. But it should work with displacement as well.

Here's a basic example (copy/paste the code in your flow area in Fusion)
What I did was create an animation with keyframes at 0,25,50.75 and 100.
Then I went into the path modifier and right-clicked the displacement and chose insert-->keyframe stretcher.

I set the 'source start' to 0 (my first keyframe) my 'source end' to 100 (my last keyframe) - this is the range the keystretcher samples from - and set the 'stretch start' to 25 (my 2nd keyframe) and 'stretch end' to 75 (my 3rd keyframe)

On a comp with a 100 frame global in/out the animation plays as animated.
On a comp with a 500 frame global in/out the animation plays as animted from 0-25 then it stretches the section 25-75 over a range from 25-475 (500-25) so the rest of the original animation (75-100) plays from 475-500.

I hope this helps to help you visualize this.

Code: Select all
{
   Tools = ordered() {
      Ellipse1 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input {
               SourceOp = "Path1",
               Source = "Position",
            },
            Width = Input { Value = 0.0616079625314769, },
            Height = Input { Value = 0.0616079625314769, },
         },
         ViewInfo = OperatorInfo { Pos = { 220, 16.5 } },
      },
      Path1 = PolyPath {
         DrawMode = "InsertAndModify",
         Inputs = {
            Displacement = Input {
               SourceOp = "KeyframeStretcher1",
               Source = "Result",
            },
            PolyLine = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, LockY = true, X = -0.466890192791282, Y = -0.0461997019374069, RX = 0.0772562168203409, RY = 0.121708892200695 },
                     { Linear = true, LockY = true, X = -0.23512154233026, Y = 0.31892697466468, LX = -0.0772562168203409, LY = -0.121708892200695, RX = 0.0772562168203409, RY = -0.105646630236794 },
                     { Linear = true, LockY = true, X = -0.00335289186923721, Y = 0.00198708395429703, LX = -0.0772562168203409, LY = 0.105646630236794, RX = 0.0772562168203408, RY = -0.112353038582547 },
                     { Linear = true, LockY = true, X = 0.228415758591785, Y = -0.335072031793343, LX = -0.0772562168203408, LY = 0.112353038582547, RX = 0.0772562168203409, RY = 0.0962907766186455 },
                     { Linear = true, LockY = true, X = 0.460184409052808, Y = -0.0461997019374069, LX = -0.0772562168203409, LY = -0.0962907766186455 }
                  }
               },
            },
         },
      },
      KeyframeStretcher1 = KeyStretcherMod {
         CtrlWZoom = false,
         Inputs = {
            Keyframes = Input {
               SourceOp = "KeyStretcheronPath1Keyframes",
               Source = "Value",
            },
            SourceEnd = Input { Value = 100, },
            StretchStart = Input { Value = 25, },
            StretchEnd = Input { Value = 75, },
         },
      },
      KeyStretcheronPath1Keyframes = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 255 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 8.33333333333333, 0.0898446350749565 }, Flags = { Linear = true, LockedY = true } },
            [25] = { 0.26953390522487, LH = { 16.6666666666667, 0.179689270149913 }, RH = { 33.3333333333333, 0.351103479771296 }, Flags = { Linear = true, LockedY = true } },
            [50] = { 0.514242628864149, LH = { 41.6666666666667, 0.432673054317722 }, RH = { 58.3333333333333, 0.599221855782151 }, Flags = { Linear = true, LockedY = true } },
            [75] = { 0.769180309618157, LH = { 66.6666666666667, 0.684201082700154 }, RH = { 83.3333333333333, 0.846120206412105 }, Flags = { Linear = true, LockedY = true } },
            [100] = { 1, LH = { 91.6666666666667, 0.923060103206052 }, Flags = { Linear = true, LockedY = true } }
         }
      },
      Background1 = Background {
         CtrlWZoom = false,
         Inputs = {
            GlobalOut = Input { Value = 500, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.0640000000000001, },
            TopLeftBlue = Input { Value = 1, },
            EffectMask = Input {
               SourceOp = "Ellipse1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 220, 82.5 } },
      }
   }
}
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

Jamie Dickinson

  • Posts: 204
  • Joined: Thu Aug 22, 2013 7:38 am

Re: KeyStretcher help

PostWed Nov 18, 2020 9:48 pm

Thanks - I think this is a big help. I didn't factor in the global duration, as there's no setting in the modifier that relates to that. Makes sense though. I'll experiment more now!

Return to Fusion

Who is online

Users browsing this forum: Google [Bot] and 15 guests