Mon Aug 04, 2025 9:33 pm
The most straight forward way to get something similar is to use a Tween node like this, which if you compare to a dissolve would be a lot better, assuming you can get the frames similar enough.
- Code: Select all
{
Tools = ordered() {
Text1 = TextPlus {
Inputs = {
GlobalOut = Input { Value = 500, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
StyledText = Input { Value = "50", },
Font = Input { Value = "Open Sans", },
Style = Input { Value = "Bold", },
Size = Input { Value = 0.3, },
VerticalJustificationNew = Input { Value = 3, },
HorizontalJustificationNew = Input { Value = 3, },
},
ViewInfo = OperatorInfo { Pos = { 50, 44.3333 } },
},
Text2_1 = TextPlus {
Inputs = {
GlobalOut = Input { Value = 500, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
StyledText = Input { Value = "SO", },
Font = Input { Value = "Open Sans", },
Style = Input { Value = "Bold", },
Size = Input { Value = 0.3, },
VerticalJustificationNew = Input { Value = 3, },
HorizontalJustificationNew = Input { Value = 3, },
},
ViewInfo = OperatorInfo { Pos = { 296.667, 38.2728 } },
},
Text1_1 = TextPlus {
Inputs = {
GlobalOut = Input { Value = 500, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
StyledText = Input { Value = "50", },
Font = Input { Value = "Open Sans", },
Style = Input { Value = "Bold", },
Size = Input { Value = 0.3, },
VerticalJustificationNew = Input { Value = 3, },
HorizontalJustificationNew = Input { Value = 3, },
},
ViewInfo = OperatorInfo { Pos = { 298, 74.6364 } },
},
Dissolve1 = Dissolve {
Transitions = {
[0] = "DFTDissolve"
},
Inputs = {
Mix = Input {
SourceOp = "Dissolve1BackgroundForeground",
Source = "Value",
},
Background = Input {
SourceOp = "Text1_1",
Source = "Output",
},
Foreground = Input {
SourceOp = "Text2_1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 412, 74.6364 } },
},
Dissolve1BackgroundForeground = BezierSpline {
SplineColor = { Red = 16, Green = 164, Blue = 235 },
CtrlWZoom = false,
NameSet = true,
KeyFrames = {
[0] = { 0, RH = { 16.6666666666667, 0 }, Flags = { Linear = true } },
[50] = { 0, LH = { 33.3333333333333, 0 }, RH = { 50.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
[51] = { 1, LH = { 50.6666666666667, 0.666666666666667 }, RH = { 77.3333333333333, 1 }, Flags = { Linear = true } },
[130] = { 1, LH = { 103.666666666667, 1 }, Flags = { Linear = true } }
}
},
Text2 = TextPlus {
Inputs = {
GlobalOut = Input { Value = 500, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
StyledText = Input { Value = "SO", },
Font = Input { Value = "Open Sans", },
Style = Input { Value = "Bold", },
Size = Input { Value = 0.3, },
VerticalJustificationNew = Input { Value = 3, },
HorizontalJustificationNew = Input { Value = 3, },
},
ViewInfo = OperatorInfo { Pos = { 49.3333, 77.0606 } },
},
Tween1 = Dimension.Tween {
Inputs = {
Interpolation = Input {
SourceOp = "Tween1Interpolation",
Source = "Value",
},
OpticalFlowOptionsNest = Input { Value = 1, },
Image0 = Input {
SourceOp = "Text1",
Source = "Output",
},
Image1 = Input {
SourceOp = "Text2",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 162, 77.0606 } },
},
Tween1Interpolation = BezierSpline {
SplineColor = { Red = 137, Green = 74, Blue = 235 },
CtrlWZoom = false,
NameSet = true,
KeyFrames = {
[0] = { 0, RH = { 16.6666666666667, 0 }, Flags = { Linear = true } },
[50] = { 0, LH = { 33.3333333333333, 0 }, RH = { 60, 0.333333333333333 }, Flags = { Linear = true } },
[80] = { 1, LH = { 70, 0.666666666666667 }, RH = { 96.6666666666667, 1 }, Flags = { Linear = true } },
[130] = { 1, LH = { 113.333333333333, 1 }, Flags = { Linear = true } }
}
},
OpticalFlow1 = Dimension.OpticalFlow {
Inputs = {
Input = Input {
SourceOp = "Dissolve1",
Source = "Output",
},
["Advanced.Advanced"] = Input { Value = 1, },
},
ViewInfo = OperatorInfo { Pos = { 519.333, 74.6364 } },
},
TimeStretcher1 = TimeStretcher {
Inputs = {
SourceTime = Input {
SourceOp = "TimeStretcher1SourceTime",
Source = "Value",
},
InterpolateBetweenFrames = Input { Value = 2, },
SampleSpread = Input { Disabled = true, },
Input = Input {
SourceOp = "OpticalFlow1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 626, 74.6364 } },
},
TimeStretcher1SourceTime = BezierSpline {
SplineColor = { Red = 233, Green = 217, Blue = 243 },
CtrlWZoom = false,
KeyFrames = {
[0] = { 0, RH = { 16.6666666666667, 16.6666666666667 }, Flags = { Linear = true } },
[50] = { 50, LH = { 33.3333333333333, 33.3333333333333 }, RH = { 60, 50.3333333333333 }, Flags = { Linear = true } },
[80] = { 51, LH = { 70, 50.6666666666667 }, RH = { 96.6666666666667, 67.6666666666667 }, Flags = { Linear = true } },
[130] = { 101, LH = { 113.333333333333, 84.3333333333333 }, Flags = { Linear = true } }
}
},
Text2_1_1 = TextPlus {
CtrlWZoom = false,
Inputs = {
GlobalOut = Input { Value = 500, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
StyledText = Input { Value = "SO", },
Font = Input { Value = "Open Sans", },
Style = Input { Value = "Bold", },
Size = Input { Value = 0.3, },
VerticalJustificationNew = Input { Value = 3, },
HorizontalJustificationNew = Input { Value = 3, },
},
ViewInfo = OperatorInfo { Pos = { 788.667, 34.6364 } },
},
Text1_1_1 = TextPlus {
Inputs = {
GlobalOut = Input { Value = 500, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
StyledText = Input { Value = "50", },
Font = Input { Value = "Open Sans", },
Style = Input { Value = "Bold", },
Size = Input { Value = 0.3, },
VerticalJustificationNew = Input { Value = 3, },
HorizontalJustificationNew = Input { Value = 3, },
},
ViewInfo = OperatorInfo { Pos = { 791.334, 68.5756 } },
},
Dissolve1_1 = Dissolve {
Transitions = {
[0] = "DFTDissolve"
},
CtrlWZoom = false,
Inputs = {
Mix = Input {
SourceOp = "Dissolve1_1BackgroundForeground",
Source = "Value",
},
Background = Input {
SourceOp = "Text1_1_1",
Source = "Output",
},
Foreground = Input {
SourceOp = "Text2_1_1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 898, 68.5758 } },
},
Dissolve1_1BackgroundForeground = BezierSpline {
SplineColor = { Red = 16, Green = 164, Blue = 235 },
CtrlWZoom = false,
NameSet = true,
KeyFrames = {
[0] = { 0, RH = { 16.6666666666667, 0 }, Flags = { Linear = true } },
[50] = { 0, LH = { 33.3333333333333, 0 }, RH = { 60, 0.333333333333333 }, Flags = { Linear = true } },
[80] = { 1, LH = { 70, 0.666666666666667 }, RH = { 96.6666666666667, 1 }, Flags = { Linear = true } },
[130] = { 1, LH = { 113.333333333333, 1 }, Flags = { Linear = true } }
}
}
},
ActiveTool = "Dissolve1_1"
}
Obviously you would have video clips and you would need to time them to whatever frames are most suitable/similar. I have yet to use Speed Warp or Smooth Cut but I guess they are similar to Avid's so called FluidMorph.
You can also use a TimeStretcher which I think is the same thing but a bit more fiddly to set up for this sort of thing. There is also a method using the Stereo tools at about 7 minutes in, which I found caused my brain some amount of pain. It may be slightly superior but I guess the similarity of the two input frames is the most significant factor.
ASUS Z890-PLUS WIFI, Intel Core Ultra 7 265K bits Arrow Lake, NVIDIA GeForce RTX 5060 8GB, 96GB ram, Linux Mint 22.2, DaVinci Resolve Studio 20.2.3, Blackmagic Fusion Studio 20.2.3