In light of the Coronavirus crisis, please help make sure nothing stands in the way of social distancing in the VFX industry.

This petition asks the MPAA to act accordingly:


Sign the petition on Change.org

Be safe, everyone.

dot-dash curve animation?

Moderator: SecondMan

User avatar
Shem Namo
Fusionista
Posts: 349
Joined: Sun Oct 06, 2019 9:15 pm
Location: North Israel
Real name: David Kohen
Been thanked: 6 times

dot-dash curve animation?

#1

Post by Shem Namo » Wed Mar 25, 2020 12:56 pm

Hi everyone, how are you?

I'm trying to make an animation like this one
I need to make it into a template for easy and frequent use.

I'm trying to make it draw on like a mask paint and have some published points like bSpline

Any ideas?

Thanks in advanced,
I really appreciate it :)


User avatar
SirEdric
Fusionator
Posts: 2262
Joined: Tue Aug 05, 2014 10:04 am
Answers: 9
Real name: Eric Westphal
Been thanked: 28 times
Contact:

Re: dot-dash curve animation?

#2

Post by SirEdric » Wed Mar 25, 2020 1:05 pm

If it were dots instead of lines, that would be straight forward...:-)

Code: Select all

{
	Tools = ordered() {
		Paint1 = Paint {
			CtrlWZoom = false,
			Inputs = {
				Input = Input {
					SourceOp = "Background1_1",
					Source = "Output",
				},
				Paint = Input {
					SourceOp = "PolylineStroke1",
					Source = "Out",
				},
			},
			ViewInfo = OperatorInfo { Pos = { -495, 478.5 } },
		},
		PolylineStroke1 = PolylineStroke {
			Points = {
			},
			IsThreaded = false,
			Brushes = { "SoftBrush" },
			ApplyModes = { "PaintApplyColor" },
			CtrlWZoom = false,
			Inputs = {
				BrushControls = Input { Value = 1, },
				StrokeControls = Input { Value = 1, },
				WriteOnEnd = Input {
					SourceOp = "PolylineStroke1WriteOnEnd",
					Source = "Value",
				},
				Spacing = Input { Value = 1, },
				Polyline = Input {
					Value = Polyline {
						Points = {
							{ Linear = true, X = -0.338874667882919, Y = -0.409090906381607, RX = 0.0277067307265315, RY = 0.124242423339324 },
							{ X = -0.255754470825195, Y = -0.036363635212183, LX = -0.0230178979351698, LY = -0.0522727261212737, RX = 0.0320535004088548, RY = 0.0727922181608133 },
							{ X = -0.131713554263115, Y = 0.131818175315857, LX = -0.0281329916032684, LY = -0.00227273377505195, RX = 0.0731736256622707, RY = 0.00591135748486633 },
							{ X = 0.0869565233588219, Y = 0.170454546809196, LX = -0.0524296658994902, LY = 0.0204545468091962, RX = 0.075372435356418, RY = -0.0294052800198366 },
							{ X = 0.314577996730804, Y = 0.0954545438289642, LX = -0.0115089597909347, LY = -0.00681818344376306 }
						}
					},
				},
			},
		},
		PolylineStroke1WriteOnEnd = BezierSpline {
			SplineColor = { Red = 249, Green = 211, Blue = 145 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 10, 0.333333333333333 }, Flags = { Linear = true } },
				[30] = { 1, LH = { 20, 0.666666666666667 }, Flags = { Linear = true } }
			}
		},
		Background1_1 = Background {
			Inputs = {
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftAlpha = Input { Value = 0, },
			},
			ViewInfo = OperatorInfo { Pos = { -605, 478.5 } },
		}
	}
}
Added in 2 minutes 55 seconds:
Or you could 'fake' lines...:-)

Code: Select all

{
	Tools = ordered() {
		Background1_1 = Background {
			Inputs = {
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftAlpha = Input { Value = 0, },
			},
			ViewInfo = OperatorInfo { Pos = { -605, 478.5 } },
		},
		Paint1 = Paint {
			CtrlWZoom = false,
			Inputs = {
				Input = Input {
					SourceOp = "Background1_1",
					Source = "Output",
				},
				Paint = Input {
					SourceOp = "PolylineStroke1",
					Source = "Out",
				},
			},
			ViewInfo = OperatorInfo { Pos = { -385, 445.5 } },
		},
		PolylineStroke1 = PolylineStroke {
			Points = {
			},
			IsThreaded = false,
			Brushes = {
				"SoftBrush",
				"CircleBrush",
				"RectBrush"
			},
			ApplyModes = { "PaintApplyColor" },
			CtrlWZoom = false,
			Inputs = {
				BrushControls = Input { Value = 1, },
				["SoftBrush.Size"] = Input { Value = 0.0266, },
				["SoftBrush.Softness"] = Input { Value = 0.001, },
				StrokeControls = Input { Value = 1, },
				Spacing = Input { Value = 1.607, },
				Polyline = Input {
					Value = Polyline {
						Points = {
							{ Linear = true, X = -0.338874667882919, Y = -0.409090906381607, RX = 0.0277067307265315, RY = 0.124242423339324 },
							{ X = -0.255754470825195, Y = -0.036363635212183, LX = -0.0230178979351698, LY = -0.0522727261212737, RX = 0.0320535004088548, RY = 0.0727922181608133 },
							{ X = -0.131713554263115, Y = 0.131818175315857, LX = -0.0281329916032684, LY = -0.00227273377505195, RX = 0.0731736256622707, RY = 0.00591135748486633 },
							{ X = 0.0869565233588219, Y = 0.170454546809196, LX = -0.0524296658994902, LY = 0.0204545468091962, RX = 0.075372435356418, RY = -0.0294052800198366 },
							{ X = 0.314577996730804, Y = 0.0954545438289642, LX = -0.0115089597909347, LY = -0.00681818344376306 }
						}
					},
				},
			},
		},
		Paint1_1 = Paint {
			Inputs = {
				Input = Input {
					SourceOp = "Background1_1",
					Source = "Output",
				},
				Paint = Input {
					SourceOp = "PolylineStroke1_1",
					Source = "Out",
				},
			},
			ViewInfo = OperatorInfo { Pos = { -385, 544.5 } },
		},
		PolylineStroke1_1 = PolylineStroke {
			Points = {
			},
			IsThreaded = false,
			Brushes = { "SoftBrush" },
			ApplyModes = { "PaintApplyColor" },
			CtrlWZoom = false,
			Inputs = {
				BrushControls = Input { Value = 1, },
				["SoftBrush.Size"] = Input { Value = 0.0061, },
				StrokeControls = Input { Value = 1, },
				WriteOnEnd = Input {
					SourceOp = "PolylineStroke1_1WriteOnEnd",
					Source = "Value",
				},
				Spacing = Input { Value = 0.2, },
				Polyline = Input {
					Value = Polyline {
						Points = {
							{ Linear = true, X = -0.338874667882919, Y = -0.409090906381607, RX = 0.0277067307265315, RY = 0.124242423339324 },
							{ X = -0.255754470825195, Y = -0.036363635212183, LX = -0.0230178979351698, LY = -0.0522727261212737, RX = 0.0320535004088548, RY = 0.0727922181608133 },
							{ X = -0.131713554263115, Y = 0.131818175315857, LX = -0.0281329916032684, LY = -0.00227273377505195, RX = 0.0731736256622707, RY = 0.00591135748486633 },
							{ X = 0.0869565233588219, Y = 0.170454546809196, LX = -0.0524296658994902, LY = 0.0204545468091962, RX = 0.075372435356418, RY = -0.0294052800198366 },
							{ X = 0.314577996730804, Y = 0.0954545438289642, LX = -0.0115089597909347, LY = -0.00681818344376306 }
						}
					},
				},
			},
		},
		PolylineStroke1_1WriteOnEnd = BezierSpline {
			SplineColor = { Red = 249, Green = 211, Blue = 145 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 10, 0.333333333333333 }, Flags = { Linear = true } },
				[30] = { 1, LH = { 20, 0.666666666666667 }, Flags = { Linear = true } }
			}
		},
		BrightnessContrast4 = BrightnessContrast {
			Inputs = {
				Alpha = Input { Value = 1, },
				Gain = Input { Value = 0, },
				Input = Input {
					SourceOp = "Paint1_1",
					Source = "Output",
				},
				EffectMask = Input {
					SourceOp = "Paint1",
					Source = "Output",
				}
			},
			ViewInfo = OperatorInfo { Pos = { -275, 544.5 } },
		}
	}
}

User avatar
Shem Namo
Fusionista
Posts: 349
Joined: Sun Oct 06, 2019 9:15 pm
Location: North Israel
Real name: David Kohen
Been thanked: 6 times

Re: dot-dash curve animation?

#3

Post by Shem Namo » Wed Mar 25, 2020 1:14 pm

Thanks @SirEdric ,
This looks good!

Is there any way I can make a paint node get it's path from a bSpline node?
I know it's a stretch, but it's worth asking :)

Thanks again,

User avatar
SirEdric
Fusionator
Posts: 2262
Joined: Tue Aug 05, 2014 10:04 am
Answers: 9
Real name: Eric Westphal
Been thanked: 28 times
Contact:

Re: dot-dash curve animation?

#4

Post by SirEdric » Wed Mar 25, 2020 1:21 pm

Of course there is. It's Fusion....:-)
Create a paint
Add a Polyline(!) Stroke
Open the paint-modifier (the PolylineStroke in this case)
Where it says 'Right click here for shape animation' do exactly that and select -> Connect To -> bSpline01 -> Polyline.
Tadaa...:-)

User avatar
Shem Namo
Fusionista
Posts: 349
Joined: Sun Oct 06, 2019 9:15 pm
Location: North Israel
Real name: David Kohen
Been thanked: 6 times

Re: dot-dash curve animation?

#5

Post by Shem Namo » Wed Mar 25, 2020 1:34 pm

Thanks @SirEdric , I'll definitely try this out!

User avatar
Shem Namo
Fusionista
Posts: 349
Joined: Sun Oct 06, 2019 9:15 pm
Location: North Israel
Real name: David Kohen
Been thanked: 6 times

Re: dot-dash curve animation?

#6

Post by Shem Namo » Fri Mar 27, 2020 2:31 am

Thanks @SirEdric ,
Here's what I got so far.

I just have one more question:
is there a way to make a polygon arrow,
for it to be at the head of the path?

Is there a way to link the center to the bspline,
so that when I move the points of the bSpline
the start and end points on the animation get affected automatically?

Something like the one in the video.

Thanks again!

Code: Select all

{
	Tools = ordered() {
		Solid_2 = Background {
			NameSet = true,
			Inputs = {
				EffectMask = Input {
					SourceOp = "Path_3",
					Source = "Mask",
				},
				GlobalOut = Input { Value = 71, },
				Width = Input { Value = 1280, },
				Height = Input { Value = 720, },
				UseFrameFormatSettings = Input { Value = 1, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftRed = Input { Value = 1, },
				TopLeftGreen = Input { Value = 1, },
				TopLeftBlue = Input { Value = 1, },
				Gradient = Input {
					Value = Gradient {
						Colors = {
							[0] = { 1, 1, 1, 1 },
							[1] = { 1, 1, 1, 1 }
						}
					},
				},
			},
			ViewInfo = OperatorInfo { Pos = { -2090, 49.5 } },
		},
		Gradient_Apply_2 = Merge {
			NameSet = true,
			Inputs = {
				Background = Input {
					SourceOp = "Trail_2",
					Source = "Output",
				},
				Foreground = Input {
					SourceOp = "Gradient_2",
					Source = "Output",
				},
				Operator = Input { Value = FuID { "In" }, },
				PerformDepthMerge = Input { Value = 0, },
			},
			ViewInfo = OperatorInfo { Pos = { -1980, 82.5 } },
		},
		Instance_Solid_1 = Background {
			NameSet = true,
			SourceOp = "Solid_2",
			Inputs = {
				EffectMask = Input {
					SourceOp = "Instance_Path_1",
					Source = "Mask",
				},
				SettingsNest = Input { },
				ImageNest = Input { },
				["Gamut.ColorSpaceNest"] = Input { },
				["Gamut.GammaSpaceNest"] = Input { },
				BackgroundNest = Input { },
				CommentsNest = Input { },
				FrameRenderScriptNest = Input { },
				StartRenderScripts = Input { },
				EndRenderScripts = Input { },
			},
			ViewInfo = OperatorInfo { Pos = { -1760, 49.5 } },
		},
		Instance_Path_1 = BSplineMask {
			DrawMode = "InsertAndModify",
			DrawMode2 = "InsertAndModify",
			NameSet = true,
			SourceOp = "Path_3",
			Inputs = {
				EffectMask = Input { },
				SettingsNest = Input { },
				BorderWidth = Input { Value = 0.0294, },
				JoinStyle = Input { Value = 0, },
				CapStyle = Input { Value = 0, },
				WriteLength = Input { Value = 0.0056, },
				Polyline2 = Input {
					Value = BSplinePolyline {
						Order = 4,
						Type = "Tensioned",
						Knots = { }
					},
					Disabled = true,
				},
				["ShapeRasterizer.Nest"] = Input { },
				CommentsNest = Input { },
				FrameRenderScriptNest = Input { },
				StartRenderScripts = Input { },
				EndRenderScripts = Input { },
			},
			ViewInfo = OperatorInfo { Pos = { -1870, 49.5 } },
		},
		Path_3Position = BezierSpline {
			SplineColor = { Red = 237, Green = 132, Blue = 6 },
			CtrlWShown = false,
			NameSet = true,
			KeyFrames = {
				[3] = { 0, RH = { 7.57746478873239, 0 } },
				[68] = { 0.976, LH = { 46.3333333333333, 0.976 } }
			}
		},
		Path_3 = BSplineMask {
			DrawMode = "InsertAndModify",
			DrawMode2 = "InsertAndModify",
			NameSet = true,
			Inputs = {
				Filter = Input { Value = FuID { "Fast Gaussian" }, },
				BorderWidth = Input { Value = 0.0062, },
				Solid = Input { Value = 0, },
				JoinStyle = Input { Value = 0, },
				WritePosition = Input {
					SourceOp = "Path_3Position",
					Source = "Value",
				},
				WriteLength = Input {
					SourceOp = "Path_3Length",
					Source = "Value",
				},
				MaskWidth = Input { Value = 1280, },
				MaskHeight = Input { Value = 720, },
				PixelAspect = Input { Value = { 1, 1 }, },
				ClippingMode = Input { Value = FuID { "None" }, },
				Polyline = Input {
					Value = BSplinePolyline {
						Points = {
							{ X = -0.209786, Y = -0.2275255535972, PublishID = "Point0" },
							{ X = -0.14085, Y = -0.0187181360583, PublishID = "Point1" },
							{ X = 0.117221, Y = -0.0257271366073, PublishID = "Point2" },
							{ X = 0.213241, Y = -0.192147855735, PublishID = "Point3" }
						},
						Order = 4,
						Type = "Tensioned",
						Knots = { 0, 0, 0, 0, 1, 1, 1, 1 }
					},
				},
				Polyline2 = Input {
					Value = BSplinePolyline {
						Order = 4,
						Type = "Tensioned",
						Knots = { }
					},
					Disabled = true,
				},
				Point0 = Input { Value = { 0.290214, 0.2724744464028 }, },
				Point1 = Input { Value = { 0.35915, 0.4812818639417 }, },
				Point2 = Input { Value = { 0.617221, 0.4742728633927 }, },
				Point3 = Input { Value = { 0.713241, 0.307852144265 }, },
			},
			ViewInfo = OperatorInfo { Pos = { -2200, 49.5 } },
		},
		Path_3Length = BezierSpline {
			SplineColor = { Red = 141, Green = 167, Blue = 243 },
			CtrlWShown = false,
			NameSet = true,
			KeyFrames = {
				[3] = { 0.0205, RH = { 10.6666666666667, 0.0205 } },
				[26] = { 0.009, LH = { 18.3268100364336, 0.0149621304218257 }, RH = { 28.9635703752412, 0.00669728194201594 } },
				[35] = { 0, LH = { 32.03, 0 }, RH = { 46, 0 } },
				[68] = { 0.0205, LH = { 57, 0.0205 } }
			}
		},
		Trail_2 = Fuse.Duplicate {
			NameSet = true,
			Inputs = {
				Copies = Input {
					SourceOp = "Trail_2Copies",
					Source = "Value",
				},
				TimeOffset = Input { Value = -2.66, },
				RandomSeed = Input { Value = 26024, },
				Background = Input {
					SourceOp = "Solid_2",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { -1980, 49.5 } },
		},
		Trail_2Copies = BezierSpline {
			SplineColor = { Red = 38, Green = 236, Blue = 71 },
			CtrlWShown = false,
			NameSet = true,
			KeyFrames = {
				[34] = { 20, RH = { 46, 20 } },
				[70] = { 2, LH = { 58, 2 } }
			}
		},
		Gradient_2 = Background {
			NameSet = true,
			Inputs = {
				GlobalOut = Input { Value = 71, },
				Width = Input { Value = 1280, },
				Height = Input { Value = 720, },
				UseFrameFormatSettings = Input { Value = 1, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				Type = Input { Value = FuID { "Gradient" }, },
				TopLeftRed = Input { Value = 1, },
				Gradient = Input {
					Value = Gradient {
						Colors = {
							[0] = { 1, 0, 0, 1 },
							[1] = { 0.128, 0, 1, 1 }
						}
					},
				},
			},
			ViewInfo = OperatorInfo { Pos = { -2090, 82.5 } },
		},
		Merge1_1 = Merge {
			Inputs = {
				Background = Input {
					SourceOp = "Gradient_Apply_2",
					Source = "Output",
				},
				Foreground = Input {
					SourceOp = "Instance_Solid_1",
					Source = "Output",
				},
				PerformDepthMerge = Input { Value = 0, },
			},
			ViewInfo = OperatorInfo { Pos = { -1760, 82.5 } },
		},
		Perspective_2 = DVE {
			NameSet = true,
			Inputs = {
				AlphaMode = Input { Value = 2, },
				Input = Input {
					SourceOp = "Merge1_1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { -1595, 82.5 } },
		},
		Opacity_Animation_2 = BrightnessContrast {
			CtrlWZoom = false,
			NameSet = true,
			Inputs = {
				Alpha = Input { Value = 1, },
				Gain = Input {
					SourceOp = "Opacity_Animation_2Gain",
					Source = "Value",
				},
				Input = Input {
					SourceOp = "Perspective_2",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { -1485, 82.5 } },
		},
		Opacity_Animation_2Gain = BezierSpline {
			SplineColor = { Red = 104, Green = 144, Blue = 233 },
			CtrlWShown = false,
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 1, 0 } },
				[3] = { 1, LH = { 2.00010001659393, 1 }, RH = { 24.6666666666667, 1 } },
				[68] = { 1, LH = { 46.3333333333333, 1 }, RH = { 68.9998999834061, 1 }, Flags = { Linear = true } },
				[71] = { 0, LH = { 70, 0 } }
			}
		}
	},
	ActiveTool = "Opacity_Animation_2"
}