Jump to: Board index » General » Fusion

Ways to Improve Fusion for Motion Graphics

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

David Kibui

  • Posts: 19
  • Joined: Fri Dec 30, 2016 7:57 am

Ways to Improve Fusion for Motion Graphics

PostTue May 14, 2019 1:29 pm

I have been playing around with Fusion 9 (because I prefer the standalone but has not yet paid for the studio version, yet, probably) :?:
I have an intro I am trying to create that will use a fake creation of a sphere. I will attach a PNG and the actual set up in Fusion below. I will be using 12 such spheres in the final intro each with a different colour and size. I want some of the spheres to appear and disappear in the course of the intro, (coming from After Effects I would simply off-set the sphere layers as needed in the timeline to achieve that) Technically you can do the same in F9 by off-seting each node in the timeline which in my case would be 8 nodes for one "sphere" (I have used a total of 8 nodes to create the look I want for one fake sphere). God forbid you had already animated some of the nodes and now you have a mess you don't want to imagine :oops:

To improve this, I would suggest either one of 3 things.
1. Change the way grouping works so that if you group such nodes together then they freeze their collective animation and appear as a single node in the timeline. That way you can time the animation in a simple manner.

2. Create a new way of grouping those nodes, maybe call it nesting and the way it works, it makes all those nodes act as one node with all their attributes frozen in time but it retains their animation and any other changes made to them. I would really like it if that nest would open in a different tab if you double click it or right click and choose open.

3. The third suggestion is kinda brute force, simply make the last node in a node tree the determinant of where in the timeline all the previous nodes begin and end. That way you can control timing using the last node.

These suggestions are my personal take on how I think the software can be improved especially for motion graphics. Share your own ideas if you have some.

SEE BELOW

{
Tools = ordered() {
Mask1 = EllipseMask {
NameSet = true,
Inputs = {
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
Width = Input { Value = 0.99542591928033, },
Height = Input { Value = 0.99542591928033, },
},
ViewInfo = OperatorInfo { Pos = { 770, 49.5 } },
},
edgebright = Background {
NameSet = true,
Inputs = {
GlobalOut = Input { Value = 61, },
Width = Input { Value = 1000, },
Height = Input { Value = 1000, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
Type = Input { Value = FuID { "Gradient" }, },
TopLeftRed = Input { Value = 0.627, },
TopLeftBlue = Input { Value = 0.369875616580115, },
TopRightRed = Input { Value = 1, },
TopRightGreen = Input { Value = 0.965433318745099, },
BottomLeftRed = Input { Value = 0.180225240629387, },
BottomLeftBlue = Input { Value = 0.813, },
GradientType = Input { Value = FuID { "Radial" }, },
Start = Input { Value = { 0.69, 0.668 }, },
End = Input { Value = { 1.128, 0.824 }, },
Gradient = Input {
Value = Gradient {
Colors = {
[0] = { 1, 1, 1, 1 },
[1] = { 0, 0, 0, 0 }
}
},
},
EffectMask = Input {
SourceOp = "Mask1",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 770, 181.5 } },
},
Merge1 = Merge {
NameSet = true,
Inputs = {
Background = Input {
SourceOp = "edgebright",
Source = "Output",
},
Foreground = Input {
SourceOp = "Hotspot",
Source = "Output",
},
ApplyMode = Input { Value = FuID { "Screen" }, },
PerformDepthMerge = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 935, 181.5 } },
},
Hotspot = Background {
NameSet = true,
Inputs = {
GlobalOut = Input { Value = 61, },
Width = Input { Value = 1000, },
Height = Input { Value = 1000, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
Type = Input { Value = FuID { "Gradient" }, },
TopLeftRed = Input { Value = 0.627, },
TopLeftBlue = Input { Value = 0.369875616580115, },
TopRightRed = Input { Value = 1, },
TopRightGreen = Input { Value = 0.965433318745099, },
BottomLeftRed = Input { Value = 0.180225240629387, },
BottomLeftBlue = Input { Value = 0.813, },
GradientType = Input { Value = FuID { "Radial" }, },
Start = Input { Value = { 0.66, 0.646 }, },
End = Input { Value = { 0.73, 0.708 }, },
Gradient = Input {
Value = Gradient {
Colors = {
[0] = { 1, 1, 1, 1 },
[1] = { 0, 0, 0, 0 }
}
},
},
EffectMask = Input {
SourceOp = "Mask1",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 935, 115.5 } },
},
Colour = Background {
NameSet = true,
Inputs = {
GlobalOut = Input { Value = 61, },
Width = Input { Value = 1000, },
Height = Input { Value = 1000, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
Type = Input { Value = FuID { "Corner" }, },
TopLeftRed = Input { Value = 0.627, },
TopLeftGreen = Input { Value = 0.197359613013462, },
TopRightRed = Input { Value = 0.94, },
TopRightGreen = Input { Value = 0.550146193489601, },
TopRightBlue = Input { Value = 0.0282, },
BottomLeftRed = Input { Value = 0.767, },
BottomLeftGreen = Input { Value = 0.0839586496451919, },
BottomLeftBlue = Input { Value = 0.01534, },
EffectMask = Input {
SourceOp = "Mask1",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 990, 49.5 } },
},
Merge2 = Merge {
NameSet = true,
Inputs = {
Blend = Input { Value = 0.624, },
Background = Input {
SourceOp = "Colour",
Source = "Output",
},
Foreground = Input {
SourceOp = "Merge1",
Source = "Output",
},
Gain = Input { Value = 0.137, },
PerformDepthMerge = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 1155, 181.5 } },
},
ColourSatu = BrightnessContrast {
NameSet = true,
Inputs = {
Contrast = Input { Value = 0.265, },
Saturation = Input { Value = 1.547, },
Input = Input {
SourceOp = "Merge2",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 1320, 181.5 } },
},
Scale = Transform {
CtrlWZoom = false,
NameSet = true,
Inputs = {
Size = Input { Value = 0.863, },
Input = Input {
SourceOp = "ColourSatu",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 1485, 181.5 } },
}
}
}
Attachments
Fake sphere.PNG
Fake sphere.PNG (134.43 KiB) Viewed 2426 times
Offline
User avatar

Bryan Ray

  • Posts: 2491
  • Joined: Mon Nov 28, 2016 5:32 am
  • Location: Los Angeles, CA, USA

Re: Ways to Improve Fusion for Motion Graphics

PostTue May 14, 2019 3:03 pm

You can use a TimeStretcher node at the end of the graph to retime the entire assembly at once. Set keyframes at the start and end of your animation such that the animation plays through at the speed your created it. Then make several copies of the TimeStretcher, and in the Timeline and Spline tabs, you can move the TimeStretch key frames around, stretching and squashing, reversing, ping-ponging, or whatever you need to do.

Code: Select all
{
   Tools = ordered() {
      Mask1 = EllipseMask {
         NameSet = true,
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.949, },
            Height = Input {
               Value = 0.949,
               Expression = "Width",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 343, 130 } },
      },
      Colour = Background {
         NameSet = true,
         Inputs = {
            GlobalOut = Input { Value = 120, },
            Width = Input { Value = 1000, },
            Height = Input { Value = 1000, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Type = Input { Value = FuID { "Corner" }, },
            TopLeftRed = Input { Value = 0.627, },
            TopLeftGreen = Input { Value = 0.197359613013462, },
            TopRightRed = Input { Value = 0.94, },
            TopRightGreen = Input { Value = 0.550146193489601, },
            TopRightBlue = Input { Value = 0.0282, },
            BottomLeftRed = Input { Value = 0.767, },
            BottomLeftGreen = Input { Value = 0.0839586496451919, },
            BottomLeftBlue = Input { Value = 0.01534, },
            EffectMask = Input {
               SourceOp = "Mask1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 564, 130 } },
      },
      Hotspot = Background {
         NameSet = true,
         Inputs = {
            GlobalOut = Input { Value = 120, },
            Width = Input { Value = 1000, },
            Height = Input { Value = 1000, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Type = Input { Value = FuID { "Gradient" }, },
            TopLeftRed = Input { Value = 0.627, },
            TopLeftBlue = Input { Value = 0.369875616580115, },
            TopRightRed = Input { Value = 1, },
            TopRightGreen = Input { Value = 0.965433318745099, },
            BottomLeftRed = Input { Value = 0.180225240629387, },
            BottomLeftBlue = Input { Value = 0.813, },
            GradientType = Input { Value = FuID { "Radial" }, },
            Start = Input { Value = { 0.66, 0.646 }, },
            End = Input { Value = { 0.73, 0.708 }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1 },
                     [1] = { 0, 0, 0, 0 }
                  }
               },
            },
            EffectMask = Input {
               SourceOp = "Mask1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 509, 196 } },
      },
      Scale = Transform {
         NameSet = true,
         Inputs = {
            Size = Input {
               SourceOp = "ScaleSize",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "ColourSatu",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1059, 262 } },
      },
      ScaleSize = BezierSpline {
         SplineColor = { Red = 225, Green = 0, Blue = 225 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 40, 0.287666666666667 }, Flags = { Linear = true } },
            [120] = { 0.863, LH = { 80, 0.863 } }
         }
      },
      ColourSatu = BrightnessContrast {
         NameSet = true,
         Inputs = {
            Contrast = Input { Value = 0.265, },
            Saturation = Input { Value = 1.547, },
            Input = Input {
               SourceOp = "Merge2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 894, 262 } },
      },
      Merge2 = Merge {
         NameSet = true,
         Inputs = {
            Blend = Input { Value = 0.624, },
            Background = Input {
               SourceOp = "Colour",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            Gain = Input { Value = 0.137, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 729, 262 } },
      },
      Merge1 = Merge {
         NameSet = true,
         Inputs = {
            Background = Input {
               SourceOp = "edgebright",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Hotspot",
               Source = "Output",
            },
            ApplyMode = Input { Value = FuID { "Screen" }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 509, 262 } },
      },
      edgebright = Background {
         NameSet = true,
         Inputs = {
            GlobalOut = Input { Value = 120, },
            Width = Input { Value = 1000, },
            Height = Input { Value = 1000, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Type = Input { Value = FuID { "Gradient" }, },
            TopLeftRed = Input { Value = 0.627, },
            TopLeftBlue = Input { Value = 0.369875616580115, },
            TopRightRed = Input { Value = 1, },
            TopRightGreen = Input { Value = 0.965433318745099, },
            BottomLeftRed = Input { Value = 0.180225240629387, },
            BottomLeftBlue = Input { Value = 0.813, },
            GradientType = Input { Value = FuID { "Radial" }, },
            Start = Input { Value = { 0.69, 0.668 }, },
            End = Input { Value = { 1.128, 0.824 }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 1, 1, 1 },
                     [1] = { 0, 0, 0, 0 }
                  }
               },
            },
            EffectMask = Input {
               SourceOp = "Mask1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 344, 262 } },
      },
      TimeStretcher1 = TimeStretcher {
         Inputs = {
            SourceTime = Input {
               SourceOp = "TimeStretcher1SourceTime",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "Scale",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1275, 255 } },
      },
      TimeStretcher1SourceTime = BezierSpline {
         SplineColor = { Red = 233, Green = 217, Blue = 243 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 16.3333333333333, 40 }, Flags = { Linear = true } },
            [49] = { 120, LH = { 32.6666666666667, 80 }, Flags = { Linear = true } }
         }
      },
      TimeStretcher1_1 = TimeStretcher {
         Inputs = {
            SourceTime = Input {
               SourceOp = "TimeStretcher1_1SourceTime",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "Scale",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1276, 293 } },
      },
      TimeStretcher1_1SourceTime = BezierSpline {
         SplineColor = { Red = 233, Green = 217, Blue = 243 },
         NameSet = true,
         KeyFrames = {
            [39] = { 0, RH = { 66, 40 }, Flags = { Linear = true } },
            [120] = { 120, LH = { 93, 80 }, Flags = { Linear = true } }
         }
      },
      Transform1 = Transform {
         Inputs = {
            Center = Input { Value = { -0.138356867779204, 0.305205479452055 }, },
            Size = Input { Value = 0.670989473684211, },
            Input = Input {
               SourceOp = "TimeStretcher1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1385, 255 } },
      },
      Transform2 = Transform {
         Inputs = {
            Center = Input { Value = { 1.11617458279846, 0.746575342465753 }, },
            Input = Input {
               SourceOp = "TimeStretcher1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1386, 293 } },
      },
      Transform3 = Transform {
         CtrlWZoom = false,
         Inputs = {
            Center = Input { Value = { 0.936251604621309, 0.246027397260274 }, },
            Input = Input {
               SourceOp = "TimeStretcher1_2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1387, 331 } },
      },
      TimeStretcher1_2 = TimeStretcher {
         Inputs = {
            SourceTime = Input {
               SourceOp = "TimeStretcher1_2SourceTime",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "Scale",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1277, 331 } },
      },
      TimeStretcher1_2SourceTime = BezierSpline {
         SplineColor = { Red = 233, Green = 217, Blue = 243 },
         NameSet = true,
         KeyFrames = {
            [35] = { 0, RH = { 43.6666666666667, 40 }, Flags = { Linear = true } },
            [61] = { 120, LH = { 52.3333333333333, 80 }, Flags = { Linear = true } }
         }
      },
      Transform4 = Transform {
         Inputs = {
            Input = Input {
               SourceOp = "TimeStretcher1_3",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1386, 366 } },
      },
      TimeStretcher1_3 = TimeStretcher {
         Inputs = {
            SourceTime = Input {
               SourceOp = "TimeStretcher1_3SourceTime",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "Scale",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1276, 366 } },
      },
      TimeStretcher1_3SourceTime = BezierSpline {
         SplineColor = { Red = 233, Green = 217, Blue = 243 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 62.3333333333333, 40 }, Flags = { Linear = true } },
            [187] = { 120, LH = { 124.666666666667, 80 }, Flags = { Linear = true } }
         }
      },
      Merge3 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Transform4",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform3",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1554, 370 } },
      },
      Merge4 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge3",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform2",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1664, 370 } },
      },
      Merge5 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge4",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1774, 370 } },
      },
      Merge6 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Merge5",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1895, 436 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 120, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 1785, 436 } },
      }
   }
}
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

Jörg-Mark Kasassoglou

  • Posts: 46
  • Joined: Tue Jan 20, 2015 10:40 am

Re: Ways to Improve Fusion for Motion Graphics

PostTue May 14, 2019 9:34 pm

Hi Bryan,

this is a coincidence :mrgreen: ... i was trouble shooting a setup i did a while ago and could not figure out why the comp produces a lot of errors and now you are posting a similar comp which produces a lot of errors too.

Both comps render correctly though. Should these errors be ignored or is this something which has to do with my system or is there a way i can fix them ?


#####################################################
Code: Select all
Transform1 cannot get Parameter for Input at time 42
TimeStretcher1 failed at time 42
Merge5 cannot get foreground image at time 42
Merge6 cannot get foreground image at time 42
Merge6 failed at time 42
Transform1 cannot get Parameter for Input at time 43
TimeStretcher1 failed at time 43
Merge5 cannot get foreground image at time 43
Merge6 cannot get foreground image at time 43
Merge6 failed at time 43
Transform1 cannot get Parameter for Input at time 44
TimeStretcher1 failed at time 44
Merge5 cannot get foreground image at time 44
Merge6 cannot get foreground image at time 44
Merge6 failed at time 44
TimeStretcher1 failed at time 45
Transform1 cannot get Parameter for Input at time 45
Merge5 cannot get foreground image at time 45
Merge6 cannot get foreground image at time 45
Merge6 failed at time 45
Transform1 cannot get Parameter for Input at time 46
TimeStretcher1 failed at time 46
Merge5 cannot get foreground image at time 46
Merge6 cannot get foreground image at time 46
Merge6 failed at time 46
TimeStretcher1 failed at time 47
Transform1 cannot get Parameter for Input at time 47
Merge5 cannot get foreground image at time 47
Merge6 cannot get foreground image at time 47
Merge6 failed at time 47
TimeStretcher1 failed at time 48
Transform1 cannot get Parameter for Input at time 48
Merge5 cannot get foreground image at time 48
Merge6 cannot get foreground image at time 48
Merge6 failed at time 48
Transform1 cannot get Parameter for Input at time 49
TimeStretcher1 failed at time 49
Merge5 cannot get foreground image at time 49
Merge6 cannot get foreground image at time 49
Merge6 failed at time 49
Transform1 cannot get Parameter for Input at time 50
TimeStretcher1 failed at time 50
Merge5 cannot get foreground image at time 50
Merge6 cannot get foreground image at time 50
Merge6 failed at time 50
Transform1 cannot get Parameter for Input at time 51
Merge5 cannot get foreground image at time 51
Merge6 cannot get foreground image at time 51
Merge6 failed at time 51
TimeStretcher1 failed at time 51
TimeStretcher1 failed at time 52
Transform1 cannot get Parameter for Input at time 52
Merge5 cannot get foreground image at time 52
Merge6 cannot get foreground image at time 52
Merge6 failed at time 52
Transform1 cannot get Parameter for Input at time 53
TimeStretcher1 failed at time 53
Merge5 cannot get foreground image at time 53
Merge6 cannot get foreground image at time 53
Merge6 failed at time 53
TimeStretcher1 failed at time 54
Transform1 cannot get Parameter for Input at time 54
Merge5 cannot get foreground image at time 54
Merge6 cannot get foreground image at time 54
Merge6 failed at time 54
Transform1 cannot get Parameter for Input at time 55
TimeStretcher1 failed at time 55
Merge5 cannot get foreground image at time 55
Merge6 cannot get foreground image at time 55
Merge6 failed at time 55
Transform1 cannot get Parameter for Input at time 56
TimeStretcher1 failed at time 56
Merge5 cannot get foreground image at time 56
Merge6 cannot get foreground image at time 56
Merge6 failed at time 56
TimeStretcher1 failed at time 57
Transform3 cannot get Parameter for Input at time 57
Merge3 cannot get foreground image at time 57
Merge4 cannot get Parameter for Background at time 57
Transform1 cannot get Parameter for Input at time 57
Merge5 cannot get Parameter for Background at time 57
Merge6 cannot get foreground image at time 57
Merge6 failed at time 57
TimeStretcher1 failed at time 58
Transform3 cannot get Parameter for Input at time 58
Merge3 cannot get foreground image at time 58
Merge4 cannot get Parameter for Background at time 58
Transform1 cannot get Parameter for Input at time 58
Merge5 cannot get Parameter for Background at time 58
Merge6 cannot get foreground image at time 58
Merge6 failed at time 58
TimeStretcher1 failed at time 59
Transform3 cannot get Parameter for Input at time 59
Merge3 cannot get foreground image at time 59
Merge4 cannot get Parameter for Background at time 59
Transform1 cannot get Parameter for Input at time 59
Merge5 cannot get Parameter for Background at time 59
Merge6 cannot get foreground image at time 59
Merge6 failed at time 59
TimeStretcher1 failed at time 60
Transform3 cannot get Parameter for Input at time 60
Merge3 cannot get foreground image at time 60
Merge4 cannot get Parameter for Background at time 60
Transform1 cannot get Parameter for Input at time 60
Merge5 cannot get Parameter for Background at time 60
Merge6 cannot get foreground image at time 60
Merge6 failed at time 60
TimeStretcher1 failed at time 61
Transform3 cannot get Parameter for Input at time 61
Merge3 cannot get foreground image at time 61
Merge4 cannot get Parameter for Background at time 61
Transform1 cannot get Parameter for Input at time 61
Merge5 cannot get Parameter for Background at time 61
Merge6 cannot get foreground image at time 61
Merge6 failed at time 61
TimeStretcher1 failed at time 62
Transform3 cannot get Parameter for Input at time 62
Merge3 cannot get foreground image at time 62
Merge4 cannot get Parameter for Background at time 62
Transform1 cannot get Parameter for Input at time 62
Merge5 cannot get Parameter for Background at time 62
Merge6 cannot get foreground image at time 62
Merge6 failed at time 62
TimeStretcher1 failed at time 63
Transform3 cannot get Parameter for Input at time 63
Merge3 cannot get foreground image at time 63
Merge4 cannot get Parameter for Background at time 63
Transform1 cannot get Parameter for Input at time 63
Merge5 cannot get Parameter for Background at time 63
Merge6 cannot get foreground image at time 63
Merge6 failed at time 63
TimeStretcher1 failed at time 64
Transform3 cannot get Parameter for Input at time 64
Merge3 cannot get foreground image at time 64
Merge4 cannot get Parameter for Background at time 64
Transform1 cannot get Parameter for Input at time 64
Merge5 cannot get Parameter for Background at time 64
Merge6 cannot get foreground image at time 64
Merge6 failed at time 64
TimeStretcher1 failed at time 65
Transform3 cannot get Parameter for Input at time 65
Merge3 cannot get foreground image at time 65
Merge4 cannot get Parameter for Background at time 65
Transform1 cannot get Parameter for Input at time 65
Merge5 cannot get Parameter for Background at time 65
Merge6 cannot get foreground image at time 65
Merge6 failed at time 65
TimeStretcher1 failed at time 66
Transform3 cannot get Parameter for Input at time 66
Merge3 cannot get foreground image at time 66
Merge4 cannot get Parameter for Background at time 66
Transform1 cannot get Parameter for Input at time 66
Merge5 cannot get Parameter for Background at time 66
Merge6 cannot get foreground image at time 66
Merge6 failed at time 66
TimeStretcher1 failed at time 67
Transform3 cannot get Parameter for Input at time 67
Merge3 cannot get foreground image at time 67
Merge4 cannot get Parameter for Background at time 67
Transform1 cannot get Parameter for Input at time 67
Merge5 cannot get Parameter for Background at time 67
Merge6 cannot get foreground image at time 67
Merge6 failed at time 67
TimeStretcher1 failed at time 68
Transform3 cannot get Parameter for Input at time 68
Merge3 cannot get foreground image at time 68
Merge4 cannot get Parameter for Background at time 68
Transform1 cannot get Parameter for Input at time 68
Merge5 cannot get Parameter for Background at time 68
Merge6 cannot get foreground image at time 68
Merge6 failed at time 68
TimeStretcher1 failed at time 69
Transform3 cannot get Parameter for Input at time 69
Merge3 cannot get foreground image at time 69
Merge4 cannot get Parameter for Background at time 69
Transform1 cannot get Parameter for Input at time 69
Merge5 cannot get Parameter for Background at time 69
Merge6 cannot get foreground image at time 69
Merge6 failed at time 69
TimeStretcher1 failed at time 70
Transform3 cannot get Parameter for Input at time 70
Merge3 cannot get foreground image at time 70
Merge4 cannot get Parameter for Background at time 70
Transform1 cannot get Parameter for Input at time 70
Merge5 cannot get Parameter for Background at time 70
Merge6 cannot get foreground image at time 70
Merge6 failed at time 70
TimeStretcher1 failed at time 71
Transform3 cannot get Parameter for Input at time 71
Merge3 cannot get foreground image at time 71
Merge4 cannot get Parameter for Background at time 71
Transform1 cannot get Parameter for Input at time 71
Merge5 cannot get Parameter for Background at time 71
Merge6 cannot get foreground image at time 71
Merge6 failed at time 71
TimeStretcher1 failed at time 72
Transform3 cannot get Parameter for Input at time 72
Merge3 cannot get foreground image at time 72
Merge4 cannot get Parameter for Background at time 72
Transform1 cannot get Parameter for Input at time 72
Merge5 cannot get Parameter for Background at time 72
Merge6 cannot get foreground image at time 72
Merge6 failed at time 72
TimeStretcher1 failed at time 73
Transform3 cannot get Parameter for Input at time 73
Merge3 cannot get foreground image at time 73
Merge4 cannot get Parameter for Background at time 73
Transform1 cannot get Parameter for Input at time 73
Merge5 cannot get Parameter for Background at time 73
Merge6 cannot get foreground image at time 73
Merge6 failed at time 73
TimeStretcher1 failed at time 74
Transform3 cannot get Parameter for Input at time 74
Merge3 cannot get foreground image at time 74
Merge4 cannot get Parameter for Background at time 74
Transform1 cannot get Parameter for Input at time 74
Merge5 cannot get Parameter for Background at time 74
Merge6 cannot get foreground image at time 74
Merge6 failed at time 74
Transform3 cannot get Parameter for Input at time 75
Merge3 cannot get foreground image at time 75
Merge4 cannot get Parameter for Background at time 75
Transform1 cannot get Parameter for Input at time 75
TimeStretcher1 failed at time 75
Merge5 cannot get Parameter for Background at time 75
Merge6 cannot get foreground image at time 75
Merge6 failed at time 75
TimeStretcher1 failed at time 76
Transform3 cannot get Parameter for Input at time 76
Merge3 cannot get foreground image at time 76
Merge4 cannot get Parameter for Background at time 76
Transform1 cannot get Parameter for Input at time 76
Merge5 cannot get Parameter for Background at time 76
Merge6 cannot get foreground image at time 76
Merge6 failed at time 76
TimeStretcher1 failed at time 77
Transform3 cannot get Parameter for Input at time 77
Merge3 cannot get foreground image at time 77
Merge4 cannot get Parameter for Background at time 77
Transform1 cannot get Parameter for Input at time 77
Merge5 cannot get Parameter for Background at time 77
Merge6 cannot get foreground image at time 77
Merge6 failed at time 77
TimeStretcher1 failed at time 78
Transform3 cannot get Parameter for Input at time 78
Merge3 cannot get foreground image at time 78
Merge4 cannot get Parameter for Background at time 78
Transform1 cannot get Parameter for Input at time 78
Merge5 cannot get Parameter for Background at time 78
Merge6 cannot get foreground image at time 78
Merge6 failed at time 78
TimeStretcher1 failed at time 79
Transform3 cannot get Parameter for Input at time 79
Merge3 cannot get foreground image at time 79
Merge4 cannot get Parameter for Background at time 79
Transform1 cannot get Parameter for Input at time 79
Merge5 cannot get Parameter for Background at time 79
Merge6 cannot get foreground image at time 79
Merge6 failed at time 79
TimeStretcher1 failed at time 80
Transform3 cannot get Parameter for Input at time 80
Merge3 cannot get foreground image at time 80
Merge4 cannot get Parameter for Background at time 80
Transform1 cannot get Parameter for Input at time 80
Merge5 cannot get Parameter for Background at time 80
Merge6 cannot get foreground image at time 80
Merge6 failed at time 80
TimeStretcher1 failed at time 81
Transform3 cannot get Parameter for Input at time 81
Merge3 cannot get foreground image at time 81
Merge4 cannot get Parameter for Background at time 81
Transform1 cannot get Parameter for Input at time 81
Merge5 cannot get Parameter for Background at time 81
Merge6 cannot get foreground image at time 81
Merge6 failed at time 81
TimeStretcher1 failed at time 82
Transform3 cannot get Parameter for Input at time 82
Merge3 cannot get foreground image at time 82
Merge4 cannot get Parameter for Background at time 82
Transform1 cannot get Parameter for Input at time 82
Merge5 cannot get Parameter for Background at time 82
Merge6 cannot get foreground image at time 82
Merge6 failed at time 82
TimeStretcher1 failed at time 83
Transform3 cannot get Parameter for Input at time 83
Merge3 cannot get foreground image at time 83
Merge4 cannot get Parameter for Background at time 83
Transform1 cannot get Parameter for Input at time 83
Merge5 cannot get Parameter for Background at time 83
Merge6 cannot get foreground image at time 83
Merge6 failed at time 83
TimeStretcher1 failed at time 84
Transform3 cannot get Parameter for Input at time 84
Merge3 cannot get foreground image at time 84
Merge4 cannot get Parameter for Background at time 84
Transform1 cannot get Parameter for Input at time 84
Merge5 cannot get Parameter for Background at time 84
Merge6 cannot get foreground image at time 84
Merge6 failed at time 84
TimeStretcher1 failed at time 85
Transform3 cannot get Parameter for Input at time 85
Merge3 cannot get foreground image at time 85
Merge4 cannot get Parameter for Background at time 85
Transform1 cannot get Parameter for Input at time 85
Merge5 cannot get Parameter for Background at time 85
Merge6 cannot get foreground image at time 85
Merge6 failed at time 85
TimeStretcher1 failed at time 86
Transform3 cannot get Parameter for Input at time 86
Merge3 cannot get foreground image at time 86
Merge4 cannot get Parameter for Background at time 86
Transform1 cannot get Parameter for Input at time 86
Merge5 cannot get Parameter for Background at time 86
Merge6 cannot get foreground image at time 86
Merge6 failed at time 86
TimeStretcher1 failed at time 87
Transform3 cannot get Parameter for Input at time 87
Merge3 cannot get foreground image at time 87
Merge4 cannot get Parameter for Background at time 87
Transform1 cannot get Parameter for Input at time 87
Merge5 cannot get Parameter for Background at time 87
Merge6 cannot get foreground image at time 87
Merge6 failed at time 87
TimeStretcher1 failed at time 88
Transform3 cannot get Parameter for Input at time 88
Merge3 cannot get foreground image at time 88
Merge4 cannot get Parameter for Background at time 88
Transform1 cannot get Parameter for Input at time 88
Merge5 cannot get Parameter for Background at time 88
Merge6 cannot get foreground image at time 88
Merge6 failed at time 88
Transform3 cannot get Parameter for Input at time 89
TimeStretcher1 failed at time 89
Merge3 cannot get foreground image at time 89
Merge4 cannot get Parameter for Background at time 89
Transform1 cannot get Parameter for Input at time 89
Merge5 cannot get Parameter for Background at time 89
Merge6 cannot get foreground image at time 89
Merge6 failed at time 89
TimeStretcher1 failed at time 90
Transform3 cannot get Parameter for Input at time 90
Merge3 cannot get foreground image at time 90
Merge4 cannot get Parameter for Background at time 90
Transform1 cannot get Parameter for Input at time 90
Merge5 cannot get Parameter for Background at time 90
Merge6 cannot get foreground image at time 90
Merge6 failed at time 90
TimeStretcher1 failed at time 91
Transform3 cannot get Parameter for Input at time 91
Merge3 cannot get foreground image at time 91
Merge4 cannot get Parameter for Background at time 91
Transform1 cannot get Parameter for Input at time 91
Merge5 cannot get Parameter for Background at time 91
Merge6 cannot get foreground image at time 91
Merge6 failed at time 91
TimeStretcher1 failed at time 92
Transform3 cannot get Parameter for Input at time 92
Merge3 cannot get foreground image at time 92
Merge4 cannot get Parameter for Background at time 92
Transform1 cannot get Parameter for Input at time 92
Merge5 cannot get Parameter for Background at time 92
Merge6 cannot get foreground image at time 92
Merge6 failed at time 92
TimeStretcher1 failed at time 93
Transform3 cannot get Parameter for Input at time 93
Merge3 cannot get foreground image at time 93
Merge4 cannot get Parameter for Background at time 93
Transform1 cannot get Parameter for Input at time 93
Merge5 cannot get Parameter for Background at time 93
Merge6 cannot get foreground image at time 93
Merge6 failed at time 93
TimeStretcher1 failed at time 94
Transform3 cannot get Parameter for Input at time 94
Merge3 cannot get foreground image at time 94
Merge4 cannot get Parameter for Background at time 94
Transform1 cannot get Parameter for Input at time 94
Merge5 cannot get Parameter for Background at time 94
Merge6 cannot get foreground image at time 94
Merge6 failed at time 94
TimeStretcher1 failed at time 95
Transform3 cannot get Parameter for Input at time 95
Merge3 cannot get foreground image at time 95
Merge4 cannot get Parameter for Background at time 95
Transform1 cannot get Parameter for Input at time 95
Merge5 cannot get Parameter for Background at time 95
Merge6 cannot get foreground image at time 95
Merge6 failed at time 95
Transform3 cannot get Parameter for Input at time 96
Merge3 cannot get foreground image at time 96
Merge4 cannot get Parameter for Background at time 96
Transform1 cannot get Parameter for Input at time 96
TimeStretcher1 failed at time 96
Merge5 cannot get Parameter for Background at time 96
Merge6 cannot get foreground image at time 96
Merge6 failed at time 96
Transform3 cannot get Parameter for Input at time 97
Merge3 cannot get foreground image at time 97
Merge4 cannot get Parameter for Background at time 97
TimeStretcher1 failed at time 97
Transform1 cannot get Parameter for Input at time 97
Merge5 cannot get Parameter for Background at time 97
Merge6 cannot get foreground image at time 97
Merge6 failed at time 97
TimeStretcher1 failed at time 98
Transform3 cannot get Parameter for Input at time 98
Merge3 cannot get foreground image at time 98
Merge4 cannot get Parameter for Background at time 98
Transform1 cannot get Parameter for Input at time 98
Merge5 cannot get Parameter for Background at time 98
Merge6 cannot get foreground image at time 98
Merge6 failed at time 98
TimeStretcher1 failed at time 99
Transform3 cannot get Parameter for Input at time 99
Merge3 cannot get foreground image at time 99
Merge4 cannot get Parameter for Background at time 99
Transform1 cannot get Parameter for Input at time 99
Merge5 cannot get Parameter for Background at time 99
Merge6 cannot get foreground image at time 99
Merge6 failed at time 99
TimeStretcher1 failed at time 100
Transform3 cannot get Parameter for Input at time 100
Merge3 cannot get foreground image at time 100
Merge4 cannot get Parameter for Background at time 100
Transform1 cannot get Parameter for Input at time 100
Merge5 cannot get Parameter for Background at time 100
Merge6 cannot get foreground image at time 100
Merge6 failed at time 100
Last edited by Jörg-Mark Kasassoglou on Fri May 17, 2019 8:20 am, edited 1 time in total.
Offline

David Kibui

  • Posts: 19
  • Joined: Fri Dec 30, 2016 7:57 am

Re: Ways to Improve Fusion for Motion Graphics

PostWed May 15, 2019 2:18 pm

[quote="Bryan Ray"]You can use a TimeStretcher node at the end of the graph to retime the entire assembly at once. Set keyframes at the start and end of your animation such that the animation plays through at the speed your created it.

As always thank you very much Bryan for your help. I at least learnt about the TimeStretcher node ;)
What I wanted was a way to condense all previous nodes such that I could "cut into" and " cut of" each animation effect/layer/precomp in the timeline kind of the way you time and refine an animation in After Effects in the master comp.

I have included a sample comp with notes describe what I was trying to achieve. BMD touts Fusion as a motion graphics software as well, I started this post to voice my frustrations when using Fusion to create motion graphics. I intend to post more here as I hit those brick walls as I attempt to create something. Fusion has some amazing tools for motion graphics but you often have to use a very long route to achieve a simple task.

{
Tools = ordered() {
Background1 = Background {
Inputs = {
GlobalOut = Input { Value = 20, },
Width = Input { Value = 250, },
Height = Input { Value = 250, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftRed = Input { Value = 0.627202664176499, },
TopLeftGreen = Input { Value = 0.352, },
TopLeftBlue = Input { Value = 0.88, },
EffectMask = Input {
SourceOp = "Ellipse1",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 1155, 214.5 } },
},
Ellipse1 = EllipseMask {
Inputs = {
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
Width = Input { Value = 0.971201317956272, },
Height = Input { Value = 0.971201317956272, },
},
ViewInfo = OperatorInfo { Pos = { 1155, 148.5 } },
},
Scene1 = Underlay {
NameSet = true,
ViewInfo = UnderlayInfo {
Pos = { 1155, 148.5 },
Size = { 172, 108.556 }
},
},
Background1_1 = Background {
Inputs = {
GlobalOut = Input { Value = 20, },
Width = Input { Value = 250, },
Height = Input { Value = 250, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftGreen = Input { Value = 0.88, },
TopLeftBlue = Input { Value = 0.346761104506733, },
EffectMask = Input {
SourceOp = "Ellipse1_1",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 1375, 214.5 } },
},
Merge1 = Merge {
Inputs = {
Foreground = Input {
SourceOp = "Background1_1",
Source = "Output",
},
PerformDepthMerge = Input { Value = 0, },
EffectMask = Input {
SourceOp = "Background1",
Source = "Output",
}
},
ViewInfo = OperatorInfo { Pos = { 1375, 280.5 } },
},
Ellipse1_1 = EllipseMask {
Inputs = {
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
Width = Input { Value = 0.971201317956272, },
Height = Input { Value = 0.971201317956272, },
},
ViewInfo = OperatorInfo { Pos = { 1375, 148.5 } },
},
Scene2 = Underlay {
NameSet = true,
ViewInfo = UnderlayInfo {
Pos = { 1375, 148.5 },
Size = { 172, 108.556 }
},
},
Merge2 = Merge {
Inputs = {
Background = Input {
SourceOp = "Merge1",
Source = "Output",
},
Foreground = Input {
SourceOp = "Background1_2",
Source = "Output",
},
PerformDepthMerge = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 1650, 280.5 } },
},
Background1_2 = Background {
Inputs = {
GlobalOut = Input { Value = 20, },
Width = Input { Value = 250, },
Height = Input { Value = 250, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftRed = Input { Value = 0.88, },
TopLeftGreen = Input { Value = 0.142364235336982, },
EffectMask = Input {
SourceOp = "Ellipse1_2",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 1650, 214.5 } },
},
Ellipse1_2 = EllipseMask {
Inputs = {
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
Width = Input { Value = 0.971201317956272, },
Height = Input { Value = 0.971201317956272, },
},
ViewInfo = OperatorInfo { Pos = { 1650, 148.5 } },
},
Scene3 = Underlay {
NameSet = true,
ViewInfo = UnderlayInfo {
Pos = { 1650, 148.5 },
Size = { 172, 108.556 }
},
},
Merge3 = Merge {
Inputs = {
Background = Input {
SourceOp = "Merge2",
Source = "Output",
},
Foreground = Input {
SourceOp = "Background1_3",
Source = "Output",
},
PerformDepthMerge = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 1925, 280.5 } },
},
Background1_3 = Background {
Inputs = {
GlobalOut = Input { Value = 20, },
Width = Input { Value = 250, },
Height = Input { Value = 250, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftGreen = Input { Value = 0.88, },
TopLeftBlue = Input { Value = 0.739688605484189, },
EffectMask = Input {
SourceOp = "Ellipse1_3",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 1925, 214.5 } },
},
Ellipse1_3 = EllipseMask {
NameSet = true,
Inputs = {
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
Width = Input { Value = 0.971201317956272, },
Height = Input { Value = 0.971201317956272, },
},
ViewInfo = OperatorInfo { Pos = { 1925, 148.5 } },
},
Scene4 = Underlay {
NameSet = true,
ViewInfo = UnderlayInfo {
Pos = { 1925, 148.5 },
Size = { 172, 108.556 }
},
},
Merge4 = Merge {
Inputs = {
Background = Input {
SourceOp = "Merge3",
Source = "Output",
},
Foreground = Input {
SourceOp = "Background1_4",
Source = "Output",
},
PerformDepthMerge = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 2200, 280.5 } },
},
Ellipse1_4 = EllipseMask {
Inputs = {
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
Width = Input { Value = 0.971201317956272, },
Height = Input { Value = 0.971201317956272, },
},
ViewInfo = OperatorInfo { Pos = { 2200, 148.5 } },
},
Background1_4 = Background {
Inputs = {
GlobalOut = Input { Value = 20, },
Width = Input { Value = 250, },
Height = Input { Value = 250, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftRed = Input { Value = 0.88, },
TopLeftGreen = Input { Value = 0.773253445068588, },
EffectMask = Input {
SourceOp = "Ellipse1_4",
Source = "Mask",
}
},
ViewInfo = OperatorInfo { Pos = { 2200, 214.5 } },
},
Scene5 = Underlay {
NameSet = true,
ViewInfo = UnderlayInfo {
Pos = { 2200, 148.5 },
Size = { 172, 108.556 }
},
},
Merge5 = Merge {
Inputs = {
Background = Input {
SourceOp = "Background2",
Source = "Output",
},
Foreground = Input {
SourceOp = "Merge4",
Source = "Output",
},
PerformDepthMerge = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 2475, 280.5 } },
},
Background2 = Background {
Inputs = {
GlobalOut = Input { Value = 20, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
},
ViewInfo = OperatorInfo { Pos = { 2475, 412.5 } },
},
Note1 = Note {
Inputs = {
Comments = Input { Value = "Assume I have 5 scenes that I want to bring together at merge 5.\nScene1 0-5 frames\nScene2 6-10\nScene3 11-15\nScene4 16-20 frames\n\nEven with such a simple set up, if I try to time the layers in the timeline, if I move background1, it moves together with all the merge nodes! I have easily spent 30 minutes trying to do that and even after, it seems as though all the background nodes between the 1st and last background nodes don't show up when I scroll through the timeline.\n\n", }
},
ViewInfo = StickyNoteInfo {
Pos = { 2585, 115.5 },
Flags = {
Expanded = true
},
Size = { 361, 349.3 }
},
}
}
}
Offline
User avatar

Bryan Ray

  • Posts: 2491
  • Joined: Mon Nov 28, 2016 5:32 am
  • Location: Los Angeles, CA, USA

Re: Ways to Improve Fusion for Motion Graphics

PostWed May 15, 2019 2:37 pm

First, when you paste your nodes, (or very long blocks of errors from the console) please put them between code tags, like so:

[code]

paste nodes

[/code]

That will reduce the amount of scrolling people have to do in the thread and make it more likely that someone will answer.

Continued in next message...
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

David Kibui

  • Posts: 19
  • Joined: Fri Dec 30, 2016 7:57 am

Re: Ways to Improve Fusion for Motion Graphics

PostWed May 15, 2019 2:45 pm

[quote="Bryan Ray"]First, when you paste your nodes, (or very long blocks of errors from the console) please put them between code tags, like so:

Code: Select all
paste nodes


I have noted that. Thanks!
Offline

Frank Feijen

  • Posts: 167
  • Joined: Tue Dec 13, 2016 10:04 am
  • Location: Vilvoorde, Belgium

Re: Ways to Improve Fusion for Motion Graphics

PostWed May 15, 2019 2:57 pm

There was a small glitch in your comp, have a look at this:
Code: Select all
{
   Tools = ordered() {
      Background2 = Background {
         Inputs = {
            GlobalOut = Input { Value = 25, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 1540, 346.5 } },
      },
      Ellipse1_4 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 1265, 82.5 } },
      },
      Background1 = Background {
         ExtentSet = true,
         Inputs = {
            GlobalOut = Input { Value = 5, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.627202664176499, },
            TopLeftGreen = Input { Value = 0.352, },
            TopLeftBlue = Input { Value = 0.88, },
            EffectMask = Input {
               SourceOp = "Ellipse1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 220, 148.5 } },
      },
      Ellipse1 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 220, 82.5 } },
      },
      Ellipse1_2 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 715, 82.5 } },
      },
      Background1_2 = Background {
         ExtentSet = true,
         Inputs = {
            GlobalIn = Input { Value = 11, },
            GlobalOut = Input { Value = 15, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.88, },
            TopLeftGreen = Input { Value = 0.142364235336982, },
            EffectMask = Input {
               SourceOp = "Ellipse1_2",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 715, 148.5 } },
      },
      Background1_3 = Background {
         ExtentSet = true,
         Inputs = {
            GlobalIn = Input { Value = 16, },
            GlobalOut = Input { Value = 20, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.88, },
            TopLeftBlue = Input { Value = 0.739688605484189, },
            EffectMask = Input {
               SourceOp = "Ellipse1_3",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 990, 148.5 } },
      },
      Background1_4 = Background {
         ExtentSet = true,
         CtrlWZoom = false,
         Inputs = {
            GlobalIn = Input { Value = 21, },
            GlobalOut = Input { Value = 25, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.88, },
            TopLeftGreen = Input { Value = 0.773253445068588, },
            EffectMask = Input {
               SourceOp = "Ellipse1_4",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1265, 148.5 } },
      },
      Merge4 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge3",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background1_4",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1265, 214.5 } },
      },
      Ellipse1_3 = EllipseMask {
         NameSet = true,
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 82.5 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge6",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 214.5 } },
      },
      Merge6 = Merge {
         EnabledRegion = TimeRegion { { Start = -1, End = 999.9999, FrameLength = 1 } },
         Inputs = {
            Background = Input {
               SourceOp = "Background3",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 220, 214.5 } },
      },
      Background1_1 = Background {
         ExtentSet = true,
         Inputs = {
            GlobalIn = Input { Value = 6, },
            GlobalOut = Input { Value = 10, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.88, },
            TopLeftBlue = Input { Value = 0.346761104506733, },
            EffectMask = Input {
               SourceOp = "Ellipse1_1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 440, 148.5 } },
      },
      Ellipse1_1 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 82.5 } },
      },
      Background3 = Background {
         Inputs = {
            GlobalOut = Input { Value = 25, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { -55, 214.5 } },
      },
      Merge3 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background1_3",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 990, 214.5 } },
      },
      Merge2 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background1_2",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 715, 214.5 } },
      },
      Merge5 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Merge4",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1540, 214.5 } },
      },
      Note1 = Note {
         Inputs = {
            Comments = Input { Value = "Assume I have 5 scenes that I want to bring together at merge 5.\nScene1   0-5 frames\nScene2   6-10\nScene3   11-15\nScene4   16-20 frames\n\nEven with such a simple set up, if I try to time the layers in the timeline, if I move background1, it moves together with all the merge nodes! I have easily spent 30 minutes trying to do that and even after, it seems as though all the background nodes between the 1st and last background nodes don't show up when I scroll through the timeline.\n\n", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 1650, 49.5 },
            Flags = {
               Expanded = true
            },
            Size = { 361, 349.3 }
         },
      },
      Scene5 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 1265, 82.5 },
            Size = { 172, 108.556 }
         },
      },
      Scene1 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 220, 82.5 },
            Size = { 172, 108.556 }
         },
      },
      Scene3 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 715, 82.5 },
            Size = { 172, 108.556 }
         },
      },
      Scene4 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 990, 82.5 },
            Size = { 172, 108.556 }
         },
      },
      Scene2 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 440, 82.5 },
            Size = { 172, 108.556 }
         },
      }
   }
}
Offline
User avatar

Bryan Ray

  • Posts: 2491
  • Joined: Mon Nov 28, 2016 5:32 am
  • Location: Los Angeles, CA, USA

Re: Ways to Improve Fusion for Motion Graphics

PostWed May 15, 2019 3:05 pm

Okay, so the first issue here is that Merge1 doesn't have anything in the Background (yellow) input—the first Ellipse is plugged into the EffectMask (blue) input. Thus, the entire Flow is unrenderable due to not having a 'canvas.' Merge requires something in that input, even if it's just black with no alpha, to set the resolution and bit depth.


Now, you cannot think of Fusion like AE. Moving "layers" around in the Timeline is unlikely to do what you want unless they're Loaders. That's the only kind of tool that responds as you'd expect to that. For every other tool, what you want to move is the keyframes, not the node's Global range bar.

Here I've demonstrated five different ways to accomplish what you want. The method you choose is down to your individual style and the needs of your animation:

Code: Select all
{
   Tools = ordered() {
      Ellipse1 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 550, -49.5 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 20, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.627202664176499, },
            TopLeftGreen = Input { Value = 0.352, },
            TopLeftBlue = Input { Value = 0.88, },
            EffectMask = Input {
               SourceOp = "Ellipse1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 550, -16.5 } },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            Alpha = Input { Value = 1, },
            Gain = Input {
               SourceOp = "BrightnessContrast1Gain",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 550, 16.5 } },
      },
      BrightnessContrast1Gain = BezierSpline {
         SplineColor = { Red = 104, Green = 144, Blue = 233 },
         NameSet = true,
         KeyFrames = {
            [5] = { 1, RH = { 5.33, 0.67 }, Flags = { Linear = true } },
            [6] = { 0, LH = { 5.67, 0.33 }, Flags = { Linear = true } }
         }
      },
      ChannelBooleans1 = ChannelBoolean {
         Inputs = {
            Blend = Input {
               SourceOp = "ChannelBooleans1Blend",
               Source = "Value",
            },
            Operation = Input { Value = 12, },
            Background = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 770, 16.5 } },
      },
      ChannelBooleans1Blend = BezierSpline {
         SplineColor = { Red = 205, Green = 205, Blue = 205 },
         NameSet = true,
         KeyFrames = {
            [5] = { 1, RH = { 5.33, 0.67 }, Flags = { Linear = true } },
            [6] = { 0, LH = { 5.67, 0.33 }, RH = { 7.33333333333333, 0 }, Flags = { Linear = true } },
            [10] = { 0, LH = { 8.66666666666667, 0 }, RH = { 10.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
            [11] = { 1, LH = { 10.6666666666667, 0.666666666666667 }, Flags = { Linear = true } }
         }
      },
      Background1_1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 20, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.88, },
            TopLeftBlue = Input { Value = 0.346761104506733, },
            EffectMask = Input {
               SourceOp = "Ellipse1_1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 770, -16.5 } },
      },
      Ellipse1_1 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 770, -49.5 } },
      },
      Scene1 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 550, -78.5 },
            Size = { 172, 170.556 }
         },
      },
      Scene2 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 770, -76.5 },
            Size = { 172, 168.556 }
         },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "ChannelBooleans1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 770, 115.5 } },
      },
      Note2 = Note {
         Inputs = {
            Comments = Input { Value = "BrightnessContrast, with Alpha box checked. Animating Gain to 0 will set all pixels to (0,0,0,0), but the image still \"exists\", so the Merge continues to operate.", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 495, 115.5 },
            Flags = {
               Expanded = true
            },
            Size = { 196, 179.3 }
         },
      },
      Note4 = Note {
         Inputs = {
            Comments = Input { Value = "Animating Blend on the Merge is usually the most intuitive way, in my opinion, but it places animation in the 'main' part of the flow instead of leaving it in the Scene structure, which you may prefer.", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 990, 148.5 },
            Flags = {
               Expanded = true
            },
            Size = { 196, 179.3 }
         },
      },
      Note3 = Note {
         Inputs = {
            Comments = Input { Value = "ChannelBoolean's Clear mode does the same thing, but it's a little counter-intuitive since you have to set Blend to 0 for the image to appear. Also, the Blend control is not in the main control page, so it requires an additional click to set.", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 715, 148.5 },
            Flags = {
               Expanded = true
            },
            Size = { 196, 179.3 }
         },
      },
      Background1_2 = Background {
         Inputs = {
            GlobalOut = Input { Value = 20, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.88, },
            TopLeftGreen = Input { Value = 0.142364235336982, },
            EffectMask = Input {
               SourceOp = "Ellipse1_2",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1045, -16.5 } },
      },
      Merge2 = Merge {
         Inputs = {
            Blend = Input {
               SourceOp = "Merge2Blend",
               Source = "Value",
            },
            Background = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background1_2",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1045, 115.5 } },
      },
      Merge2Blend = BezierSpline {
         SplineColor = { Red = 205, Green = 205, Blue = 205 },
         NameSet = true,
         KeyFrames = {
            [10] = { 0, RH = { 10.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
            [11] = { 1, LH = { 10.6666666666667, 0.666666666666667 }, RH = { 12.3333333333333, 1 }, Flags = { Linear = true } },
            [15] = { 1, LH = { 13.6666666666667, 1 }, RH = { 15.33, 0.67 }, Flags = { Linear = true } },
            [16] = { 0, LH = { 15.67, 0.33 }, Flags = { Linear = true } }
         }
      },
      Ellipse1_2 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 1045, -49.5 } },
      },
      Scene3 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 1045, -75.5 },
            Size = { 172, 167.556 }
         },
      },
      Background4 = Background {
         Inputs = {
            GlobalOut = Input { Value = 20, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1210, 16.5 } },
      },
      Note5 = Note {
         Inputs = {
            Comments = Input { Value = "Dissolving with a 0-alpha Background is a good way of making a switch. Or you could use the Switch Fuse, available in Reactor.", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 1265, 148.5 },
            Flags = {
               Expanded = true
            },
            Size = { 196, 179.3 }
         },
      },
      Background1_3 = Background {
         Inputs = {
            GlobalOut = Input { Value = 20, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftGreen = Input { Value = 0.88, },
            TopLeftBlue = Input { Value = 0.739688605484189, },
            EffectMask = Input {
               SourceOp = "Ellipse1_3",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1320, -16.5 } },
      },
      Dissolve1 = Dissolve {
         Transitions = {
            [0] = "DFTDissolve"
         },
         Inputs = {
            Mix = Input {
               SourceOp = "Dissolve1BackgroundForeground",
               Source = "Value",
            },
            Background = Input {
               SourceOp = "Background1_3",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background4",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1320, 16.5 } },
      },
      Dissolve1BackgroundForeground = BezierSpline {
         SplineColor = { Red = 16, Green = 164, Blue = 235 },
         NameSet = true,
         KeyFrames = {
            [15] = { 1, RH = { 15.33, 0.67 }, Flags = { Linear = true } },
            [16] = { 0, LH = { 15.67, 0.33 }, RH = { 17.3333333333333, 0 }, Flags = { Linear = true } },
            [20] = { 0, LH = { 18.6666666666667, 0 }, RH = { 20.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
            [21] = { 1, LH = { 20.6666666666667, 0.666666666666667 }, Flags = { Linear = true } }
         }
      },
      Merge3 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Dissolve1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1320, 115.5 } },
      },
      Ellipse1_3 = EllipseMask {
         NameSet = true,
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 1320, -49.5 } },
      },
      Scene4 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 1320, -78.5 },
            Size = { 172, 170.556 }
         },
      },
      Note6 = Note {
         Inputs = {
            Comments = Input { Value = "This one uses the BC node to set up the animation, then TimeStretcher puts it into the place it's supposed to go. This is probably the most mograph-friendly way. ", }
         },
         ViewInfo = StickyNoteInfo {
            Pos = { 1540, 148.5 },
            Flags = {
               Expanded = true
            },
            Size = { 196, 179.3 }
         },
      },
      TimeStretcher1 = TimeStretcher {
         Inputs = {
            SourceTime = Input {
               SourceOp = "TimeStretcher1SourceTime",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "BrightnessContrast1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1595, 49.5 } },
      },
      TimeStretcher1SourceTime = BezierSpline {
         SplineColor = { Red = 233, Green = 217, Blue = 243 },
         NameSet = true,
         KeyFrames = {
            [15] = { 0, RH = { 15.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
            [16] = { 1, LH = { 15.6666666666667, 0.666666666666667 }, RH = { 17.3333333333333, 2.33333333333333 }, Flags = { Linear = true } },
            [20] = { 5, LH = { 18.6666666666667, 3.66666666666667 }, RH = { 20.3333333333333, 5.33333333333333 }, Flags = { Linear = true } },
            [21] = { 6, LH = { 20.6666666666667, 5.66666666666667 }, Flags = { Linear = true } }
         }
      },
      Merge4 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge3",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "TimeStretcher1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1595, 115.5 } },
      },
      BrightnessContrast1_1 = BrightnessContrast {
         Locked = true,
         Inputs = {
            Alpha = Input { Value = 1, },
            Gain = Input {
               SourceOp = "BrightnessContrast1_1Gain",
               Source = "Value",
            },
            Input = Input {
               SourceOp = "Background1_4",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1595, 16.5 } },
      },
      BrightnessContrast1_1Gain = BezierSpline {
         SplineColor = { Red = 104, Green = 144, Blue = 233 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
            [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, RH = { 2.33333333333333, 1 }, Flags = { Linear = true } },
            [5] = { 1, LH = { 3.66666666666667, 1 }, RH = { 5.33333333333333, 0.666666666666667 }, Flags = { Linear = true } },
            [6] = { 0, LH = { 5.66666666666667, 0.333333333333333 }, Flags = { Linear = true } }
         }
      },
      Background1_4 = Background {
         Inputs = {
            GlobalOut = Input { Value = 20, },
            Width = Input { Value = 250, },
            Height = Input { Value = 250, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.88, },
            TopLeftGreen = Input { Value = 0.773253445068588, },
            EffectMask = Input {
               SourceOp = "Ellipse1_4",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1595, -16.5 } },
      },
      Ellipse1_4 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.971201317956272, },
            Height = Input { Value = 0.971201317956272, },
         },
         ViewInfo = OperatorInfo { Pos = { 1595, -49.5 } },
      },
      Scene5 = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { 1595, -82.5 },
            Size = { 172, 175.556 }
         },
      },
      Background2 = Background {
         Inputs = {
            GlobalOut = Input { Value = 20, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 1870, 247.5 } },
      },
      Merge5 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Merge4",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1870, 115.5 } },
      }
   }
}


I recommend looking for Tony Gallardo on YouTube. He does Fusion mograph tutorials, and he comes to it from long experience with After Effects. The help I can offer is somewhat limited because I'm exclusively a VFX artist. I hated my mograph classes in school and generally never want to deal with that end of things!

https://www.youtube.com/channel/UCipLMP ... S6L9oPwTOg
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

David Kibui

  • Posts: 19
  • Joined: Fri Dec 30, 2016 7:57 am

Re: Ways to Improve Fusion for Motion Graphics

PostMon May 20, 2019 5:48 pm

Frank Feijen wrote:There was a small glitch in your comp, have a look at this:


Thank you so much for that correction. It is highly highly appreciated and my apologies for the late reply
Offline

David Kibui

  • Posts: 19
  • Joined: Fri Dec 30, 2016 7:57 am

Re: Ways to Improve Fusion for Motion Graphics

PostMon May 20, 2019 6:23 pm

Bryan Ray wrote:Okay, so the first issue here is that Merge1 doesn't have anything in the Background (yellow) input—the first Ellipse is plugged into the EffectMask (blue) input. Thus, the entire Flow is unrenderable due to not having a 'canvas.' Merge requires something in that input, even if it's just black with no alpha, to set the resolution and bit depth.


That was my mistake. I missed that one

Now, you cannot think of Fusion like AE. Moving "layers" around in the Timeline is unlikely to do what you want unless they're Loaders. That's the only kind of tool that responds as you'd expect to that. For every other tool, what you want to move is the keyframes, not the node's Global range bar.


I have discovered that the hard way. This post has given me an opportunity to learn a few key things about Fusion. But if BMD wants to attract more motion graphics users, I think they have to consider optimizing some of the work flow. Make it easier and simpler to achieve common motion graphics activities

Here I've demonstrated five different ways to accomplish what you want. The method you choose is down to your individual style and the needs of your animation:


I have looked at each of them. The more the options the better. Thank you so much for taking your time to demonstrate this. I cannot thank you enough!

I recommend looking for Tony Gallardo on YouTube. He does Fusion mograph tutorials, and he comes to it from long experience with After Effects. The help I can offer is somewhat limited because I'm exclusively a VFX artist. I hated my mograph classes in school and generally never want to deal with that end of things!


I have watched some of his tutorials and I have learnt so much from him but thanks for pointing that that out. I have learnt a lot more from your website especially 3d stuff. PS: I am waiting for your book.

Return to Fusion

Who is online

Users browsing this forum: No registered users and 72 guests