LiQuidCrab

Edge

Mar 29th, 2021 (edited)
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 27.56 KB | None | 0 0
  1. set cut_paste_input [stack 0]
  2. push $cut_paste_input
  3. Group {
  4.  name Edge2
  5.  help "Edge allows you to extend the proper color out over transparent edges or areas with a lot of motionblur without eroding away the nice detail. This edge extend has some more advanced features like splitting the core matte and final key which allows you to work on motion blur without effecting small details like hair or a swinging rope for example. There is also more control over how you blend the core detail to the extended edge color. This was shown to me years ago by an old comp sup I had and is the same as the edge extend by Frank Reuter. This is my version of it that has evolved a little bit over the years.\n\nInputs\nThere are multiple inputs to Edge but you can just plug in your FG with alpha if you want to use it simplified. Separating Core and Softer keys or using roto with and without motionblur has advantages in certain situations. ie: If you have a thin object this will help maintain solid alpha where you need it.\n\nFG – Foreground plate with Spill suppression applied\nCore – This is like a core matte, it helps identify the leading edge and where the edge tool should start from. It is important to add this core so that small details are not lost like a thin rope or hair.\nKey – This is your Key with fine hair details and transparent motion blurred edges. For Roto you want to have motion blur turned on.\nBG – This is where your Background goes if you are using the node as Final Result\nMask - Currently this only works if you are using Edge in Final result."
  6.  tile_color 0x990000
  7.  label "\[value iterations]"
  8.  selected true
  9.  addUserKnob {20 User l Extend}
  10.  addUserKnob {6 xxx_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  11.  addUserKnob {41 in l channels T Shuffle2.in}
  12.  addUserKnob {4 operation t "Here you can choose if you want to use the Edge Tool to merge together your foreground and background giving you the Final Result or if you would like the Intermediate Result which is unpremultiplied and not merged over the background. The Intermediate Result can be helpful when tweaking parameters like the edgegrow start and edgegrow size." M {Final Intermediate "" ""}}
  13.  operation Intermediate
  14.  addUserKnob {6 previewedgematte l "preview edge matte" t "This allows you to preview your edge matte that you can use via the channels created in the edge node or by creating a shuffle using the button at the bottom." -STARTLINE}
  15.  addUserKnob {6 extendChromaOnly l "extend chroma only" t "This selection will extend only Chroma information by swapping back in the original luminance information." +STARTLINE}
  16.  addUserKnob {41 exp -STARTLINE T EdgeExpansion.exp}
  17.  addUserKnob {6 premultiplied t "Select this if your footage is already premultiplied to remove dark edges in the extension." -STARTLINE}
  18.  addUserKnob {6 clamped l "clamp alpha" t "Select this if your alpha has values below 0 or above 1." -STARTLINE}
  19.  addUserKnob {26 ""}
  20.  addUserKnob {14 edgeStart l "slice start" t "Determines where you would like to start bleeding out the color from the inside of your key. It does this with a series of unpremult, blur, premult operations instead of a standard erode." R 0 100}
  21.  edgeStart 1
  22.  addUserKnob {41 iterations l "slice iterations" t "Sets how large the edge with the color bleeding will be from the edge grow start or core matte and how many times this will be duplicated." T EdgeExpansion.iterations}
  23.  addUserKnob {41 sliceWidth l "slice width" t "The slice width is the amount of blur being applied per slice." T EdgeExpansion.sliceWidth}
  24.  addUserKnob {41 sliceBlur l INVISIBLE +INVISIBLE T EdgeExpansion.sliceBlur}
  25.  addUserKnob {26 ""}
  26.  addUserKnob {7 blurEdgeBlend l "edge blend" t "Helps to soften the transition from the original to the new edge. It tends to erode the bleeding color back inwards if you use high values." R 0 10}
  27.  addUserKnob {7 blurEdgeBlur l "edge blur" t "This helps soften the transition bringing back original detail. This can sometimes bring back some lighting information instead of having it completely replaced." R 0 10}
  28.  addUserKnob {7 filterErodeEdgeSmooth l "edge smooth" t "This one will help with extremely large motionblur and completely takes away detail. This should not be used in most cases but if you do use it sparingly." R -10 10}
  29.  addUserKnob {26 ""}
  30.  addUserKnob {41 maskChannelMask l mask -STARTLINE T Merge3.maskChannelMask}
  31.  addUserKnob {41 inject -STARTLINE T Merge3.inject}
  32.  addUserKnob {41 invert_mask l invert -STARTLINE T Merge3.invert_mask}
  33.  addUserKnob {41 fringe -STARTLINE T Merge3.fringe}
  34.  addUserKnob {26 ""}
  35.  addUserKnob {22 edgeShuffleButton l "create edge matte" t "This will generate a shuffle node that isolates the areas of extension which you can use to regrain your edges." T "nuke.root().begin()\nEdgeShuffle = nuke.createNode('Shuffle', inpanel = False)\nEdgeShuffle\['label'].setValue( 'Regrain this edge' )\nEdgeShuffle\['in'].setValue( 'edge' )\nEdgeShuffle\['in2'].setValue( 'none' )\nEdgeShuffle\['red'].setValue('alpha')\nEdgeShuffle\['green'].setValue('alpha')\nEdgeShuffle\['blue'].setValue('alpha')\nEdgeShuffle\['alpha'].setValue('alpha')" +STARTLINE}
  36.  addUserKnob {26 reminder l "" -STARTLINE T "*** use edge.matte to regrain your edges. ***"}
  37.  addUserKnob {20 color l Blending}
  38.  addUserKnob {6 enablecolor l enable t "This tab will help you blending your foreground edges with the background color. it is based off the edge extension in the first tab but you can modify the edge properties to get your desired look." +STARTLINE}
  39.  addUserKnob {6 colorpreview l preview t "Preview the edge being used for blending with the BG. This helps if you want to modify it further." -STARTLINE}
  40.  addUserKnob {41 operation_1 l operation t "This is the merge operation you want to use for blending. It is set to average by default but you can use anything you like ie: plus, max, min." T ColorMerge.operation}
  41.  addUserKnob {7 erodeExpandEdge l "expand edge" t "You can expand or contract the edge created in the extend tab." R -100 100}
  42.  addUserKnob {7 blurSoftenEdge l "soften edge" t "This blur will help soften the transition of the inside blending edge." R 0 100}
  43.  addUserKnob {41 mix_1 l "mix fg luma" t "At a value of 1 this will only blend the chroma information but you can mix this back to include the luma info as well." T Copy5.mix}
  44.  addUserKnob {7 mergeBlendingMix l mix t "Mix Edge Blending result"}
  45.  mergeBlendingMix 1
  46.  addUserKnob {26 ""}
  47.  addUserKnob {7 BlurBG l "blur bg" t "Blur the details in the background when you blend them so your foreground doesnt look transparent." R 0 100}
  48.  addUserKnob {26 ""}
  49.  addUserKnob {20 AdjustBGColor l "adjust bg color" t "Here you can modify the color and saturation of the bg being used for blending. This will anly affect the blending not the actual bg." n 1}
  50.  AdjustBGColor 0
  51.  addUserKnob {41 white l gain T GradeEdgeColor.white}
  52.  addUserKnob {41 gamma T GradeEdgeColor.gamma}
  53.  addUserKnob {41 black l lift T GradeEdgeColor.black}
  54.  addUserKnob {41 saturation T EdgeSat.saturation}
  55.  addUserKnob {41 mix l INVISIBLE +INVISIBLE T ColorMerge.mix}
  56.  addUserKnob {20 endGroup n -1}
  57.  addUserKnob {20 MaskBGLuma l "mask bg luma" t "This section will allow you to preview and isolate the bright areas of the bg to wrap around your foreground. Think of this as a way to have lights wrap arpound your foreground in car comps." n 1}
  58.  MaskBGLuma 0
  59.  addUserKnob {26 maskBgLuma l "mask bg luma"}
  60.  addUserKnob {6 enableBGMask l "enable bg mask" +STARTLINE}
  61.  addUserKnob {6 PreviewBG l "preview bg input" -STARTLINE}
  62.  addUserKnob {41 range l INVISIBLE +INVISIBLE T Keyer1.range}
  63.  addUserKnob {41 out l "Luma Range" T controler.out}
  64.  addUserKnob {20 endGroup_1 l endGroup n -1}
  65.  addUserKnob {20 info l Info}
  66.  addUserKnob {26 ""}
  67.  addUserKnob {26 info_1 l "" +STARTLINE T "\nEdge Version 6.9\nCreated by Rob Bannister\nwww.bannisterpost.com"}
  68.  addUserKnob {26 help_1 l "" +STARTLINE T "<a href=\"http://www.bannisterpost.com/downloads/edge/\" style=\"color:white\">HELP</a>"}
  69. }
  70.  Histogram {
  71.   inputs 0
  72.   name controler
  73.   xpos -982
  74.   ypos 561
  75.  }
  76.  Input {
  77.   inputs 0
  78.   name FG
  79.   xpos 376
  80.   ypos -342
  81.  }
  82.  Unpremult {
  83.   name Unpremult3
  84.   xpos 376
  85.   ypos -288
  86.   disable {{!parent.premultiplied}}
  87.  }
  88.  Dot {
  89.   name Dot14
  90.   xpos 410
  91.   ypos -224
  92.  }
  93. set N209dd000 [stack 0]
  94.  Input {
  95.   inputs 0
  96.   name Key
  97.   xpos -215
  98.   ypos -318
  99.   number 1
  100.  }
  101.  Clamp {
  102.   name Clamp1
  103.   xpos -215
  104.   ypos -180
  105.   disable {{parent.clamped==0?1:0}}
  106.  }
  107.  Switch {
  108.   inputs 2
  109.   which {{"!\[exists parent.input1]"}}
  110.   name Switch1
  111.   xpos -215
  112.   ypos -61
  113.  }
  114. set N209dd800 [stack 0]
  115.  Shuffle {
  116.   red alpha
  117.   green alpha
  118.   blue alpha
  119.   name Shuffle1
  120.   xpos -215
  121.   ypos 237
  122.  }
  123. set N20a19000 [stack 0]
  124.  Dot {
  125.   name Dot6
  126.   xpos -181
  127.   ypos 477
  128.  }
  129. set N20a18c00 [stack 0]
  130. push $N209dd800
  131.  Input {
  132.   inputs 0
  133.   name Core
  134.   xpos 791
  135.   ypos -331
  136.   number 2
  137.  }
  138.  Clamp {
  139.   name Clamp2
  140.   xpos 787
  141.   ypos -157
  142.   disable {{parent.clamped==0?1:0}}
  143.  }
  144.  Switch {
  145.   inputs 2
  146.   which {{"!\[exists parent.input2]"}}
  147.   name Switch5
  148.   xpos 787
  149.   ypos -61
  150.  }
  151.  Erode {
  152.   size {{parent.edgeStart}}
  153.   name Erode1
  154.   label "\[value size]"
  155.   xpos 787
  156.   ypos 22
  157.  }
  158.  Blur {
  159.   channels alpha
  160.   size {{parent.blurEdgeBlur}}
  161.   name Blur_edgeBur
  162.   label "\[value size]"
  163.   xpos 787
  164.   ypos 126
  165.  }
  166. set N20a19800 [stack 0]
  167.  Blur {
  168.   channels alpha
  169.   size {{parent.blurEdgeBlend}}
  170.   name blue_edgeBlend
  171.   label "\[value size]"
  172.   xpos 591
  173.   ypos 126
  174.  }
  175.  FilterErode {
  176.   size {{parent.filterErodeEdgeSmooth}}
  177.   filter gaussian
  178.   name FilterErode_edgeSmooth
  179.   label "\[value size]"
  180.   xpos 591
  181.   ypos 224
  182.  }
  183. set N20a4b800 [stack 0]
  184. push $N20a19000
  185.  ChannelMerge {
  186.   inputs 2
  187.   operation stencil
  188.   name ChannelMerge1
  189.   xpos -64
  190.   ypos 224
  191.  }
  192.  ChannelMerge {
  193.   inputs 2
  194.   operation multiply
  195.   name ChannelMerge2
  196.   xpos -64
  197.   ypos 460
  198.  }
  199.  Dot {
  200.   name Dot17
  201.   xpos -30
  202.   ypos 691
  203.  }
  204. set N20a4a800 [stack 0]
  205.  Dot {
  206.   name Dot11
  207.   xpos -30
  208.   ypos 1133
  209.  }
  210.  Input {
  211.   inputs 0
  212.   name BG
  213.   xpos -1081
  214.   ypos -343
  215.   number 3
  216.  }
  217.  Dot {
  218.   name Dot5
  219.   xpos -1047
  220.   ypos 293
  221.  }
  222. set N20a4bc00 [stack 0]
  223.  Dot {
  224.   name Dot12
  225.   xpos -1047
  226.   ypos 644
  227.  }
  228. set N20a6bc00 [stack 0]
  229.  Keyer {
  230.   operation "luminance key"
  231.   range {{parent.controler.out.0} {parent.controler.out.1} 1 1}
  232.   name Keyer1
  233.   xpos -979
  234.   ypos 634
  235.  }
  236.  Blur {
  237.   channels rgba
  238.   size {{parent.BlurBG}}
  239.   name Blur2
  240.   label "\[value size]"
  241.   xpos -717
  242.   ypos 634
  243.  }
  244. set N20a6b400 [stack 0]
  245. push $N20a4b800
  246.  Dot {
  247.   name Dot7
  248.   xpos 625
  249.   ypos 344
  250.  }
  251. set N20a6b000 [stack 0]
  252.  Dilate {
  253.   channels alpha
  254.   size {{parent.erodeExpandEdge}}
  255.   name DilateColorEdge
  256.   label "\[value size]"
  257.   xpos -388
  258.   ypos 327
  259.  }
  260.  Blur {
  261.   channels alpha
  262.   size {{parent.blurSoftenEdge}}
  263.   name BlurColorEdge
  264.   label "\[value size]"
  265.   xpos -498
  266.   ypos 327
  267.  }
  268. push $N20a19800
  269. push $N209dd000
  270.  Shuffle {
  271.   name Shuffle2
  272.   xpos 376
  273.   ypos -174
  274.  }
  275.  Remove {
  276.   channels alpha
  277.   name Remove1
  278.   xpos 376
  279.   ypos -113
  280.  }
  281.  Dot {
  282.   name Dot16
  283.   xpos 410
  284.   ypos 459
  285.  }
  286. set N32be1c00 [stack 0]
  287.  Group {
  288.   inputs 2
  289.   name EdgeExpansion
  290.   knobChanged "\n\nn = nuke.thisNode()\nk = nuke.thisKnob()\n\nif 'iterations' in k.name(): \n    #print int(k.value())\n    k.setValue(int(k.value()))\n    if k.value()<1:\n        k.setValue(1)\n    n.begin()\n\n    for node in nuke.allNodes():\n        if 'static' not in node\['label'].value():\n            nuke.delete(node)\n\n    slices = int(n\['iterations'].value())-1\n    step = 1\n    blur_count = 5\n    merge_count = 2\n    unpremult_count = 4\n    num = 1\n    for x in range(1,slices+step,step):\n        \n        a = nuke.createNode('Blur', inpanel=False)\n        new_knob = nuke.Int_Knob('exp_value')\n        a.addKnob(new_knob)\n        a\['exp_value'].setValue(num)\n        a.setInput(0, nuke.toNode('Unpremult' + str(unpremult_count)))\n        a\['size'].setExpression('parent.sliceWidth*(parent.exp==0?1:exp_value)')\n        a\['channels'].setValue('red green blue depth.Z')\n\n        b = nuke.createNode('Shuffle', inpanel=False)\n        b\['in'].setValue( 'rgba' )\n        b\['in2'].setValue( 'depth' )\n        b\['out2'].setValue( 'depth' )\n        b\['alpha'].setValue('red2')\n\n        c = nuke.createNode('Unpremult', inpanel=False)\n        c\['channels'].setValue('red green blue alpha')\n        c\['alpha'].setValue('depth.Z')\n\n        d = nuke.createNode('Blur', inpanel=False)\n        new_knob = nuke.Int_Knob('exp_value')\n        d.addKnob(new_knob)\n        d\['exp_value'].setValue(num)\n        d\['size'].setExpression('parent.sliceWidth*(parent.exp==0?1:exp_value)')\n        d\['channels'].setValue('rgba')\n\n        e = nuke.createNode('Merge2', inpanel=False)\n        e\['Achannels'].setValue('red green blue depth.Z')\n        e.setInput(1, nuke.toNode('Merge' + str(merge_count)))\n        e.setInput(0, nuke.toNode('Blur' + str(blur_count+2)))\n\n        merge_count += 1\n        blur_count += 2\n        unpremult_count += 1\n\n        f = nuke.createNode('Blur', inpanel=False)\n        new_knob = nuke.Int_Knob('exp_value')\n        f.addKnob(new_knob)\n        f\['exp_value'].setValue(num)\n        f.setInput(0, nuke.toNode('Unpremult' + str(unpremult_count)))\n        f\['size'].setExpression('parent.sliceWidth*(parent.exp==0?1:exp_value)')\n        f\['channels'].setValue('rgba')\n\n        g = nuke.createNode('Shuffle', inpanel=False)\n        g\['in'].setValue( 'rgba' )\n        g\['in2'].setValue( 'depth' )\n        g\['out2'].setValue( 'depth' )\n        g\['black'].setValue('alpha')\n\n        h = nuke.createNode('Unpremult', inpanel=False)\n        h\['channels'].setValue('red green blue depth.Z')\n\n        j = nuke.createNode('Blur', inpanel=False)\n        new_knob = nuke.Int_Knob('exp_value')\n        j.addKnob(new_knob)\n        j\['exp_value'].setValue(num)\n        j\['size'].setExpression('parent.sliceWidth*(parent.exp==0?1:exp_value)')\n        j\['channels'].setValue('red green blue depth.Z')\n\n        k = nuke.createNode('Merge2', inpanel=False)\n        k.setInput(1, nuke.toNode('Merge' + str(merge_count)))\n        k.setInput(0, nuke.toNode('Blur' + str(blur_count+2)))\n\n        merge_count += 1\n        blur_count += 2\n        unpremult_count += 1\n        num += 1\n        nuke.toNode('Output1').setInput(0, k)\n\n    try:\n        nuke.toNode('Blur5').setInput(0, nuke.toNode('Unpremult4'))\n    except:\n        nuke.toNode('Output1').setInput(0, nuke.toNode('Merge2'))\n\n    n.end()\n    \n\n"
  291.   note_font_size 25
  292.   xpos 787
  293.   ypos 449
  294.   addUserKnob {20 User}
  295.   addUserKnob {6 firstrun l "Disable before input" +STARTLINE}
  296.   firstrun {{"!\[exists parent.input0]"}}
  297.   addUserKnob {6 exp t "The exponential check box will add a variable to the duplicated blurs that increases as they move outwards from the original edge. This might help if you have a large distance to extend." +STARTLINE}
  298.   addUserKnob {7 iterations t "Sets how large the edge with the color bleeding will be from the edge grow start or core matte and how many times this will be duplicated. The smaller the width the more detail is preserved.This should be just big enough to reach the edge of the largest areas of motionblur." R 1 25}
  299.   iterations 5
  300.   addUserKnob {7 sliceWidth l "slice width" t "The slice width is the amount of blur being applied per slice." R 1 10}
  301.   sliceWidth 1
  302.   addUserKnob {7 sliceBlur l "slice blur" t "The slice width is the amount of blur being applied per slice." R 1 10}
  303.   sliceBlur 1
  304.  }
  305.   Input {
  306.    inputs 0
  307.    name Alpha
  308.    label static
  309.    xpos -218
  310.    ypos -646
  311.    number 1
  312.   }
  313.   Input {
  314.    inputs 0
  315.    name RGB
  316.    label static
  317.    xpos -64
  318.    ypos -772
  319.   }
  320.   Unpremult {
  321.    name Unpremult1
  322.    label static
  323.    xpos -64
  324.    ypos -689
  325.   }
  326.   Copy {
  327.    inputs 2
  328.    from0 rgba.alpha
  329.    to0 rgba.alpha
  330.    name Copy1
  331.    label static
  332.    xpos -64
  333.    ypos -653
  334.    disable {{parent.firstrun}}
  335.   }
  336.   Premult {
  337.    name Premult1
  338.    label static
  339.    xpos -64
  340.    ypos -599
  341.   }
  342.   Shuffle {
  343.    black alpha
  344.    out2 depth
  345.    name Shuffle1
  346.    label static
  347.    xpos -64
  348.    ypos -561
  349.   }
  350.   Unpremult {
  351.    channels {rgba.red rgba.green rgba.blue depth.Z}
  352.    name Unpremult2
  353.    label static
  354.    xpos -64
  355.    ypos -523
  356.   }
  357. set N32be0000 [stack 0]
  358.   Blur {
  359.    channels {rgba.red rgba.green rgba.blue depth.Z}
  360.    size {{parent.sliceWidth}}
  361.    name Blur1
  362.    label static
  363.    xpos -64
  364.    ypos -428
  365.   }
  366.   Dot {
  367.    name Dot2
  368.    label static
  369.    xpos -30
  370.    ypos -336
  371.   }
  372. push $N32be0000
  373.   Blur {
  374.    channels {rgba.red rgba.green rgba.blue depth.Z}
  375.    size {{parent.sliceWidth}}
  376.    name Blur2
  377.    label static
  378.    xpos 46
  379.    ypos -523
  380.   }
  381.   Shuffle {
  382.    in2 depth
  383.    alpha red2
  384.    out2 depth
  385.    name Shuffle2
  386.    label static
  387.    xpos 46
  388.    ypos -471
  389.   }
  390.   Unpremult {
  391.    channels rgba
  392.    alpha depth.Z
  393.    name Unpremult3
  394.    label static
  395.    xpos 46
  396.    ypos -435
  397.   }
  398. set N32c06c00 [stack 0]
  399.   Blur {
  400.    channels rgba
  401.    size {{parent.sliceWidth}}
  402.    name Blur3
  403.    label static
  404.    xpos 46
  405.    ypos -381
  406.   }
  407.   Merge2 {
  408.    inputs 2
  409.    Achannels {rgba.red rgba.green rgba.blue depth.Z}
  410.    name Merge1
  411.    label static
  412.    xpos 46
  413.    ypos -343
  414.   }
  415.   Dot {
  416.    name Dot3
  417.    label static
  418.    xpos 80
  419.    ypos -237
  420.   }
  421. push $N32c06c00
  422.   Blur {
  423.    channels rgba
  424.    size {{parent.sliceWidth}}
  425.    name Blur4
  426.    label static
  427.    xpos 156
  428.    ypos -428
  429.   }
  430.   Shuffle {
  431.    in2 depth
  432.    black alpha
  433.    out2 depth
  434.    name Shuffle3
  435.    label static
  436.    xpos 156
  437.    ypos -390
  438.   }
  439.   Unpremult {
  440.    channels {rgba.red rgba.green rgba.blue depth.Z}
  441.    name Unpremult4
  442.    label static
  443.    xpos 156
  444.    ypos -350
  445.   }
  446. set N32c37400 [stack 0]
  447.   Blur {
  448.    channels {rgba.red rgba.green rgba.blue depth.Z}
  449.    size {{parent.sliceWidth}}
  450.    name Blur5
  451.    label static
  452.    xpos 156
  453.    ypos -299
  454.   }
  455.   Merge2 {
  456.    inputs 2
  457.    name Merge2
  458.    label static
  459.    xpos 156
  460.    ypos -247
  461.   }
  462. push $N32c37400
  463.   Blur {
  464.    channels {rgba.red rgba.green rgba.blue depth.Z}
  465.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  466.    name Blur6
  467.    label "\[value size]"
  468.    addUserKnob {20 User}
  469.    addUserKnob {3 exp_value}
  470.    exp_value 1
  471.   }
  472.   Shuffle {
  473.    in2 depth
  474.    alpha red2
  475.    out2 depth
  476.    name Shuffle4
  477.   }
  478.   Unpremult {
  479.    channels rgba
  480.    alpha depth.Z
  481.    name Unpremult5
  482.   }
  483. set N32c36000 [stack 0]
  484.   Blur {
  485.    channels rgba
  486.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  487.    name Blur7
  488.    label "\[value size]"
  489.    addUserKnob {20 User}
  490.    addUserKnob {3 exp_value}
  491.    exp_value 1
  492.   }
  493.   Merge2 {
  494.    inputs 2
  495.    Achannels {rgba.red rgba.green rgba.blue depth.Z}
  496.    name Merge3
  497.   }
  498. push $N32c36000
  499.   Blur {
  500.    channels rgba
  501.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  502.    name Blur8
  503.    label "\[value size]"
  504.    addUserKnob {20 User}
  505.    addUserKnob {3 exp_value}
  506.    exp_value 1
  507.   }
  508.   Shuffle {
  509.    in2 depth
  510.    black alpha
  511.    out2 depth
  512.    name Shuffle5
  513.   }
  514.   Unpremult {
  515.    channels {rgba.red rgba.green rgba.blue depth.Z}
  516.    name Unpremult6
  517.   }
  518. set N32c68c00 [stack 0]
  519.   Blur {
  520.    channels {rgba.red rgba.green rgba.blue depth.Z}
  521.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  522.    name Blur9
  523.    label "\[value size]"
  524.    addUserKnob {20 User}
  525.    addUserKnob {3 exp_value}
  526.    exp_value 1
  527.   }
  528.   Merge2 {
  529.    inputs 2
  530.    name Merge4
  531.   }
  532. push $N32c68c00
  533.   Blur {
  534.    channels {rgba.red rgba.green rgba.blue depth.Z}
  535.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  536.    name Blur10
  537.    label "\[value size]"
  538.    addUserKnob {20 User}
  539.    addUserKnob {3 exp_value}
  540.    exp_value 2
  541.   }
  542.   Shuffle {
  543.    in2 depth
  544.    alpha red2
  545.    out2 depth
  546.    name Shuffle6
  547.   }
  548.   Unpremult {
  549.    channels rgba
  550.    alpha depth.Z
  551.    name Unpremult7
  552.   }
  553. set N32ca3800 [stack 0]
  554.   Blur {
  555.    channels rgba
  556.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  557.    name Blur11
  558.    label "\[value size]"
  559.    addUserKnob {20 User}
  560.    addUserKnob {3 exp_value}
  561.    exp_value 2
  562.   }
  563.   Merge2 {
  564.    inputs 2
  565.    Achannels {rgba.red rgba.green rgba.blue depth.Z}
  566.    name Merge5
  567.   }
  568. push $N32ca3800
  569.   Blur {
  570.    channels rgba
  571.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  572.    name Blur12
  573.    label "\[value size]"
  574.    addUserKnob {20 User}
  575.    addUserKnob {3 exp_value}
  576.    exp_value 2
  577.   }
  578.   Shuffle {
  579.    in2 depth
  580.    black alpha
  581.    out2 depth
  582.    name Shuffle7
  583.   }
  584.   Unpremult {
  585.    channels {rgba.red rgba.green rgba.blue depth.Z}
  586.    name Unpremult8
  587.   }
  588. set N32ca2400 [stack 0]
  589.   Blur {
  590.    channels {rgba.red rgba.green rgba.blue depth.Z}
  591.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  592.    name Blur13
  593.    label "\[value size]"
  594.    addUserKnob {20 User}
  595.    addUserKnob {3 exp_value}
  596.    exp_value 2
  597.   }
  598.   Merge2 {
  599.    inputs 2
  600.    name Merge6
  601.   }
  602. push $N32ca2400
  603.   Blur {
  604.    channels {rgba.red rgba.green rgba.blue depth.Z}
  605.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  606.    name Blur14
  607.    label "\[value size]"
  608.    addUserKnob {20 User}
  609.    addUserKnob {3 exp_value}
  610.    exp_value 3
  611.   }
  612.   Shuffle {
  613.    in2 depth
  614.    alpha red2
  615.    out2 depth
  616.    name Shuffle8
  617.   }
  618.   Unpremult {
  619.    channels rgba
  620.    alpha depth.Z
  621.    name Unpremult9
  622.   }
  623. set N32cd7000 [stack 0]
  624.   Blur {
  625.    channels rgba
  626.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  627.    name Blur15
  628.    label "\[value size]"
  629.    addUserKnob {20 User}
  630.    addUserKnob {3 exp_value}
  631.    exp_value 3
  632.   }
  633.   Merge2 {
  634.    inputs 2
  635.    Achannels {rgba.red rgba.green rgba.blue depth.Z}
  636.    name Merge7
  637.   }
  638. push $N32cd7000
  639.   Blur {
  640.    channels rgba
  641.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  642.    name Blur16
  643.    label "\[value size]"
  644.    addUserKnob {20 User}
  645.    addUserKnob {3 exp_value}
  646.    exp_value 3
  647.   }
  648.   Shuffle {
  649.    in2 depth
  650.    black alpha
  651.    out2 depth
  652.    name Shuffle9
  653.   }
  654.   Unpremult {
  655.    channels {rgba.red rgba.green rgba.blue depth.Z}
  656.    name Unpremult10
  657.   }
  658. set N32d11c00 [stack 0]
  659.   Blur {
  660.    channels {rgba.red rgba.green rgba.blue depth.Z}
  661.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  662.    name Blur17
  663.    label "\[value size]"
  664.    addUserKnob {20 User}
  665.    addUserKnob {3 exp_value}
  666.    exp_value 3
  667.   }
  668.   Merge2 {
  669.    inputs 2
  670.    name Merge8
  671.   }
  672. push $N32d11c00
  673.   Blur {
  674.    channels {rgba.red rgba.green rgba.blue depth.Z}
  675.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  676.    name Blur18
  677.    label "\[value size]"
  678.    addUserKnob {20 User}
  679.    addUserKnob {3 exp_value}
  680.    exp_value 4
  681.   }
  682.   Shuffle {
  683.    in2 depth
  684.    alpha red2
  685.    out2 depth
  686.    name Shuffle10
  687.   }
  688.   Unpremult {
  689.    channels rgba
  690.    alpha depth.Z
  691.    name Unpremult11
  692.   }
  693. set N32d10800 [stack 0]
  694.   Blur {
  695.    channels rgba
  696.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  697.    name Blur19
  698.    label "\[value size]"
  699.    addUserKnob {20 User}
  700.    addUserKnob {3 exp_value}
  701.    exp_value 4
  702.   }
  703.   Merge2 {
  704.    inputs 2
  705.    Achannels {rgba.red rgba.green rgba.blue depth.Z}
  706.    name Merge9
  707.   }
  708. push $N32d10800
  709.   Blur {
  710.    channels rgba
  711.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  712.    name Blur20
  713.    label "\[value size]"
  714.    addUserKnob {20 User}
  715.    addUserKnob {3 exp_value}
  716.    exp_value 4
  717.   }
  718.   Shuffle {
  719.    in2 depth
  720.    black alpha
  721.    out2 depth
  722.    name Shuffle11
  723.   }
  724.   Unpremult {
  725.    channels {rgba.red rgba.green rgba.blue depth.Z}
  726.    name Unpremult12
  727.   }
  728.   Blur {
  729.    channels {rgba.red rgba.green rgba.blue depth.Z}
  730.    size {{parent.sliceWidth*(parent.exp==0?1:exp_value)}}
  731.    name Blur21
  732.    label "\[value size]"
  733.    addUserKnob {20 User}
  734.    addUserKnob {3 exp_value}
  735.    exp_value 4
  736.   }
  737.   Merge2 {
  738.    inputs 2
  739.    name Merge10
  740.    selected true
  741.   }
  742.   Output {
  743.    name Output1
  744.    label static
  745.    xpos 156
  746.    ypos 4217
  747.   }
  748.  end_group
  749. set N209ee900 [stack 0]
  750. push $N20a19000
  751.  Switch {
  752.   inputs 2
  753.   which {{parent.FinalSwitch.which}}
  754.   name Switch2
  755.   xpos -418
  756.   ypos 237
  757.  }
  758.  Dilate {
  759.   size 50
  760.   name Dilate1
  761.   label "\[value size]"
  762.   xpos -608
  763.   ypos 224
  764.   disable true
  765.  }
  766. set N32d44000 [stack 0]
  767.  ChannelMerge {
  768.   inputs 2
  769.   operation stencil
  770.   name ChannelMerge3
  771.   xpos -608
  772.   ypos 327
  773.  }
  774.  ChannelMerge {
  775.   inputs 2
  776.   operation multiply
  777.   name ChannelMerge_colormask
  778.   xpos -608
  779.   ypos 627
  780.   disable {{!parent.enableBGMask}}
  781.  }
  782.  Dot {
  783.   name Dot4
  784.   xpos -574
  785.   ypos 702
  786.  }
  787. set N32d75400 [stack 0]
  788.  Dot {
  789.   name Dot10
  790.   xpos -573
  791.   ypos 1057
  792.  }
  793. push $N20a6b400
  794.  Dot {
  795.   name Dot13
  796.   xpos -683
  797.   ypos 993
  798.  }
  799.  Premult {
  800.   name Premult1
  801.   xpos -971
  802.   ypos 990
  803.  }
  804. push $N32d75400
  805. push $N20a18c00
  806. push $N20a4a800
  807. push $N32be1c00
  808.  Dot {
  809.   name Dot1
  810.   xpos 410
  811.   ypos 565
  812.  }
  813. set N32d74400 [stack 0]
  814.  Dot {
  815.   name Dot18
  816.   xpos 190
  817.   ypos 565
  818.  }
  819.  Colorspace {
  820.   colorspace_out YCbCr
  821.   name Colorspace2
  822.   xpos 156
  823.   ypos 596
  824.  }
  825. push $N20a6b000
  826.  Dot {
  827.   name Dot8
  828.   xpos 625
  829.   ypos 602
  830.  }
  831. push $N32d74400
  832. push $N209ee900
  833.  Dot {
  834.   name Dot15
  835.   xpos 821
  836.   ypos 531
  837.  }
  838.  Dot {
  839.   name Dot3
  840.   xpos 821
  841.   ypos 733
  842.  }
  843.  Keymix {
  844.   inputs 3
  845.   name Keymix1
  846.   xpos 376
  847.   ypos 723
  848.  }
  849.  Colorspace {
  850.   colorspace_out YCbCr
  851.   name Colorspace1
  852.   xpos 266
  853.   ypos 729
  854.  }
  855.  Copy {
  856.   inputs 2
  857.   from0 rgba.red
  858.   to0 rgba.red
  859.   name Copy1
  860.   xpos 156
  861.   ypos 723
  862.   disable {{!parent.extendChromaOnly}}
  863.  }
  864.  Colorspace {
  865.   colorspace_in YCbCr
  866.   name Colorspace3
  867.   xpos 46
  868.   ypos 729
  869.  }
  870. add_layer {edge edge.red edge.green edge.blue edge.alpha edge.matte}
  871.  ShuffleCopy {
  872.   inputs 2
  873.   red alpha
  874.   green alpha
  875.   blue alpha
  876.   out edge
  877.   name ShuffleCopy1
  878.   xpos -64
  879.   ypos 729
  880.  }
  881.  Copy {
  882.   inputs 2
  883.   from0 rgba.alpha
  884.   to0 rgba.alpha
  885.   name Copy2
  886.   xpos -215
  887.   ypos 723
  888.  }
  889.  Dot {
  890.   name Dot9
  891.   xpos -472
  892.   ypos 733
  893.  }
  894. set N32dbf400 [stack 0]
  895.  Colorspace {
  896.   colorspace_out YCbCr
  897.   name Colorspace4
  898.   xpos -506
  899.   ypos 434
  900.  }
  901. push $N20a4bc00
  902.  Colorspace {
  903.   colorspace_out YCbCr
  904.   name Colorspace6
  905.   xpos -791
  906.   ypos 289
  907.  }
  908.  Blur {
  909.   channels rgb
  910.   size {{parent.BlurBG}}
  911.   name Blur1
  912.   label "\[value size]"
  913.   xpos -790
  914.   ypos 341
  915.  }
  916.  Copy {
  917.   inputs 2
  918.   from0 rgba.red
  919.   to0 rgba.red
  920.   from1 rgba.alpha
  921.   to1 rgba.alpha
  922.   name Copy5
  923.   xpos -790
  924.   ypos 421
  925.  }
  926.  Colorspace {
  927.   colorspace_in YCbCr
  928.   name Colorspace5
  929.   xpos -790
  930.   ypos 487
  931.  }
  932.  Grade {
  933.   black_clamp false
  934.   name GradeEdgeColor
  935.   xpos -790
  936.   ypos 525
  937.  }
  938.  Saturation {
  939.   name EdgeSat
  940.   xpos -790
  941.   ypos 563
  942.  }
  943. push $N32dbf400
  944.  Merge2 {
  945.   inputs 2+1
  946.   operation average
  947.   Achannels rgb
  948.   output rgb
  949.   mix {{parent.mergeBlendingMix}}
  950.   name ColorMerge
  951.   selected true
  952.   xpos -791
  953.   ypos 730
  954.   disable {{!parent.enablecolor}}
  955.  }
  956. set N32dfd400 [stack 0]
  957.  Dot {
  958.   name Dot2
  959.   xpos -757
  960.   ypos 911
  961.  }
  962.  Input {
  963.   inputs 0
  964.   name Mask
  965.   xpos -1288
  966.   ypos 730
  967.   number 4
  968.  }
  969. push $N32dfd400
  970.  Premult {
  971.   name Premult3
  972.   xpos -956
  973.   ypos 730
  974.  }
  975. push $N20a6bc00
  976.  Merge2 {
  977.   inputs 2+1
  978.   also_merge edge
  979.   name Merge3
  980.   xpos -1081
  981.   ypos 730
  982.  }
  983.  Switch {
  984.   inputs 2
  985.   which {{operation}}
  986.   name FinalSwitch
  987.   xpos -1081
  988.   ypos 908
  989.  }
  990.  Switch {
  991.   inputs 2
  992.   which {{parent.PreviewBG}}
  993.   name BGPreview
  994.   xpos -1081
  995.   ypos 990
  996.  }
  997.  Copy {
  998.   inputs 2
  999.   from0 rgba.alpha
  1000.   to0 rgba.red
  1001.   name Copy3
  1002.   xpos -1081
  1003.   ypos 1050
  1004.   disable {{parent.colorpreview*-1+1}}
  1005.  }
  1006.  Copy {
  1007.   inputs 2
  1008.   from0 rgba.alpha
  1009.   to0 rgba.red
  1010.   name Copy4
  1011.   xpos -1081
  1012.   ypos 1123
  1013.   disable {{!parent.previewedgematte}}
  1014.  }
  1015.  Shuffle {
  1016.   out {{{parent.Shuffle2.in}}}
  1017.   name Shuffle3
  1018.   xpos -1081
  1019.   ypos 1239
  1020.  }
  1021.  Output {
  1022.   name Output1
  1023.   xpos -1081
  1024.   ypos 1947
  1025.  }
  1026. push $N32d44000
  1027. push $N32dfd400
  1028.  Viewer {
  1029.   inputs 2
  1030.   frame 1
  1031.   frame_range 100-100
  1032.   colour_sample_bbox {-0.7646484375 -0.2055664063 -0.7197265625 -0.1782226563}
  1033.   input_process false
  1034.   name Viewer1
  1035.   xpos -706
  1036.   ypos 1852
  1037.  }
  1038. end_group
  1039.  
Add Comment
Please, Sign In to add comment