Jump to: Board index » General » Fusion

No frame available for MediaOut1 - New Title Macro

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

HAMCORE

  • Posts: 33
  • Joined: Mon Aug 26, 2024 6:44 pm
  • Real Name: Mathew Tanguay

No frame available for MediaOut1 - New Title Macro

PostMon Dec 09, 2024 8:46 pm

EDIT: My CustomTool output was selected in the Macro creation, so it kept defaulting to that. When removed the template file works fine. Just trying to fix the resolution stuff in the comments...

I just followed a whole tutorial about making an animated checkbox and how to make a controller. I then watched a video on how to export the title as a .setting file and then make a DRFX package. I've gone through the steps to make it work, but when I am in the edit page and drag in my new title, it gives me the dreaded "No frame available for MediaOut1". So I am trying to fix this. I will reference the videos below.

The title installed and in my timeline:
Image

The Fusion composition inside:
Image

The original Fusion comp:
Image

I have exported the macro numerous times trying different things. Deleting the MediaOut1 node, including it in the macro, etc. The .setting file works just fine when brought into Fusion, it's just the DRFX installed title that keeps giving me this issue. I just brought it into fusion and it seems to not even let me connect nodes to it.
Image

I macro all nodes but the MediaOut1 node as seen in this video:
. Select all my setting which are coming though fine, and then package it into a DRFX file.

(Also side question, how do I maintain the aspect ratio when adding to a 9:16 timeline vs it's original 16:9... My polygon checkmark gets really warped in a vertical timeline)
Last edited by HAMCORE on Mon Dec 09, 2024 9:34 pm, edited 3 times in total.
Offline

HAMCORE

  • Posts: 33
  • Joined: Mon Aug 26, 2024 6:44 pm
  • Real Name: Mathew Tanguay

Re: No frame available for MediaOut1 - New Title Macro

PostMon Dec 09, 2024 8:55 pm

Quick edit

I just re-exported the .setting file and got the output back onto the Checkbox node. However, when dropping it into the edit page it doesn't work... not until I go into fusion, disconnect the Checkbox node from the media out and reconnect it. Looks like I need to reconnect it every time. Is this a bug?
Offline
User avatar

KrunoSmithy

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

Re: [SOLVED] No frame available for MediaOut1 - New Title Ma

PostMon Dec 09, 2024 9:11 pm

HAMCORE wrote:(Also side question, how do I maintain the aspect ratio when adding to a 9:16 timeline vs it's original 16:9... My polygon checkmark gets really warped in a vertical timeline)


The spline masking tools also need something to be the reference, especially if they are not connected to anything, so you can use image tab and choose "use frame format settings" which otherwise is known as "auto resolution" in other nodes. It will than default to timeline resolution. If you set up everything correctly, when you change timeline resolution or you use it on some other timeline, it should get info from timeline and adopt accordingly. This is aviable in all nodes that need to have resolution defined. So when you make it once either as a template or change resolution of timeline as you work, they all scale proportionally.

sshot-1326.jpg
sshot-1326.jpg (25.13 KiB) Viewed 1964 times


The topic is marked [SOLVED] No frame available for MediaOut1 - New Title Macro

I am not sure what is solved and what is the problem, exactly. Have you figured out whatever the issue was?

P.S.

Folder structure for Templates used in the Edit page:

— Edit
— Effects
— Generators
— Titles
— Transitions

Folder structure for Templates used in the Fusion page:

— Fusion

I think these matter. But you can test it. The Fusion Template Bundle contains all the templates in one file. It does not uncompress them into separate template files again. Therefore if you delete the .drfx file, all associated templates inside that bundle will be removed as well.

When you are accessing. Effect you made, make sure you drag it from edit page if that is what it was created for onto a clip and open from effects panel in fusion.

sshot-1327.jpg
sshot-1327.jpg (210.86 KiB) Viewed 1960 times
Offline

HAMCORE

  • Posts: 33
  • Joined: Mon Aug 26, 2024 6:44 pm
  • Real Name: Mathew Tanguay

Re: [SOLVED] No frame available for MediaOut1 - New Title Ma

PostMon Dec 09, 2024 9:26 pm

KrunoSmithy wrote:
HAMCORE wrote:(Also side question, how do I maintain the aspect ratio when adding to a 9:16 timeline vs it's original 16:9... My polygon checkmark gets really warped in a vertical timeline)


The spline masking tools also need something to be the reference, especially if they are not connected to anything, so you can use image tab and choose "use frame format settings" which otherwise is known as "auto resolution" in other nodes. It will than default to timeline resolution. If you set up everything correctly, when you change timeline resolution or you use it on some other timeline, it should get info from timeline and adopt accordingly. This is aviable in all nodes that need to have resolution defined. So when you make it once either as a template or change resolution of timeline as you work, they all scale proportionally.

sshot-1326.jpg


The topic is marked [SOLVED] No frame available for MediaOut1 - New Title Macro

I am not sure what is solved and what is the problem, exactly. Have you figured out whatever the issue was?

P.S.

Folder structure for Templates used in the Edit page:

— Edit
— Effects
— Generators
— Titles
— Transitions

Folder structure for Templates used in the Fusion page:

— Fusion

I think these matter. But you can test it. The Fusion Template Bundle contains all the templates in one file. It does not uncompress them into separate template files again. Therefore if you delete the .drfx file, all associated templates inside that bundle will be removed as well.

When you are accessing. Effect you made, make sure you drag it from edit page if that is what it was created for onto a clip and open from effects panel in fusion.

sshot-1327.jpg


Thank you for the explanation on the polygon mask. It was really bugging me! This is what my checkmark looked like on a vertical timeline Image

I marked it as solve because I figured out the issue I first had, I kind of presented an XY problem so I was going to make another post regarding the aspect ratio.

I figured out that my CustomTool output was selected in the Macro creation, so it kept defaulting to that.
Offline
User avatar

KrunoSmithy

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

Re: [SOLVED] No frame available for MediaOut1 - New Title Ma

PostMon Dec 09, 2024 9:27 pm

Oh, I see. Cool.
Offline

HAMCORE

  • Posts: 33
  • Joined: Mon Aug 26, 2024 6:44 pm
  • Real Name: Mathew Tanguay

Re: No frame available for MediaOut1 - New Title Macro

PostMon Dec 09, 2024 9:33 pm

KrunoSmithy wrote:Oh, I see. Cool.


I changed all of the spline polygons to what you mentioned above and I'm still getting the weird checkmark in a vertical timeline resolution.

Regular:
Image

Output in a 1080x1920 timeline:
Image
Offline
User avatar

KrunoSmithy

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

Re: No frame available for MediaOut1 - New Title Macro

PostMon Dec 09, 2024 9:36 pm

HAMCORE wrote:I changed all of the spline polygons to what you mentioned above and I'm still getting the weird checkmark in a vertical timeline resolution.


For all the elements in the composition to adopt to new timeline resolution they all need to be set up that way. You probably have missed some element.

If you like, share the node tree and I can take a look.
Offline

HAMCORE

  • Posts: 33
  • Joined: Mon Aug 26, 2024 6:44 pm
  • Real Name: Mathew Tanguay

Re: No frame available for MediaOut1 - New Title Macro

PostMon Dec 09, 2024 9:43 pm

KrunoSmithy wrote:
HAMCORE wrote:I changed all of the spline polygons to what you mentioned above and I'm still getting the weird checkmark in a vertical timeline resolution.


For all the elements in the composition to adopt to new timeline resolution they all need to be set up that way. You probably have missed some element.

If you like, share the node tree and I can take a look.


Here is the node tree: https://drive.google.com/file/d/1Sg9enlvZ3bB6bbVYHfHVQQ8R_xHF4vhJ/view?usp=sharing
Offline
User avatar

KrunoSmithy

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

Re: No frame available for MediaOut1 - New Title Macro

PostMon Dec 09, 2024 10:03 pm



Thanks, I'll take a look and report back when I find the issue. By the way, you can just select the nodes and copy and paste them here in the forum, just use Code Button to put the code in.
Offline

HAMCORE

  • Posts: 33
  • Joined: Mon Aug 26, 2024 6:44 pm
  • Real Name: Mathew Tanguay

Re: No frame available for MediaOut1 - New Title Macro

PostMon Dec 09, 2024 10:35 pm

KrunoSmithy wrote:


Thanks, I'll take a look and report back when I find the issue. By the way, you can just select the nodes and copy and paste them here in the forum, just use Code Button to put the code in.


Oh thanks! Here it is
Code: Select all
{
   Tools = ordered() {
      Merge3 = Merge {
         CtrlWZoom = false,
         Inputs = {
            Background = Input {
               SourceOp = "Merge2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "BrightnessContrast2_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -892.466, 63.7851 } },
      },
      Background2_1 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Ellipse1_1",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            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 = { -892.466, -113.641 } },
      },
      Background2 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Ellipse1",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            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 = { -1057.47, -113.641 } },
      },
      Background3 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Polygon1",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.6862745098039, }
         },
         ViewInfo = OperatorInfo { Pos = { -782.466, -47.6411 } },
      },
      Polygon1 = PolylineMask {
         DrawMode = "InsertAndModify",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            Level = Input {
               SourceOp = "Polygon1Level",
               Source = "Value",
            },
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.005, },
            WriteLength = Input {
               SourceOp = "Polygon1Length",
               Source = "Value",
            },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 3840, },
            MaskHeight = Input { Value = 2160, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input { Value = { 0.501, 0.505 }, },
            Polyline = Input {
               SourceOp = "Polygon1Polyline",
               Source = "Value",
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            }
         },
         ViewInfo = OperatorInfo { Pos = { -783.409, -79.784 } },
      },
      Polygon1Level = BezierSpline {
         SplineColor = { Red = 130, Green = 246, Blue = 132 },
         KeyFrames = {
            [11] = { 0, RH = { 11.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
            [12] = { 1, LH = { 11.6666666666667, 0.666666666666667 }, Flags = { Linear = true } }
         }
      },
      Polygon1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         KeyFrames = {
            [12] = { 0, RH = { 16.3333333333333, 0 } },
            [25] = { 1, LH = { 11.8686868686869, 1 } }
         }
      },
      Polygon1Polyline = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47 },
         CtrlWZoom = false,
         KeyFrames = {
            [31] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
                  Points = {
                     { Linear = true, X = -0.309379310344828, Y = -0.00465914664051004, RX = 0.00451581583056038, RY = -0.00753765047856047 },
                     { Linear = true, X = -0.295831862853146, Y = -0.0272720980761915, LX = -0.00451581583056038, LY = 0.00753765047856047, RX = 0.0123749859988146, RY = 0.0242594978489954 },
                     { Linear = true, X = -0.258706904856702, Y = 0.0455063954707946, LX = -0.0123749859988146, LY = -0.0242594978489954 }
                  }
               } }
         }
      },
      Background4 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.6862745098039, }
         },
         ViewInfo = OperatorInfo { Pos = { -563.409, -79.784 } },
      },
      Background2_1_1 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Ellipse1_1_1",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            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 = { -398.409, -112.784 } },
      },
      Transform1 = Transform {
         Inputs = {
            Center = Input { Value = { 0.204757962114857, 0.5 }, },
            Size = Input {
               SourceOp = "Transform1Size",
               Source = "Value",
            },
            Angle = Input { Value = 45, },
            Input = Input {
               SourceOp = "Background4",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -563.409, -46.784 } },
      },
      Transform1Size = BezierSpline {
         SplineColor = { Red = 225, Green = 0, Blue = 225 },
         CtrlWZoom = false,
         KeyFrames = {
            [12] = { 0, RH = { 16.3333333333333, 0 } },
            [25] = { 0.75, LH = { 11.8686868686869, 0.75 } }
         }
      },
      BrightnessContrast2_2 = BrightnessContrast {
         Inputs = {
            Alpha = Input { Value = 1, },
            Gain = Input {
               Value = 0,
               Expression = "iif(C1.Checkbox==2,1,0)",
            },
            Input = Input {
               SourceOp = "Merge6",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -673.409, -13.784 } },
      },
      BrightnessContrast2_1_1 = BrightnessContrast {
         Inputs = {
            Alpha = Input { Value = 1, },
            Gain = Input {
               Value = 0,
               Expression = "iif(C1.Checkbox==3,1,0)",
            },
            Input = Input {
               SourceOp = "Merge4_1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -398.409, -13.784 } },
      },
      Text1 = TextPlus {
         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.250390015600624, 0.5 }, },
            LayoutRotation = Input { Value = 1, },
            TransformRotation = Input { Value = 1, },
            Softness1 = Input { Value = 1, },
            StyledText = Input { Value = "Checkbox for DaVinci", },
            Font = Input { Value = "Proxima Nova", },
            Style = Input { Value = "Bold", },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalLeftCenterRight = Input { Value = -1, },
            HorizontalJustificationNew = Input { Value = 3, }
         },
         ViewInfo = OperatorInfo { Pos = { -64.6385, -35.2149 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Ellipse1_1_1 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.005, },
            Solid = Input { Value = 0, },
            WritePosition = Input { Value = 0.15, },
            WriteLength = Input {
               SourceOp = "Ellipse1_1_1Length",
               Source = "Value",
            },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 3840, },
            MaskHeight = Input { Value = 2160, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input { Value = { 0.204368174726989, 0.5 }, },
            Width = Input {
               Value = 0.05,
               Expression = "Height",
            },
            Height = Input { Value = 0.05, }
         },
         ViewInfo = OperatorInfo { Pos = { -398.409, -145.784 } },
      },
      Ellipse1_1_1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         CtrlWZoom = false,
         KeyFrames = {
            [0] = { 0, RH = { 4, 0 } },
            [12] = { 1, LH = { -0.121212121212119, 1 }, RH = { 33.3333333333333, 1 } },
            [76] = { 1, LH = { 54.6666666666667, 1 }, RH = { 80.9994999170303, 1 }, Flags = { Linear = true } },
            [91] = { 0.845999999999999, LH = { 75.8484848484848, 0.845999999999999 } }
         }
      },
      Rectangle1 = RectangleMask {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Instance_Rectangle1",
               Source = "Mask",
            },
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            MaskWidth = Input { Value = 3840, },
            MaskHeight = Input { Value = 2160, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.055, },
            Height = Input { Value = 0.01, },
            CornerRadius = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { -562.467, -112.784 } },
      },
      Merge6 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background2_2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -673.409, -46.784 } },
      },
      BrightnessContrast2_1 = BrightnessContrast {
         Inputs = {
            Alpha = Input { Value = 1, },
            Gain = Input { Expression = "iif(C1.Checkbox==1,1,0)", },
            Input = Input {
               SourceOp = "Merge4",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -892.466, -14.6411 } },
      },
      Instance_Rectangle1 = RectangleMask {
         SourceOp = "Rectangle1",
         Inputs = {
            EffectMask = Input {
            },
            SettingsNest = Input {
            },
            Angle = Input {
               Value = 90,
            },
            CommentsNest = Input {
            },
            FrameRenderScriptNest = Input {
            },
            StartRenderScripts = Input {
            },
            EndRenderScripts = Input {
            }
         },
         ViewInfo = OperatorInfo { Pos = { -563.409, -145.784 } },
      },
      Background2_2 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Ellipse1_2",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            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 = { -673.409, -112.784 } },
      },
      Ellipse1_2 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.005, },
            Solid = Input { Value = 0, },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 3840, },
            MaskHeight = Input { Value = 2160, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input { Value = { 0.204368174726989, 0.5 }, },
            Width = Input {
               Value = 0.05,
               Expression = "Height",
            },
            Height = Input { Value = 0.05, }
         },
         ViewInfo = OperatorInfo { Pos = { -673.409, -145.784 } },
      },
      Merge4 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background2_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background3",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -892.466, -47.6411 } },
      },
      Ellipse1_1 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.005, },
            Solid = Input { Value = 0, },
            WritePosition = Input { Value = 0.15, },
            WriteLength = Input {
               SourceOp = "Ellipse1_1Length",
               Source = "Value",
            },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 3840, },
            MaskHeight = Input { Value = 2160, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input { Value = { 0.204368174726989, 0.5 }, },
            Width = Input {
               Value = 0.05,
               Expression = "Height",
            },
            Height = Input { Value = 0.05, }
         },
         ViewInfo = OperatorInfo { Pos = { -892.466, -146.641 } },
      },
      Ellipse1_1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         CtrlWZoom = false,
         KeyFrames = {
            [0] = { 0, RH = { 4, 0 } },
            [12] = { 0.85, LH = { -0.121212121212121, 0.85 } }
         }
      },
      MediaOut1 = MediaOut {
         Inputs = {
            Index = Input { Value = "0", },
            Input = Input {
               SourceOp = "KeyframeStretcher1",
               Source = "Result",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 563.268, 66.1376 } },
      },
      Background3_1 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Polygon1_1",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.6862745098039, }
         },
         ViewInfo = OperatorInfo { Pos = { -288.409, -46.784 } },
      },
      Merge4_1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background2_1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background3_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -398.409, -46.784 } },
      },
      Ellipse1 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.005, },
            Solid = Input { Value = 0, },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 3840, },
            MaskHeight = Input { Value = 2160, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input { Value = { 0.204368174726989, 0.5 }, },
            Width = Input {
               Value = 0.05,
               Expression = "Height",
            },
            Height = Input { Value = 0.05, }
         },
         ViewInfo = OperatorInfo { Pos = { -1057.47, -146.641 } },
      },
      Merge5 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge3",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "BrightnessContrast2_2",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -673.409, 64.6422 } },
      },
      BrightnessContrast2 = BrightnessContrast {
         Inputs = {
            Alpha = Input { Value = 1, },
            Gain = Input {
               Value = 0,
               Expression = "iif(C1.Checkbox==0,1,0)",
            },
            Input = Input {
               SourceOp = "Background2",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { -1057.47, -14.6411 } },
      },
      DropShadow1 = ofx.com.blackmagicdesign.resolvefx.DropShadow {
         Inputs = {
            Source = Input {
               SourceOp = "Text1",
               Source = "Output",
            },
            shadowStrength = Input { Value = 0, },
            shadowAngle = Input { Value = 37.5, },
            ShadowDistance = Input { Value = 0.0500000007450581, },
            shadowBlur = Input { Value = 0.550000011920929, },
            shadowColorRed = Input { Value = 0, },
            shadowColorGreen = Input { Value = 0, },
            shadowColorBlue = Input { Value = 0, },
            isLegacyComp = Input { Value = 0, },
            blendGroup = Input { Value = 0, },
            blendIn = Input { Value = 1, },
            blend = Input { Value = 0, },
            ignoreContentShape = Input { Value = 0, },
            legacyIsProcessRGBOnly = Input { Value = 0, },
            IsNoTemporalFramesReqd = Input { Value = 0, },
            refreshTrigger = Input { Value = 1, },
            srcProcessingAlphaMode = Input { Value = 2, },
            dstProcessingAlphaMode = Input { Value = 2, },
            resolvefxVersion = Input { Value = "2.0", }
         },
         ViewInfo = OperatorInfo { Pos = { -64.6385, -2.21487 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Transform3 = Transform {
         Inputs = {
            Input = Input {
               SourceOp = "Transform2",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 265.362, 63.7851 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      KeyframeStretcher1 = KeyStretcher {
         Inputs = {
            Keyframes = Input {
               SourceOp = "Transform3",
               Source = "Output",
            },
            SourceEnd = Input { Value = 149, },
            StretchStart = Input { Value = 92, },
            StretchEnd = Input { Value = 125, }
         },
         ViewInfo = OperatorInfo { Pos = { 424.705, 64.6422 } },
      },
      C1 = Custom {
         NameSet = true,
         Inputs = {
            LUTIn1 = Input {
               SourceOp = "CustomTool1LUTIn1",
               Source = "Value",
            },
            LUTIn2 = Input {
               SourceOp = "CustomTool1LUTIn2",
               Source = "Value",
            },
            LUTIn3 = Input {
               SourceOp = "CustomTool1LUTIn3",
               Source = "Value",
            },
            LUTIn4 = Input {
               SourceOp = "CustomTool1LUTIn4",
               Source = "Value",
            },
            Checkbox = Input { Value = 1, }
         },
         ViewInfo = OperatorInfo { Pos = { -231.524, 63.7851 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, },
         UserControls = ordered() { Checkbox = { { MBTNC_AddButton = "Empty" }, { MBTNC_AddButton = "Check" }, { MBTNC_AddButton = "Cross" }, { MBTNC_AddButton = "Delayed Check" }, INP_MaxAllowed = 1000000, INP_Integer = true, INPID_InputControl = "MultiButtonControl", MBTNC_ShowBasicButton = true, INP_MaxScale = 2, ICS_ControlPage = "Controls", INP_SplineType = "Default", INP_MinScale = 0, INP_MinAllowed = -1000000, LINKID_DataType = "Number", MBTNC_ShowName = true, MBTNC_StretchToFit = false, MBTNC_ShowToolTip = false, LINKS_Name = "Checkbox" } }
      },
      CustomTool1LUTIn1 = 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 = 0 },
      },
      CustomTool1LUTIn2 = 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 = 0, Blue = 255 },
      },
      CustomTool1LUTIn3 = 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 = 0, Green = 180, Blue = 255 },
      },
      CustomTool1LUTIn4 = 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 = 180, Green = 255, Blue = 0 },
         CtrlWZoom = false,
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge7",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "DropShadow1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -68.4097, 64.6422 } },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            Red = Input {
               SourceOp = "BrightnessContrast1Red",
               Source = "Value",
            },
            Green = Input {
               SourceOp = "BrightnessContrast1Green",
               Source = "Value",
            },
            Blue = Input {
               SourceOp = "BrightnessContrast1Blue",
               Source = "Value",
            },
            Alpha = Input {
               SourceOp = "BrightnessContrast1Alpha",
               Source = "Value",
            },
            Gain = Input {
               SourceOp = "BrightnessContrast1Gain",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "Merge1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 40.6475, 64.6422 } },
      },
      BrightnessContrast1Red = BezierSpline {
         SplineColor = { Red = 240, Green = 57, Blue = 43 },
         KeyFrames = {
            [25] = { 1, Flags = { Linear = true } }
         }
      },
      BrightnessContrast1Green = BezierSpline {
         SplineColor = { Red = 114, Green = 72, Blue = 233 },
         KeyFrames = {
            [25] = { 1, Flags = { Linear = true } }
         }
      },
      BrightnessContrast1Blue = BezierSpline {
         SplineColor = { Red = 16, Green = 246, Blue = 49 },
         KeyFrames = {
            [25] = { 1, Flags = { Linear = true } }
         }
      },
      BrightnessContrast1Alpha = BezierSpline {
         SplineColor = { Red = 5, Green = 236, Blue = 67 },
         KeyFrames = {
            [25] = { 1, Flags = { Linear = true } }
         }
      },
      BrightnessContrast1Gain = BezierSpline {
         SplineColor = { Red = 104, Green = 62, Blue = 233 },
         CtrlWZoom = false,
         KeyFrames = {
            [0] = { 0, RH = { 8, 0.333333333333333 }, Flags = { Linear = true } },
            [24] = { 1, LH = { 16, 0.666666666666667 }, RH = { 57.3333333333333, 1 }, Flags = { Linear = true } },
            [124] = { 1, LH = { 90.6666666666667, 1 }, RH = { 132, 0.666666666666667 }, Flags = { Linear = true } },
            [148] = { 0, LH = { 140, 0.333333333333333 }, Flags = { Linear = true } }
         }
      },
      Transform2 = Transform {
         Inputs = {
            Center = Input {
               SourceOp = "Path1",
               Source = "Position",
            },
            Input = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 149.705, 64.6422 } },
      },
      Path1 = PolyPath {
         DrawMode = "InsertAndModify",
         CtrlWZoom = false,
         Inputs = {
            Displacement = Input {
               SourceOp = "Path1Displacement",
               Source = "Value",
            },
            PolyLine = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, LockY = true, X = 0, Y = 0, RX = -0.036, RY = 0 },
                     { Linear = true, LockY = true, X = -0.108, Y = 0, LX = 0.036, LY = 0 }
                  }
               },
            }
         },
      },
      Path1Displacement = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 255 },
         CtrlWZoom = false,
         KeyFrames = {
            [0] = { 0, RH = { 8.33333333333333, 0 }, Flags = { LockedY = true } },
            [25] = { 1, LH = { -0.25252525252526, 1 }, RH = { 57.9966994524002, 1 }, Flags = { LockedY = true } },
            [124] = { 1, LH = { 91.0033005475998, 1 }, RH = { 149.252525252525, 1 } },
            [149] = { 0, LH = { 140.666666666667, 0 } }
         }
      },
      Polygon1_1 = PolylineMask {
         DrawMode = "InsertAndModify",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            Level = Input {
               SourceOp = "Polygon1_1Level",
               Source = "Value",
            },
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.005, },
            WriteLength = Input {
               SourceOp = "Polygon1_1Length",
               Source = "Value",
            },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 3840, },
            MaskHeight = Input { Value = 2160, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input { Value = { 0.501, 0.505 }, },
            Polyline = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, X = -0.309379310344828, Y = -0.00465914664051004, RX = 0.00451581583056038, RY = -0.00753765047856047 },
                     { Linear = true, X = -0.295831862853146, Y = -0.0272720980761915, LX = -0.00451581583056038, LY = 0.00753765047856047, RX = 0.0113431299043888, RY = 0.0242912257505119 },
                     { Linear = true, X = -0.26180247313998, Y = 0.0456015791753443, LX = -0.0113431299043888, LY = -0.0242912257505119 }
                  }
               },
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            }
         },
         ViewInfo = OperatorInfo { Pos = { -288.409, -79.784 } },
      },
      Polygon1_1Level = BezierSpline {
         SplineColor = { Red = 130, Green = 246, Blue = 132 },
         KeyFrames = {
            [78] = { 0, RH = { 78.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
            [79] = { 1, LH = { 78.6666666666667, 0.666666666666667 }, Flags = { Linear = true } }
         }
      },
      Polygon1_1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         CtrlWZoom = false,
         KeyFrames = {
            [79] = { 0, RH = { 83.3333333333333, 0 } },
            [92] = { 1, LH = { 78.8686868686869, 1 } }
         }
      },
      Merge7 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge5",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "BrightnessContrast2_1_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -398.409, 64.6422 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 3840, },
            Height = Input { Value = 2160, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -1222.47, 63.7851 } },
      },
      Merge2 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "BrightnessContrast2",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -1038.87, 63.7851 } },
      }
   },
   ActiveTool = "Merge3"
}
Offline
User avatar

KrunoSmithy

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

Re: No frame available for MediaOut1 - New Title Macro

PostMon Dec 09, 2024 11:14 pm

OK, I found a way who you can solve your problem. There are potentially better ways with expressions, but I'm not really good with expressions so I solved it in the old fashion way.

Basically when you set everything to auto resolution, the checkbox and everything will adopt to new resolution, but also aspect ratio as well, which leads to checkbox and circle looking squashed. Probably the more elegant solution than mine is to use expression which compensates for aspect ratio change. But since I don't know how to write such an expression, here is another method that works.

First thing to know is that fusion is using both coordinates system and pixel based system for canvas size, resizing, transforming etc. Sometimes you just want to transform something and other times you want to actually change pixels. Some nodes only transform and use coordinates system, others use pixels and resize. Letterbox, scale, crop and resize nodes change pixels and pretty much all others just transform.

Letterbox tool for example can be used to adapt existing images to the frame size and aspect ratios of any other format. While it changes resolution for this use its not as important as basically acing as a crop tool. With the support for auto resolution. Which is what I needed. I didn't want to change the aspect ratio of the checkmark only the canvas in which it resides, and than transform it to fit new canvas, by using transform node and its coordinates system, so its always proportional. That way, the checkbox remains of proper aspect ratio, canvas changes the aspect ratio and transform node puts it in the proportionally correct place in the new canvas.

Since its not always easy to work with other people's comps because everyone likes to work in their own way, and sometimes is messes up problem solving, I used your comp as reference and made a simpler version of the comp to specifically find a solution to problem of aspect ratio. I'll share that comp, but you can use the same method if you like to modify your own comp or any other and make it adopt to changing resolution.

Basically in this comp I'll share you will notice that before letterbox node, I leave the auto resolution off, because in this particular case we want the checkmark to remain of the same aspect ratio. And than from letterbox onward, including that node, I leave the auto resolution on, because than the checkmark of the proper aspect ratio gets transformed and scaled correctly but not squished.

You can quickly demo this, by changing resolution of the timelime in the timeline settings, which you can open from media pool, so as you work you can check if your template will hold up, when you change timelime resolution.

sshot-1328.jpg
sshot-1328.jpg (228.29 KiB) Viewed 1933 times


sshot-1329.jpg
sshot-1329.jpg (219.21 KiB) Viewed 1933 times


You can just copy this code, and paste it into empty area in your fusion composition. If you have questions, ask, but I hope its clear enough. Before letterbox auto resolution is off, after letterbox and that very same node, has the auto resolution on. So it keeps the aspect ratio of checkmark the same but adopts everything else.

Code: Select all
{
   Tools = ordered() {
      Merge2 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background3",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -36.4213 } },
      },
      BSpline1 = BSplineMask {
         DrawMode = "ModifyOnly",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.0056, },
            Solid = Input { Value = 0, },
            JoinStyle = Input {
               SourceOp = "BSpline1JoinStyle",
               Source = "Value",
            },
            CapStyle = Input {
               SourceOp = "BSpline1CapStyle",
               Source = "Value",
            },
            WriteLength = Input {
               SourceOp = "BSpline1Length",
               Source = "Value",
            },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ZRotation = Input { Value = -0.76645324242206, },
            Polyline = Input {
               Value = BSplinePolyline {
                  Points = {
                     { X = -0.0118908964914001, Y = 0.00862839313263793, W = 2 },
                     { X = 0.000485436893203905, Y = -0.00819672131147542, W = 2 },
                     { X = 0.0391483516483517, Y = 0.0865853658536585, W = 2 }
                  },
                  Order = 4,
                  Type = "Tensioned",
                  Knots = { 0, 0, 0, 0, 1, 1, 1, 1 }
               },
            },
            Polyline2 = Input {
               Value = BSplinePolyline {
                  Order = 4,
                  Type = "Tensioned",
                  Knots = { }
               },
               Disabled = true,
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -116.325 } },
      },
      BSpline1JoinStyle = BezierSpline {
         SplineColor = { Red = 97, Green = 140, Blue = 252 },
         NameSet = true,
         KeyFrames = {
            [80] = { 1 }
         }
      },
      BSpline1CapStyle = BezierSpline {
         SplineColor = { Red = 26, Green = 242, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [39] = { 0, RH = { 52.6666666666667, 0 } },
            [80] = { 1, LH = { 66.3333333333333, 1 } }
         }
      },
      BSpline1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         NameSet = true,
         KeyFrames = {
            [39] = { 0, RH = { 52.6666666666667, 0 } },
            [80] = { 1, LH = { 66.3333333333333, 1 } }
         }
      },
      Background3 = Background {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.666666666666667, },
            EffectMask = Input {
               SourceOp = "BSpline1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -83.3247 } },
      },
      Text1 = TextPlus {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Center = Input { Value = { 0.250390015600624, 0.5 }, },
            LayoutRotation = Input { Value = 1, },
            CharacterOffset = Input { Value = { -0.069, 0 }, },
            TransformRotation = Input { Value = 1, },
            Softness1 = Input { Value = 1, },
            StyledText = Input { Value = "Checkbox for DaVinci", },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalLeftCenterRight = Input { Value = -1, },
            HorizontalJustificationNew = Input { Value = 3, },
            Start = Input {
               SourceOp = "Text1WriteOnStart",
               Source = "Value",
            },
            End = Input {
               SourceOp = "Text1WriteOnEnd",
               Source = "Value",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 15.3144 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Text1WriteOnStart = BezierSpline {
         SplineColor = { Red = 249, Green = 211, Blue = 150 },
         NameSet = true,
         KeyFrames = {
            [40] = { 0 }
         }
      },
      Text1WriteOnEnd = BezierSpline {
         SplineColor = { Red = 218, Green = 249, Blue = 145 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [40] = { 0, RH = { 60, 0 } },
            [100] = { 1, LH = { 80, 1 } }
         }
      },
      Letterbox1 = Letterbox {
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            HiQOnly = Input { Value = 0, },
            Input = Input {
               SourceOp = "Merge2",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 9.41153 } },
      },
      DropShadow1 = ofx.com.blackmagicdesign.resolvefx.DropShadow {
         Inputs = {
            Source = Input {
               SourceOp = "Text1",
               Source = "Output",
            },
            shadowStrength = Input { Value = 0, },
            shadowAngle = Input { Value = 37.5, },
            ShadowDistance = Input { Value = 0.0500000007450581, },
            shadowBlur = Input { Value = 0.550000011920929, },
            shadowColorRed = Input { Value = 0, },
            shadowColorGreen = Input { Value = 0, },
            shadowColorBlue = Input { Value = 0, },
            isLegacyComp = Input { Value = 0, },
            blendGroup = Input { Value = 0, },
            blendIn = Input { Value = 1, },
            blend = Input { Value = 0, },
            ignoreContentShape = Input { Value = 0, },
            legacyIsProcessRGBOnly = Input { Value = 0, },
            IsNoTemporalFramesReqd = Input { Value = 0, },
            refreshTrigger = Input { Value = 1, },
            srcProcessingAlphaMode = Input { Value = 2, },
            dstProcessingAlphaMode = Input { Value = 2, },
            resolvefxVersion = Input { Value = "2.0", }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 48.3145 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Transform1 = Transform {
         Inputs = {
            Center = Input { Value = { 0.125, 0.5 }, },
            Input = Input {
               SourceOp = "Letterbox1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 49.495 } },
      },
      Ellipse1 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.0056, },
            Solid = Input { Value = 0, },
            CapStyle = Input {
               SourceOp = "Ellipse1CapStyle",
               Source = "Value",
            },
            WriteLength = Input {
               SourceOp = "Ellipse1Length",
               Source = "Value",
            },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            Width = Input { Value = 0.053565492132558, },
            Height = Input { Value = 0.053565492132558, },
            Angle = Input { Value = 74.5, }
         },
         ViewInfo = OperatorInfo { Pos = { 12.1115, -86.7447 } },
      },
      Ellipse1CapStyle = BezierSpline {
         SplineColor = { Red = 26, Green = 242, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [25] = { 0, RH = { 36.6666666666667, 0 } },
            [60] = { 1, LH = { 48.3333333333333, 1 } }
         }
      },
      Ellipse1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [25] = { 0, RH = { 36.6666666666667, 0 } },
            [60] = { 0.84, LH = { 48.3333333333333, 0.84 } }
         }
      },
      Background2 = Background {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 1, },
            TopLeftGreen = Input { Value = 1, },
            TopLeftBlue = Input { Value = 1, },
            EffectMask = Input {
               SourceOp = "Ellipse1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 12.1115, -36.4213 } },
      },
      Merge1_1 = Merge {
         CtrlWZoom = false,
         Inputs = {
            Background = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "DropShadow1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 112.497 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 112.497 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input {
               SourceOp = "Publish1",
               Source = "Value",
            },
            Height = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -25.415, 112.497 } },
      },
      Publish1 = PublishNumber {
         CtrlWZoom = false,
         Inputs = {
            Value = Input { Value = 1920, }
         },
      },
      Publish2 = PublishNumber {
         Inputs = {
            Value = Input { Value = 1080, }
         },
      }
   }
}


By the way, in your comp I run into an issue with fonts for text + nodes. if you share nodes with others, best to use open sans or default fonts so there is no compatibility issues.

I hope with this, you can modify your template or any other you might be making and have it dynamically adopt to any change in format of the timeline, which today with horizontal and vertical nonsense because of all the social media can be necessary. But I think this should also work if you change resolution to Ultra HD or 720p or anything else.

But than I remembered its a problem. Because we are not "auto resolution" scaling all the comp, only portions of it. It helps use solve the horizontal to vertical problem, but when you go from 1080p to Ultra HD resolution or something larger than nodes that are not auto updating, they are being scaled, but using previous lower resolution so there is loss in quality.

The solution could be done with expressions and other tricks, but in this case it was simpler to use shape system to solve that problem as well. So this is now updated version with shape system, which is probably how you want to create your own. That way you can solve even with no letterbox , both the vertical to horizontal change and going form lower to higher resolution and back. Pretty much solves it all I think.

Code: Select all
{
   Tools = ordered() {
      sEllipse1 = sEllipse {
         Inputs = {
            Solid = Input { Value = 0, },
            BorderWidth = Input { Value = 0.0125, },
            CapStyle = Input {
               SourceOp = "sEllipse1CapStyle",
               Source = "Value",
            },
            WriteLength = Input {
               SourceOp = "sEllipse1Length",
               Source = "Value",
            },
            Width = Input { Value = 0.128065071869009, },
            Height = Input { Value = 0.128065071869009, },
            Angle = Input { Value = 84.7, }
         },
         ViewInfo = OperatorInfo { Pos = { 21.1857, -15.206 } },
      },
      sEllipse1CapStyle = BezierSpline {
         SplineColor = { Red = 26, Green = 242, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [20] = { 0, RH = { 40, 0 } },
            [80] = { 1, LH = { 60, 1 } }
         }
      },
      sEllipse1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [20] = { 0, RH = { 40, 0 } },
            [80] = { 0.749, LH = { 60, 0.749 } }
         }
      },
      sBSpline1 = sBSpline {
         DrawMode = "InsertAndModify",
         Inputs = {
            Solid = Input { Value = 0, },
            BorderWidth = Input { Value = 0.0172, },
            JoinStyle = Input {
               SourceOp = "sBSpline1JoinStyle",
               Source = "Value",
            },
            CapStyle = Input {
               SourceOp = "sBSpline1CapStyle",
               Source = "Value",
            },
            WriteLength = Input {
               SourceOp = "sBSpline1Length",
               Source = "Value",
            },
            Center = Input { Value = { 0, -0.00950782997762863 }, },
            Polyline = Input {
               Value = BSplinePolyline {
                  Points = {
                     { X = -0.0279642058165548, Y = 0.0243288590604027, W = 2 },
                     { X = 0.000559284116331096, Y = -0.000838926174496645, W = 2 },
                     { X = 0.107941834451902, Y = 0.102628635346756, W = 2 }
                  },
                  Order = 4,
                  Type = "Tensioned",
                  Knots = { 0, 0, 0, 0, 1, 1, 1, 1 }
               },
            },
            Red = Input { Value = 0, },
            Green = Input { Value = 0.666666666666667, },
            Blue = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -63.8765 } },
      },
      sBSpline1JoinStyle = BezierSpline {
         SplineColor = { Red = 97, Green = 140, Blue = 252 },
         NameSet = true,
         KeyFrames = {
            [48] = { 1 }
         }
      },
      sBSpline1CapStyle = BezierSpline {
         SplineColor = { Red = 26, Green = 242, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [48] = { 0, RH = { 58.6666666666667, 0 } },
            [80] = { 1, LH = { 69.3333333333333, 1 } }
         }
      },
      sBSpline1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 87, Blue = 243 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [48] = { 0, RH = { 58.6666666666667, 0 } },
            [80] = { 1, LH = { 69.3333333333333, 1 } }
         }
      },
      Transform1 = Transform {
         Inputs = {
            Center = Input { Value = { 0.125, 0.5 }, },
            Size = Input { Value = 0.429, },
            Input = Input {
               SourceOp = "sRender1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 63.7743 } },
      },
      sRender1 = sRender {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Input = Input {
               SourceOp = "sMerge1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 27.6901 } },
      },
      sMerge1 = sMerge {
         Inputs = {
            Input1 = Input {
               SourceOp = "sEllipse1",
               Source = "Output",
            },
            Input2 = Input {
               SourceOp = "sBSpline1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -15.206 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 112.497 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input {
               SourceOp = "Publish1",
               Source = "Value",
            },
            Height = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -25.415, 112.497 } },
      },
      Publish1 = PublishNumber {
         CtrlWZoom = false,
         Inputs = {
            Value = Input { Value = 1920, }
         },
      },
      Publish2 = PublishNumber {
         Inputs = {
            Value = Input { Value = 1080, }
         },
      },
      Merge1_1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "DropShadow1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 112.497 } },
      },
      DropShadow1 = ofx.com.blackmagicdesign.resolvefx.DropShadow {
         Inputs = {
            Source = Input {
               SourceOp = "Text1",
               Source = "Output",
            },
            shadowStrength = Input { Value = 0, },
            shadowAngle = Input { Value = 37.5, },
            ShadowDistance = Input { Value = 0.0500000007450581, },
            shadowBlur = Input { Value = 0.550000011920929, },
            shadowColorRed = Input { Value = 0, },
            shadowColorGreen = Input { Value = 0, },
            shadowColorBlue = Input { Value = 0, },
            isLegacyComp = Input { Value = 0, },
            blendGroup = Input { Value = 0, },
            blendIn = Input { Value = 1, },
            blend = Input { Value = 0, },
            ignoreContentShape = Input { Value = 0, },
            legacyIsProcessRGBOnly = Input { Value = 0, },
            IsNoTemporalFramesReqd = Input { Value = 0, },
            refreshTrigger = Input { Value = 1, },
            srcProcessingAlphaMode = Input { Value = 2, },
            dstProcessingAlphaMode = Input { Value = 2, },
            resolvefxVersion = Input { Value = "2.0", }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 48.3145 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Text1 = TextPlus {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Center = Input { Value = { 0.250390015600624, 0.5 }, },
            LayoutRotation = Input { Value = 1, },
            CharacterOffset = Input { Value = { -0.069, 0 }, },
            TransformRotation = Input { Value = 1, },
            Softness1 = Input { Value = 1, },
            StyledText = Input { Value = "Checkbox for DaVinci", },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalLeftCenterRight = Input { Value = -1, },
            HorizontalJustificationNew = Input { Value = 3, },
            Start = Input {
               SourceOp = "Text1WriteOnStart",
               Source = "Value",
            },
            End = Input {
               SourceOp = "Text1WriteOnEnd",
               Source = "Value",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 15.3144 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Text1WriteOnStart = BezierSpline {
         SplineColor = { Red = 249, Green = 211, Blue = 150 },
         NameSet = true,
         KeyFrames = {
            [40] = { 0 }
         }
      },
      Text1WriteOnEnd = BezierSpline {
         SplineColor = { Red = 218, Green = 249, Blue = 145 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [40] = { 0, RH = { 60, 0 } },
            [100] = { 1, LH = { 80, 1 } }
         }
      }
   }
}
Offline

HAMCORE

  • Posts: 33
  • Joined: Mon Aug 26, 2024 6:44 pm
  • Real Name: Mathew Tanguay

Re: No frame available for MediaOut1 - New Title Macro

PostTue Dec 10, 2024 3:43 pm

KrunoSmithy wrote:OK, I found a way who you can solve your problem. There are potentially better ways with expressions, but I'm not really good with expressions so I solved it in the old fashion way.

Basically when you set everything to auto resolution, the checkbox and everything will adopt to new resolution, but also aspect ratio as well, which leads to checkbox and circle looking squashed. Probably the more elegant solution than mine is to use expression which compensates for aspect ratio change. But since I don't know how to write such an expression, here is another method that works.

First thing to know is that fusion is using both coordinates system and pixel based system for canvas size, resizing, transforming etc. Sometimes you just want to transform something and other times you want to actually change pixels. Some nodes only transform and use coordinates system, others use pixels and resize. Letterbox, scale, crop and resize nodes change pixels and pretty much all others just transform.

Letterbox tool for example can be used to adapt existing images to the frame size and aspect ratios of any other format. While it changes resolution for this use its not as important as basically acing as a crop tool. With the support for auto resolution. Which is what I needed. I didn't want to change the aspect ratio of the checkmark only the canvas in which it resides, and than transform it to fit new canvas, by using transform node and its coordinates system, so its always proportional. That way, the checkbox remains of proper aspect ratio, canvas changes the aspect ratio and transform node puts it in the proportionally correct place in the new canvas.

Since its not always easy to work with other people's comps because everyone likes to work in their own way, and sometimes is messes up problem solving, I used your comp as reference and made a simpler version of the comp to specifically find a solution to problem of aspect ratio. I'll share that comp, but you can use the same method if you like to modify your own comp or any other and make it adopt to changing resolution.

Basically in this comp I'll share you will notice that before letterbox node, I leave the auto resolution off, because in this particular case we want the checkmark to remain of the same aspect ratio. And than from letterbox onward, including that node, I leave the auto resolution on, because than the checkmark of the proper aspect ratio gets transformed and scaled correctly but not squished.

You can quickly demo this, by changing resolution of the timelime in the timeline settings, which you can open from media pool, so as you work you can check if your template will hold up, when you change timelime resolution.

sshot-1328.jpg


sshot-1329.jpg


You can just copy this code, and paste it into empty area in your fusion composition. If you have questions, ask, but I hope its clear enough. Before letterbox auto resolution is off, after letterbox and that very same node, has the auto resolution on. So it keeps the aspect ratio of checkmark the same but adopts everything else.

Code: Select all
{
   Tools = ordered() {
      Merge2 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background3",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -36.4213 } },
      },
      BSpline1 = BSplineMask {
         DrawMode = "ModifyOnly",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.0056, },
            Solid = Input { Value = 0, },
            JoinStyle = Input {
               SourceOp = "BSpline1JoinStyle",
               Source = "Value",
            },
            CapStyle = Input {
               SourceOp = "BSpline1CapStyle",
               Source = "Value",
            },
            WriteLength = Input {
               SourceOp = "BSpline1Length",
               Source = "Value",
            },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ZRotation = Input { Value = -0.76645324242206, },
            Polyline = Input {
               Value = BSplinePolyline {
                  Points = {
                     { X = -0.0118908964914001, Y = 0.00862839313263793, W = 2 },
                     { X = 0.000485436893203905, Y = -0.00819672131147542, W = 2 },
                     { X = 0.0391483516483517, Y = 0.0865853658536585, W = 2 }
                  },
                  Order = 4,
                  Type = "Tensioned",
                  Knots = { 0, 0, 0, 0, 1, 1, 1, 1 }
               },
            },
            Polyline2 = Input {
               Value = BSplinePolyline {
                  Order = 4,
                  Type = "Tensioned",
                  Knots = { }
               },
               Disabled = true,
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -116.325 } },
      },
      BSpline1JoinStyle = BezierSpline {
         SplineColor = { Red = 97, Green = 140, Blue = 252 },
         NameSet = true,
         KeyFrames = {
            [80] = { 1 }
         }
      },
      BSpline1CapStyle = BezierSpline {
         SplineColor = { Red = 26, Green = 242, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [39] = { 0, RH = { 52.6666666666667, 0 } },
            [80] = { 1, LH = { 66.3333333333333, 1 } }
         }
      },
      BSpline1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         NameSet = true,
         KeyFrames = {
            [39] = { 0, RH = { 52.6666666666667, 0 } },
            [80] = { 1, LH = { 66.3333333333333, 1 } }
         }
      },
      Background3 = Background {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.666666666666667, },
            EffectMask = Input {
               SourceOp = "BSpline1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -83.3247 } },
      },
      Text1 = TextPlus {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Center = Input { Value = { 0.250390015600624, 0.5 }, },
            LayoutRotation = Input { Value = 1, },
            CharacterOffset = Input { Value = { -0.069, 0 }, },
            TransformRotation = Input { Value = 1, },
            Softness1 = Input { Value = 1, },
            StyledText = Input { Value = "Checkbox for DaVinci", },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalLeftCenterRight = Input { Value = -1, },
            HorizontalJustificationNew = Input { Value = 3, },
            Start = Input {
               SourceOp = "Text1WriteOnStart",
               Source = "Value",
            },
            End = Input {
               SourceOp = "Text1WriteOnEnd",
               Source = "Value",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 15.3144 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Text1WriteOnStart = BezierSpline {
         SplineColor = { Red = 249, Green = 211, Blue = 150 },
         NameSet = true,
         KeyFrames = {
            [40] = { 0 }
         }
      },
      Text1WriteOnEnd = BezierSpline {
         SplineColor = { Red = 218, Green = 249, Blue = 145 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [40] = { 0, RH = { 60, 0 } },
            [100] = { 1, LH = { 80, 1 } }
         }
      },
      Letterbox1 = Letterbox {
         Inputs = {
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            HiQOnly = Input { Value = 0, },
            Input = Input {
               SourceOp = "Merge2",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 9.41153 } },
      },
      DropShadow1 = ofx.com.blackmagicdesign.resolvefx.DropShadow {
         Inputs = {
            Source = Input {
               SourceOp = "Text1",
               Source = "Output",
            },
            shadowStrength = Input { Value = 0, },
            shadowAngle = Input { Value = 37.5, },
            ShadowDistance = Input { Value = 0.0500000007450581, },
            shadowBlur = Input { Value = 0.550000011920929, },
            shadowColorRed = Input { Value = 0, },
            shadowColorGreen = Input { Value = 0, },
            shadowColorBlue = Input { Value = 0, },
            isLegacyComp = Input { Value = 0, },
            blendGroup = Input { Value = 0, },
            blendIn = Input { Value = 1, },
            blend = Input { Value = 0, },
            ignoreContentShape = Input { Value = 0, },
            legacyIsProcessRGBOnly = Input { Value = 0, },
            IsNoTemporalFramesReqd = Input { Value = 0, },
            refreshTrigger = Input { Value = 1, },
            srcProcessingAlphaMode = Input { Value = 2, },
            dstProcessingAlphaMode = Input { Value = 2, },
            resolvefxVersion = Input { Value = "2.0", }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 48.3145 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Transform1 = Transform {
         Inputs = {
            Center = Input { Value = { 0.125, 0.5 }, },
            Input = Input {
               SourceOp = "Letterbox1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 49.495 } },
      },
      Ellipse1 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.0056, },
            Solid = Input { Value = 0, },
            CapStyle = Input {
               SourceOp = "Ellipse1CapStyle",
               Source = "Value",
            },
            WriteLength = Input {
               SourceOp = "Ellipse1Length",
               Source = "Value",
            },
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            Width = Input { Value = 0.053565492132558, },
            Height = Input { Value = 0.053565492132558, },
            Angle = Input { Value = 74.5, }
         },
         ViewInfo = OperatorInfo { Pos = { 12.1115, -86.7447 } },
      },
      Ellipse1CapStyle = BezierSpline {
         SplineColor = { Red = 26, Green = 242, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [25] = { 0, RH = { 36.6666666666667, 0 } },
            [60] = { 1, LH = { 48.3333333333333, 1 } }
         }
      },
      Ellipse1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [25] = { 0, RH = { 36.6666666666667, 0 } },
            [60] = { 0.84, LH = { 48.3333333333333, 0.84 } }
         }
      },
      Background2 = Background {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 1, },
            TopLeftGreen = Input { Value = 1, },
            TopLeftBlue = Input { Value = 1, },
            EffectMask = Input {
               SourceOp = "Ellipse1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 12.1115, -36.4213 } },
      },
      Merge1_1 = Merge {
         CtrlWZoom = false,
         Inputs = {
            Background = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "DropShadow1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 112.497 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 112.497 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input {
               SourceOp = "Publish1",
               Source = "Value",
            },
            Height = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -25.415, 112.497 } },
      },
      Publish1 = PublishNumber {
         CtrlWZoom = false,
         Inputs = {
            Value = Input { Value = 1920, }
         },
      },
      Publish2 = PublishNumber {
         Inputs = {
            Value = Input { Value = 1080, }
         },
      }
   }
}


By the way, in your comp I run into an issue with fonts for text + nodes. if you share nodes with others, best to use open sans or default fonts so there is no compatibility issues.

I hope with this, you can modify your template or any other you might be making and have it dynamically adopt to any change in format of the timeline, which today with horizontal and vertical nonsense because of all the social media can be necessary. But I think this should also work if you change resolution to Ultra HD or 720p or anything else.

But than I remembered its a problem. Because we are not "auto resolution" scaling all the comp, only portions of it. It helps use solve the horizontal to vertical problem, but when you go from 1080p to Ultra HD resolution or something larger than nodes that are not auto updating, they are being scaled, but using previous lower resolution so there is loss in quality.

The solution could be done with expressions and other tricks, but in this case it was simpler to use shape system to solve that problem as well. So this is now updated version with shape system, which is probably how you want to create your own. That way you can solve even with no letterbox , both the vertical to horizontal change and going form lower to higher resolution and back. Pretty much solves it all I think.

Code: Select all
{
   Tools = ordered() {
      sEllipse1 = sEllipse {
         Inputs = {
            Solid = Input { Value = 0, },
            BorderWidth = Input { Value = 0.0125, },
            CapStyle = Input {
               SourceOp = "sEllipse1CapStyle",
               Source = "Value",
            },
            WriteLength = Input {
               SourceOp = "sEllipse1Length",
               Source = "Value",
            },
            Width = Input { Value = 0.128065071869009, },
            Height = Input { Value = 0.128065071869009, },
            Angle = Input { Value = 84.7, }
         },
         ViewInfo = OperatorInfo { Pos = { 21.1857, -15.206 } },
      },
      sEllipse1CapStyle = BezierSpline {
         SplineColor = { Red = 26, Green = 242, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [20] = { 0, RH = { 40, 0 } },
            [80] = { 1, LH = { 60, 1 } }
         }
      },
      sEllipse1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 167, Blue = 243 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [20] = { 0, RH = { 40, 0 } },
            [80] = { 0.749, LH = { 60, 0.749 } }
         }
      },
      sBSpline1 = sBSpline {
         DrawMode = "InsertAndModify",
         Inputs = {
            Solid = Input { Value = 0, },
            BorderWidth = Input { Value = 0.0172, },
            JoinStyle = Input {
               SourceOp = "sBSpline1JoinStyle",
               Source = "Value",
            },
            CapStyle = Input {
               SourceOp = "sBSpline1CapStyle",
               Source = "Value",
            },
            WriteLength = Input {
               SourceOp = "sBSpline1Length",
               Source = "Value",
            },
            Center = Input { Value = { 0, -0.00950782997762863 }, },
            Polyline = Input {
               Value = BSplinePolyline {
                  Points = {
                     { X = -0.0279642058165548, Y = 0.0243288590604027, W = 2 },
                     { X = 0.000559284116331096, Y = -0.000838926174496645, W = 2 },
                     { X = 0.107941834451902, Y = 0.102628635346756, W = 2 }
                  },
                  Order = 4,
                  Type = "Tensioned",
                  Knots = { 0, 0, 0, 0, 1, 1, 1, 1 }
               },
            },
            Red = Input { Value = 0, },
            Green = Input { Value = 0.666666666666667, },
            Blue = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -63.8765 } },
      },
      sBSpline1JoinStyle = BezierSpline {
         SplineColor = { Red = 97, Green = 140, Blue = 252 },
         NameSet = true,
         KeyFrames = {
            [48] = { 1 }
         }
      },
      sBSpline1CapStyle = BezierSpline {
         SplineColor = { Red = 26, Green = 242, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [48] = { 0, RH = { 58.6666666666667, 0 } },
            [80] = { 1, LH = { 69.3333333333333, 1 } }
         }
      },
      sBSpline1Length = BezierSpline {
         SplineColor = { Red = 141, Green = 87, Blue = 243 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [48] = { 0, RH = { 58.6666666666667, 0 } },
            [80] = { 1, LH = { 69.3333333333333, 1 } }
         }
      },
      Transform1 = Transform {
         Inputs = {
            Center = Input { Value = { 0.125, 0.5 }, },
            Size = Input { Value = 0.429, },
            Input = Input {
               SourceOp = "sRender1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 63.7743 } },
      },
      sRender1 = sRender {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Input = Input {
               SourceOp = "sMerge1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 27.6901 } },
      },
      sMerge1 = sMerge {
         Inputs = {
            Input1 = Input {
               SourceOp = "sEllipse1",
               Source = "Output",
            },
            Input2 = Input {
               SourceOp = "sBSpline1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, -15.206 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 160.02, 112.497 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input {
               SourceOp = "Publish1",
               Source = "Value",
            },
            Height = Input {
               SourceOp = "Publish2",
               Source = "Value",
            },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { -25.415, 112.497 } },
      },
      Publish1 = PublishNumber {
         CtrlWZoom = false,
         Inputs = {
            Value = Input { Value = 1920, }
         },
      },
      Publish2 = PublishNumber {
         Inputs = {
            Value = Input { Value = 1080, }
         },
      },
      Merge1_1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "DropShadow1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 112.497 } },
      },
      DropShadow1 = ofx.com.blackmagicdesign.resolvefx.DropShadow {
         Inputs = {
            Source = Input {
               SourceOp = "Text1",
               Source = "Output",
            },
            shadowStrength = Input { Value = 0, },
            shadowAngle = Input { Value = 37.5, },
            ShadowDistance = Input { Value = 0.0500000007450581, },
            shadowBlur = Input { Value = 0.550000011920929, },
            shadowColorRed = Input { Value = 0, },
            shadowColorGreen = Input { Value = 0, },
            shadowColorBlue = Input { Value = 0, },
            isLegacyComp = Input { Value = 0, },
            blendGroup = Input { Value = 0, },
            blendIn = Input { Value = 1, },
            blend = Input { Value = 0, },
            ignoreContentShape = Input { Value = 0, },
            legacyIsProcessRGBOnly = Input { Value = 0, },
            IsNoTemporalFramesReqd = Input { Value = 0, },
            refreshTrigger = Input { Value = 1, },
            srcProcessingAlphaMode = Input { Value = 2, },
            dstProcessingAlphaMode = Input { Value = 2, },
            resolvefxVersion = Input { Value = "2.0", }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 48.3145 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Text1 = TextPlus {
         Inputs = {
            GlobalOut = Input { Value = 479, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Center = Input { Value = { 0.250390015600624, 0.5 }, },
            LayoutRotation = Input { Value = 1, },
            CharacterOffset = Input { Value = { -0.069, 0 }, },
            TransformRotation = Input { Value = 1, },
            Softness1 = Input { Value = 1, },
            StyledText = Input { Value = "Checkbox for DaVinci", },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalLeftCenterRight = Input { Value = -1, },
            HorizontalJustificationNew = Input { Value = 3, },
            Start = Input {
               SourceOp = "Text1WriteOnStart",
               Source = "Value",
            },
            End = Input {
               SourceOp = "Text1WriteOnEnd",
               Source = "Value",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 355.239, 15.3144 } },
         Colors = { TileColor = { R = 0.584313725490196, G = 0.294117647058824, B = 0.803921568627451 }, }
      },
      Text1WriteOnStart = BezierSpline {
         SplineColor = { Red = 249, Green = 211, Blue = 150 },
         NameSet = true,
         KeyFrames = {
            [40] = { 0 }
         }
      },
      Text1WriteOnEnd = BezierSpline {
         SplineColor = { Red = 218, Green = 249, Blue = 145 },
         CtrlWZoom = false,
         NameSet = true,
         KeyFrames = {
            [40] = { 0, RH = { 60, 0 } },
            [100] = { 1, LH = { 80, 1 } }
         }
      }
   }
}

Thank you for all of the details! My Fusion comp is 4K UHD already and I know I won't go beyond that so I used the letterbox method you first showed. Took me a few tried to get right but now it's finally working.

I didn't understand the shape system stuff, that was a little beyond me for sure.
Offline
User avatar

KrunoSmithy

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

Re: No frame available for MediaOut1 - New Title Macro

PostTue Dec 10, 2024 4:17 pm

HAMCORE wrote:I didn't understand the shape system stuff, that was a little beyond me for sure.


Shape system is something they introduced few versions ago, and its a very much work in process, with a lot of limitations and few benefits.

Basically its a system that tries to operate similar to USD, particles and 3D system as a system within fusion comp, where you do something in its own little system withing fusion, and render it out in the end so it can be exported as a bitmap image. While its inside its own system it can do things you normally can't do, but before you can use it with other nodes you have to render it out. In this case using sRender Node. Simular how particles have pRender, or 3D system has 3D renderer node or USD system has uRenderer etc. Shape system has sRender. But its very limited in many ways, with few special powers like ability to extrude in 3D or this resolution thing which is simpler for the kind of work you wanted to do. Its not that it offers some kind of magical resolution independence, its just applying resolution in a differnt way and place, allowing for certain types of transformations that would need more work otherwise.

So basically when you operate in the shape system, you have your sNodes collection. Similar to their contra parts but more limited at the moment. So sText, similar to Text+, Polygon is sPolygon, sRectangle, sElipse etc. They operate similar but are more limited to normal tools. They can't have feathered or soft edges etc.

The possible advantage is that when you are in the shape system you are not bound by any specific number for resolution. Its just coordinates system. But you have to use sRender node at the end which will convert it to bitmap image of particular resolution. In many cases this is not a bit advantage, but in your particular case it was a good way to workaround the problem of aspect ratio change. Otherwise it could have been done, but with more work. Using expressions etc.

Return to Fusion

Who is online

Users browsing this forum: No registered users and 10 guests