DR 18.0.3 Modify Built In Fusion Titles

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

vivoices

  • Posts: 424
  • Joined: Sun Apr 22, 2018 9:15 am
  • Real Name: Udo Jansen

DR 18.0.3 Modify Built In Fusion Titles

PostTue Sep 27, 2022 7:45 am

How do I modify existing Fusion Titles in DR 18 and save them as my own version?

The "Text Box Swipe In" for example needs an additional parameter exposed to the edit page that allows to adjust the vertical position of the text inside its box.
I know where to change this position in the Fusion Page, but it is a waste of time to jump to Fusion and drill down into the parameters every time I need to modify this value.

Maybe someone can point me into the right direction, how to copy the existing Fusion Title and expose a new parameter to the Edit Page.
Udo Jansen

Win 10 Pro 22H2, Resolve Studio 18.1, R9 5950X, 128 GB RAM, Quadro P4000 (8GB VRAM) 526.67 NSD, Intensity Pro 4K | Pocket6Ks FW7.9.0.1 | Speed Editor
Offline

Andy Mees

  • Posts: 2050
  • Joined: Wed Aug 22, 2012 7:48 am

Re: DR 18.0.3 Modify Built In Fusion Titles

PostTue Sep 27, 2022 10:48 am

In the Fusion Page, right click 'Text Box Swipe In' in the flow or Inspector window and choose 'Edit Controls...' and create a New Control called Text Offset (or whatever) and set it up as needed eg linked to the InsideText_Box TEXT Shading element's Offset control. Verify that it works as needed, then right click and choose 'Settings > Save As...' and save as 'My Text Box Swipe In' (or whatever) in the Templates / Edit / Titles directory, or as required.
Offline

vivoices

  • Posts: 424
  • Joined: Sun Apr 22, 2018 9:15 am
  • Real Name: Udo Jansen

Re: DR 18.0.3 Modify Built In Fusion Titles

PostTue Sep 27, 2022 1:21 pm

Thank you Andy.

I created a new Point Controller (BackgroundOffset) and added the value to the animated Offset of the Shader. Point(-0.321, 0.0)+BackgroundOffset.
That works fine for the Y value because it is not animated, but of course the X value freezes at -0.321.

How do I reference the animated X value?
InsideText_Box.Offset.X or Offset.X does not work.

Could not find relevant info in the Fusion manual.
Udo Jansen

Win 10 Pro 22H2, Resolve Studio 18.1, R9 5950X, 128 GB RAM, Quadro P4000 (8GB VRAM) 526.67 NSD, Intensity Pro 4K | Pocket6Ks FW7.9.0.1 | Speed Editor
Offline

Andy Mees

  • Posts: 2050
  • Joined: Wed Aug 22, 2012 7:48 am

Re: DR 18.0.3 Modify Built In Fusion Titles

PostTue Sep 27, 2022 4:01 pm

If you are trying to create an offset control for the box's inner text element then, as noted above, linking a custom 'TextOffset' point control (via the expression TextBoxSwipeIn.TextOffset) to the InsideText_Box TEXT Shading Element (ie Element 1) Position > Offset control should work.

If you are trying to create an offset control for the box itself, but leaving the text alone, then, linking a custom 'BackgroundOffset' point control (via the expression TextBoxSwipeIn.BackgroundOffset) to the InsideText_Box Modifiers >> Path3 > Center control should work.
Offline

vivoices

  • Posts: 424
  • Joined: Sun Apr 22, 2018 9:15 am
  • Real Name: Udo Jansen

Re: DR 18.0.3 Modify Built In Fusion Titles

PostTue Sep 27, 2022 4:30 pm

Andy Mees wrote:If you are trying to create an offset control for the box itself, but leaving the text alone, then, linking a custom 'BackgroundOffset' point control (via the expression TextBoxSwipeIn.BackgroundOffset) to the InsideText_Box Modifiers >> Path3 > Center control should work.
Correct, connecting the 'BackgroundOffset' custom controller to 'Path3>Position' does work.

Path3.Position has 5 keyframes for the title's animation.
This setup receives the animated X values of the position point but needs me to set the Y offset value for every one of the keyframes individually.

I am trying to expose a custom controller that can set the Y value of Path3.Position for all 5 keyframes with one entry.

Hope my explanation makes sense.
Udo Jansen

Win 10 Pro 22H2, Resolve Studio 18.1, R9 5950X, 128 GB RAM, Quadro P4000 (8GB VRAM) 526.67 NSD, Intensity Pro 4K | Pocket6Ks FW7.9.0.1 | Speed Editor
Offline

Andy Mees

  • Posts: 2050
  • Joined: Wed Aug 22, 2012 7:48 am

Re: DR 18.0.3 Modify Built In Fusion Titles

PostTue Sep 27, 2022 4:41 pm

vivoices wrote:Hope my explanation makes sense.
No worries Udo, the methods I've outlined above (for both Text Offset and Background Offset) work perfectly for me as described... so the only thing unclear at this point is whether you've achieved the intended result yet? Hopefully. ;)
Offline

vivoices

  • Posts: 424
  • Joined: Sun Apr 22, 2018 9:15 am
  • Real Name: Udo Jansen

Re: DR 18.0.3 Modify Built In Fusion Titles

PostTue Sep 27, 2022 4:45 pm

Andy Mees wrote:so the only thing unclear at this point is whether you've achieved the intended result yet?
No, not really.

I am trying to expose a custom controller that can set the Y value of Path3.Position for all 5 keyframes with one entry and not having to set the Y offset value for every one of the keyframes individually.

One solution I imagine would be to use an expression for the Offset similar to this:
Point(-0.321, 0.0)+BackgroundOffset, but instead of the value -0.321 a reference to the X value for every current frame.

Something like:
Point(comp.CurrentFrame.TextBoxSwipeIn.InsideText_Box.Offset2.X, 0.0)+BackgroundOffset
Udo Jansen

Win 10 Pro 22H2, Resolve Studio 18.1, R9 5950X, 128 GB RAM, Quadro P4000 (8GB VRAM) 526.67 NSD, Intensity Pro 4K | Pocket6Ks FW7.9.0.1 | Speed Editor
Offline

Andy Mees

  • Posts: 2050
  • Joined: Wed Aug 22, 2012 7:48 am

Re: DR 18.0.3 Modify Built In Fusion Titles

PostTue Sep 27, 2022 7:14 pm

vivoices wrote:I am trying to expose a custom controller that can set the Y value ... with one entry and not having to set the Y offset value for every one of the keyframes individually.
Thats what my suggestion above does, Udo... here's some code you can paste directly into your Fusion flow area, with separate offset controllers for both (text and background)
Code: Select all
{
   Tools = ordered() {
      TextBoxSwipeIn = GroupOperator {
         CtrlWZoom = false,
         CustomData = {
            Path = {
               Map = {
                  ["Setting:"] = "EditTemplates:/Titles/"
               }
            },
         },
         Inputs = ordered() {
            Text = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Text",
               Page = "Controls",
            },
            Input5 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "StyledText",
            },
            Input6 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Font",
               ControlGroup = 3,
            },
            Input7 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Style",
               ControlGroup = 3,
            },
            Input8 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Red1Clone",
               Name = "Color",
               ControlGroup = 4,
               Default = 0,
            },
            Input9 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Green1Clone",
               ControlGroup = 4,
               Default = 0,
            },
            Input10 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Blue1Clone",
               ControlGroup = 4,
               Default = 0,
            },
            Input11 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Alpha1Clone",
               ControlGroup = 4,
               Default = 0,
            },
            Input12 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Size",
               Default = 0.08,
            },
            Input13 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "CharacterSpacingClone",
               Name = "Tracking",
               Default = 1.197,
            },
            Input14 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "LineSpacingClone",
               Default = 0.693,
            },
            Input15 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "VerticalJustificationTop",
               Name = "V Anchor",
               ControlGroup = 8,
            },
            Input16 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "VerticalJustificationCenter",
               ControlGroup = 8,
            },
            Input17 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "VerticalJustificationBottom",
               ControlGroup = 8,
            },
            Input18 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "VerticalTopCenterBottom",
               Default = 0,
            },
            Input19 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "HorizontalJustificationLeft",
               Name = "H Anchor",
               ControlGroup = 10,
            },
            Input20 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "HorizontalJustificationCenter",
               ControlGroup = 10,
            },
            Input21 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "HorizontalJustificationRight",
               ControlGroup = 10,
            },
            Input22 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "HorizontalLeftCenterRight",
               Default = 0,
            },
            Input23 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Strikeout",
               Name = "Emphasis",
               ControlGroup = 12,
            },
            Input24 = InstanceInput {
               SourceOp = "InsideText_Box",
               Source = "Underline",
               Name = "Emphasis",
               ControlGroup = 12,
            },
            Color = InstanceInput {
               SourceOp = "Color",
               Source = "BoxColor",
               Page = "Controls",
            },
            Input1 = InstanceInput {
               SourceOp = "Color",
               Source = "TopLeftRed",
               Name = "Color",
               ControlGroup = 1,
               Default = 1,
            },
            Input2 = InstanceInput {
               SourceOp = "Color",
               Source = "TopLeftGreen",
               ControlGroup = 1,
               Default = 1,
            },
            Input3 = InstanceInput {
               SourceOp = "Color",
               Source = "TopLeftBlue",
               ControlGroup = 1,
               Default = 1,
            },
            Input4 = InstanceInput {
               SourceOp = "Color",
               Source = "TopLeftAlpha",
               ControlGroup = 1,
               Default = 1,
            },
            Input25 = InstanceInput {
               SourceOp = "LineWidth",
               Source = "MotionBlur",
               Default = 0,
            },
            Input26 = InstanceInput {
               SourceOp = "LineWidth",
               Source = "Quality",
               Default = 5,
            },
            Input27 = InstanceInput {
               SourceOp = "LineWidth",
               Source = "ShutterAngle",
               Default = 180,
            },
            Input28 = InstanceInput {
               SourceOp = "LineWidth",
               Source = "CenterBias",
               Default = 0,
            },
            Input29 = InstanceInput {
               SourceOp = "LineWidth",
               Source = "SampleSpread",
               Default = 1,
            }
         },
         Outputs = {
            Output1 = InstanceOutput {
               SourceOp = "Path2_1",
               Source = "Heading",
            },
            MainOutput1 = InstanceOutput {
               SourceOp = "KeyframeStretcher1",
               Source = "Result",
            },
            Output2 = InstanceOutput {
               SourceOp = "InsideText_BoxOpacity1",
               Source = "Value",
            },
            Output3 = InstanceOutput {
               SourceOp = "Path3",
               Source = "Heading",
            }
         },
         ViewInfo = GroupInfo {
            Pos = { 647.989, 36.5306 },
            Flags = {
               Expanded = true,
               AllowPan = false,
               ConnectedSnap = true,
               AutoSnap = true,
               RemoveRouters = true
            },
            Size = { 637.188, 222.533, 318.594, 24.2424 },
            Direction = "Horizontal",
            PipeStyle = "Direct",
            Scale = 1,
            Offset = { 0, 0 }
         },
         Tools = ordered() {
            Color = Background {
               ExtentSet = true,
               CtrlWZoom = false,
               CtrlWShown = false,
               NameSet = true,
               Inputs = {
                  EffectMask = Input {
                     SourceOp = "Merge3",
                     Source = "Output",
                  },
                  GlobalOut = Input { Value = 500, },
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  TopLeftRed = Input { Value = 1, },
                  TopLeftGreen = Input { Value = 1, },
                  TopLeftBlue = Input { Value = 1, },
               },
               ViewInfo = OperatorInfo { Pos = { 133.29, 103.627 } },
               UserControls = ordered() { Color = { INP_Integer = false, LBLC_DropDownButton = false, LINKID_DataType = "Number", LBLC_NumInputs = 4, INPID_InputControl = "LabelControl", LINKS_Name = "Color", }, BoxColor = { INP_Integer = false, LBLC_DropDownButton = true, LINKID_DataType = "Number", LBLC_NumInputs = 4, INPID_InputControl = "LabelControl", LINKS_Name = "Box Color", } }
            },
            KeyframeStretcher1 = KeyStretcher {
               CtrlWShown = false,
               Inputs = {
                  Keyframes = Input {
                     SourceOp = "Color",
                     Source = "Output",
                  },
                  SourceEnd = Input { Value = 91, },
                  StretchStart = Input { Value = 25, },
                  StretchEnd = Input { Value = 63, },
               },
               ViewInfo = OperatorInfo { Pos = { 255, 103.627 } },
            },
            Merge3 = Merge {
               CtrlWShown = false,
               Inputs = {
                  EffectMask = Input {
                     SourceOp = "LineMask",
                     Source = "Output",
                  },
                  ApplyMaskInverted = Input { Value = 1, },
                  Background = Input {
                     SourceOp = "InsideText_Box",
                     Source = "Output",
                  },
                  Foreground = Input {
                     SourceOp = "ChannelBooleans1",
                     Source = "Output",
                  },
                  FlipHoriz = Input { Value = 1, },
                  PerformDepthMerge = Input { Value = 0, },
               },
               ViewInfo = OperatorInfo { Pos = { 4.44995, 103.627 } },
            },
            LineMask = TextPlus {
               ExtentSet = true,
               CtrlWShown = false,
               NameSet = true,
               SourceOp = "InsideText_Box",
               Inputs = {
                  EffectMask = Input { },
                  SettingsNest = Input { },
                  ImageNest = Input { },
                  ["Gamut.ColorSpaceNest"] = Input { },
                  ["Gamut.GammaSpaceNest"] = Input { },
                  Layout = Input { },
                  LayoutRotation = Input { },
                  Background = Input { },
                  TransformTransform = Input { },
                  TransformRotation = Input { },
                  TransformShear = Input { },
                  TransformSize = Input { },
                  Enabled1 = Input { Value = 0, },
                  Properties1 = Input { },
                  Softness1 = Input { },
                  Position1 = Input { },
                  Offset1 = Input { Expression = "TextBoxSwipeIn.TextOffset" },
                  Rotation1 = Input { },
                  Shear1 = Input { },
                  Size1 = Input { },
                  TextText = Input { },
                  TabSpacing = Input { },
                  AdvancedFontControls = Input { },
                  ClearSelectedKerning = Input { },
                  ClearAllKerning = Input { },
                  ClearSelectedPlacement = Input { },
                  ClearAllPlacement = Input { },
                  Internal = Input { },
                  CommentsNest = Input { },
                  FrameRenderScriptNest = Input { },
                  StartRenderScripts = Input { },
                  EndRenderScripts = Input { },
                  Properties2 = Input { },
                  ExtendHorizontal2 = Input { Value = 20, },
                  ExtendVertical2 = Input { Value = 0.54, },
                  Softness2 = Input { },
                  Position2 = Input { Value = 1, },
                  Rotation2 = Input { },
                  Shear2 = Input { },
                  Size2 = Input { },
               },
               ViewInfo = OperatorInfo { Pos = { 4.44995, 164.842 } },
            },
            Path2_1 = PolyPath {
               DrawMode = "InsertAndModify",
               CtrlWZoom = false,
               Inputs = {
                  Displacement = Input {
                     SourceOp = "Path2_1Displacement",
                     Source = "Value",
                  },
                  PolyLine = Input {
                     Value = Polyline {
                        Points = {
                           { Linear = true, LockY = true, X = 0.141043723554302, Y = 0, RX = -0.0470145745181006, RY = 0 },
                           { Linear = true, LockY = true, X = 0, Y = 0, LX = 0.0470145745181006, LY = 0, RX = -0.0117536436295252, RY = 0 },
                           { Linear = true, LockY = true, X = -0.0352609308885755, Y = 0, LX = 0.0117536436295252, LY = 0, RX = -0.0357310766337565, RY = 0 },
                           { Linear = true, LockY = true, X = -0.142454160789845, Y = 0, LX = 0.0357310766337565, LY = 0 }
                        }
                     },
                  },
               },
            },
            Path2_1Displacement = BezierSpline {
               SplineColor = { Red = 255, Green = 0, Blue = 255 },
               CtrlWZoom = false,
               KeyFrames = {
                  [7] = { 0, RH = { 10.3333333333333, 0 }, Flags = { LockedY = true } },
                  [17] = { 0.497512437810945, LH = { 12.3917762188028, 0.472688586939513 }, RH = { 32.335984796855, 0.580125222614719 }, Flags = { LockedY = true } },
                  [63] = { 0.621890547263682, LH = { 47.6638475129347, 0.541199561386888 }, RH = { 67.6522086766251, 0.646368088481276 }, Flags = { LockedY = true } },
                  [74] = { 1, LH = { 70.3333305358823, 1.00366654043169 }, Flags = { LockedY = true } }
               }
            },
            InsideText_BoxOpacity1 = BezierSpline {
               SplineColor = { Red = 179, Green = 28, Blue = 244 },
               CtrlWZoom = false,
               KeyFrames = {
                  [7] = { 0, RH = { 10.3333333333333, 0 } },
                  [17] = { 1, LH = { 13.6666666666667, 1 }, RH = { 32.3317997455597, 1 } },
                  [63] = { 1.00333321094513, LH = { 47.6682002544403, 1.00333321094513 }, RH = { 66.6662972940155, 1.00333321094513 } },
                  [74] = { 0.00266666663810611, LH = { 70.3336928120741, 0.00266666663810611 } }
               }
            },
            Path3 = PolyPath {
               DrawMode = "InsertAndModify",
               CtrlWZoom = false,
               Inputs = {
                  Center = Input { Expression = "TextBoxSwipeIn.BkgOffset", },
                  Displacement = Input {
                     SourceOp = "Path3Displacement",
                     Source = "Value",
                  },
                  PolyLine = Input {
                     Value = Polyline {
                        Points = {
                           { Linear = true, LockY = true, X = -1.7, Y = -0.5, RX = 0.37, RY = 0 },
                           { Linear = true, LockY = true, X = -0.59, Y = -0.5, LX = -0.37, LY = 0, RX = 0.0104347826087, RY = 0 },
                           { Linear = true, LockY = true, X = -0.5586956521739, Y = -0.5, LX = -0.0104347826087, LY = 0, RX = 0.0495652173913, RY = 0 },
                           { Linear = true, LockY = true, X = -0.41, Y = -0.5, LX = -0.0495652173913, LY = 0, RX = 0.37, RY = 0 },
                           { Linear = true, LockY = true, X = 0.7, Y = -0.5, LX = -0.37, LY = 0 }
                        }
                     },
                  },
               },
            },
            Path3Displacement = BezierSpline {
               SplineColor = { Red = 255, Green = 0, Blue = 178 },
               CtrlWZoom = false,
               KeyFrames = {
                  [7] = { 0, RH = { 10.1240993400233, 0.229958428151476 }, Flags = { LockedY = true } },
                  [17] = { 0.4625, LH = { 13.6670000553131, 0.456658193031731 }, RH = { 19.6666666666667, 0.466847826086958 }, Flags = { LockedY = true } },
                  [25] = { 0.475543478260875, LH = { 22.3333333333333, 0.471195652173917 }, RH = { 37.6666666666667, 0.496195652173917 }, Flags = { Linear = true, LockedY = true } },
                  [63] = { 0.5375, LH = { 50.3333333333333, 0.516847826086958 }, RH = { 66.6662999391556, 0.543477662944275 }, Flags = { Linear = true, LockedY = true } },
                  [74] = { 1, LH = { 70.3375327863109, 0.772290185559932 }, Flags = { LockedY = true } }
               }
            },
            ChannelBooleans1 = ChannelBoolean {
               CtrlWShown = false,
               Inputs = {
                  Operation = Input { Value = 6, },
                  Background = Input {
                     SourceOp = "Lines",
                     Source = "Output",
                  },
                  Foreground = Input {
                     SourceOp = "LineWidth",
                     Source = "Output",
                  },
               },
               ViewInfo = OperatorInfo { Pos = { 4.44995, 53.9267 } },
            },
            LineWidth = TextPlus {
               ExtentSet = true,
               CtrlWShown = false,
               NameSet = true,
               SourceOp = "InsideText_Box",
               Inputs = {
                  EffectMask = Input { },
                  SettingsNest = Input { },
                  ImageNest = Input { },
                  ["Gamut.ColorSpaceNest"] = Input { },
                  ["Gamut.GammaSpaceNest"] = Input { },
                  Layout = Input { },
                  LayoutRotation = Input { },
                  AngleZ = Input { },
                  Background = Input { },
                  TransformTransform = Input { },
                  TransformRotation = Input { },
                  TransformShear = Input { },
                  TransformSize = Input { },
                  Enabled1 = Input { Value = 0, },
                  Properties1 = Input { },
                  Softness1 = Input { },
                  Position1 = Input { },
                  Offset1 = Input { Expression = "TextBoxSwipeIn.TextOffset" },
                  Rotation1 = Input { },
                  Shear1 = Input { },
                  Size1 = Input { },
                  TextText = Input { },
                  TabSpacing = Input { },
                  AdvancedFontControls = Input { },
                  ClearSelectedKerning = Input { },
                  ClearAllKerning = Input { },
                  ClearSelectedPlacement = Input { },
                  ClearAllPlacement = Input { },
                  Internal = Input { },
                  CommentsNest = Input { },
                  FrameRenderScriptNest = Input { },
                  StartRenderScripts = Input { },
                  EndRenderScripts = Input { },
                  Properties2 = Input { },
                  ExtendHorizontal2 = Input { Value = -0.289, },
                  ExtendVertical2 = Input { Value = 1.71, },
                  Softness2 = Input { },
                  Position2 = Input { Value = 1, },
                  Rotation2 = Input { },
                  Shear2 = Input { },
                  Size2 = Input { },
               },
               ViewInfo = OperatorInfo { Pos = { -118.533, 53.9267 } },
            },
            Lines = TextPlus {
               ExtentSet = true,
               CtrlWShown = false,
               NameSet = true,
               SourceOp = "InsideText_Box",
               Inputs = {
                  EffectMask = Input { },
                  SettingsNest = Input { },
                  ImageNest = Input { },
                  ["Gamut.ColorSpaceNest"] = Input { },
                  ["Gamut.GammaSpaceNest"] = Input { },
                  Layout = Input { },
                  LayoutRotation = Input { },
                  Background = Input { },
                  TransformTransform = Input { },
                  TransformRotation = Input { },
                  TransformShear = Input { },
                  TransformSize = Input { },
                  Enabled1 = Input { Value = 0, },
                  Properties1 = Input { },
                  Softness1 = Input { },
                  Position1 = Input { },
                  Offset1 = Input { Expression = "TextBoxSwipeIn.TextOffset" },
                  Rotation1 = Input { },
                  Shear1 = Input { },
                  Size1 = Input { },
                  TextText = Input { },
                  TabSpacing = Input { },
                  AdvancedFontControls = Input { },
                  ClearSelectedKerning = Input { },
                  ClearAllKerning = Input { },
                  ClearSelectedPlacement = Input { },
                  ClearAllPlacement = Input { },
                  Internal = Input { },
                  CommentsNest = Input { },
                  FrameRenderScriptNest = Input { },
                  StartRenderScripts = Input { },
                  EndRenderScripts = Input { },
                  Properties2 = Input { },
                  ElementShape2 = Input { Value = 3, },
                  OutsideOnly2 = Input { Value = 1, },
                  JoinStyle2 = Input { Value = 0, },
                  ExtendHorizontal2 = Input { Value = 1.46, },
                  ExtendVertical2 = Input { Value = 0.54, },
                  Softness2 = Input { },
                  Position2 = Input { Value = 1, },
                  Rotation2 = Input { },
                  Shear2 = Input { },
                  Size2 = Input { },
               },
               ViewInfo = OperatorInfo { Pos = { 4.44995, 8.67313 } },
            },
            InsideText_Box = TextPlus {
               ExtentSet = true,
               CtrlWShown = false,
               NameSet = true,
               Inputs = {
                  GlobalOut = Input { Value = 500, },
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  Center = Input {
                     SourceOp = "Path2_1",
                     Source = "Position",
                  },
                  LineSpacing = Input { Value = 0.882, },
                  CharacterSpacing = Input { Value = 1.071, },
                  Name1 = Input { Value = "TEXT", },
                  Name2 = Input { Value = "WhiteBox", },
                  Enabled2 = Input { Value = 1, },
                  Opacity1 = Input {
                     SourceOp = "InsideText_BoxOpacity1",
                     Source = "Value",
                  },
                  Red1 = Input { Value = 0, },
                  Green1 = Input { Value = 0, },
                  Blue1 = Input { Value = 0, },
                  Alpha1 = Input { Value = 0, },
                  Position1 = Input { Value = 1, },
                  Offset1 = Input { Expression = "TextBoxSwipeIn.TextOffset", },
                  StyledText = Input { Value = "SIMPLE\nTITLE", },
                  Font = Input { Value = "Open Sans", },
                  Style = Input { Value = "Extrabold", },
                  Size = Input { Value = 0.0799, },
                  VerticalJustificationNew = Input { Value = 3, },
                  HorizontalJustificationNew = Input { Value = 3, },
                  Properties2 = Input { Value = 0, },
                  ElementShape2 = Input { Value = 2, },
                  Thickness2 = Input { Value = 0.2, },
                  Level2 = Input { Value = 0, },
                  ExtendHorizontal2 = Input { Value = 1.49, },
                  ExtendVertical2 = Input { Value = 0.29, },
                  Green2 = Input { Value = 1, },
                  Blue2 = Input { Value = 1, },
                  Position2 = Input { Value = 1, },
                  Offset2 = Input {
                     SourceOp = "Path3",
                     Source = "Position",
                  },
               },
               ViewInfo = OperatorInfo { Pos = { -256.188, 103.627 } },
               UserControls = ordered() { Text = { INP_Integer = false, LBLC_DropDownButton = true, LINKID_DataType = "Number", LBLC_NumInputs = 20, LINKS_Name = "Text", INPID_InputControl = "LabelControl", INP_Default = 1, } }
            }
         },
         UserControls = ordered() {
            TextOffset = {
               INP_DefaultX = 0,
               INP_DefaultY = 0,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Text Offset",
            },
            BkgOffset = {
               INP_DefaultX = 0.5,
               INP_DefaultY = 0.5,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Background Offset",
            }
         }
      }
   },
   ActiveTool = "TextBoxSwipeIn"
}
Offline

vivoices

  • Posts: 424
  • Joined: Sun Apr 22, 2018 9:15 am
  • Real Name: Udo Jansen

Re: DR 18.0.3 Modify Built In Fusion Titles

PostWed Sep 28, 2022 12:55 am

Thanks a lot Andy, your code example makes the 'BackgroundOffset' custom control clear.
My mistake was connecting the 'BackgroundOffset' Custom modifier to Path3>Displacement.

But I still cannot recreate the 'TextOffset' expression under 'Shading'.
As soon as I right click Position > Offset >> Expression, the animation looses its values.

I can see the differences in the *.settings file structure.
Right clicking Position > Offset >> Expression and entering "TextBoxSwipeIn.TextOffset", sets the expression for Offset2 in all 4 instances in my case.

Your code has the expression set for Offset1.

How is this done in the GUI of the Fusion Page?
Udo Jansen

Win 10 Pro 22H2, Resolve Studio 18.1, R9 5950X, 128 GB RAM, Quadro P4000 (8GB VRAM) 526.67 NSD, Intensity Pro 4K | Pocket6Ks FW7.9.0.1 | Speed Editor
Offline

Andy Mees

  • Posts: 2050
  • Joined: Wed Aug 22, 2012 7:48 am

Re: DR 18.0.3 Modify Built In Fusion Titles

PostWed Sep 28, 2022 6:26 am

Hey Udo

When you look in the Shading tab of a Text+ item you should see (on Windows) there is a "Shading Element" control at the top which allows you to enable/disable and switch between up to 8 separate sets of shading controls. These separate sets of Shading Element controls are what allow you to build the overall style of your text item. The Text+ item in the 'Swipe In' templates uses Shading Element 1 (labelled 'TEXT') for the text fill, and Shading Element 2 (labelled 'White Box') for the surrounding box.

Offset2 is the Position Offset for Shading Element 2 ('White Box')... but as I've described (and as you can see in my example code) to move the text you need to modify the Position Offset for Shading Element 1 ('TEXT') ie the text fill element's position.

Give that a try
Andy
Offline

vivoices

  • Posts: 424
  • Joined: Sun Apr 22, 2018 9:15 am
  • Real Name: Udo Jansen

Re: DR 18.0.3 Modify Built In Fusion Titles

PostWed Sep 28, 2022 7:09 am

Hi Andy,
in code I can see what you describe, but not on the Fusion Page.
Are you on DR 18.0.3?

This image shows the Text tab of your code. Clearly there is no Offset with an expression.
Image

The Offset with expression lives on the Shading Tab as you can see in this image.
Image

But when I add the expression in the Shading tab when trying to re-create your code in the GUI, it is assigned to "Offset2".
Udo Jansen

Win 10 Pro 22H2, Resolve Studio 18.1, R9 5950X, 128 GB RAM, Quadro P4000 (8GB VRAM) 526.67 NSD, Intensity Pro 4K | Pocket6Ks FW7.9.0.1 | Speed Editor
Offline

vivoices

  • Posts: 424
  • Joined: Sun Apr 22, 2018 9:15 am
  • Real Name: Udo Jansen

Re: DR 18.0.3 Modify Built In Fusion Titles

PostWed Sep 28, 2022 7:32 am

Right, lol.
While setting up my own version, I was in Element 2.
How embarrassing :)

I am good at coding complex JS, JSON, SQL etc. but finding my way around the Fusion GUI needs a lot of getting used to.

Out of curiosity, is it possible to write an expression for an animated Point value and apply some math to only X or Y, leaving the other one alone?


Thanks Andy
Udo Jansen

Win 10 Pro 22H2, Resolve Studio 18.1, R9 5950X, 128 GB RAM, Quadro P4000 (8GB VRAM) 526.67 NSD, Intensity Pro 4K | Pocket6Ks FW7.9.0.1 | Speed Editor
Offline

Andy Mees

  • Posts: 2050
  • Joined: Wed Aug 22, 2012 7:48 am

Re: DR 18.0.3 Modify Built In Fusion Titles

PostWed Sep 28, 2022 8:24 am

vivoices wrote:Out of curiosity, is it possible to write an expression for an animated Point value and apply some math to only X or Y, leaving the other one alone?
I'm neither an expression nor a Fusion guru, Udo, so I can't say definitively... but I don't think so.

A 'Point' control in Fusion is a 'value pair' but it is still just a single control, and a single control can be driven either by its own keyframes (with every keyframe being a value pair) or by an expression (which may or may not reference modifiers and/or other keyframed or expression driven controls to derive the current value pair). That 'either/or' is a mutually exclusive choice, you can't choose to have it do both simultaneously.

That said, what you were doing here was unusual. Normally, when designing an effect, you would be defining any animation yourself, not trying to break into some pre-existing animation. If defining it yourself you would have set up your own separate 'xValue' and 'yValue' controllers, because you would know that you wanted to control both separately. Thereafter you'd have defined the xValue animation using its own controller and fed the value of that, and the published yValue controller, into your expression [as Point(xValue, yValue)], hence there would be no issue/conflict.

Return to DaVinci Resolve

Who is online

Users browsing this forum: Akagumo, Bing [Bot], ChipFTW, Geoff Treseder, panos_mts, Roen Davis and 117 guests