Jump to: Board index » General » Fusion

Keying-CoreMatte best practices

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

Ryan Bloomer

  • Posts: 765
  • Joined: Tue Jul 09, 2013 6:58 pm

Keying-CoreMatte best practices

PostTue Dec 09, 2014 7:26 pm

When working with greenscreen footage, I usually create a core matte, then create animated garbage masks to different areas of the footage and add this the core matte, and then take the combined matte as a track matte, and deal with spill separately. From here I create a lightwrap based on pixels from the background image. Does anyone have an example flow for this? Or a recommendation for the best practices when setting up a flow for this?

Thanks,
Ryan
Offline
User avatar

michael vorberg

  • Posts: 943
  • Joined: Wed Nov 12, 2014 8:47 pm
  • Location: stuttgart, germany

Re: Keying-CoreMatte best practices

PostTue Dec 09, 2014 8:19 pm

for the primatte keyer you can plugin a garbage matte into the "white" input, for any other keyer you can use the "channel boolean" or the "matte control" to add/substract/multiply your key alpha with the garbage matte or add the core matte

spill depression can be done in the "matte control" node or via a "custom tool" with the usual math

but you should also check out KAK (=Kick Ass Keyer) from here
this is a really good marco for keying, it kicks ass!
Offline

Ryan Bloomer

  • Posts: 765
  • Joined: Tue Jul 09, 2013 6:58 pm

Re: Keying-CoreMatte best practices

PostTue Dec 09, 2014 8:29 pm

Thanks Michael, Looks like KAK_v2.7.0 is bundled with Fusion 7, but i'll try downloading the 3.1.1 version and see how it goes.
Offline

Peter Ruhrmann

  • Posts: 6
  • Joined: Tue Dec 09, 2014 5:11 pm

Re: Keying-CoreMatte best practices

PostTue Dec 09, 2014 8:36 pm

Hi Ryan,

- Use e.g. Ultrakeyer to create your core matte
- Use multiple Polyline-Nodes create your garbage masks (plug them together)
- you can animate the polyline-masks by just draging the mask points (they are in animate mode by default)
- when animating masks try using these Hotkeys by holding them while dragging with the mouse: T ("Twist") for rotating, S ("Scale") for scaling, X for scaling in x-direction only, Y for scaling in y-direction only. The point where you first click is the pivot for these transformations.
- Use the Garbage-Matte-Input of the Keyer or use a Channel-Boolean to Min or Multiply the masks together
-Use a Matte Control node to despill

Cheers

Peter
Offline

Jiri Sindelar

  • Posts: 28
  • Joined: Mon Nov 10, 2014 9:53 pm

Re: Keying-CoreMatte best practices

PostTue Dec 09, 2014 9:34 pm

Hi,
I do recommend KAK. Or any other way with clean plate & screen substraction. For more difficult keys, I do color difference keyer (KAK, Keylight or IBK), adjust matte from that and do screen substraction outside keyer (clean plate premulted with inverted alpha substracted from foreground).
Sometimes merging alphas with screen works better than max. For core matte eroded from contracted soft matte, it is nice to detect corners and substract again from eroded matte to not fill tiny details.

hth,
Jirka
Offline
User avatar

Pieter Van Houte

  • Posts: 631
  • Joined: Wed Nov 05, 2014 1:04 am

Re: Keying-CoreMatte best practices

PostTue Dec 09, 2014 9:37 pm

Don't bother with 2.7 - it works just fine, but 3 is much more advanced and has a completely different interface. There are a couple of videos showing how it works, too. Search for [KAK] on We Suck Less to find the topics.
Support We Suck Less on Patreon -> https://www.patreon.com/wesuckless

https://www.steakunderwater.com/wesuckless
Offline

Ryan Bloomer

  • Posts: 765
  • Joined: Tue Jul 09, 2013 6:58 pm

Re: Keying-CoreMatte best practices

PostThu Oct 08, 2015 2:45 pm

I'm able to get fairly decent results stacking ultra keyers together with a core matte, and then combined polymasks to other ultra keyers to add detail back in certain areas. However, when I try to add Primatte to the mix, the only way I can get the alpha channel to merge together, is to add another loader of the footage, and use the combined matte in the channelBooleans tool as a alpha/luminescence matte.

Is there a way to add primatte in to the mix without needing to add a second loader?

Code: Select all
{
   Tools = ordered() {
      Loader1_1_2_1 = Loader {
         Clips = {
            Clip {
               ID = "Clip1",
               Filename = "V:\\_AE render\\Ep11_DeNoised\\ACUEP11_944_001_deNoised\\ACUEP11_944_001_919932.psd",
               FormatID = "PSDFormat",
               StartFrame = 919932,
               Length = 1088,
               LengthSetManually = true,
               TrimIn = 0,
               TrimOut = 1087,
               ExtendFirst = 0,
               ExtendLast = 0,
               Loop = 1,
               AspectMode = 0,
               Depth = 0,
               TimeCode = 0,
               GlobalStart = 0,
               GlobalEnd = 1087,
            },
         },
         Inputs = {
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
            EffectMask = Input {
               SourceOp = "ChannelBooleans3_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { -3625.88, 374.847, }, },
      },
      ChannelBooleans3_1 = ChannelBoolean {
         Inputs = {
            MultiplyByMask = Input { Value = 1, },
            Operation = Input { Value = 1, },
            ToRed = Input { Value = 3, },
            ToGreen = Input { Value = 3, },
            ToBlue = Input { Value = 3, },
            Background = Input {
               SourceOp = "ChannelBooleans2_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "UltraKeyer1_1",
               Source = "Output",
            },
            EffectMask = Input {
               SourceOp = "Polygon4_1",
               Source = "Mask",
            },
         },
         ViewInfo = OperatorInfo { Pos = { -3858.78, 252.078, }, },
      },
      ChannelBooleans2_1 = ChannelBoolean {
         Inputs = {
            ApplyMaskInverted = Input { Value = 1, },
            MultiplyByMask = Input { Value = 1, },
            Operation = Input { Value = 1, },
            ToRed = Input { Value = 3, },
            ToGreen = Input { Value = 3, },
            ToBlue = Input { Value = 3, },
            ToAlpha = Input { Value = 4, },
            Background = Input {
               SourceOp = "Primatte3_1",
               Source = "Output",
            },
            EffectMask = Input {
               SourceOp = "Polygon3_1",
               Source = "Mask",
            },
         },
         ViewInfo = OperatorInfo { Pos = { -4041.13, 164.72, }, },
      },
      Polygon4_1 = PolylineMask {
         DrawMode = "InsertAndModify",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            SoftEdge = Input { Value = 0.0085714, },
            Invert = Input { Value = 1, },
            MaskWidth = Input { Value = 2048, },
            MaskHeight = Input { Value = 1556, },
            PixelAspect = Input { Value = { 1, 1, }, },
            ClippingMode = Input { Value = FuID { "None", }, },
            Polyline = Input {
               SourceOp = "Polygon4_1Polyline",
               Source = "Value",
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
         },
         ViewInfo = OperatorInfo { Pos = { -3840.51, 201.381, }, },
      },
      Polygon4_1Polyline = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47, },
         NameSet = true,
         KeyFrames = {
            [19] = { 0, Flags = { Linear = true, LockedY = true, }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { Linear = true, X = 0.0471139624714851, Y = 0.114593081176281, LX = -0.0070712057252725, LY = 0, RX = 0.00378227233519153, RY = -0.0109136276200325, },
                     { Linear = true, X = 0.0584607794880867, Y = 0.0818521976470947, LX = -0.00378227233519153, LY = 0.0109136276200325, RX = -0.00296003947086857, RY = -0.00748362933730721, },
                     { X = 0.0495806597173214, Y = 0.05940131098032, LX = 0.00641341748742496, LY = 0.00374181612531533, RX = -0.0048419081982575, RY = -0.00282494164913794, },
                     { X = 0.034780465066433, Y = 0.0528531335294247, LX = 0.00986679955089275, LY = -0.00935453719087469, RX = -0.010130775076661, RY = 0.00960480769252442, },
                     { X = 0.00419338932260871, Y = 0.0809167474508286, LX = -0.00296003938977407, LY = -0.00841908042569151, RX = 0.00518594458547434, RY = 0.0147501025490138, },
                     { X = 0.0259003452956676, Y = 0.114593081176281, LX = -0.0082605056937923, LY = -0.00946311558821929, RX = 0.0070712057252725, RY = 0, },
                  },
               }, },
         },
      },
      Note3_1 = Note {
         Inputs = {
            Comments = Input { Value = "how do I use the combined matte from the channelBoolean from the left of this, as a matte to the original loader.", },
         },
         ViewInfo = StickyNoteInfo {
            Pos = { -3621.46, 152.715, },
            Flags = {
               Expanded = true,
            },
            Size = { 196, 179.3, },
         },
      },
      Note2_1 = Note {
         Inputs = {
            Comments = Input { Value = "Detail added\r\n\r\n", },
         },
         ViewInfo = StickyNoteInfo {
            Pos = { -4277.83, 84.2104, },
            Flags = {
               Expanded = true,
            },
            Size = { 196, 179.3, },
         },
      },
      Primatte3_1 = Photron.Primatte4 {
         Inputs = {
            FineTuneRed = Input { Disabled = true, },
            FineTuneGreen = Input { Disabled = true, },
            FineTuneBlue = Input { Disabled = true, },
            PrimatteData = Input {
               Value = Primatte4Data {
                  Value = HexData [[
                     78 DA 63 F8 B2 CB 8D E1 8B AC 3B 43 C1 3F 37 01
                     06 46 06 10 60 65 40 80 02 28 FD 2A 52 2F 11 24
                     FB 32 E2 94 CA 8D D0 17 F6 08 15 AA 60 F2 C1 D4
                     C5 D9 48 DA 18 D8 D1 F4 C3 40 06 94 36 3F 39 45
                     E3 7F 3D 88 65 8A 55 1E 06 2A 7E 9E 4E 04 D1 4C
                     60 C8 C0 F0 62 FF 19 30 9F 03 CA 9F 03 E5 B3 40
                     F9 06 73 E4 D4 40 E6 2E 78 29 0C D6 EF 97 A4 1E
                     CB 76 15 61 DE 84 17 C2 28 E6 17 3C 47 E5 6B C1
                     18 33 67 DA 31 34 70 BB C0 B8 EF DF 35 38 A2 BA
                     8C 07 85 3F 6B 26 2B 9A 7C 83 3D 32 CF 6E C5 F2
                     04 46 64 7B 56 A1 F2 3B 3B 3A 6C 90 D5 7F 78 A7
                     7B 14 1C AE 3F 84 19 B0 81 9C 9E CA 64 46 2C F2
                     19 92 FC A5 20 BA 4B E7 5E 22 B2 F9 09 EF 21 EA
                     D8 18 98 12 C0 FE 7E 8F AA EF 83 2A F7 51 64 FE
                     FF 7A 10 84 F9 63 14 3F 79 1F E3 06 0C 15 77 18
                     FE 56 F2 17 85 0F C3 2F 8B F6 C1 D9 DA 27 8F BA
                     9D 7C AE E0 D6 A8 B9 08 AC 76 FF BC D3 60 71 B9
                     EE 8D EE D8 F4 82 F0 FF D9 47 DD 70 C9 DD 78 9B
                     EF 56 1B A5 E0 56 62 EB 01 56 53 93 DF 08 A6 DB
                     9E A8 81 E5 73 3A 15 71 9A 8B 8C DF CF 78 05 D6
                     97 EC 72 D2 DD FA 85 92 DB AA 6B CA 6E 8B 0D 4E
                     B8 25 7F DE EE 5E C3 BF 03 C3 FE 17 AF 2F BB DF
                     F5 FD E5 B6 86 2D C1 6D 34 1C 20 E1 80 C8 E3 A8
                     F9 1C 77 1A 22 4D FD 7F 1C C0 DE 89 9F 01 84 D1
                     C5 0F 6E B0 08 01 61 00 71 26 7D 65 ]],
                  EdgeData = HexData [[
                     78 DA 63 F8 B2 CB 8D E1 8B AC 3B 43 C1 3F 37 06
                     28 60 85 D2 CC 8C 0C 0C 0A 40 7A 03 03 83 5D C1
                     CE 33 89 20 B1 7D 19 EA B1 6C 57 19 18 18 A1 6A
                     0A FC A5 D5 FE D7 43 D4 80 F8 BC 71 4E 60 71 97
                     5B 9D B7 C1 F4 EB 7D 0F 40 F4 BF FF 10 E0 F0 69
                     EB 2D 06 24 00 33 C7 61 EA E2 6C 10 9D 97 0D 31
                     7F C3 1B 61 B0 F8 24 E3 C0 04 90 9A 03 0B 0F 83
                     ED 7F C2 02 51 AF A5 C8 D8 06 32 6F B9 E3 2C 0D
                     90 FD 30 60 A4 A9 04 76 0F 23 03 0E C0 2B 9D 0B
                     A2 32 A0 E6 C3 80 00 94 56 4E 9D 82 62 1E C8 0E
                     10 CD 04 17 11 01 93 0B C2 67 80 D5 C1 EC 6F F8
                     70 3C 0B 24 AE 50 2E 97 89 AC BE E1 74 A9 14 48
                     3E 73 C6 84 6B EE 35 20 8F EC FB FF B5 1E 21 3F
                     27 01 62 1F 3C 1C DE 42 DC 35 41 1C 62 4F 07 D4
                     9D 30 F9 CB 49 10 F5 30 FB FF 40 C3 15 3D 3C 19
                     A1 FA 54 6A D4 4D 41 F4 16 68 B8 49 BC 45 F5 37
                     33 94 BE 39 13 EA BE 8F C2 68 01 D6 60 3F 8A 1B
                     EC FB 8F B0 B9 03 53 03 1C 7F 2B F9 EB 86 CC 87
                     E1 97 45 FB E0 EC 29 DA 36 EE 67 F6 FB B8 25 C7
                     30 82 F9 FB E7 9D 76 C7 A6 07 19 DF E1 4C C6 29
                     17 D6 B4 D6 ED F9 9C 3E B7 D2 82 95 60 BB BF D9
                     6F 05 D3 6D 4F D4 C0 F2 39 9D 8A 04 CD 07 61 CF
                     76 4D 30 9D EC 72 D2 DD F6 E6 65 B7 A7 47 B3 DD
                     8E 2C 16 73 4F FE BC DD 7D EA 14 37 0C F5 2F 5E
                     5F 76 BF EB FB CB ED EA 81 56 B7 D1 70 80 84 03
                     6A DE 20 26 BF 90 A6 FE 3F 0E 60 EF C4 CF 00 C2
                     E8 E2 00 57 95 9F 1F ]],
                  BodyData = HexData [[
                     78 DA 63 F8 B2 CB 8D E1 8B AC 3B 43 C1 3F 37 06
                     28 60 65 20 0A 08 40 A8 00 06 57 06 3F 06 77 06
                     1F 06 63 06 23 06 3D 06 17 20 CB 07 28 2E 0C 96
                     DD 39 67 C2 35 F7 1A 06 86 1B 99 79 52 FF EB B1
                     19 C3 0C 26 67 7C 14 46 11 F5 B2 50 D0 40 56 6F
                     DB 32 05 CC FF F0 19 A2 6E CA FA E5 09 8C 30 49
                     91 89 0E FF FE 43 40 05 D4 9C 04 34 F3 08 01 F1
                     F7 93 35 B0 B9 CF 72 3E C4 FD 30 FB 61 A0 FD A1
                     52 F0 FF 2B 08 3E CC 2D AE 2C 2B 50 E8 55 3C 4A
                     28 7C B8 9B 99 18 50 E4 79 57 43 FC 8B 6E 4E 06
                     D4 1F 1D 50 9A 11 CD 7D 30 FE AA 55 A8 E1 05 33
                     5F B3 09 E2 FE 07 0C 5D FC 20 F9 06 AE D9 28 EA
                     D0 DD 05 73 0F 02 34 D8 8F E2 06 FB FE 23 6C EE
                     0C 0C FF E1 F8 5B C9 5F 37 64 3E 0C BF 2C DA 07
                     67 4F D1 B6 71 3F B3 DF C7 2D 39 86 11 CC DF 3F
                     EF B4 3B 36 3D C8 F8 0E 67 32 4E B9 B0 A6 B5 6E
                     CF E7 F4 B9 95 16 AC 04 DB FD CD 7E 2B 98 6E 7B
                     A2 06 96 CF E9 54 24 68 3E 08 7B B6 6B 82 E9 64
                     97 93 EE B6 37 2F BB 3D 3D 9A ED 76 64 B1 98 7B
                     F2 E7 ED EE 53 A7 B8 61 A8 7F F1 FA B2 FB 5D DF
                     5F 6E 57 0F B4 BA 8D 86 03 24 1C 50 F3 06 31 F9
                     85 34 F5 FF 71 00 7B 27 7E 06 10 46 17 07 00 60
                     01 7B 19 ]],
                  RtData = HexData [[
                     78 DA 3B 7B C6 C7 56 77 D3 5D 7B 10 3E 8B C1 8E
                     B5 07 61 4A D8 00 7B D0 2A C1 ]],
                  EdgeRtData = HexData [[
                     78 DA 3B 7B C6 C7 56 77 D3 5D 7B 10 3E 8B C1 8E
                     B5 07 61 4A D8 00 7B D0 2A C1 ]],
                  BodyRtData = HexData [[
                     78 DA 3B 7B C6 C7 56 77 D3 5D 7B 10 3E 8B C1 8E
                     B5 07 61 4A D8 00 7B D0 2A C1 ]],
               },
            },
            MatteGamma = Input { Value = 0.847619, },
            GarbageMatteMode = Input { Value = 1, },
            Foreground = Input {
               SourceOp = "Loader1_1_2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { -4224.54, 154.137, }, },
      },
      Note1_1 = Note {
         Inputs = {
            Comments = Input { Value = "Core Matte\r\n", },
         },
         ViewInfo = StickyNoteInfo {
            Pos = { -4349.55, 539.206, },
            Flags = {
               Expanded = true,
            },
            Size = { 196, 179.3, },
         },
      },
      Polygon3_1 = PolylineMask {
         DrawMode = "InsertAndModify",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            SoftEdge = Input { Value = 0.06, },
            Invert = Input { Value = 1, },
            OutputSize = Input { Value = FuID { "Custom", }, },
            MaskWidth = Input { Value = 2048, },
            MaskHeight = Input { Value = 1556, },
            PixelAspect = Input { Value = { 1, 1, }, },
            Polyline = Input {
               SourceOp = "Polygon3_1Polyline",
               Source = "Value",
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
         },
         ViewInfo = OperatorInfo { Pos = { -4041.87, 81.9084, }, },
      },
      Polygon3_1Polyline = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47, },
         NameSet = true,
         KeyFrames = {
            [26] = { 0, Flags = { Linear = true, LockedY = true, }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { X = 0.113737732172012, Y = 0.479661017656326, LX = 0.0043861557521976, LY = 0.0258558274025537, RX = -0.0115967879169866, RY = -0.0683615821566285, },
                     { X = 0.0789473652839661, Y = 0.274576276540756, LX = 0.00178411818316326, LY = 0.0101694968797392, RX = -0.00526548960182327, RY = -0.0300133593062209, },
                     { X = 0.0325602144002914, Y = 0.238983049988747, LX = 3.05732995577516e-010, LY = 0.0169491516836618, RX = -9.30043853159281e-010, RY = -0.0515595458273537, },
                     { X = 0.0718108862638474, Y = 0.103389829397202, LX = -0.0196253363967999, LY = 0.0420168373820957, RX = -0.00356824368176416, RY = -0.0067796606465248, },
                     { X = 0.0611061565577984, Y = 0.0830508470535278, LX = 0.0133809112411168, LY = 0.0237288131552228, RX = -0.00753417230533449, RY = -0.0133605973233864, },
                     { X = 0.0352363958954811, Y = 0.0508474558591843, LX = 0.00916779417849139, LY = 0.0094213969354786, RX = -0.00267618192055733, RY = -0.00564971692481283, },
                     { Linear = true, X = 0.027207849547267, Y = 0.0338983051478863, LX = 0.00267618192055733, LY = 0.00564971692481283, RX = -0.000297353357860926, RY = -0.0192090395690694, },
                     { X = 0.0263157896697521, Y = -0.0237288139760494, LX = -0.00624442442480633, LY = 0.00677966060022178, RX = 0.0119172824516133, RY = -0.0129387634155606, },
                     { X = 0.0655664578080177, Y = -0.0474576279520988, LX = -0.00981266797253533, LY = 0.00338982967501976, RX = 0.0282875687968454, RY = -0.00977206610985885, },
                     { X = 0.150312215089798, Y = -0.0779661014676094, LX = -0.045495099807615, LY = 0.0186440680239158, RX = 0.0490381799343314, RY = -0.0200960359759817, },
                     { X = 0.299286365509033, Y = -0.118644066154957, LX = -0.00802853190399089, LY = 1.64165338659523e-009, RX = 0.0145226570563586, RY = -2.96955525208686e-009, },
                     { X = 0.342105269432068, Y = -0.103389829397202, LX = -0.0115967823074504, LY = -0.0203389819395744, RX = 0.00834877987716074, RY = 0.0146424825988121, },
                     { X = 0.367082953453064, Y = -0.0593220330774784, LX = -0.00178412950857742, LY = -0.0237288127384954, RX = 0.00226437783359049, RY = 0.0301160859254612, },
                     { X = 0.379571825265884, Y = 0.0288135595619679, LX = -0.00267616759763038, LY = -0.0677966099295576, RX = 0.00237959232788057, RY = 0.0602833294101377, },
                     { X = 0.379571825265884, Y = 0.210169494152069, LX = 0.00356825702324388, LY = -0.0593220312716597, RX = -0.00385606881067993, RY = 0.0641068827393124, },
                     { X = 0.343889385461807, Y = 0.391525417566299, LX = 0.00713648626466176, LY = -0.0389830570099717, RX = -0.00866661739441263, RY = 0.0473413984754599, },
                     { X = 0.300178408622742, Y = 0.51694917678833, LX = 0.00713648177171577, LY = -0.0135592977879411, RX = -0.0183936337132293, RY = 0.034947858748615, },
                     { X = 0.2243532538414, Y = 0.552542388439178, LX = 0.0160570897022387, LY = 0.00169493081205976, RX = -0.0268542447678082, RY = -0.00283464112959436, },
                     { X = 0.144067794084549, Y = 0.537288129329681, LX = 0.0142729680363777, LY = 0.0169491462788341, RX = -0.0121244493796604, RY = -0.0143977808653691, },
                  },
               }, },
         },
      },
      UltraKeyer1_1 = UltraKeyer {
         Inputs = {
            ColorBackground = Input { Value = 1, },
            BackgroundCorrection = Input { Value = 1, },
            MatteSeparation = Input { Value = 0.5904762, },
            MatteBlur = Input { Value = 6.1428571, },
            MatteContractExpand = Input { Value = -0.6, },
            LowMatteThreshold = Input { Value = 0.2647059, },
            High = Input { Value = 0.9294118, },
            GarbageMatteMode = Input { Value = 1, },
            Input = Input {
               SourceOp = "Loader1_1_2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { -4292.04, 593.115, }, },
      },
      Loader1_1_2 = Loader {
         Clips = {
            Clip {
               ID = "Clip1",
               Filename = "V:\\_AE render\\Ep11_DeNoised\\ACUEP11_944_001_deNoised\\ACUEP11_944_001_919932.psd",
               FormatID = "PSDFormat",
               StartFrame = 919932,
               Length = 1088,
               LengthSetManually = true,
               TrimIn = 0,
               TrimOut = 1087,
               ExtendFirst = 0,
               ExtendLast = 0,
               Loop = 1,
               AspectMode = 0,
               Depth = 0,
               TimeCode = 0,
               GlobalStart = 0,
               GlobalEnd = 1087,
            },
         },
         Inputs = {
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2", }, },
         },
         ViewInfo = OperatorInfo { Pos = { -4708.94, 388.794, }, },
      },
      Thisisthesameloaderjustduplicated = Underlay {
         NameSet = true,
         ViewInfo = UnderlayInfo {
            Pos = { -4177.74, 297.574, },
            Size = { 1267.99, 164.3, },
         },
      },
   },
}
Offline
User avatar

michael vorberg

  • Posts: 943
  • Joined: Wed Nov 12, 2014 8:47 pm
  • Location: stuttgart, germany

Re: Keying-CoreMatte best practices

PostThu Oct 08, 2015 8:53 pm

dont use a duplicated loader

you could use a matte control node to copy the new alpha into your image and premult it, despill, adjust you matte
matte.JPG
matte.JPG (94.13 KiB) Viewed 8036 times


or copy the alpha with a channel boolean into your footage and premult

or use the inverted matte from the keyer as mask for a brightness/contrast and multiply with 0 on RGBA

or use any other tool, connect the keyer matte into the mask input and check the "Multiply by mask" option
Offline

Lucas Pfaff

  • Posts: 296
  • Joined: Mon Dec 03, 2012 3:35 pm

Re: Keying-CoreMatte best practices

PostFri Oct 09, 2015 6:18 pm

as it was asked for general setups for this workflow, I'll post mine :)
Note that I never used KAK, so maybe that would change my approach.
Also note that this is not a good key, only quickly thrown together with some explanation in there; I only looked at Frame 1 who knows how it looks elsewhere :) it uses CustomTools so it may be slow on F8

Footage is from Hollywood Camerawork ("hcw godiva wide") and the BG from Wikipedia in case you want to rebuild to look at it.

Comp is to big to add as code, therefore only for download (couldn't attach .comp so I zipped it)
Attachments
151009_FusionKeysetup_demo_rg.zip
(21.81 KiB) Downloaded 210 times
Offline

Ryan Bloomer

  • Posts: 765
  • Joined: Tue Jul 09, 2013 6:58 pm

Re: Keying-CoreMatte best practices

PostMon Oct 12, 2015 5:30 pm

Thanks Rick, this is really helpful.

Couple of questions:

lp_Despill.... i'm assuming there's some type of instance of ultra keyer in there for the screentype that keys out the green, and then despills based on the color infomation on the background input? Looking at the Color channels it looks like there is alpha, but when looking at the alpha, the channel is solid?

Is there a way to see how you made your selections for for the semi-transpartent instance of primatte.... I can't get the alpha channel as clean as yours when trying to recreate the flow.

And I'm not sure what's happening with the ChannelBooleans3 (lp_Despill connected with the matte) Is the channelbooleans doing anything different than using a merge would?

Thanks again,
Ryan
Offline

Lucas Pfaff

  • Posts: 296
  • Joined: Mon Dec 03, 2012 3:35 pm

Re: Keying-CoreMatte best practices

PostThu Oct 15, 2015 10:19 am

Ryan Bloomer wrote:Thanks Rick, this is really helpful.

Couple of questions:

lp_Despill.... i'm assuming there's some type of instance of ultra keyer in there for the screentype that keys out the green, and then despills based on the color infomation on the background input? Looking at the Color channels it looks like there is alpha, but when looking at the alpha, the channel is solid?

Is there a way to see how you made your selections for for the semi-transpartent instance of primatte.... I can't get the alpha channel as clean as yours when trying to recreate the flow.

And I'm not sure what's happening with the ChannelBooleans3 (lp_Despill connected with the matte) Is the channelbooleans doing anything different than using a merge would?

Thanks again,
Ryan

Hi Ryan,

that Macro is my own tool, so it works a bit different than Fusions own ones. The despill is not made by an ultrakeyer but with channel expressions, using the CustomTool (which is super slow in F8, hope it gets fixed soon). No keying is done inside the despill, just the expressions (avg, min or max; yet I don't know if that version in the script already has min integrated). I'm actually working on an article to explain the basics behind it; you can also output a matte of only the spill by hitting the according checkbox within the tool (can be used for some interesting keying- and colour-correcting effects, too)

The Primatte is actually really straight forward, I usually start hitting the auto-compute and then switch to "select background" and clean up anything that my garbage matte doesn't take care of. I only use "select foreground" very slight, I think I used a bit on the semi-transparent areas in the cloth

The ChannelBooleans is only adding the Alpha-Channel generated in the "matte area" (the area left) into the despilled RGB. So basically, you use the RGB of the despill and add ONLY the Alpha. I don't know if Merge could handle that too, ChannelBooleans does this really well for me :) Of course we have to premultuply it after that, that's what the "Alpha Multiply" is for.
I'm more of a Nuke user and have a different approach I guess, for example building top to bottom instead of left to right, haha :)

but definately check out the KAK to, I do believe it's an awesome tool
Offline

Ryan Bloomer

  • Posts: 765
  • Joined: Tue Jul 09, 2013 6:58 pm

Re: Keying-CoreMatte best practices

PostThu Oct 15, 2015 2:27 pm

Thanks for the explanations Rick, and sharing your custom macro!

This has been really helpful understanding the flow of getting into keying trickier shots. I've used KAK before, but found it pretty slow for the keys I was working on at the time, and I'd gotten great results with Primatte for those keys. But i'm starting to work with much trickier keys (motion blur, semi-transparent areas, hair, fur, etc) there's been a lot of regard for KAK, so i'll have to give it another shot again and see how it does.

Thanks again.
Offline

Lucas Pfaff

  • Posts: 296
  • Joined: Mon Dec 03, 2012 3:35 pm

Re: Keying-CoreMatte best practices

PostThu Oct 15, 2015 2:33 pm

I have another tool that can help with blurry/out of focus objects; not so much with the key itself, but with the result afterwards.
It's not done yet, but I can send it to you when I finished if you like. Then the despill (and the lightwrap which should also be inside the script) should be final too :)
Offline

Ryan Bloomer

  • Posts: 765
  • Joined: Tue Jul 09, 2013 6:58 pm

Re: Keying-CoreMatte best practices

PostThu Oct 15, 2015 9:12 pm

that would be great Rick, would love to try out the new tool you're working on. The more I learn about Fusion the more I realize how much I don't know about it. Coming from After Effects, it really makes compositing such a better experience and I'm continually blown away with the community of users, that share and help.

cheers

Return to Fusion

Who is online

Users browsing this forum: No registered users and 27 guests