Page 1 of 1

17.0 New Anim Curves only for Path ??

PostPosted: Sat Feb 27, 2021 9:37 am
by deBabba
Hey guys,
I was very exited about the new Anim Curves feature in Resolve 17 but I can only make it work for the path of a text. For any other parameter like Size ore Tracking it's impossible to apply.

Here is a short example für a path animation using the AnimCurve Modifier with the elastic option.


  • Has anyone been succesfull in animating other parameters?
  • is it possible to use multiple AnimCurves für different parameters within one clip?
  • after installation of the final Resolve17 version the What's New document has been replaced with the complete manual. But the section about the new AnimCurve modifier ist missing !

Re: 17.0 New Anim Curves only for Path ??

PostPosted: Sun Feb 28, 2021 11:15 am
by niczoom
after installation of the final Resolve17 version the What's New document has been replaced with the complete manual. But the section about the new AnimCurve modifier ist missing !
Your right, I had to go find it as well, heres the link to the Resolve 17 whats new pdf:
https://documents.blackmagicdesign.com/ ... 4240010000

For any other parameter like Size ore Tracking it's impossible to apply.

On page 99 of this manual ... "In the Inspector, right-click the Size control, then choose Modify With > Anim Curves from the contextual menu."

Hope this helps

Re: 17.0 New Anim Curves only for Path ??

PostPosted: Sun Feb 28, 2021 11:59 am
by deBabba
Thanx Nicolas,
this morning I found the document on the BM website. 8-)

niczoom wrote:
For any other parameter like Size ore Tracking it's impossible to apply.

On page 99 of this manual ... "In the Inspector, right-click the Size control, then choose Modify With > Anim Curves from the contextual menu."

Hope this helps
Yep, that's what is written there but for me it didn't work as described. :?

Re: 17.0 New Anim Curves only for Path ??

PostPosted: Sun Feb 28, 2021 12:13 pm
by niczoom
What node and parameter are you trying to use it on?

Re: 17.0 New Anim Curves only for Path ??

PostPosted: Mon Mar 01, 2021 10:09 am
by deBabba
niczoom wrote:What node and parameter are you trying to use it on?

Just a text node, as simple as possible, just to get an idea about the functionality of this powerful new feature.
In the meantime I could implement it for the textsize, but if it comes to the second parameter in the animation which is e.g. the spacing, it is not possible to activate the easing option for a custom curve. Only linear is accepted and produces a change of the spacing parameter:

AnimCurves 01.png
AnimCurves 01.png (164 KiB) Viewed 1497 times

Re: 17.0 New Anim Curves only for Path ??

PostPosted: Wed Mar 03, 2021 6:47 am
by niczoom
Can you perhaps copy and paste a few nodes here to test?

Re: 17.0 New Anim Curves only for Path ??

PostPosted: Thu Mar 04, 2021 5:12 pm
by deBabba
niczoom wrote:Can you perhaps copy and paste a few nodes here to test?

Sorry for the late reply, I have been a little busy ;)

Here is the comp file containing just that one Text Node with the two anim curves as described above.
Code: Select all
Composition {
   CurrentTime = 58,
   RenderRange = { 0, 149 },
   GlobalRange = { 0, 149 },
   CurrentID = 128,
   HiQ = true,
   PlaybackUpdateMode = 0,
   Version = "DaVinci Resolve Studio 17.0.0.0039",
   SavedOutputs = 0,
   HeldTools = 0,
   DisabledTools = 0,
   LockedTools = 0,
   AudioOffset = 0,
   Resumable = true,
   OutputClips = {
   },
   CustomData = { TEMPLATE_ID = "Fusion Generator" },
   Tools = {
      TextPath = BezierSpline {
         SplineColor = { Red = 186, Green = 244, Blue = 89 },
         KeyFrames = {
            [30] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
               } }
         }
      },
      Text = TextPlus {
         CtrlWZoom = false,
         NameSet = true,
         Inputs = {
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Center = Input { Value = { 0.559070636221554, 0.44428378638905 }, },
            Path = Input {
               SourceOp = "TextPath",
               Source = "Value",
            },
            CharacterSpacing = Input {
               SourceOp = "AnimCurves2",
               Source = "Value",
            },
            StyledText = Input { Value = "Size", },
            Font = Input { Value = "Neon Lights", },
            Style = Input { Value = "Regular", },
            Size = Input {
               SourceOp = "AnimCurves1",
               Source = "Value",
            },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 535.667, 83.1061 } },
      },
      AnimCurves2 = LUTLookup {
         Inputs = {
            Source = Input { Value = FuID { "Custom" }, },
            Input = Input {
               SourceOp = "AnimCurvesonTextInput",
               Source = "Value",
            },
            EaseOut = Input { Value = FuID { "Sine" }, },
            Lookup = Input {
               SourceOp = "AnimCurves2Lookup",
               Source = "Value",
            },
         },
      },
      AnimCurves1 = LUTLookup {
         CtrlWZoom = false,
         Inputs = {
            Source = Input { Value = FuID { "Custom" }, },
            Input = Input {
               SourceOp = "AnimCurvesonTextInput1",
               Source = "Value",
            },
            Curve = Input { Value = FuID { "Easing" }, },
            EaseOut = Input { Value = FuID { "Bounce" }, },
            Lookup = Input {
               SourceOp = "AnimCurvesonTextLookup",
               Source = "Value",
            },
            Scale = Input { Value = 0.333, },
            Offset = Input { Value = -0.14, },
            TimeScale = Input { Value = 0.637, },
            TimeOffset = Input { Value = -0.551, },
         },
      },
      AnimCurvesonTextLookup = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 255, Green = 255, Blue = 255 },
      },
      AnimCurves2Lookup = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 255, Green = 255, Blue = 255 },
      },
      AnimCurvesonTextInput = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 0 },
         KeyFrames = {
            [97] = { 1, RH = { 100.333333333333, 1.17933333333333 }, Flags = { Linear = true } },
            [107] = { 1.538, LH = { 103.666666666667, 1.35866666666667 }, Flags = { Linear = true } }
         }
      },
      AnimCurvesonTextInput1 = BezierSpline {
         SplineColor = { Red = 104, Green = 195, Blue = 244 },
         NameSet = true,
         KeyFrames = {
            [62] = { 0.261, RH = { 71.3333333333333, 0.507333333333333 }, Flags = { Linear = true } },
            [90] = { 1, LH = { 80.6666666666667, 0.753666666666667 }, Flags = { Linear = true } }
         }
      },
      MediaOut1 = Saver {
         Inputs = {
            Index = Input { Value = "0", },
            Input = Input {
               SourceOp = "Text",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 658.667, 83.1061 } },
      }
   },
   Frames = {
      {
         FrameTypeID = "ChildFrame",
         Mode = 3,
         LayoutPreset = 0,
         PresetName = "Default",
         Left = 0,
         Top = 0,
         Width = 1920,
         Height = 890,
         ZoneInfo = { AuxRight = { Expanded = true }, ["!Left"] = {
            }, AuxLeft = { Expanded = true }, Right = { Expanded = true, }, Left = { Expanded = false, }, ["!Right"] = {
            } },
         ViewInfo = { Viewer1 = { Show = true, RatioY = 0.01, RatioX = 1.05302325581395, }, InnerLeft = { PixelX = 420, RatioY = 100, }, MainSplit = { RatioX = 100, RatioY = 0.998805256869773, }, CenterSplit = { RatioX = 1, RatioY = 100, }, Viewer2 = { Show = true, RatioY = 0.01, RatioX = 0.946976744186046, }, Comments = { Show = false }, Time = { Show = true, RatioX = 100, }, InnerColumns = { RatioX = 100, RatioY = 1.00119474313023, }, Keyframes = { Show = false, }, LayoutStrip = { Show = true, }, Inspector = { Show = true, RatioY = 1, RatioX = 100, }, InnerRight = {
            }, MediaPool = { Show = true, Adjust = false, RatioY = 100, MRU = 1, RatioX = 1, }, OuterColumns = { RatioX = 100, RatioY = 1, }, Effects = { Show = false, }, Clips = { Show = false, RatioX = 100, MRU = 0, Adjust = true, }, Metadata = { Show = false, }, OuterLeft = {
            }, ViewerSplit = { RatioX = 100, RatioY = 1, }, Nodes = { Show = true, RatioY = 100, RatioX = 1, }, OuterRight = { PixelX = 420, RatioY = 100, }, ActionStrip = { Show = true, RatioX = 100, }, Spline = { Show = true, Adjust = false, RatioY = 100, MRU = 1, RatioX = 1, } },
         Views = ordered() {
            MediaPool = "MediaPoolView",
            Effects = MultiView {
               Active = "EffectView",
               ViewList = ordered() {
                  EffectView = "EffectView"
               },
            },
            Nodes = MultiView {
               Active = "FlowView",
               ViewList = ordered() {
                  FlowView = "FlowView"
               },
               Names = {
                  FlowView = "FlowView"
               },
               FlowView = FlowView {
                  Flags = {
                     AutoHideNavigator = true,
                     AutoSnap = true,
                     RemoveRouters = true
                  },
                  NavigatorSize = { 200, 140 },
                  Direction = "Horizontal",
                  PipeStyle = "Direct",
                  RootScale = 1,
                  RootOffset = { -229.333, 29.697 }
               }
            },
            Keyframes = MultiView {
               Active = "TimelineView",
               ViewList = ordered() {
                  TimelineView = "TimelineView"
               },
               Names = {
                  TimelineView = "TimelineView"
               },
               TimelineView = TimelineView {
                  TreeControlState = {
                  },
                  DisplayMode = "All Tools",
                  ShowCurrentTimeTools = false,
                  Filter = "Show All",
                  ShowSelectedTools = false,
                  ShowAnimatedToolsOnly = false,
                  ShowEditBoxes = false,
                  KeyFrameView = {
                     Position = { Left = 232, Bottom = 324 },
                     ScaleX = 2.12765957446809,
                     OffsetX = -48.9361702127661,
                     OffsetY = 0,
                     AutoScaling = "scroll",
                     AutoSnapTo = "frame",
                     AutoSnapToGuidelines = true,
                     GuidelinesGrabEnabled = true,
                     GuidelinesSnapTo = "none"
                  },
                  Spreadsheet = { LeftPos = 232, Visible = false }
               }
            },
            Spline = MultiView {
               Active = "SplineView",
               ViewList = ordered() {
                  SplineView = "SplineEditorView"
               },
               Names = {
                  SplineView = "SplineView"
               },
               SplineView = SplineEditorView {
                  LeftPos = 264,
                  ScaleX = 0.2,
                  ScaleY = 0.00332225913621262,
                  OffsetX = 10.6,
                  OffsetY = -2.22044604925031e-16,
                  AutoScaling = "scroll",
                  AutoSnapTo = "frame",
                  AutoSnapToGuidelines = true,
                  GuidelinesSnapTo = "frame",
                  ShowKeyMarkers = false,
                  IndependentHandles = false,
                  ShowNonSplineModifiers = true,
                  GuidelinesGrabEnabled = true,
                  ToolStates = {
                     Current = {
                        Editable = { },
                        NonEditable = { "AnimCurvesonTextInput", "AnimCurvesonTextInput1" }
                     }
                  },
                  ShowOneToolOnly = false,
                  ShowSelectedTools = true,
                  ShowAllInputs = false,
                  Filter = "Show All"
               }
            },
            Inspector = MultiView {
               Active = "Tools",
               ViewList = ordered() {
                  Tools = "ControlView",
                  Modifiers = "ModifierView"
               },
            },
            Viewer1 = MultiView {
               Active = "LeftView",
               ViewList = ordered() {
                  LeftView = "PreviewContainer"
               },
               Names = {
                  LeftView = "LeftView"
               },
            },
            Viewer2 = MultiView {
               Active = "RightView",
               ViewList = ordered() {
                  RightView = "PreviewContainer"
               },
               Names = {
                  RightView = "RightView"
               },
            },
            Time = "TimeView",
            ActionStrip = "ActionStripView",
            LayoutStrip = "LayoutStripView",
            Clips = "ClipsView",
            Metadata = "MetadataView"
         },
         Layout = ordered() {
            { ID = "LayoutStrip", FixedY = 36, Resolve = false, Flat = true },
            {
               {
                  { ID = "MediaPool", Fusion = false, RatioX = 1 },
                  { ID = "Effects", RatioX = 1 },
                  Zone = "Left",
                  Rows = 2,
                  PaneID = "OuterLeft",
                  PixelX = 420
               },
               {
                  {
                     {
                        { ID = "MediaPool", Fusion = false, RatioX = 1 },
                        { ID = "Effects", RatioX = 1 },
                        PaneID = "InnerLeft",
                        MaxViews = 1,
                        PixelX = 420,
                        Rows = 2,
                        Zone = "!Left"
                     },
                     {
                        {
                           { ID = "Viewer1", RatioY = 0.01, RatioX = 1 },
                           { ID = "Viewer2", RatioX = 1 },
                           RatioY = 1,
                           Columns = 2,
                           PaneID = "ViewerSplit"
                        },
                        { ID = "Time", FixedY = 83, Flat = true },
                        RatioX = 1,
                        Rows = 2
                     },
                     {
                        { ID = "Inspector", RatioY = 1 },
                        { ID = "Metadata", RatioY = 1, Fusion = false },
                        PaneID = "InnerRight",
                        MaxViews = 1,
                        PixelX = 420,
                        Rows = 2,
                        Zone = "!Right"
                     },
                     RatioY = 2,
                     Columns = 3,
                     PaneID = "InnerColumns"
                  },
                  { ID = "ActionStrip", FixedY = 50, Flat = true },
                  {
                     { ID = "Nodes", RatioX = 1 },
                     { ID = "Spline", RatioX = 1 },
                     { ID = "Keyframes", RatioX = 1 },
                     RatioY = 1,
                     Columns = 3,
                     PaneID = "MainSplit"
                  },
                  { Fusion = false, ID = "Clips", LARGE_FixedY = 160, MEDIUM_FixedY = 138, SMALL_FixedY = 110 },
                  RatioX = 1,
                  Rows = 4,
                  PaneID = "CenterSplit"
               },
               {
                  { ID = "Inspector", RatioY = 1 },
                  { ID = "Metadata", RatioY = 1, Fusion = false },
                  Zone = "Right",
                  Rows = 2,
                  PaneID = "OuterRight",
                  PixelX = 420
               },
               RatioY = 1,
               Columns = 3,
               PaneID = "OuterColumns"
            },
            Rows = 2,
            RatioX = 1,
            RatioY = 1
         }
      }
   },
   Prefs = {
      Comp = {
         Interactive = {
            Proxy = {
               Scale = 1,
            },
         },
         NumberStyles = {
            ClipFrame = 1
         },
         Views = {
            RightView = {
               Viewer = {
               },
            },
            LeftView = {
            },
            View1 = {
            },
            FullScreen = { PickW = 1, PickH = 1 }
         },
         FrameFormat = {
            Width = 3840,
            Height = 2160,
            GuideRatio = 1.77777777777778,
            DepthFull = 3,
            DepthPreview = 3,
            DepthInteractive = 3,
         },
         Unsorted = {
            GlobalEnd = 149
         },
         Tweaks = {
            OpenCL = { Enable = 2, Caching = 2 }
         },
         Cluster = {
            SlaveClasses = "all"
         },
         Paths = {
         },
      }
   },
}

I tried to export just the settings of this Text Node, but the strange thing is, the modifiers of the text are not exportet along, so i had to export the whole Composition.

Does anybody know if this is normal?

Re: 17.0 New Anim Curves only for Path ??

PostPosted: Fri Mar 05, 2021 6:40 am
by niczoom
it is not possible to activate the easing option for a custom curve.

Easing for a custom curve? If the 'Curve' parameter is set to Custom then you don't get an easing dropdown, a small spline editor pops up and you edit that.

Code: Select all
{
   Tools = ordered() {
      Text1 = TextPlus {
         CtrlWZoom = false,
         Inputs = {
            GlobalOut = Input { Value = 124, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            CharacterSpacing = Input {
               SourceOp = "AnimCurves2",
               Source = "Value",
            },
            StyledText = Input { Value = "TIME TO GO", },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            Size = Input {
               SourceOp = "AnimCurves1",
               Source = "Value",
            },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1375, 115.5 } },
      },
      AnimCurves2 = LUTLookup {
         CtrlWZoom = false,
         Inputs = {
            Curve = Input { Value = FuID { "Custom" }, },
            EaseIn = Input { Value = FuID { "Expo" }, },
            EaseOut = Input { Value = FuID { "Expo" }, },
            Lookup = Input {
               SourceOp = "AnimCurves2Lookup",
               Source = "Value",
            },
         },
      },
      AnimCurves2Lookup = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.6093, RH = { 0.251653803899893, 0.941291627198134 }, Flags = { Linear = true } },
               [0.693319] = { 1, LH = { 0.382383040187219, 0.909963628250419 } }
            }
         },
         SplineColor = { Red = 255, Green = 255, Blue = 255 },
         NameSet = true,
      },
      AnimCurves1 = LUTLookup {
         CtrlWZoom = false,
         Inputs = {
            Source = Input { Value = FuID { "Duration" }, },
            Curve = Input { Value = FuID { "Custom" }, },
            Lookup = Input {
               SourceOp = "AnimCurves1Lookup",
               Source = "Value",
            },
            Scale = Input { Value = 0.2, },
         },
      },
      AnimCurves1Lookup = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.333333333333333, 0.666666666666667 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.833333333333333 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 255, Green = 255, Blue = 255 },
         NameSet = true,
      },
      MediaOut1 = Saver {
         Inputs = {
            Index = Input {
               Value = Text {
                  Value = "0"
               },
            },
            Clip = Input {
               Value = Clip {
                  Length = 0,
                  Saving = true,
                  TrimIn = 0,
                  ExtendFirst = 0,
                  ExtendLast = 0,
                  Loop = 1,
                  AspectMode = 0,
                  Depth = 0,
                  GlobalStart = -2000000000,
                  GlobalEnd = 0
               },
            },
            OutputFormat = Input { Value = FuID { "OpenEXRFormat" }, },
            Input = Input {
               SourceOp = "Text1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1485, 115.5 } },
      }
   }
}

Re: 17.0 New Anim Curves only for Path ??

PostPosted: Fri Mar 05, 2021 9:32 am
by deBabba
niczoom wrote:
it is not possible to activate the easing option for a custom curve.

Easing for a custom curve?

Yes, and only for custom. :!:

Just take a look at the settings in the size animation modifier and try to achieve the same (see picture in my former post) for the second curve for the spacing. Doing so flattens down the curve to zero!
Linear keeps it as is, any other option für ease doesn't work either.