Vector Blur

Moderator: SecondMan

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

Vector Blur

#1

Post by bowserlm » Thu May 31, 2018 12:26 pm

Is there something like the equivalent of After Effects' Vector Blur?

here it is demonstrated.


I also came across this video where he has the AE Vector Blur in Fusion. Is such a thing still possible?


I know Krokodove has something called "Vector Blur" but it doesn't seem to do the thing I'm looking for.

I know the Sapphire S_Distort does something quite similar but is there anything native in Fusion?

User avatar
SirEdric
Fusionator
Posts: 1583
Joined: Tue Aug 05, 2014 10:04 am
Been thanked: 52 times
Contact:

Re: Vector Blur

#2

Post by SirEdric » Thu May 31, 2018 12:37 pm

Yes. It's called "Vector Motion Blur"....:-)

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

Re: Vector Blur

#3

Post by bowserlm » Thu May 31, 2018 12:47 pm

No I'm not looking for a motion blur.

Vector Blur is an effect that will blur in the direction of a vector that it derives from the image, which can be used in all kinds of ways to create organic looks, or to help smoosh particles together to give them a more organic look, etc.

User avatar
ShadowMaker SdR
Fusionista
Posts: 582
Joined: Sun Sep 21, 2014 6:17 am
Been thanked: 6 times

Re: Vector Blur

#4

Post by ShadowMaker SdR » Thu May 31, 2018 1:50 pm

Then call it something else, but the effect you're looking for in Fusion is called Vector Motion Blur :-)

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

Re: Vector Blur

#5

Post by bowserlm » Thu May 31, 2018 2:08 pm

Am I missing something?

Vector Motion Blur is not doing what I'm asking for. Unless there is a way to use it I'm not aware of.

see the video posted above to see what the effect is doing. It is not a Motion Blur effect.

User avatar
SirEdric
Fusionator
Posts: 1583
Joined: Tue Aug 05, 2014 10:04 am
Been thanked: 52 times
Contact:

Re: Vector Blur

#6

Post by SirEdric » Thu May 31, 2018 2:17 pm

Call it Vector, Victor, or Roger.
Vectors normally live in the Red/Green Channels. (r=x, g=y)
So, feed the image with the r/g "Victor"-map of your coice and generate the blur you're looking for...:-)

User avatar
ShadowMaker SdR
Fusionista
Posts: 582
Joined: Sun Sep 21, 2014 6:17 am
Been thanked: 6 times

Re: Vector Blur

#7

Post by ShadowMaker SdR » Thu May 31, 2018 2:39 pm

What's our vector, Victor? What's our clearence, Clarence? Over, Ovuer.

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

Re: Vector Blur

#8

Post by bowserlm » Thu May 31, 2018 2:56 pm

I think you guys are misunderstanding. Vector Blur as I'm describing here doesn't use motion vectors. See the videos above.

Here is a video I just recorded to demonstrate.



I understand how to use Motion Vector Blur by feeding it motion vectors. That is not what the Vector Blur above is doing.

User avatar
SecondMan
Site Admin
Posts: 3122
Joined: Thu Jul 31, 2014 5:31 pm
Location: Vancouver, Canada
Been thanked: 35 times
Contact:

Re: Vector Blur

#9

Post by SecondMan » Thu May 31, 2018 3:49 pm

Odd they call that Vector Blur. Looks more like an Erode/Dilate on that live action footage. It doesn't look exactly like that when applied to a checkerboard, but maybe that can help get you to where you want?

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

Re: Vector Blur

#10

Post by bowserlm » Thu May 31, 2018 4:44 pm

Here is a little write up about the effect

https://aftereffectslibrary.wordpress.c ... ctor-blur/

It appears that by default what the plugin does is use a black and white version of the image itself as the gradient to drive the vectors of the blur. Is there a way to rig up something similar into the Motion Vector Blur?

Erode/Dilate doesn't quite do the same thing, but that's good to know about.

Also, still curious about that second video on the first post, how he is using After Effects plugins in Fusion.

Is this still possible?

User avatar
SecondMan
Site Admin
Posts: 3122
Joined: Thu Jul 31, 2014 5:31 pm
Location: Vancouver, Canada
Been thanked: 35 times
Contact:

Re: Vector Blur

#11

Post by SecondMan » Thu May 31, 2018 5:25 pm

bowserlm wrote:
Thu May 31, 2018 4:44 pm
It appears that by default what the plugin does is use a black and white version of the image itself as the gradient to drive the vectors of the blur. Is there a way to rig up something similar into the Motion Vector Blur?

Probably many ways to skin a cat, but here's something that could be a start to give you some ideas...

Code: [Select all] [Expand/Collapse] [Download] (WSLsnippet-2018May31-1721.setting)
  1. {
  2.     Tools = ordered() {
  3.         BumpMap1 = BumpMap {
  4.             Inputs = {
  5.                 FilterSize = Input { Value = FuID { "5" }, },
  6.                 Input = Input {
  7.                     SourceOp = "CustomTool1",
  8.                     Source = "Output",
  9.                 },
  10.                 HeightScale = Input { Value = 10, },
  11.                 MaterialID = Input { Value = 3, },
  12.             },
  13.             ViewInfo = OperatorInfo { Pos = { 385, 313.5 } },
  14.         },
  15.         ImagePlane3D1 = ImagePlane3D {
  16.             Inputs = {
  17.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 6, },
  18.                 MaterialInput = Input {
  19.                     SourceOp = "BumpMap1",
  20.                     Source = "MaterialOutput",
  21.                 },
  22.                 ["MtlStdInputs.MaterialID"] = Input { Value = 4, },
  23.             },
  24.             ViewInfo = OperatorInfo { Pos = { 495, 313.5 } },
  25.         },
  26.         Renderer3D2 = Renderer3D {
  27.             CustomData = {
  28.                 ToolVersion = 2,
  29.             },
  30.             Inputs = {
  31.                 Width = Input { Value = 1920, },
  32.                 Height = Input { Value = 1080, },
  33.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  34.                 SceneInput = Input {
  35.                     SourceOp = "ImagePlane3D1",
  36.                     Source = "Output",
  37.                 },
  38.                 RendererType = Input { Value = FuID { "RendererOpenGLUV" }, },
  39.             },
  40.             ViewInfo = OperatorInfo { Pos = { 605, 313.5 } },
  41.         },
  42.         ChannelBooleans1 = ChannelBoolean {
  43.             Inputs = {
  44.                 ToRed = Input { Value = 4, },
  45.                 ToGreen = Input { Value = 4, },
  46.                 ToBlue = Input { Value = 4, },
  47.                 ToAlpha = Input { Value = 4, },
  48.                 EnableExtraChannels = Input { Value = 1, },
  49.                 ToXVector = Input { Value = 0, },
  50.                 ToYVector = Input { Value = 1, },
  51.                 Background = Input {
  52.                     SourceOp = "CustomTool1",
  53.                     Source = "Output",
  54.                 },
  55.                 Foreground = Input {
  56.                     SourceOp = "Renderer3D2",
  57.                     Source = "Output",
  58.                 },
  59.             },
  60.             ViewInfo = OperatorInfo { Pos = { 605, 247.5 } },
  61.         },
  62.         VectorBlur1 = KomkomDoorn.KD_VectorBlur {
  63.             Inputs = {
  64.                 Lengthmultiplier = Input { Value = 10, },
  65.                 Quality = Input { Value = 2, },
  66.                 Normalizevalues = Input { Value = 0, },
  67.                 Domultithreading = Input { Value = 0, },
  68.                 Image = Input {
  69.                     SourceOp = "ChannelBooleans1",
  70.                     Source = "Output",
  71.                 },
  72.             },
  73.             ViewInfo = OperatorInfo { Pos = { 715, 247.5 } },
  74.         },
  75.         Checkerboard = MacroOperator {
  76.             CtrlWZoom = false,
  77.             Inputs = ordered() {
  78.                 Comments = Input { Value = "Muse Tools Library\r\nby Joe Laude\r\nwww.musevfx.com", },
  79.                 Center = InstanceInput {
  80.                     SourceOp = "CustomTool1",
  81.                     Source = "PointIn1",
  82.                 },
  83.                 CheckerSize = InstanceInput {
  84.                     SourceOp = "CustomTool1",
  85.                     Source = "CheckerSize",
  86.                     Default = 64,
  87.                 },
  88.                 Width = InstanceInput {
  89.                     SourceOp = "Background1",
  90.                     Source = "Width",
  91.                     Default = 1920,
  92.                 },
  93.                 Height = InstanceInput {
  94.                     SourceOp = "Background1",
  95.                     Source = "Height",
  96.                     Default = 1080,
  97.                 }
  98.             },
  99.             Outputs = {
  100.                 Output = InstanceOutput {
  101.                     SourceOp = "CustomTool1",
  102.                     Source = "Output",
  103.                 }
  104.             },
  105.             ViewInfo = GroupInfo { Pos = { 275, 247.5 } },
  106.             Tools = ordered() {
  107.                 Background1 = Background {
  108.                     CtrlWZoom = false,
  109.                     CtrlWShown = false,
  110.                     Inputs = {
  111.                         Width = Input { Value = 1920, },
  112.                         Height = Input { Value = 1080, },
  113.                         ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  114.                     },
  115.                     ViewInfo = OperatorInfo { Pos = { 0, 25.1499 } },
  116.                 },
  117.                 CustomTool1 = Custom {
  118.                     CtrlWZoom = false,
  119.                     CtrlWShown = false,
  120.                     Inputs = {
  121.                         NumberIn1 = Input {
  122.                             Value = 64,
  123.                             Expression = "CheckerSize",
  124.                         },
  125.                         LUTIn1 = Input {
  126.                             SourceOp = "CustomTool1LUTIn1",
  127.                             Source = "Value",
  128.                         },
  129.                         LUTIn2 = Input {
  130.                             SourceOp = "CustomTool1LUTIn2",
  131.                             Source = "Value",
  132.                         },
  133.                         LUTIn3 = Input {
  134.                             SourceOp = "CustomTool1LUTIn3",
  135.                             Source = "Value",
  136.                         },
  137.                         LUTIn4 = Input {
  138.                             SourceOp = "CustomTool1LUTIn4",
  139.                             Source = "Value",
  140.                         },
  141.                         Intermediate1 = Input { Value = "(abs(floor((x-p1x)*(w/n1)))%2)", },
  142.                         Intermediate2 = Input { Value = "(abs(floor((y-p1y)*(h/n1)))%2)", },
  143.                         RedExpression = Input { Value = "abs(i1-i2)", },
  144.                         GreenExpression = Input { Value = "abs(i1-i2)", },
  145.                         BlueExpression = Input { Value = "abs(i1-i2)", },
  146.                         NumberControls = Input { Value = 1, },
  147.                         NameforNumber1 = Input { Value = "SquareSize", },
  148.                         ShowNumber2 = Input { Value = 0, },
  149.                         ShowNumber3 = Input { Value = 0, },
  150.                         ShowNumber4 = Input { Value = 0, },
  151.                         ShowNumber5 = Input { Value = 0, },
  152.                         ShowNumber6 = Input { Value = 0, },
  153.                         ShowNumber7 = Input { Value = 0, },
  154.                         ShowNumber8 = Input { Value = 0, },
  155.                         PointControls = Input { Value = 1, },
  156.                         NameforPoint1 = Input { Value = "Center", },
  157.                         ShowPoint2 = Input { Value = 0, },
  158.                         ShowPoint3 = Input { Value = 0, },
  159.                         ShowPoint4 = Input { Value = 0, },
  160.                         ShowLUT1 = Input { Value = 0, },
  161.                         ShowLUT2 = Input { Value = 0, },
  162.                         ShowLUT3 = Input { Value = 0, },
  163.                         ShowLUT4 = Input { Value = 0, },
  164.                         Image1 = Input {
  165.                             SourceOp = "Background1",
  166.                             Source = "Output",
  167.                         },
  168.                     },
  169.                     ViewInfo = OperatorInfo { Pos = { 0, 58.1499 } },
  170.                     UserControls = ordered() {
  171.                         CheckerSize = {
  172.                             INP_MinScale = 0,
  173.                             INP_Integer = true,
  174.                             INP_MinAllowed = 0,
  175.                             LINKID_DataType = "Number",
  176.                             INPID_InputControl = "SliderControl",
  177.                             IC_ControlPage = 0,
  178.                             INP_MaxScale = 100,
  179.                             INP_Default = 64,
  180.                         }
  181.                     }
  182.                 },
  183.                 CustomTool1LUTIn1 = LUTBezier {
  184.                     KeyColorSplines = {
  185.                         [0] = {
  186.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  187.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  188.                         }
  189.                     },
  190.                     SplineColor = { Red = 204, Green = 0, Blue = 0 },
  191.                     CtrlWShown = false,
  192.                 },
  193.                 CustomTool1LUTIn2 = LUTBezier {
  194.                     KeyColorSplines = {
  195.                         [0] = {
  196.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  197.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  198.                         }
  199.                     },
  200.                     SplineColor = { Red = 0, Green = 204, Blue = 0 },
  201.                     CtrlWShown = false,
  202.                 },
  203.                 CustomTool1LUTIn3 = LUTBezier {
  204.                     KeyColorSplines = {
  205.                         [0] = {
  206.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  207.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  208.                         }
  209.                     },
  210.                     SplineColor = { Red = 0, Green = 0, Blue = 204 },
  211.                     CtrlWShown = false,
  212.                 },
  213.                 CustomTool1LUTIn4 = LUTBezier {
  214.                     KeyColorSplines = {
  215.                         [0] = {
  216.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  217.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  218.                         }
  219.                     },
  220.                     SplineColor = { Red = 204, Green = 204, Blue = 204 },
  221.                     CtrlWShown = false,
  222.                 }
  223.             },
  224.         }
  225.     }
  226. }

bowserlm wrote:
Thu May 31, 2018 4:44 pm
Also, still curious about that second video on the first post, how he is using After Effects plugins in Fusion.

Is this still possible?

No, no longer possible. That only ever worked with the 32 bit versions of Fusion.

There's a Wish List topic for it, though, if you wanted to chime in.

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

Re: Vector Blur

#12

Post by bowserlm » Thu May 31, 2018 5:50 pm

That's a cool technique. I appreciate you setting that up.

It's a shame there isn't an equivalent effect because it's honestly something I use all the time. It's really useful for blending and softening and warping things in an organic way. It's especially great for particles.

Here's an example



I'll definitely chime in to have the feature included. That would be the best of both worlds!

User avatar
SecondMan
Site Admin
Posts: 3122
Joined: Thu Jul 31, 2014 5:31 pm
Location: Vancouver, Canada
Been thanked: 35 times
Contact:

Re: Vector Blur

#13

Post by SecondMan » Thu May 31, 2018 6:26 pm

Hmm, nice.

Well, that's also what this place is for. We figure out how that thing works, build it in Fusion, make it a Macro and put it in Reactor :)

Just give it a little time...

User avatar
SirEdric
Fusionator
Posts: 1583
Joined: Tue Aug 05, 2014 10:04 am
Been thanked: 52 times
Contact:

Re: Vector Blur

#14

Post by SirEdric » Thu May 31, 2018 9:26 pm

Looks as if they're using a glowed/blurred version of the original image to Displace the image.
Something like this. A useful technique for water and fire as well...:-)

Code: Select all

{
	Tools = ordered() {
		pEmitter1 = pEmitter {
			ID = 1,
			Inputs = {
				Number = Input { Value = 5000, },
				Style = Input { Value = FuID { "ParticleStyleBlob" }, },
				["ParticleStyle.SizeControls"] = Input { Value = 1, },
				["ParticleStyle.Size"] = Input { Value = 0.4206, },
				["ParticleStyle.SizeVariance"] = Input { Value = 0.486, },
				["ParticleStyle.SizeOverLife"] = Input {
					SourceOp = "pEmitter1SizeoverLife",
					Source = "Value",
				},
				["ParticleStyle.BlurOverLife"] = Input {
					SourceOp = "pEmitter1BluroverLife2D",
					Source = "Value",
				},
				["SphereRgn.Size"] = Input { Value = 0.413919992133574, },
			},
			ViewInfo = OperatorInfo { Pos = { 55, 16.5 } },
		},
		pEmitter1SizeoverLife = LUTBezier {
			KeyColorSplines = {
				[0] = {
					[0] = { 0.5, RH = { 0.3, 0.5 }, Flags = { Linear = true } },
					[1] = { 0.5, LH = { 0.7, 0.5 }, Flags = { Linear = true } }
				}
			},
			SplineColor = { Red = 192, Green = 128, Blue = 64 },
			NameSet = true,
		},
		pEmitter1BluroverLife2D = LUTBezier {
			KeyColorSplines = {
				[0] = {
					[0] = { 0.5, RH = { 0.3, 0.5 }, Flags = { Linear = true } },
					[1] = { 0.5, LH = { 0.7, 0.5 }, Flags = { Linear = true } }
				}
			},
			SplineColor = { Red = 192, Green = 128, Blue = 64 },
			NameSet = true,
		},
		pRender1 = pRender {
			Inputs = {
				_MotionBlurWarning = Input { Disabled = true, },
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				OutputMode = Input {
					Value = FuID { "TwoD" },
					Disabled = true,
				},
				IntegrationMethod = Input { Value = FuID { "RK4" }, },
				["MaterialID.MaterialID"] = Input { Value = 1, },
				["ObjectID.ObjectID"] = Input { Value = 1, },
				Input = Input {
					SourceOp = "pEmitter1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 165, 16.5 } },
		},
		Glow1 = Glow {
			CtrlWZoom = false,
			Inputs = {
				XGlowSize = Input { Value = 12.8, },
				Input = Input {
					SourceOp = "Blur1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 330, -16.5 } },
		},
		Blur1 = Blur {
			Inputs = {
				XBlurSize = Input { Value = 3.8, },
				Input = Input {
					SourceOp = "pRender1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 330, -49.5 } },
		},
		Displace1 = Displace {
			Inputs = {
				RefractionStrength = Input { Value = 1.983, },
				Input = Input {
					SourceOp = "pRender1",
					Source = "Output",
				},
				Foreground = Input {
					SourceOp = "Glow1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 330, 49.5 } },
		}
	}
}

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

Re: Vector Blur

#15

Post by theotheo » 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...