Jump to: Board index » General » Fusion

Colour Smear

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

Eugene Afanasiev

  • Posts: 600
  • Joined: Sun Aug 30, 2015 2:57 pm
  • Location: Russia

Colour Smear

PostFri Aug 04, 2017 2:20 pm

How would you recoommend to approach Color Smearing in Fusion?
Last edited by Eugene Afanasiev on Fri Aug 04, 2017 10:44 pm, edited 1 time in total.
__
--[[BMD's cameras and Resolve all-post workflow evangelist
My old stuff: http://www.youtube.com/rebelorelse
Debug: Asus ROG Duo GX550 i9 10980 48Gb RAM RTX2080MaxQ DaVinci Resolve Studio / Fusion Studio Latest Version]]--
Offline
User avatar

Bryan Ray

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

Re: Color Smear

PostFri Aug 04, 2017 3:23 pm

Could you define, please, what you mean by color smear? I'll offer a couple of pointers, but without knowing exactly the effect you're after, I might miss.

A directional blur applied only to the channel you want to smear can give you that look of a video signal with a red that's too saturated. In the Common Controls tab, uncheck everything but the channel you want to affect. Maybe mask it with a LumaKeyer set to saturation to only hit the really saturated areas. You could do something similar with a Transform node—either translating or scaling (or both) only one channel might give you something like you want.

Or for that sort of imprecise color of 4:0:0 footage, which is also sometimes called smearing, you could conver to YUV using a Color Space node, scale it down and then scale it back up, combine the original Y (R) with the munged-up U and V (G and B) channels in a Channel Boolean, then back to RGB.

If you're looking for more of a paint smearing kind of thing, there is a smear mode in the Paint tool.
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline
User avatar

Eugene Afanasiev

  • Posts: 600
  • Joined: Sun Aug 30, 2015 2:57 pm
  • Location: Russia

Re: Color Smear

PostFri Aug 04, 2017 9:21 pm

No, I was referring to Color smear in nuke, you know, the first thing falls in google search is this effect. It returns the color near the edge of the matted image and smears its edge color to one that was its own, not affected by the background plate .like the green screen light or just light burns into the edge and the color smear would eliminate those burns...
So it's like the light wrap and it is a common tool at every key.
So I was hoping somebody has created an elegant macro or fuse by this time.
I feel like I'm missing something in my own one here:
Code: Select all
{
   Tools = ordered() {
      V20001_V10001_A009_C005_0619N5 = Loader {
         Clips = {
            Clip {
               ID = "Clip1",
               Filename = "A:\\Spider\\s7\\s7_01262507_07.33\\V1-0001_A009_C005_0619N5.mov",
               FormatID = "QuickTimeMovies",
               Length = 79,
               Multiframe = true,
               LengthSetManually = true,
               TrimIn = 0,
               TrimOut = 78,
               ExtendFirst = 0,
               ExtendLast = 0,
               Loop = 1,
               AspectMode = 0,
               Depth = 0,
               TimeCode = 0,
               GlobalStart = 0,
               GlobalEnd = 78
            }
         },
         NameSet = true,
         ViewInfo = OperatorInfo { Pos = { 645, -3 } },
         Colors = { TileColor = { R = 0, G = 0.607843137254902, B = 0.403921568627451 }, }
      },
      Instance_Instance_KeyIn = Fuse.Wireless {
         NameSet = true,
         Inputs = {
            ScriptEdit = Input { },
            ScriptReload = Input { },
            Input = Input {
               SourceOp = "V20001_V10001_A009_C005_0619N5",
               Source = "Output",
            },
            FrameRenderScript = Input { },
            StartEndRenderScripts = Input { },
            StartRenderScript = Input { },
            EndRenderScript = Input { },
            Comments = Input { }
         },
         ViewInfo = OperatorInfo { Pos = { 732, 4.99996 } },
         Colors = {
            TileColor = { R = 0.470588235294118, G = 0.164705882352941, B = 0 },
            TextColor = { R = 0.745098039215686, G = 0.745098039215686, B = 0.745098039215686 },
         }
      },
      RemoveNoise1 = RemoveNoise {
         Inputs = {
            Blend = Input { Value = 0.919, },
            Method = Input { Value = 1, },
            Lock = Input { Value = 1, },
            SoftnessRed = Input { Value = 0.00868, },
            SoftnessGreen = Input { Value = 0.00316, },
            SoftnessBlue = Input { Value = 0.00295, },
            SoftnessY = Input { Value = 0.00103, },
            DetailRed = Input { Value = 0.218, },
            DetailY = Input { Value = 0.303, },
            Input = Input {
               SourceOp = "Instance_Instance_KeyIn",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 744, 37 } },
      },
      CleanPlate1_1 = CleanPLate {
         Inputs = {
            BackgroundRed = Input { Value = 0.468818187713623, },
            BackgroundGreen = Input { Value = 0.60086977481842, },
            BackgroundBlue = Input { Value = 0.776516377925873, },
            High = Input { Value = 0.68, },
            InsideFill = Input { Value = 1, },
            HoldTime = Input { Value = 3, },
            Input = Input {
               SourceOp = "RankFilter2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 792, 89 } },
      },
      Ranges1 = RangesMask {
         Inputs = {
            SoftEdge = Input { Value = 0.01889, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Image = Input {
               SourceOp = "DeltaKeyer1_1",
               Source = "Output",
            },
            RangesChannel = Input { Value = 4, },
            ColorRanges = Input {
               Value = ColorCurves {
                  Curves = {
                     {
                        Points = {
                           { 0, 1 },
                           { 0.4, 0.2 },
                           { 0.6, 0 },
                           { 1, 0 }
                        }
                     },
                     {
                        Points = {
                           { 0, 0 },
                           { 0.4, 0 },
                           { 0.6, 0.2 },
                           { 1, 1 }
                        }
                     }
                  }
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 659, 227 } },
      },
      DeltaKeyer1_1 = DeltaKeyer {
         Inputs = {
            BackgroundRed = Input { Value = 0.469810038805008, },
            BackgroundGreen = Input { Value = 0.602105736732483, },
            BackgroundBlue = Input { Value = 0.775188803672791, },
            Gain = Input { Value = 0.957, },
            Balance = Input { Value = 0.594, },
            TuningRanges = Input {
               Value = ColorCurves {
                  Curves = {
                     {
                        Points = {
                           { 0, 1 },
                           { 0.25375, 0.628 },
                           { 0.3654, 0 },
                           { 0.609, 0 }
                        }
                     },
                     {
                        Points = {
                           { 0.377, 0 },
                           { 0.6262, 0 },
                           { 0.654858, 0.593 },
                           { 1, 1 }
                        }
                     }
                  }
               },
            },
            AlphaShadowsGain = Input { Value = 0, },
            AlphaMidtonesGain = Input { Value = 0.829, },
            AlphaHighlightsGain = Input { Value = 1.171, },
            Clean = Input {
               SourceOp = "CleanPlate1_1",
               Source = "Output",
            },
            Input = Input {
               SourceOp = "RankFilter2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 841, 140 } },
      },
      ErodeDilate8 = ErodeDilate {
         Inputs = {
            XAmount = Input { Value = 0.00205, },
            Input = Input {
               SourceOp = "Ranges1",
               Source = "Mask",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 608.062, 293 } },
      },
      RemoveNoise1_1 = RemoveNoise {
         Inputs = {
            Blend = Input { Value = 0.7, },
            Method = Input { Value = 1, },
            Lock = Input { Value = 1, },
            SoftnessRed = Input { Value = 0.00868, },
            SoftnessGreen = Input { Value = 0.00316, },
            SoftnessBlue = Input { Value = 0.00295, },
            SoftnessY = Input { Value = 0.00248, },
            DetailRed = Input { Value = 0.218, },
            DetailY = Input { Value = 0.201, },
            Input = Input {
               SourceOp = "RemoveNoise1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 856, 38 } },
      },
      Ranges1_1 = RangesMask {
         Inputs = {
            SoftEdge = Input { Value = 0.0094, },
            PaintMode = Input { Value = FuID { "Subtract" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Image = Input {
               SourceOp = "DeltaKeyer1_1",
               Source = "Output",
            },
            RangesChannel = Input { Value = 4, },
            ColorRanges = Input {
               Value = ColorCurves {
                  Curves = {
                     {
                        Points = {
                           { 0, 1 },
                           { 0.4, 0.2 },
                           { 0.6, 0 },
                           { 1, 0 }
                        }
                     },
                     {
                        Points = {
                           { 0, 0 },
                           { 0.4, 0 },
                           { 0.6, 0.2 },
                           { 1, 1 }
                        }
                     }
                  }
               },
            },
            EffectMask = Input {
               SourceOp = "Bitmap2",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 757, 303 } },
      },
      Blur8 = Blur {
         Inputs = {
            XBlurSize = Input { Value = 3.46, },
            Input = Input {
               SourceOp = "MatteControl3",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 870, 276 } },
      },
      MatteControl3 = MatteControl {
         Inputs = {
            PostMultiplyImage = Input { Value = 1, },
            Background = Input {
               SourceOp = "ErodeDilate7",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 870, 240 } },
      },
      Bitmap2 = BitmapMask {
         Inputs = {
            SoftEdge = Input { Value = 0.006, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Image = Input {
               SourceOp = "ErodeDilate8",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 677.062, 343 } },
      },
      AlphaDivide6 = AlphaDivide {
         Inputs = {
            Input = Input {
               SourceOp = "Blur8",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 904, 328 } },
      },
      ErodeDilate7 = ErodeDilate {
         Inputs = {
            Red = Input { Value = 0, },
            Green = Input { Value = 0, },
            Blue = Input { Value = 0, },
            Filter = Input { Value = 3, },
            XAmount = Input { Value = 0.0006, },
            Input = Input {
               SourceOp = "DeltaKeyer1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 909, 195 } },
      },
      Blur9 = Blur {
         Inputs = {
            XBlurSize = Input { Value = 2.61, },
            Input = Input {
               SourceOp = "AlphaDivide6",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 911, 359 } },
      },
      MatteControl4 = MatteControl {
         Inputs = {
            MatteCombine = Input { Value = 4, },
            ["Garbage.MaskNest"] = Input { Value = 1, },
            ["Garbage.MaskInverted"] = Input { Value = 1, },
            PostMultiplyImage = Input { Value = 1, },
            Background = Input {
               SourceOp = "Blur9",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Ranges1_1",
               Source = "Mask",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 882, 427 } },
      },
      RankFilter2 = RankFilter {
         CustomData = {
            Settings = {
               [1] = {
                  Tools = ordered() {
                     RankFilter2 = RankFilter {
                        CtrlWZoom = false,
                        CustomData = {
                        },
                        Inputs = {
                           Blend = Input { Value = 0.56, },
                           Size = Input { Value = 2, },
                           Input = Input {
                              SourceOp = "RemoveNoise1_1",
                              Source = "Output",
                           },
                        },
                        ViewInfo = OperatorInfo { Pos = { 964, 38 } },
                        Name = "RankFilter2"
                     }
                  }
               },
               [5] = {
                  Tools = ordered() {
                     RankFilter2 = RankFilter {
                        CtrlWZoom = false,
                        CustomData = {
                        },
                        Inputs = {
                           Blend = Input { Value = 0.56, },
                           Size = Input { Value = 2, },
                           Input = Input {
                              SourceOp = "RemoveNoise1_1",
                              Source = "Output",
                           },
                        },
                        ViewInfo = OperatorInfo { Pos = { 964, 38 } },
                     }
                  }
               },
            }
         },
         Inputs = {
            Blend = Input { Value = 0.278, },
            Size = Input { Value = 2, },
            Rank = Input { Value = 0.893, },
            Input = Input {
               SourceOp = "RemoveNoise1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 965, 40 } },
      },
      Merge12 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "DeltaKeyer1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "MatteControl4",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 752, 466 } },
      }
   }
}
__
--[[BMD's cameras and Resolve all-post workflow evangelist
My old stuff: http://www.youtube.com/rebelorelse
Debug: Asus ROG Duo GX550 i9 10980 48Gb RAM RTX2080MaxQ DaVinci Resolve Studio / Fusion Studio Latest Version]]--
Offline
User avatar

Chad Capeland

  • Posts: 3025
  • Joined: Mon Nov 10, 2014 9:40 pm

Re: Colour Smear

PostSat Aug 05, 2017 8:29 pm

You can use CustomFilter with a Sobel-like kernel to find a "normal" for image gradients and use something like VectorMotionBlur to sample that.


Code: Select all
{
   Tools = ordered() {
      Plasma1 = Plasma {
         Inputs = {
            Width = Input { Value = 1024, },
            Height = Input { Value = 1024, },
            Depth = Input { Value = 4, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 275, 82.5 } },
      },
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            Red = Input { Value = 0, },
            Green = Input { Value = 0, },
            Blue = Input { Value = 0, },
            Alpha = Input { Value = 1, },
            Brightness = Input { Value = 1, },
            ClipBlack = Input { Value = 1, },
            ClipWhite = Input { Value = 1, },
            Input = Input {
               SourceOp = "Plasma1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 275, 115.5 } },
      },
      BrightnessContrast2 = BrightnessContrast {
         Inputs = {
            ApplyMaskInverted = Input { Value = 1, },
            Alpha = Input { Value = 1, },
            Brightness = Input { Value = -1, },
            ClipBlack = Input { Value = 1, },
            Input = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            },
            EffectMask = Input {
               SourceOp = "Polygon1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 275, 148.5 } },
      },
      Polygon1 = PolylineMask {
         DrawMode = "InsertAndModify",
         DrawMode2 = "InsertAndModify",
         PolyLine2Disabled = true,
         Inputs = {
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 1024, },
            MaskHeight = Input { Value = 1024, },
            PixelAspect = Input { Value = { 1, 1 }, },
            Depth = Input { Value = 4, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               SourceOp = "Perturb1",
               Source = "Value",
            },
            Polyline2 = Input {
               SourceOp = "Perturb2",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 110, 247.5 } },
      },
      Perturb1 = PerturbPolyLine {
         CtrlWZoom = false,
         Inputs = {
            Value = Input {
               SourceOp = "Perturb1Value",
               Source = "Value",
            },
         },
      },
      Perturb1Value = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { LockPF = true, LockP = true, X = -0.116838485002518, Y = 0.175257727503777, LX = 0.0380199117807601, LY = 0.0117142438242582, RX = -0.072780640409644, RY = -0.0224243068306032 },
                     { LockP = true, X = -0.316151201725006, Y = 0.063573881983757, LX = 0.0067802861164217, LY = 0.0758544585073969, RX = -0.00773251480545053, RY = -0.0865075180304381 },
                     { LockP = true, X = -0.144329890608788, Y = -0.132302403450012, LX = -0.0838405541515598, LY = 0.0226738602924701, RX = 0.0510385980360525, RY = -0.0138028911319101 },
                     { LockP = true, X = -0.0429553277790546, Y = -0.0103092780336738, LX = -0.0526519091374671, LY = 0.00482024452336301, RX = 0.0673523308350177, RY = -0.0061660575876859 },
                     { LockP = true, X = 0.0996563583612442, Y = -0.154639169573784, LX = -0.0671250387936556, LY = -0.00828166058436175, RX = 0.0711102906440198, RY = 0.00877334749823263 },
                     { LockP = true, X = 0.22164948284626, Y = 0.022336769849062, LX = -0.00111071016157146, LY = -0.071640849972196, RX = 0.000711948316094973, RY = 0.0459206949445345 },
                     { LockP = true, X = 0.0920430584424766, Y = 0.0690821290263155, LX = 0.0116454479612984, LY = -0.0444252252259285, RX = -0.0122201196998092, RY = 0.0466174913799796 },
                     { LockP = true, X = 0.161512023036423, Y = 0.19587629060565, LX = 0.0149197412349037, LY = -0.0458249184344463, RX = -0.0106578860848138, RY = 0.0327349350656057 },
                     { LockP = true, X = 0.0876288659601789, Y = 0.268041224516544, LX = 0.033637506661437, LY = 0.00732698131211455, RX = -0.0445729539288596, RY = -0.00970895981529173 },
                     { LockP = true, X = 0.00171821308322251, Y = 0.161512032151222, LX = 0.0361892742077412, LY = 0.0277731624946837, RX = -0.0315607251505847, RY = -0.0242210203781799 }
                  }
               } }
         }
      },
      Perturb2 = PerturbPolyLine {
         CtrlWZoom = false,
         Inputs = {
            Value = Input {
               SourceOp = "Perturb2Value",
               Source = "Value",
            },
         },
      },
      Perturb2Value = BezierSpline {
         SplineColor = { Red = 160, Green = 252, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { LockPF = true, LockP = true, X = -0.116838485002518, Y = 0.175257727503777, LX = 0.0380199117807601, LY = 0.0117142438242582, RX = -0.072780640409644, RY = -0.0224243068306032 },
                     { LockP = true, X = -0.316151201725006, Y = 0.063573881983757, LX = 0.0067802861164217, LY = 0.0758544585073969, RX = -0.00773251480545053, RY = -0.0865075180304381 },
                     { LockP = true, X = -0.144329890608788, Y = -0.132302403450012, LX = -0.0838405541515598, LY = 0.0226738602924701, RX = 0.0510385980360525, RY = -0.0138028911319101 },
                     { LockP = true, X = -0.0429553277790546, Y = -0.0103092780336738, LX = -0.0526519091374671, LY = 0.00482024452336301, RX = 0.0673523308350177, RY = -0.0061660575876859 },
                     { LockP = true, X = 0.0996563583612442, Y = -0.154639169573784, LX = -0.0671250387936556, LY = -0.00828166058436175, RX = 0.0832154366136268, RY = 0.010266839525144 },
                     { LockP = true, X = 0.247892576768912, Y = 0.0485798637717139, LX = -0.00129978699579565, LY = -0.0838363133635846, RX = 0.000719958642506313, RY = 0.0464373613193619 },
                     { LockP = true, X = 0.102402174464576, Y = 0.0683915212915088, LX = 0.0117764741007912, LY = -0.0449250656594432, RX = -0.0205819689565493, RY = 0.0785163962370945 },
                     { LockP = true, X = 0.286941576301027, Y = 0.197594503664069, LX = 0.0251288578573686, LY = -0.0771814901836765, RX = -0.0360150534270651, RY = 0.110617661507863 },
                     { LockP = true, X = 0.0498281786749557, Y = 0.348797238262249, LX = 0.113667625073521, LY = 0.0247592835309914, RX = -0.0653716665343633, RY = -0.0142393722537165 },
                     { LockP = true, X = 0.00171821308322251, Y = 0.161512032151222, LX = 0.0530759789760612, LY = 0.0407327259509185, RX = -0.0315607251505847, RY = -0.0242210203781799 }
                  }
               } }
         }
      },
      PipeRouter3 = PipeRouter {
         Inputs = {
            Input = Input {
               SourceOp = "Polygon1",
               Source = "Mask",
            },
         },
         ViewInfo = PipeRouterInfo { Pos = { 605, 247.5 } },
      },
      PipeRouter4 = PipeRouter {
         Inputs = {
            Input = Input {
               SourceOp = "BrightnessContrast2",
               Source = "Output",
            },
         },
         ViewInfo = PipeRouterInfo { Pos = { 1045, 148.5 } },
      },
      AlphaDivide1 = AlphaDivide {
         Inputs = {
            Input = Input {
               SourceOp = "VectorMotionBlur1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1155, 280.5 } },
      },
      CustomTool1 = Custom {
         Inputs = {
            NumberIn1 = Input { Value = 10, },
            LUTIn1 = Input {
               SourceOp = "CustomTool1LUTIn1",
               Source = "Value",
            },
            LUTIn2 = Input {
               SourceOp = "CustomTool1LUTIn2",
               Source = "Value",
            },
            LUTIn3 = Input {
               SourceOp = "CustomTool1LUTIn3",
               Source = "Value",
            },
            LUTIn4 = Input {
               SourceOp = "CustomTool1LUTIn4",
               Source = "Value",
            },
            Intermediate1 = Input { Value = "sqrt(vx1 * vx1 + vy1 * vy1)", },
            AuxChannelNest = Input { Value = 1, },
            XVectorExpression = Input { Value = "n1* vx1 / i1", },
            YVectorExpression = Input { Value = "n1 * vy1 / i1", },
            Image1 = Input {
               SourceOp = "ChannelBooleans1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 935, 280.5 } },
      },
      CustomTool1LUTIn1 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 204, Green = 0, Blue = 0 },
         NameSet = true,
      },
      CustomTool1LUTIn2 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 204, Blue = 0 },
         NameSet = true,
      },
      CustomTool1LUTIn3 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 204 },
         NameSet = true,
      },
      CustomTool1LUTIn4 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 204, Green = 204, Blue = 204 },
         NameSet = true,
      },
      ChannelBooleans1 = ChannelBoolean {
         Inputs = {
            EnableExtraChannels = Input { Value = 1, },
            ToXVector = Input { Value = 8, },
            ToYVector = Input { Value = 3, },
            Background = Input {
               SourceOp = "CustomFilter1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "CustomFilter1_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 825, 280.5 } },
      },
      VectorMotionBlur1 = VectorMotionBlur {
         Inputs = {
            ApplyMaskInverted = Input { Value = 1, },
            Input = Input {
               SourceOp = "PipeRouter4",
               Source = "Output",
            },
            Vectors = Input {
               SourceOp = "CustomTool1",
               Source = "Output",
            },
            FlipX = Input { Value = 1, },
            FlipY = Input { Value = 1, },
            XScale = Input { Value = 10, },
            EffectMask = Input {
               SourceOp = "PipeRouter3",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1045, 280.5 } },
      },
      CustomFilter1 = CustomFilter {
         Inputs = {
            Red = Input { Value = 0, },
            Green = Input { Value = 0, },
            Blue = Input { Value = 0, },
            Matrix = Input {
               Value = FilterTable {
                  NumEntries = 54,
                  Type = 6,
                  Offset = 0,
                  Minimum = 0,
                  Maximum = 1,
                  MinimumValue = 0,
                  MaximumValue = 1,
                  StartSlope = 1,
                  EndSlope = 1,
                  StartIn = 0,
                  EndIn = 1,
                  Table = { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -3, 0, 3, 1, 1, 1, 1, -10, 0, 10, 1, 1, 1, 1, -3, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
               },
            },
            Input = Input {
               SourceOp = "PipeRouter3",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 715, 280.5 } },
      },
      CustomFilter1_1 = CustomFilter {
         Inputs = {
            Red = Input { Value = 0, },
            Green = Input { Value = 0, },
            Blue = Input { Value = 0, },
            Matrix = Input {
               Value = FilterTable {
                  NumEntries = 54,
                  Type = 6,
                  Offset = 0,
                  Minimum = 0,
                  Maximum = 1,
                  MinimumValue = 0,
                  MaximumValue = 1,
                  StartSlope = 1,
                  EndSlope = 1,
                  StartIn = 0,
                  EndIn = 1,
                  Table = { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 10, 3, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, -3, -10, -3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
               },
            },
            Input = Input {
               SourceOp = "PipeRouter3",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 715, 313.5 } },
      }
   }
}



Or you could just blur and divide by the alpha.

Code: Select all
{
   Tools = ordered() {
      BrightnessContrast1 = BrightnessContrast {
         Inputs = {
            Red = Input { Value = 0, },
            Green = Input { Value = 0, },
            Blue = Input { Value = 0, },
            Alpha = Input { Value = 1, },
            Brightness = Input { Value = 1, },
            ClipBlack = Input { Value = 1, },
            ClipWhite = Input { Value = 1, },
            Input = Input {
               SourceOp = "Plasma1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 275, 115.5 } },
      },
      Plasma1 = Plasma {
         Inputs = {
            Width = Input { Value = 1024, },
            Height = Input { Value = 1024, },
            Depth = Input { Value = 4, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 275, 82.5 } },
      },
      BrightnessContrast2 = BrightnessContrast {
         Inputs = {
            ApplyMaskInverted = Input { Value = 1, },
            Alpha = Input { Value = 1, },
            Brightness = Input { Value = -1, },
            ClipBlack = Input { Value = 1, },
            Input = Input {
               SourceOp = "BrightnessContrast1",
               Source = "Output",
            },
            EffectMask = Input {
               SourceOp = "Polygon1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 275, 148.5 } },
      },
      Polygon1 = PolylineMask {
         DrawMode = "InsertAndModify",
         DrawMode2 = "InsertAndModify",
         PolyLine2Disabled = true,
         Inputs = {
            OutputSize = Input { Value = FuID { "Custom" }, },
            MaskWidth = Input { Value = 1024, },
            MaskHeight = Input { Value = 1024, },
            PixelAspect = Input { Value = { 1, 1 }, },
            Depth = Input { Value = 4, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               SourceOp = "Perturb1",
               Source = "Value",
            },
            Polyline2 = Input {
               SourceOp = "Perturb2",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 110, 247.5 } },
      },
      Perturb1 = PerturbPolyLine {
         CtrlWZoom = false,
         Inputs = {
            Value = Input {
               SourceOp = "Perturb1Value",
               Source = "Value",
            },
         },
      },
      Perturb1Value = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { LockPF = true, LockP = true, X = -0.116838485002518, Y = 0.175257727503777, LX = 0.0380199117807601, LY = 0.0117142438242582, RX = -0.072780640409644, RY = -0.0224243068306032 },
                     { LockP = true, X = -0.316151201725006, Y = 0.063573881983757, LX = 0.0067802861164217, LY = 0.0758544585073969, RX = -0.00773251480545053, RY = -0.0865075180304381 },
                     { LockP = true, X = -0.144329890608788, Y = -0.132302403450012, LX = -0.0838405541515598, LY = 0.0226738602924701, RX = 0.0510385980360525, RY = -0.0138028911319101 },
                     { LockP = true, X = -0.0429553277790546, Y = -0.0103092780336738, LX = -0.0526519091374671, LY = 0.00482024452336301, RX = 0.0673523308350177, RY = -0.0061660575876859 },
                     { LockP = true, X = 0.0996563583612442, Y = -0.154639169573784, LX = -0.0671250387936556, LY = -0.00828166058436175, RX = 0.0711102906440198, RY = 0.00877334749823263 },
                     { LockP = true, X = 0.22164948284626, Y = 0.022336769849062, LX = -0.00111071016157146, LY = -0.071640849972196, RX = 0.000711948316094973, RY = 0.0459206949445345 },
                     { LockP = true, X = 0.0920430584424766, Y = 0.0690821290263155, LX = 0.0116454479612984, LY = -0.0444252252259285, RX = -0.0122201196998092, RY = 0.0466174913799796 },
                     { LockP = true, X = 0.161512023036423, Y = 0.19587629060565, LX = 0.0149197412349037, LY = -0.0458249184344463, RX = -0.0106578860848138, RY = 0.0327349350656057 },
                     { LockP = true, X = 0.0876288659601789, Y = 0.268041224516544, LX = 0.033637506661437, LY = 0.00732698131211455, RX = -0.0445729539288596, RY = -0.00970895981529173 },
                     { LockP = true, X = 0.00171821308322251, Y = 0.161512032151222, LX = 0.0361892742077412, LY = 0.0277731624946837, RX = -0.0315607251505847, RY = -0.0242210203781799 }
                  }
               } }
         }
      },
      Perturb2 = PerturbPolyLine {
         CtrlWZoom = false,
         Inputs = {
            Value = Input {
               SourceOp = "Perturb2Value",
               Source = "Value",
            },
         },
      },
      Perturb2Value = BezierSpline {
         SplineColor = { Red = 160, Green = 252, Blue = 4 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { LockPF = true, LockP = true, X = -0.116838485002518, Y = 0.175257727503777, LX = 0.0380199117807601, LY = 0.0117142438242582, RX = -0.072780640409644, RY = -0.0224243068306032 },
                     { LockP = true, X = -0.316151201725006, Y = 0.063573881983757, LX = 0.0067802861164217, LY = 0.0758544585073969, RX = -0.00773251480545053, RY = -0.0865075180304381 },
                     { LockP = true, X = -0.144329890608788, Y = -0.132302403450012, LX = -0.0838405541515598, LY = 0.0226738602924701, RX = 0.0510385980360525, RY = -0.0138028911319101 },
                     { LockP = true, X = -0.0429553277790546, Y = -0.0103092780336738, LX = -0.0526519091374671, LY = 0.00482024452336301, RX = 0.0673523308350177, RY = -0.0061660575876859 },
                     { LockP = true, X = 0.0996563583612442, Y = -0.154639169573784, LX = -0.0671250387936556, LY = -0.00828166058436175, RX = 0.0832154366136268, RY = 0.010266839525144 },
                     { LockP = true, X = 0.247892576768912, Y = 0.0485798637717139, LX = -0.00129978699579565, LY = -0.0838363133635846, RX = 0.000719958642506313, RY = 0.0464373613193619 },
                     { LockP = true, X = 0.102402174464576, Y = 0.0683915212915088, LX = 0.0117764741007912, LY = -0.0449250656594432, RX = -0.0205819689565493, RY = 0.0785163962370945 },
                     { LockP = true, X = 0.286941576301027, Y = 0.197594503664069, LX = 0.0251288578573686, LY = -0.0771814901836765, RX = -0.0360150534270651, RY = 0.110617661507863 },
                     { LockP = true, X = 0.0498281786749557, Y = 0.348797238262249, LX = 0.113667625073521, LY = 0.0247592835309914, RX = -0.0653716665343633, RY = -0.0142393722537165 },
                     { LockP = true, X = 0.00171821308322251, Y = 0.161512032151222, LX = 0.0530759789760612, LY = 0.0407327259509185, RX = -0.0315607251505847, RY = -0.0242210203781799 }
                  }
               } }
         }
      },
      AlphaDivide2 = AlphaDivide {
         Inputs = {
            Input = Input {
               SourceOp = "Blur1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1155, 478.5 } },
      },
      Blur1 = Blur {
         Inputs = {
            ApplyMaskInverted = Input { Value = 1, },
            Filter = Input { Value = FuID { "Multi-box" }, },
            XBlurSize = Input { Value = 16.7, },
            Passes = Input { Value = 16, },
            Input = Input {
               SourceOp = "PipeRouter1",
               Source = "Output",
            },
            EffectMask = Input {
               SourceOp = "PipeRouter2",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1045, 478.5 } },
      },
      PipeRouter2 = PipeRouter {
         Inputs = {
            Input = Input {
               SourceOp = "Polygon1",
               Source = "Mask",
            },
         },
         ViewInfo = PipeRouterInfo { Pos = { 385, 445.5 } },
      },
      PipeRouter1 = PipeRouter {
         Inputs = {
            Input = Input {
               SourceOp = "BrightnessContrast2",
               Source = "Output",
            },
         },
         ViewInfo = PipeRouterInfo { Pos = { 385, 478.5 } },
      }
   }
}
Chad Capeland
Indicated, LLC
www.floweffects.com
Offline
User avatar

Eugene Afanasiev

  • Posts: 600
  • Joined: Sun Aug 30, 2015 2:57 pm
  • Location: Russia

Re: Colour Smear

PostSat Aug 05, 2017 10:23 pm

Interesting stuff! Thank you!
__
--[[BMD's cameras and Resolve all-post workflow evangelist
My old stuff: http://www.youtube.com/rebelorelse
Debug: Asus ROG Duo GX550 i9 10980 48Gb RAM RTX2080MaxQ DaVinci Resolve Studio / Fusion Studio Latest Version]]--
Offline

Sander de Regt

  • Posts: 3591
  • Joined: Thu Nov 13, 2014 10:09 pm

Re: Colour Smear

PostSun Aug 06, 2017 8:34 pm

I don't know if this is what you're after, but your description made me think of this:

http://compositing.tv/Research/Tools/Bl ... storation/

There is a macro in there, that should either work in current versions of Fusion or be relatively easily adaptable.
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline

alan bovine

  • Posts: 145
  • Joined: Mon Aug 07, 2017 6:20 pm

Re: Colour Smear

PostMon Aug 07, 2017 6:36 pm

Sander (and Gringo) are correct.

Its just a blur on an image with a premulted alpha. If you then unpremult the blurred result the edges should be extended.

In F9 you can acutally just use the new cleanplate tool. Technically works differently, but produces a similar result.
Fusion video tutorials : https://www.youtube.com/channel/UCTCeDas53OEcWcRujkQiwLg/videos?view_as=subscriber
Fusion Tools : https://github.com/statixVFX/stx_tools
Nuke 2 Fusion nodes : https://github.com/statixVFX/nuke2fusion

Return to Fusion

Who is online

Users browsing this forum: No registered users and 47 guests