Pixel Spread

Moderator: SecondMan

bowserlm
Fusionista
Posts: 321
Joined: Sat Apr 28, 2018 3:44 pm
Been thanked: 4 times

Pixel Spread

#1

Post by bowserlm » Fri Jan 11, 2019 3:39 pm

Is there a Macro or a tool to do this as demonstrated in the video?



I'm sure most of you know exactly what pixel spread refers to, but to be clear I'm not looking for a way to color edges, or extend the edge colors with an Alpha Divide technique, but to actually distort the edges based on a matte to be able to squeeze in or out based on a matte and the vectors derived by the matte edge.

This technique is very similar to the Vector Blur that I posted about a while back. We still never really landed too closely on a technique that is similar to what is happening in the After Effects demonstration.

viewtopic.php?f=16&t=2201&hilit=vector+blur

bowserlm
Fusionista
Posts: 321
Joined: Sat Apr 28, 2018 3:44 pm
Been thanked: 4 times

Re: Pixel Spread

#2

Post by bowserlm » Sat Jan 12, 2019 12:28 pm

Here's a gif demonstrating what can be achieved with the Sapphire S_Distort, and as you can see it's a pretty useful technique.

I suspect there isn't anything happening under the hood that Fusion couldn't already do with the right recipe.



User avatar
theotheo
Fusionista
Posts: 302
Joined: Thu Aug 07, 2014 8:35 am
Been thanked: 10 times

Re: Pixel Spread

#3

Post by theotheo » Sat Jan 12, 2019 12:59 pm

To quote myself from the previous thread :
theotheo wrote:
Fri Jun 01, 2018 12:44 am
get the slope of the gradient image, use that as vectors to push pull things in/out. thats what that youtube clip appear to be doing...

bowserlm
Fusionista
Posts: 321
Joined: Sat Apr 28, 2018 3:44 pm
Been thanked: 4 times

Re: Pixel Spread

#4

Post by bowserlm » Sat Jan 12, 2019 1:00 pm

so what would be the nodes used to achieve that

bowserlm
Fusionista
Posts: 321
Joined: Sat Apr 28, 2018 3:44 pm
Been thanked: 4 times

Re: Pixel Spread

#5

Post by bowserlm » Sat Jan 12, 2019 9:00 pm

for anyone who is curious, we cracked the case

Code: Select all

{
	Tools = ordered() {
		Background3 = Background {
			Inputs = {
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftBlue = Input { Value = 1, },
			},
			ViewInfo = OperatorInfo { Pos = { 1100, -49.5 } },
		},
		Merge1 = Merge {
			Inputs = {
				Background = Input {
					SourceOp = "Background4",
					Source = "Output",
				},
				Foreground = Input {
					SourceOp = "Background3",
					Source = "Output",
				},
				PerformDepthMerge = Input { Value = 0, },
				EffectMask = Input {
					SourceOp = "Polygon1",
					Source = "Mask",
				}
			},
			ViewInfo = OperatorInfo { Pos = { 1100, 115.5 } },
		},
		Displace1 = Displace {
			Inputs = {
				Type = Input { Value = 1, },
				XRefraction = Input { Value = 0.438, },
				YRefraction = Input {
					Value = 0.438,
					Expression = "XRefraction",
				},
				RefractionStrength = Input { Value = -2, },
				Input = Input {
					SourceOp = "Merge1",
					Source = "Output",
				},
				Foreground = Input {
					SourceOp = "BrightnessContrast1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 1100, 178 } },
		},
		Polygon1 = PolylineMask {
			DrawMode = "InsertAndModify",
			DrawMode2 = "InsertAndModify",
			Inputs = {
				MaskWidth = Input { Value = 1920, },
				MaskHeight = Input { Value = 1080, },
				PixelAspect = Input { Value = { 1, 1 }, },
				ClippingMode = Input { Value = FuID { "None" }, },
				Polyline = Input {
					SourceOp = "Polygon1Polyline",
					Source = "Value",
				},
				Polyline2 = Input {
					Value = Polyline {
					},
					Disabled = true,
				},
			},
			ViewInfo = OperatorInfo { Pos = { 990, 115.5 } },
		},
		Polygon1Polyline = BezierSpline {
			SplineColor = { Red = 173, Green = 255, Blue = 47 },
			NameSet = true,
			KeyFrames = {
				[291] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
						Closed = true,
						Points = {
							{ Linear = true, X = -0.075370118021965, Y = 0.0837320610880852, LX = -0.0702108591794968, LY = 0.0011961708466212, RX = 0.0244504251638941, RY = 0.116028706910032 },
							{ Linear = true, X = -0.00201884261332452, Y = 0.431818187236786, LX = -0.0244504251638941, LY = -0.116028706910032, RX = 0.0260206370846569, RY = -0.105661883783873 },
							{ Linear = true, X = 0.0760430693626404, Y = 0.114832535386086, LX = -0.0260206370846569, LY = 0.105661883783873, RX = 0.0596680123210221, RY = 0.00079744833222987 },
							{ Linear = true, X = 0.255047112703323, Y = 0.117224879562855, LX = -0.0596680123210221, LY = -0.00079744833222987, RX = -0.0556303296269938, RY = -0.0562200954204731 },
							{ Linear = true, X = 0.0881561264395714, Y = -0.0514354072511196, LX = 0.0556303296269938, LY = 0.0562200954204731, RX = 0.0347689538157911, RY = -0.10167464096414 },
							{ Linear = true, X = 0.192462980747223, Y = -0.356459319591522, LX = -0.0347689538157911, LY = 0.10167464096414, RX = -0.0612382210386661, RY = 0.0745613999914325 },
							{ Linear = true, X = 0.00874831806868315, Y = -0.132775112986565, LX = 0.0612382210386661, LY = -0.0745613999914325, RX = -0.049125168382697, RY = -0.0841307837094226 },
							{ Linear = true, X = -0.13862718641758, Y = -0.385167449712753, LX = 0.049125168382697, LY = 0.0841307837094226, RX = 0.0248990576528765, RY = 0.103668256762305 },
							{ Linear = true, X = -0.0639300122857094, Y = -0.0741626769304276, LX = -0.0248990576528765, LY = -0.103668256762305, RX = -0.0740242265014436, RY = 0.053827750364369 },
							{ Linear = true, X = -0.286002695560455, Y = 0.0873205736279488, LX = 0.0740242265014436, LY = -0.053827750364369, RX = 0.0702108591794968, RY = -0.0011961708466212 }
						}
					} }
			}
		},
		BrightnessContrast1 = BrightnessContrast {
			Inputs = {
				Brightness = Input { Value = -0.5, },
				Input = Input {
					SourceOp = "ColorSpace1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 965, 178 } },
		},
		Background4 = Background {
			Inputs = {
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftRed = Input { Value = 1, },
				TopLeftGreen = Input { Value = 1, },
				TopLeftBlue = Input { Value = 1, },
			},
			ViewInfo = OperatorInfo { Pos = { 990, -49.5 } },
		},
		ColorSpace1 = ColorSpace {
			Inputs = {
				ColorSpaceConversion = Input { Value = 2, },
				ColorType = Input { Value = 6, },
				Input = Input {
					SourceOp = "CreateBumpMap1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 857, 178 } },
		},
		CreateBumpMap1 = CreateBumpMap {
			Inputs = {
				Input = Input {
					SourceOp = "Merge2",
					Source = "Output",
				},
				HeightScale = Input { Value = 51.28, },
				BumpmapTextureDepth = Input { Value = 4, },
			},
			ViewInfo = OperatorInfo { Pos = { 733, 178 } },
		},
		Background2 = Background {
			Inputs = {
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				Depth = Input { Value = 4, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftRed = Input { Value = 1, },
				TopLeftGreen = Input { Value = 1, },
				TopLeftBlue = Input { Value = 1, },
			},
			ViewInfo = OperatorInfo { Pos = { 567, 231 } },
		},
		Merge2 = Merge {
			Inputs = {
				Background = Input {
					SourceOp = "Background2",
					Source = "Output",
				},
				Foreground = Input {
					SourceOp = "Blur1",
					Source = "Output",
				},
				PerformDepthMerge = Input { Value = 0, },
			},
			ViewInfo = OperatorInfo { Pos = { 567, 178 } },
		},
		Blur1 = Blur {
			CtrlWZoom = false,
			Inputs = {
				XBlurSize = Input { Value = 37.6, },
				Input = Input {
					SourceOp = "Background1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 434, 178 } },
		},
		Background1 = Background {
			Inputs = {
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				Depth = Input { Value = 4, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				EffectMask = Input {
					SourceOp = "Polygon1",
					Source = "Mask",
				}
			},
			ViewInfo = OperatorInfo { Pos = { 302, 178 } },
		}
	}
}
Added in 30 seconds:

User avatar
ShadowMaker SdR
Fusionista
Posts: 614
Joined: Sun Sep 21, 2014 6:17 am
Answers: 2
Been thanked: 13 times

Re: Pixel Spread

#6

Post by ShadowMaker SdR » Sat Jan 12, 2019 11:48 pm

That is really cool. Well done!

User avatar
SecondMan
Site Admin
Posts: 3383
Joined: Thu Jul 31, 2014 5:31 pm
Answers: 2
Location: Vancouver, Canada
Been thanked: 70 times
Contact:

Re: Pixel Spread

#7

Post by SecondMan » Sun Jan 13, 2019 11:38 pm

Sweet, thanks for sharing!

Next step, package it nicely and prep your first Reactor submission ;)