Advertisement
Totheroo

Nuke - Ramp Sampler

May 13th, 2025 (edited)
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 32.57 KB | None | 0 0
  1. version 10.5 v5
  2. Group {
  3.  name rampSampler1
  4.  help "Creates a 4-point polygonal gradient based on 4 corner points. Extrapolates colors in between and outside the points, creating a smooth map across the entire source footage. Accepts a source input (for size and color sampling) and a matte input (for compositing over). "
  5.  tile_color 0xff
  6.  selected true
  7.  xpos -260
  8.  ypos 50
  9.  addUserKnob {20 mySettings l Settings}
  10.  addUserKnob {26 rampSampler l "<p><H2>Ramp Sampler</H2></p>" t "Sample a source image to set the ramp colors."}
  11.  addUserKnob {41 point01 l "Point 1 (UL)" T MASTER.point01}
  12.  addUserKnob {41 point01color l Color T MASTER.point01color}
  13.  addUserKnob {22 point01colorGet l "Get Color" t "Grab the color for just this point." -STARTLINE T "gizmoNode = nuke.thisNode()\nmasterNode = gizmoNode.node(\"MASTER\")\nsourceNode = gizmoNode.node(\"source\")\npoint01 = masterNode.knob(\"point01\").getValue()\nsampleSize = gizmoNode.knob(\"boxX\").getValue()\npoint01color = \[sourceNode.sample(\"r\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"g\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"b\",point01\[0],point01\[1],sampleSize,sampleSize)]\ngizmoNode.knob(\"point01color\").setValue(point01color)"}
  14.  addUserKnob {26 ""}
  15.  addUserKnob {41 point02 l "Point 2 (UR)" T MASTER.point02}
  16.  addUserKnob {41 point02color l Color T MASTER.point02color}
  17.  addUserKnob {22 point02colorGet l "Get Color" t "Get the color for just this point." -STARTLINE T "gizmoNode = nuke.thisNode()\nmasterNode = gizmoNode.node(\"MASTER\")\nsourceNode = gizmoNode.node(\"source\")\npoint01 = masterNode.knob(\"point02\").getValue()\nsampleSize = gizmoNode.knob(\"boxX\").getValue()\npoint01color = \[sourceNode.sample(\"r\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"g\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"b\",point01\[0],point01\[1],sampleSize,sampleSize)]\ngizmoNode.knob(\"point02color\").setValue(point01color)"}
  18.  addUserKnob {26 ""}
  19.  addUserKnob {41 point03 l "Point 3 (LL)" T MASTER.point03}
  20.  addUserKnob {41 point03color l Color T MASTER.point03color}
  21.  addUserKnob {22 point03colorGet l "Get Color" t "Get the color for just this point." -STARTLINE T "gizmoNode = nuke.thisNode()\nmasterNode = gizmoNode.node(\"MASTER\")\nsourceNode = gizmoNode.node(\"source\")\npoint01 = masterNode.knob(\"point03\").getValue()\nsampleSize = gizmoNode.knob(\"boxX\").getValue()\npoint01color = \[sourceNode.sample(\"r\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"g\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"b\",point01\[0],point01\[1],sampleSize,sampleSize)]\ngizmoNode.knob(\"point03color\").setValue(point01color)"}
  22.  addUserKnob {26 ""}
  23.  addUserKnob {41 point04 l "Point 4 (LR)" T MASTER.point04}
  24.  addUserKnob {41 point04color l Color T MASTER.point04color}
  25.  addUserKnob {22 point04colorGet l "Get Color" t "Get the color for just this point." -STARTLINE T "gizmoNode = nuke.thisNode()\nmasterNode = gizmoNode.node(\"MASTER\")\nsourceNode = gizmoNode.node(\"source\")\npoint01 = masterNode.knob(\"point04\").getValue()\nsampleSize = gizmoNode.knob(\"boxX\").getValue()\npoint01color = \[sourceNode.sample(\"r\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"g\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"b\",point01\[0],point01\[1],sampleSize,sampleSize)]\ngizmoNode.knob(\"point04color\").setValue(point01color)"}
  26.  addUserKnob {26 ""}
  27.  addUserKnob {7 boxX l SampleSize t "The radius of pixels around the source point to average the color from." R 1 15}
  28.  boxX 3
  29.  addUserKnob {22 getColors l "Get Point Colors" t "This button will sample the colors in the source image at the chosen points, and put that value into the point's color. Since this process is computationally expensive it's done on demand only. With this button, you can choose important frames and keyframe the color values after sampling" T "gizmoNode = nuke.thisNode()\nmasterNode = gizmoNode.node(\"MASTER\")\nsourceNode = gizmoNode.node(\"source\")\npoint01 = masterNode.knob(\"point01\").getValue()\npoint02 = masterNode.knob(\"point02\").getValue()\npoint03 = masterNode.knob(\"point03\").getValue()\npoint04 = masterNode.knob(\"point04\").getValue()\nsampleSize = gizmoNode.knob(\"boxX\").getValue()\npoint01color = \[sourceNode.sample(\"r\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"g\",point01\[0],point01\[1],sampleSize,sampleSize), sourceNode.sample(\"b\",point01\[0],point01\[1],sampleSize,sampleSize)]\npoint02color = \[sourceNode.sample(\"r\",point02\[0],point02\[1],sampleSize,sampleSize), sourceNode.sample(\"g\",point02\[0],point02\[1],sampleSize,sampleSize), sourceNode.sample(\"b\",point02\[0],point02\[1],sampleSize,sampleSize)]\npoint03color = \[sourceNode.sample(\"r\",point03\[0],point03\[1],sampleSize,sampleSize), sourceNode.sample(\"g\",point03\[0],point03\[1],sampleSize,sampleSize), sourceNode.sample(\"b\",point03\[0],point03\[1],sampleSize,sampleSize)]\npoint04color = \[sourceNode.sample(\"r\",point04\[0],point04\[1],sampleSize,sampleSize), sourceNode.sample(\"g\",point04\[0],point04\[1],sampleSize,sampleSize), sourceNode.sample(\"b\",point04\[0],point04\[1],sampleSize,sampleSize)]\ngizmoNode.knob(\"point01color\").setValue(point01color)\ngizmoNode.knob(\"point02color\").setValue(point02color)\ngizmoNode.knob(\"point03color\").setValue(point03color)\ngizmoNode.knob(\"point04color\").setValue(point04color)\n" +STARTLINE}
  30.  addUserKnob {26 dither2 l Dither}
  31.  addUserKnob {41 amount l Amount T Dither1.amount}
  32.  addUserKnob {41 seed l Seed T Dither1.seed}
  33.  addUserKnob {41 static_seed l "Static Seed" -STARTLINE T Dither1.static_seed}
  34.  addUserKnob {26 ""}
  35.  addUserKnob {41 disable_1 l "Disable Cropping" T Crop5.disable}
  36.  addUserKnob {26 "" +STARTLINE}
  37. }
  38.  Input {
  39.   inputs 0
  40.   name source
  41.   label source
  42.   xpos -1030
  43.   ypos -1426
  44.  }
  45.  Dot {
  46.   name Dot12
  47.   xpos -996
  48.   ypos -1296
  49.  }
  50.  NoOp {
  51.   name MASTER
  52.   xpos -1030
  53.   ypos -1210
  54.   addUserKnob {20 User}
  55.   addUserKnob {12 point01}
  56.   point01 {100 1000}
  57.   addUserKnob {18 point01color}
  58.   point01color {1 0.1 0.1}
  59.   addUserKnob {6 point01color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  60.   addUserKnob {12 point02}
  61.   point02 {900 1000}
  62.   addUserKnob {18 point02color}
  63.   point02color {0.1 1 0.1}
  64.   addUserKnob {6 point02color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  65.   addUserKnob {12 point03}
  66.   point03 {100 100}
  67.   addUserKnob {18 point03color}
  68.   point03color {0.1 0.1 1}
  69.   addUserKnob {6 point03color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  70.   addUserKnob {12 point04}
  71.   point04 {900 100}
  72.   addUserKnob {18 point04color}
  73.   point04color {0.18 0.18 0.18}
  74.   addUserKnob {6 point04color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  75.  }
  76.  Shuffle {
  77.   red black
  78.   green black
  79.   blue black
  80.   alpha black
  81.   name Shuffle11
  82.   xpos -1030
  83.   ypos -1180
  84.  }
  85.  Dot {
  86.   name Dot13
  87.   xpos -996
  88.   ypos -1086
  89.  }
  90. set N6874e000 [stack 0]
  91.  Dot {
  92.   name Dot10
  93.   xpos -776
  94.   ypos -1086
  95.  }
  96. set Nb75f5c00 [stack 0]
  97.  Dot {
  98.   name Dot4
  99.   xpos -666
  100.   ypos -1086
  101.  }
  102. set Nb75f5800 [stack 0]
  103.  Dot {
  104.   name Dot1
  105.   xpos -446
  106.   ypos -1086
  107.  }
  108. set Nb75f5400 [stack 0]
  109.  Dot {
  110.   name Dot11
  111.   xpos -336
  112.   ypos -1086
  113.  }
  114. set Nb75f5000 [stack 0]
  115.  Dot {
  116.   name Dot5
  117.   xpos -226
  118.   ypos -1086
  119.  }
  120. set Nb75f4c00 [stack 0]
  121.  Dot {
  122.   name Dot21
  123.   xpos 104
  124.   ypos -1086
  125.  }
  126. set Nb75f4800 [stack 0]
  127.  Dot {
  128.   name Dot19
  129.   xpos 324
  130.   ypos -1086
  131.  }
  132. set Nb75f4400 [stack 0]
  133.  Dot {
  134.   name Dot17
  135.   xpos 434
  136.   ypos -1086
  137.  }
  138. set Nb75f4000 [stack 0]
  139.  Dot {
  140.   name Dot20
  141.   xpos 764
  142.   ypos -1086
  143.  }
  144. set N671cbc00 [stack 0]
  145.  Dot {
  146.   name Dot18
  147.   xpos 874
  148.   ypos -1086
  149.  }
  150. set N671cb800 [stack 0]
  151.  Dot {
  152.   name Dot6
  153.   xpos 1204
  154.   ypos -1086
  155.  }
  156. set N671cb400 [stack 0]
  157.  Dot {
  158.   name Dot7
  159.   xpos 1314
  160.   ypos -1086
  161.  }
  162. set N671cb000 [stack 0]
  163.  Dot {
  164.   name Dot8
  165.   xpos 1424
  166.   ypos -1086
  167.  }
  168. set N671cac00 [stack 0]
  169.  Dot {
  170.   name Dot9
  171.   xpos 1534
  172.   ypos -1086
  173.  }
  174.  Radial {
  175.   cliptype none
  176.   area {{center.x-(hoirzDistance)} {center.y-(vertDistance)} {center.x+(hoirzDistance)} {center.y+(vertDistance)}}
  177.   color {{MASTER.point03color} {MASTER.point03color} {MASTER.point03color} 1}
  178.   p1 {{center} {center}}
  179.   color0 {{MASTER.point01color} {MASTER.point01color} {MASTER.point01color} 1}
  180.   p0 {{MASTER.point01} {MASTER.point01}}
  181.   name RadialLLeft
  182.   xpos 1500
  183.   ypos -970
  184.   addUserKnob {20 User}
  185.   addUserKnob {12 center}
  186.   center {{MASTER.point03} {MASTER.point03}}
  187.   addUserKnob {7 vertDistance}
  188.   vertDistance {{sqrt(pow2(MASTER.point01.y-center.y)+pow2(MASTER.point01.x-center.x))}}
  189.   addUserKnob {7 hoirzDistance}
  190.   hoirzDistance {{sqrt(pow2(MASTER.point04.y-center.y)+pow2(MASTER.point04.x-center.x))}}
  191.  }
  192.  Dot {
  193.   name Dot25
  194.   xpos 1534
  195.   ypos 564
  196.  }
  197. push $N671cac00
  198.  Radial {
  199.   cliptype none
  200.   area {{center.x-(hoirzDistance)} {center.y-(vertDistance)} {center.x+(hoirzDistance)} {center.y+(vertDistance)}}
  201.   color {{MASTER.point04color} {MASTER.point04color} {MASTER.point04color} 1}
  202.   p1 {{center} {center}}
  203.   color0 {{MASTER.point03color} {MASTER.point03color} {MASTER.point03color} 1}
  204.   p0 {{MASTER.point03} {MASTER.point03}}
  205.   name RadialLRight
  206.   xpos 1390
  207.   ypos -970
  208.   addUserKnob {20 User}
  209.   addUserKnob {12 center}
  210.   center {{MASTER.point04} {MASTER.point04}}
  211.   addUserKnob {7 vertDistance}
  212.   vertDistance {{sqrt(pow2(MASTER.point02.y-center.y)+pow2(MASTER.point02.x-center.x))}}
  213.   addUserKnob {7 hoirzDistance}
  214.   hoirzDistance {{sqrt(pow2(MASTER.point03.y-center.y)+pow2(MASTER.point03.x-center.x))}}
  215.  }
  216.  Dot {
  217.   name Dot26
  218.   xpos 1424
  219.   ypos 474
  220.  }
  221. push $N671cb000
  222.  Radial {
  223.   cliptype none
  224.   area {{center.x-(hoirzDistance)} {center.y-(vertDistance)} {center.x+(hoirzDistance)} {center.y+(vertDistance)}}
  225.   color {{MASTER.point02color} {MASTER.point02color} {MASTER.point02color} 1}
  226.   p1 {{center} {center}}
  227.   color0 {{MASTER.point04color} {MASTER.point04color} {MASTER.point04color} 1}
  228.   p0 {{MASTER.point04} {MASTER.point04}}
  229.   name RadialURight
  230.   xpos 1280
  231.   ypos -970
  232.   addUserKnob {20 User}
  233.   addUserKnob {12 center}
  234.   center {{MASTER.point02} {MASTER.point02}}
  235.   addUserKnob {7 vertDistance}
  236.   vertDistance {{sqrt(pow2(MASTER.point04.y-center.y)+pow2(MASTER.point04.x-center.x))}}
  237.   addUserKnob {7 hoirzDistance}
  238.   hoirzDistance {{sqrt(pow2(MASTER.point01.y-center.y)+pow2(MASTER.point01.x-center.x))}}
  239.  }
  240.  Dot {
  241.   name Dot27
  242.   xpos 1314
  243.   ypos 384
  244.  }
  245. push $N671cb400
  246.  Radial {
  247.   cliptype none
  248.   area {{center.x-(hoirzDistance)} {center.y-(vertDistance)} {center.x+(hoirzDistance)} {center.y+(vertDistance)}}
  249.   color {{MASTER.point01color} {MASTER.point01color} {MASTER.point01color} 1}
  250.   p1 {{center} {center}}
  251.   color0 {{MASTER.point02color} {MASTER.point02color} {MASTER.point02color} 1}
  252.   p0 {{MASTER.point02} {MASTER.point02}}
  253.   name RadialULeft
  254.   xpos 1170
  255.   ypos -970
  256.   addUserKnob {20 User}
  257.   addUserKnob {12 center}
  258.   center {{MASTER.point01} {MASTER.point01}}
  259.   addUserKnob {7 vertDistance}
  260.   vertDistance {{sqrt(pow2(MASTER.point03.y-center.y)+pow2(MASTER.point03.x-center.x))}}
  261.   addUserKnob {7 hoirzDistance}
  262.   hoirzDistance {{sqrt(pow2(MASTER.point02.y-center.y)+pow2(MASTER.point02.x-center.x))}}
  263.  }
  264.  Dot {
  265.   name Dot28
  266.   xpos 1204
  267.   ypos 294
  268.  }
  269. push $Nb75f4800
  270.  Roto {
  271.   output alpha
  272.   cliptype none
  273.   curves {{{v x3f99999a}
  274.   {f 0}
  275.   {n
  276.    {layer Root
  277.     {f 512}
  278.     {t x44c54000 x44838000}
  279.     {a}
  280.     {curvegroup Bezier1 512 bezier
  281.      {{cc
  282.        {f 8192}
  283.        {px
  284.         {x41c00000 x42100000}
  285.         {{{0 -}}
  286.       {{0 -}}}
  287.         {{=calc.A_LEFT
  288.        {0 x44080000}}
  289.       {=calc.A_LEFT
  290.        {x4486eba3 x441a0000}}}
  291.         {{{0 -}}
  292.       {{0 -}}}
  293.         {{{0 -}}
  294.       {{0 -}}}
  295.         {{=calc.A_RIGHT
  296.        {x44f00000 x44878000}}
  297.       {=calc.A_RIGHT
  298.        {x4462345d x44208000}}}
  299.         {{{0 -}}
  300.       {{0 -}}}
  301.         {{{0 -}}
  302.       {{0 -}}}
  303.         {{=MASTER.point04
  304.        {x44e4c000 x44834000}}
  305.       {=MASTER.point04
  306.        {x444e0000 x43960000}}}
  307.         {{{0 -}}
  308.       {{0 -}}}
  309.         {{{0 -}}
  310.       {{0 -}}}
  311.         {{=calc.C_LEFT
  312.        {0 x44030000}}
  313.       {=calc.C_LEFT
  314.        {x44840c31 x43880000}}}
  315.         {{{0 -}}
  316.       {{0 -}}}}}     idem}
  317.      {tx x42100000 x44482000 x43e4c000}
  318.      {a str 1 spx x44c54000 spy x44838000 sb 1 ltn x42100000 ltm x42100000 tt x40800000}}}}}}
  319.   toolbox {selectAll {
  320.   { selectAll str 1 ssx 1 ssy 1 sf 1 }
  321.   { createBezier ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }
  322.   { createBezierCusped ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 }
  323.   { createBSpline ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 }
  324.   { createEllipse ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 }
  325.   { createRectangle ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 8 }
  326.   { createRectangleCusped ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 9 }
  327.   { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }
  328.   { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  329.   { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  330.   { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  331.   { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  332.   { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  333.   { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  334.   { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  335.   { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  336. } }
  337.   toolbar_brush_hardness 0.200000003
  338.   toolbar_source_transform_scale {1 1}
  339.   toolbar_source_transform_center {1578 1052}
  340.   colorOverlay {0 0 0 0}
  341.   lifetime_type "all frames"
  342.   lifetime_start 36
  343.   lifetime_end 36
  344.   motionblur_shutter_offset_type centred
  345.   source_black_outside true
  346.   name Roto2
  347.   xpos 70
  348.   ypos -826
  349.  }
  350.  Dilate {
  351.   size {{Blur1.size/2}}
  352.   name Dilate1
  353.   xpos 70
  354.   ypos -766
  355.  }
  356.  Blur {
  357.   size {{Blur1.size}}
  358.   filter box
  359.   name Blur2
  360.   xpos 70
  361.   ypos -706
  362.  }
  363.  Crop {
  364.   box {0 0 {MASTER.width} {MASTER.height}}
  365.   crop false
  366.   name Crop5
  367.   xpos 70
  368.   ypos -550
  369.  }
  370.  Dot {
  371.   name Dot3
  372.   xpos 104
  373.   ypos -396
  374.  }
  375. set N3da4f400 [stack 0]
  376.  Dot {
  377.   name Dot15
  378.   xpos 544
  379.   ypos -396
  380.  }
  381.  Dot {
  382.   name Dot41
  383.   xpos 544
  384.   ypos -246
  385.  }
  386. push $N671cb800
  387.  Ramp {
  388.   premult rgba
  389.   cliptype none
  390.   p0 {0 0}
  391.   p1 {{MASTER.width} 0}
  392.   name BottomRamp
  393.   xpos 840
  394.   ypos -970
  395.  }
  396.  Multiply {
  397.   value {{MASTER.point04color} {MASTER.point04color} {MASTER.point04color} 1}
  398.   name Multiply3
  399.   xpos 840
  400.   ypos -916
  401.  }
  402.  Dot {
  403.   name Dot38
  404.   xpos 874
  405.   ypos -816
  406.  }
  407. push $N671cbc00
  408.  Expression {
  409.   expr0 MASTER.point03color.r
  410.   expr1 MASTER.point03color.g
  411.   expr2 MASTER.point03color.b
  412.   channel3 rgba
  413.   expr3 1
  414.   name Expression14
  415.   xpos 730
  416.   ypos -970
  417.  }
  418.  Merge2 {
  419.   inputs 2
  420.   name Merge4
  421.   xpos 730
  422.   ypos -820
  423.  }
  424.  Shuffle {
  425.   alpha white
  426.   name Shuffle1
  427.   xpos 730
  428.   ypos -760
  429.  }
  430.  Dot {
  431.   name Dot23
  432.   xpos 764
  433.   ypos -696
  434.  }
  435. set N36bd4c00 [stack 0]
  436.  Dot {
  437.   name Dot40
  438.   xpos 874
  439.   ypos -696
  440.  }
  441.  CornerPin2D {
  442.   to1 {{CornerPinBottom.to1} {CornerPinBottom.to1}}
  443.   to2 {{CornerPinBottom.to2} {CornerPinBottom.to2}}
  444.   to3 {{CornerPinBottom.to3} {CornerPinBottom.to3}}
  445.   to4 {{CornerPinBottom.to4} {CornerPinBottom.to4}}
  446.   invert false
  447.   from1 {0 0}
  448.   from2 {{MASTER.width} 0}
  449.   from3 {{MASTER.width} {MASTER.height}}
  450.   from4 {0 {MASTER.height}}
  451.   name CornerPin2D4
  452.   xpos 840
  453.   ypos -610
  454.  }
  455.  Dot {
  456.   name Dot39
  457.   xpos 874
  458.   ypos -486
  459.  }
  460. push $N36bd4c00
  461.  CornerPin2D {
  462.   to1 {{"\[python -execlocal calcNode\\ =\\ nuke.toNode(\\\"calc\\\")\\ndPoint\\ =\\ calcNode.knob(\\\"D_BOTTOM\\\").getValue()\\nbPoint\\ =\\ calcNode.knob(\\\"B_BOTTOM\\\").getValue()\\nif\\ (dPoint\\\[0\\]\\ <=\\ bPoint\\\[0\\]):\\n\\ \\ \\ \\ ret\\ =\\ dPoint\\\[0\\]\\nelse:\\n\\ \\ \\ \\ ret\\ =\\ bPoint\\\[0\\]]" i} {0 i}}
  463.   to2 {{"\[python -execlocal calcNode\\ =\\ nuke.toNode(\\\"calc\\\")\\ndPoint\\ =\\ calcNode.knob(\\\"D_BOTTOM\\\").getValue()\\nbPoint\\ =\\ calcNode.knob(\\\"B_BOTTOM\\\").getValue()\\nif\\ (dPoint\\\[0\\]\\ >=\\ bPoint\\\[0\\]):\\n\\ \\ \\ \\ ret\\ =\\ dPoint\\\[0\\]\\nelse:\\n\\ \\ \\ \\ ret\\ =\\ bPoint\\\[0\\]]" i} {0 i}}
  464.   to3 {{MASTER.point04 i} {MASTER.point04 i}}
  465.   to4 {{MASTER.point03 i} {MASTER.point03 i}}
  466.   invert false
  467.   black_outside false
  468.   from1 {0 0}
  469.   from2 {{MASTER.width i} 0}
  470.   from3 {{MASTER.width i} {MASTER.height i}}
  471.   from4 {0 {MASTER.height i}}
  472.   name CornerPinBottom
  473.   xpos 730
  474.   ypos -610
  475.  }
  476.  ShuffleCopy {
  477.   inputs 2
  478.   name ShuffleCopy2
  479.   xpos 730
  480.   ypos -490
  481.  }
  482.  Crop {
  483.   box {0 0 {MASTER.width} {MASTER.height}}
  484.   crop false
  485.   name Crop7
  486.   xpos 730
  487.   ypos -340
  488.   disable {{Crop5.disable}}
  489.  }
  490.  ChannelMerge {
  491.   inputs 2
  492.   operation from
  493.   name ChannelMerge2
  494.   xpos 730
  495.   ypos -263
  496.  }
  497.  Premult {
  498.   name Premult2
  499.   xpos 730
  500.   ypos -190
  501.  }
  502.  Dot {
  503.   name Dot29
  504.   xpos 764
  505.   ypos 84
  506.  }
  507. push $N3da4f400
  508.  Dot {
  509.   name Dot37
  510.   xpos 104
  511.   ypos -246
  512.  }
  513. push $Nb75f4000
  514.  Ramp {
  515.   premult rgba
  516.   cliptype none
  517.   p0 {0 0}
  518.   p1 {{MASTER.width} 0}
  519.   name TopRamp
  520.   xpos 400
  521.   ypos -970
  522.  }
  523.  Multiply {
  524.   value {{MASTER.point02color} {MASTER.point02color} {MASTER.point02color} 1}
  525.   name Multiply2
  526.   xpos 400
  527.   ypos -916
  528.  }
  529.  Dot {
  530.   name Dot35
  531.   xpos 434
  532.   ypos -816
  533.  }
  534. push $Nb75f4400
  535.  Expression {
  536.   expr0 MASTER.point01color.r
  537.   expr1 MASTER.point01color.g
  538.   expr2 MASTER.point01color.b
  539.   channel3 rgba
  540.   expr3 1
  541.   name Expression13
  542.   xpos 290
  543.   ypos -970
  544.  }
  545.  Merge2 {
  546.   inputs 2
  547.   name Merge2
  548.   xpos 290
  549.   ypos -820
  550.  }
  551.  Shuffle {
  552.   alpha white
  553.   name Shuffle2
  554.   xpos 290
  555.   ypos -760
  556.  }
  557.  Dot {
  558.   name Dot16
  559.   xpos 324
  560.   ypos -696
  561.  }
  562. set N6496dc00 [stack 0]
  563.  Dot {
  564.   name Dot22
  565.   xpos 434
  566.   ypos -696
  567.  }
  568.  CornerPin2D {
  569.   to1 {{CornerPinTop.to1} {CornerPinTop.to1}}
  570.   to2 {{CornerPinTop.to2} {CornerPinTop.to2}}
  571.   to3 {{CornerPinTop.to3} {CornerPinTop.to3}}
  572.   to4 {{CornerPinTop.to4} {CornerPinTop.to4}}
  573.   invert false
  574.   from1 {0 0}
  575.   from2 {{MASTER.width} 0}
  576.   from3 {{MASTER.width} {MASTER.height}}
  577.   from4 {0 {MASTER.height}}
  578.   name CornerPin2D5
  579.   xpos 400
  580.   ypos -610
  581.  }
  582.  Dot {
  583.   name Dot36
  584.   xpos 434
  585.   ypos -486
  586.  }
  587. push $N6496dc00
  588.  CornerPin2D {
  589.   to1 {{MASTER.point01.x} {MASTER.point01.y}}
  590.   to2 {{MASTER.point02.x} {MASTER.point02.y}}
  591.   to3 {{"\[python -execlocal calcNode\\ =\\ nuke.toNode(\\\"calc\\\")\\ndPoint\\ =\\ calcNode.knob(\\\"D_TOP\\\").getValue()\\nbPoint\\ =\\ calcNode.knob(\\\"B_TOP\\\").getValue()\\nif\\ (dPoint\\\[0\\]\\ >=\\ bPoint\\\[0\\]):\\n\\ \\ \\ \\ ret\\ =\\ dPoint\\\[0\\]\\nelse:\\n\\ \\ \\ \\ ret\\ =\\ bPoint\\\[0\\]]"} {MASTER.height}}
  592.   to4 {{"\[python -execlocal calcNode\\ =\\ nuke.toNode(\\\"calc\\\")\\ndPoint\\ =\\ calcNode.knob(\\\"D_TOP\\\").getValue()\\nbPoint\\ =\\ calcNode.knob(\\\"B_TOP\\\").getValue()\\nif\\ (bPoint\\\[0\\]\\ <=\\ dPoint\\\[0\\]):\\n\\ \\ \\ \\ ret\\ =\\ bPoint\\\[0\\]\\nelse:\\n\\ \\ \\ \\ ret\\ =\\ dPoint\\\[0\\]]"} {MASTER.height}}
  593.   invert false
  594.   black_outside false
  595.   from1 {0 0}
  596.   from2 {{MASTER.width} 0}
  597.   from3 {{MASTER.width} {MASTER.height}}
  598.   from4 {0 {MASTER.height}}
  599.   name CornerPinTop
  600.   xpos 290
  601.   ypos -610
  602.  }
  603.  ShuffleCopy {
  604.   inputs 2
  605.   name ShuffleCopy4
  606.   xpos 290
  607.   ypos -490
  608.  }
  609.  Crop {
  610.   box {0 0 {MASTER.width} {MASTER.height}}
  611.   crop false
  612.   name Crop6
  613.   xpos 290
  614.   ypos -340
  615.   disable {{Crop5.disable}}
  616.  }
  617.  ChannelMerge {
  618.   inputs 2
  619.   operation from
  620.   name ChannelMerge1
  621.   xpos 290
  622.   ypos -263
  623.  }
  624.  Premult {
  625.   name Premult1
  626.   xpos 290
  627.   ypos -190
  628.  }
  629.  Dot {
  630.   name Dot30
  631.   xpos 324
  632.   ypos -6
  633.  }
  634. push $Nb75f5400
  635.  Rectangle {
  636.   area {{curve} {curve} {MASTER.width} {MASTER.height}}
  637.   name Rectangle1
  638.   xpos -480
  639.   ypos -970
  640.   disable true
  641.   lifetimeStart 1
  642.   lifetimeEnd 100
  643.   addUserKnob {20 User}
  644.   addUserKnob {7 difference}
  645.   difference {{"\[python -execlocal masterNode\\ =\\ nuke.toNode(\\\"MASTER\\\")\\npoint01x\\ =\\ masterNode.knob(\\\"point01\\\").getValue()\\\[0\\]\\npoint02x\\ =\\ masterNode.knob(\\\"point02\\\").getValue()\\\[0\\]\\npoint03x\\ =\\ masterNode.knob(\\\"point03\\\").getValue()\\\[0\\]\\npoint04x\\ =\\ masterNode.knob(\\\"point04\\\").getValue()\\\[0\\]\\nif\\ point01x\\ >\\ point03x:\\n\\ \\ \\ \\ startPoint\\ =\\ point03x\\nelse:\\n\\ \\ \\ \\ startPoint\\ =\\ point01x\\nif\\ point04x\\ >\\ point02x:\\n\\ \\ \\ \\ endPoint\\ =\\ point04x\\nelse:\\n\\ \\ \\ \\ endPoint\\ =\\ point02x\\nret\\ =\\ endPoint-startPoint]"}}
  646.   addUserKnob {7 startPoint}
  647.   startPoint {{"\[python -execlocal masterNode\\ =\\ nuke.toNode(\\\"MASTER\\\")\\npoint01x\\ =\\ masterNode.knob(\\\"point01\\\").getValue()\\\[0\\]\\npoint03x\\ =\\ masterNode.knob(\\\"point03\\\").getValue()\\\[0\\]\\nif\\ point01x\\ >\\ point03x:\\n\\ \\ \\ \\ startPoint\\ =\\ point03x\\nelse:\\n\\ \\ \\ \\ startPoint\\ =\\ point01x\\nret\\ =\\ startPoint]"}}
  648.   addUserKnob {7 endPoint}
  649.   endPoint {{"\[python -execlocal masterNode\\ =\\ nuke.toNode(\\\"MASTER\\\")\\npoint02x\\ =\\ masterNode.knob(\\\"point02\\\").getValue()\\\[0\\]\\npoint04x\\ =\\ masterNode.knob(\\\"point04\\\").getValue()\\\[0\\]\\nif\\ point04x\\ >\\ point02x:\\n\\ \\ \\ \\ endPoint\\ =\\ point04x\\nelse:\\n\\ \\ \\ \\ endPoint\\ =\\ point02x\\nret\\ =\\ endPoint]"}}
  650.   addUserKnob {26 ""}
  651.   addUserKnob {7 newSlope}
  652.   newSlope {{(topPoint.y-bottomPoint.y)/(topPoint.x-bottomPoint.x)}}
  653.   addUserKnob {12 topPoint}
  654.   topPoint {{((MASTER.point02.x-MASTER.point01.x)/2)+MASTER.point01.x} {((MASTER.point02.y-MASTER.point01.y)/2)+MASTER.point01.y}}
  655.   addUserKnob {12 bottomPoint}
  656.   bottomPoint {{((MASTER.point04.x-MASTER.point03.x)/2)+MASTER.point03.x} {((MASTER.point04.y-MASTER.point03.y)/2)+MASTER.point03.y}}
  657.   addUserKnob {12 maskUpRight}
  658.   maskUpRight {{"\[python -execlocal masterNode\\ =\\ nuke.toNode(\\\"MASTER\\\")\\nthisNode\\ =\\ nuke.thisNode()\\ntopPoint\\ =\\ thisNode.knob(\\\"topPoint\\\").getValue()\\nnewSlope\\ =\\ thisNode.knob(\\\"newSlope\\\").getValue()\\nheight\\ =\\ masterNode.height()\\nif\\ (newSlope\\ !=\\ float(\\\"Inf\\\")):\\n\\ \\ \\ \\ answer\\ =\\ (height-topPoint\\\[1\\]+(newSlope*topPoint\\\[0\\]))/newSlope\\nelse:\\n\\ \\ \\ \\ answer\\ =\\ topPoint\\\[0\\]\\nret\\ =\\ answer]"} {MASTER.height}}
  659.   addUserKnob {12 maskDownRight}
  660.   maskDownRight {{"\[python -execlocal masterNode\\ =\\ nuke.toNode(\\\"MASTER\\\")\\nthisNode\\ =\\ nuke.thisNode()\\ntopPoint\\ =\\ thisNode.knob(\\\"topPoint\\\").getValue()\\nnewSlope\\ =\\ thisNode.knob(\\\"newSlope\\\").getValue()\\nheight\\ =\\ masterNode.height()\\nif\\ (newSlope\\ !=\\ float(\\\"Inf\\\")):\\n\\ \\ \\ \\ answer\\ =\\ (0-topPoint\\\[1\\]+(newSlope*topPoint\\\[0\\]))/newSlope\\nelse:\\n\\ \\ \\ \\ answer\\ =\\ topPoint\\\[0\\]\\nret\\ =\\ answer]"} 0}
  661.  }
  662.  Roto {
  663.   output alpha
  664.   cliptype none
  665.   curves {{{v x3f99999a}
  666.   {f 0}
  667.   {n
  668.    {layer Root
  669.     {f 512}
  670.     {t x44c54000 x44838000}
  671.     {a}
  672.     {curvegroup Bezier1 512 bezier
  673.      {{cc
  674.        {f 8192}
  675.        {px x42100000
  676.         {0 0}
  677.         {{=0 x42cc0000}
  678.      {=MASTER.height x44fe8000}}
  679.         {0 0}
  680.         {0 0}
  681.         {{=Rectangle1.maskUpRight.x x449c8000}
  682.      {=Rectangle1.maskUpRight.y x44f78000}}
  683.         {0 0}
  684.         {0 0}
  685.         {{=Rectangle1.maskDownRight.x x444a8000}
  686.      {=Rectangle1.maskDownRight.y x432a0000}}
  687.         {0 0}
  688.         {0 0}
  689.         {{=0 x43200000}
  690.      {=0 x43220000}}
  691.         {0 0}}}     idem}
  692.      {tx x42100000 x44114000 x4487e000}
  693.      {a str 1 spx x44c54000 spy x44838000 sb 1 ltn x42100000 ltm x42100000 tt x40800000}}}}}}
  694.   toolbox {selectAll {
  695.   { selectAll str 1 ssx 1 ssy 1 sf 1 }
  696.   { createBezier ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }
  697.   { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
  698.   { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }
  699.   { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }
  700.   { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }
  701.   { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
  702.   { brush str 1 ssx 1 ssy 1 sf 1 sb 1 }
  703.   { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  704.   { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  705.   { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  706.   { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  707.   { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  708.   { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  709.   { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  710.   { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
  711. } }
  712.   toolbar_brush_hardness 0.200000003
  713.   toolbar_source_transform_scale {1 1}
  714.   toolbar_source_transform_center {1578 1052}
  715.   colorOverlay {0 0 0 0}
  716.   lifetime_type "all frames"
  717.   lifetime_start 36
  718.   lifetime_end 36
  719.   motionblur_shutter_offset_type centred
  720.   source_black_outside true
  721.   name Roto1
  722.   xpos -480
  723.   ypos -826
  724.  }
  725.  Blur {
  726.   size {{Rectangle1.difference/5}}
  727.   name Blur1
  728.   xpos -480
  729.   ypos -706
  730.  }
  731.  Crop {
  732.   box {0 0 {MASTER.width} {MASTER.height}}
  733.   crop false
  734.   name Crop3
  735.   xpos -480
  736.   ypos -550
  737.   disable {{Crop5.disable}}
  738.  }
  739. push $Nb75f4c00
  740.  Ramp {
  741.   premult rgba
  742.   cliptype none
  743.   p0 {0 0}
  744.   p1 {0 {MASTER.height}}
  745.   name LeftRamp
  746.   xpos -260
  747.   ypos -970
  748.  }
  749.  Multiply {
  750.   value {{MASTER.point01color} {MASTER.point01color} {MASTER.point01color} 1}
  751.   name Multiply5
  752.   xpos -260
  753.   ypos -916
  754.  }
  755.  Dot {
  756.   name Dot31
  757.   xpos -226
  758.   ypos -816
  759.  }
  760. push $Nb75f5000
  761.  Expression {
  762.   expr0 MASTER.point03color.r
  763.   expr1 MASTER.point03color.g
  764.   expr2 MASTER.point03color.b
  765.   channel3 {rgba.red rgba.green -rgba.blue rgba.alpha}
  766.   expr3 1
  767.   name Expression6
  768.   xpos -370
  769.   ypos -970
  770.  }
  771.  Merge2 {
  772.   inputs 2
  773.   name Merge8
  774.   xpos -370
  775.   ypos -820
  776.  }
  777.  Shuffle {
  778.   alpha white
  779.   name Shuffle4
  780.   xpos -370
  781.   ypos -760
  782.  }
  783.  CornerPin2D {
  784.   to1 {0 {"\[python -execlocal calcNode\\ =\\ nuke.toNode(\\\"calc\\\")\\ncPoint\\ =\\ calcNode.knob(\\\"C_LEFT\\\").getValue()\\naPoint\\ =\\ calcNode.knob(\\\"A_LEFT\\\").getValue()\\nif\\ (cPoint\\\[1\\]\\ <=\\ aPoint\\\[1\\]):\\n\\ \\ \\ \\ ret\\ =\\ cPoint\\\[1\\]\\nelse:\\n\\ \\ \\ \\ ret\\ =\\ aPoint\\\[1\\]]"}}
  785.   to2 {{MASTER.point03} {MASTER.point03}}
  786.   to3 {{MASTER.point01} {MASTER.point01}}
  787.   to4 {0 {"\[python -execlocal calcNode\\ =\\ nuke.toNode(\\\"calc\\\")\\ncPoint\\ =\\ calcNode.knob(\\\"C_LEFT\\\").getValue()\\naPoint\\ =\\ calcNode.knob(\\\"A_LEFT\\\").getValue()\\nif\\ (aPoint\\\[1\\]\\ >=\\ cPoint\\\[1\\]):\\n\\ \\ \\ \\ ret\\ =\\ aPoint\\\[1\\]\\nelse:\\n\\ \\ \\ \\ ret\\ =\\ cPoint\\\[1\\]]"}}
  788.   invert false
  789.   black_outside false
  790.   from1 {0 0}
  791.   from2 {{MASTER.width} 0}
  792.   from3 {{MASTER.width} {MASTER.height}}
  793.   from4 {0 {MASTER.height}}
  794.   name CornerPin2D9
  795.   xpos -370
  796.   ypos -610
  797.  }
  798.  Crop {
  799.   box {0 0 {MASTER.width} {MASTER.height}}
  800.   crop false
  801.   name Crop4
  802.   xpos -370
  803.   ypos -550
  804.   disable {{Crop5.disable}}
  805.  }
  806.  Dot {
  807.   name Dot34
  808.   xpos -336
  809.   ypos -486
  810.  }
  811.  ShuffleCopy {
  812.   inputs 2
  813.   name ShuffleCopy3
  814.   xpos -480
  815.   ypos -490
  816.  }
  817.  Premult {
  818.   name Premult3
  819.   xpos -480
  820.   ypos -190
  821.  }
  822.  Dot {
  823.   name Dot33
  824.   xpos -446
  825.   ypos -96
  826.  }
  827. push $Nb75f5800
  828.  Ramp {
  829.   premult rgba
  830.   cliptype none
  831.   p0 {0 0}
  832.   p1 {0 {MASTER.height}}
  833.   name RightRamp
  834.   xpos -700
  835.   ypos -970
  836.  }
  837.  Multiply {
  838.   value {{MASTER.point02color} {MASTER.point02color} {MASTER.point02color} 1}
  839.   name Multiply4
  840.   xpos -700
  841.   ypos -916
  842.  }
  843.  Dot {
  844.   name Dot14
  845.   xpos -666
  846.   ypos -816
  847.  }
  848. push $Nb75f5c00
  849.  Expression {
  850.   channel0 {rgba.red -rgba.green -rgba.blue -rgba.alpha}
  851.   expr0 MASTER.point04color.r
  852.   channel1 {-rgba.red rgba.green -rgba.blue -rgba.alpha}
  853.   expr1 MASTER.point04color.g
  854.   channel2 {-rgba.red -rgba.green rgba.blue -rgba.alpha}
  855.   expr2 MASTER.point04color.b
  856.   channel3 rgba
  857.   expr3 1
  858.   name Expression5
  859.   xpos -810
  860.   ypos -970
  861.  }
  862.  Merge2 {
  863.   inputs 2
  864.   name Merge6
  865.   xpos -810
  866.   ypos -820
  867.  }
  868.  Shuffle {
  869.   alpha white
  870.   name Shuffle6
  871.   xpos -810
  872.   ypos -760
  873.  }
  874.  CornerPin2D {
  875.   to1 {{MASTER.point04 x1 1630} {MASTER.point04 x1 674}}
  876.   to2 {{MASTER.width} {"\[python -execlocal calcNode\\ =\\ nuke.toNode(\\\"calc\\\")\\ncPoint\\ =\\ calcNode.knob(\\\"C_RIGHT\\\").getValue()\\naPoint\\ =\\ calcNode.knob(\\\"A_RIGHT\\\").getValue()\\nif\\ (cPoint\\\[1\\]\\ <=\\ aPoint\\\[1\\]):\\n\\ \\ \\ \\ ret\\ =\\ cPoint\\\[1\\]\\nelse:\\n\\ \\ \\ \\ ret\\ =\\ aPoint\\\[1\\]]"}}
  877.   to3 {{MASTER.width} {"\[python -execlocal calcNode\\ =\\ nuke.toNode(\\\"calc\\\")\\ncPoint\\ =\\ calcNode.knob(\\\"C_RIGHT\\\").getValue()\\naPoint\\ =\\ calcNode.knob(\\\"A_RIGHT\\\").getValue()\\nif\\ (aPoint\\\[1\\]\\ >=\\ cPoint\\\[1\\]):\\n\\ \\ \\ \\ ret\\ =\\ aPoint\\\[1\\]\\nelse:\\n\\ \\ \\ \\ ret\\ =\\ cPoint\\\[1\\]]"}}
  878.   to4 {{MASTER.point02 x36 2982} {MASTER.point02 x36 1360}}
  879.   invert false
  880.   black_outside false
  881.   from1 {0 0}
  882.   from2 {{MASTER.width} 0}
  883.   from3 {{MASTER.width} {MASTER.height}}
  884.   from4 {0 {MASTER.height}}
  885.   name CornerPin2D6
  886.   xpos -810
  887.   ypos -700
  888.  }
  889.  Crop {
  890.   box {0 0 {MASTER.width} {MASTER.height}}
  891.   crop false
  892.   name Crop2
  893.   xpos -810
  894.   ypos -550
  895.   disable {{Crop5.disable}}
  896.  }
  897.  Dot {
  898.   name Dot32
  899.   xpos -776
  900.   ypos -186
  901.  }
  902. push $N6874e000
  903.  NoOp {
  904.   name calc
  905.   xpos -1030
  906.   ypos -970
  907.   addUserKnob {20 User}
  908.   addUserKnob {7 A_SLOPE}
  909.   A_SLOPE {{(MASTER.point01.y-MASTER.point02.y)/(MASTER.point01.x-MASTER.point02.x)}}
  910.   addUserKnob {12 A_LEFT}
  911.   A_LEFT {0 {A_SLOPE*(0-MASTER.point01.x)+MASTER.point01.y}}
  912.   addUserKnob {12 A_RIGHT}
  913.   A_RIGHT {{MASTER.width} {A_SLOPE*(MASTER.width-MASTER.point01.x)+MASTER.point01.y}}
  914.   addUserKnob {7 B_SLOPE}
  915.   B_SLOPE {{(MASTER.point02.y-MASTER.point04.y)/(MASTER.point02.x-MASTER.point04.x)}}
  916.   addUserKnob {12 B_TOP}
  917.   B_TOP {{"\[python -execlocal masterNode\\ =\\ nuke.toNode(\\\"MASTER\\\")\\nheight\\ =\\ masterNode.height()\\npoint\\ =\\ masterNode.knob(\\\"point02\\\").getValue()\\nthisNode\\ =\\ nuke.thisNode()\\nslope\\ =\\ thisNode.knob(\\\"B_SLOPE\\\").getValue()\\nif\\ (slope\\ !=\\ float('Inf')):\\n\\ \\ \\ \\ answer\\ =\\ (height-point\\\[1\\]+(slope*point\\\[0\\]))/slope\\nelse:\\n\\ \\ \\ \\ answer\\ =\\ point\\\[0\\]\\nret\\ =\\ answer]"} {MASTER.height}}
  918.   addUserKnob {12 B_BOTTOM}
  919.   B_BOTTOM {{"\[python -execlocal masterNode\\ =\\ nuke.toNode(\\\"MASTER\\\")\\nthisNode\\ =\\ nuke.thisNode()\\nheight\\ =\\ masterNode.height()\\npoint\\ =\\ masterNode.knob(\\\"point02\\\").getValue()\\nslope\\ =\\ thisNode.knob(\\\"B_SLOPE\\\").getValue()\\nif\\ (slope\\ !=\\ float(\\\"Inf\\\")):\\n\\ \\ \\ \\ answer\\ =\\ (0-point\\\[1\\]+(slope*point\\\[0\\]))/slope\\nelse:\\n\\ \\ \\ \\ answer\\ =\\ point\\\[0\\]\\nret\\ =\\ answer]"} {curve}}
  920.   addUserKnob {7 C_SLOPE}
  921.   C_SLOPE {{(MASTER.point03.y-MASTER.point04.y)/(MASTER.point03.x-MASTER.point04.x)}}
  922.   addUserKnob {12 C_LEFT}
  923.   C_LEFT {0 {C_SLOPE*(0-MASTER.point03.x)+MASTER.point03.y}}
  924.   addUserKnob {12 C_RIGHT}
  925.   C_RIGHT {{MASTER.width} {C_SLOPE*(MASTER.width-MASTER.point03.x)+MASTER.point03.y}}
  926.   addUserKnob {7 D_SLOPE}
  927.   D_SLOPE {{(MASTER.point01.y-MASTER.point03.y)/(MASTER.point01.x-MASTER.point03.x)}}
  928.   addUserKnob {12 D_TOP}
  929.   D_TOP {{"\[python -execlocal masterNode\\ =\\ nuke.toNode(\\\"MASTER\\\")\\nthisNode\\ =\\ nuke.thisNode()\\nheight\\ =\\ masterNode.height()\\npoint\\ =\\ masterNode.knob(\\\"point03\\\").getValue()\\nslope\\ =\\ thisNode.knob(\\\"D_SLOPE\\\").getValue()\\nif\\ (slope\\ !=\\ float(\\\"Inf\\\")):\\n\\ \\ \\ \\ answer\\ =\\ (height-point\\\[1\\]+(slope*point\\\[0\\]))/slope\\nelse:\\n\\ \\ \\ \\ answer\\ =\\ point\\\[0\\]\\nret\\ =\\ answer]"} {MASTER.height}}
  930.   addUserKnob {12 D_BOTTOM}
  931.   D_BOTTOM {{"\[python -execlocal masterNode\\ =\\ nuke.toNode(\\\"MASTER\\\")\\nheight\\ =\\ masterNode.height()\\npoint\\ =\\ masterNode.knob(\\\"point03\\\").getValue()\\nthisNode\\ =\\ nuke.thisNode()\\nslope\\ =\\ thisNode.knob(\\\"D_SLOPE\\\").getValue()\\nif\\ (slope\\ !=\\ float(\\\"Inf\\\")):\\n\\ \\ \\ \\ answer\\ =\\ (0-point\\\[1\\]+(slope*point\\\[0\\]))/slope\\nelse:\\n\\ \\ \\ \\ answer\\ =\\ point\\\[0\\]\\nret\\ =\\ answer]"} {curve}}
  932.  }
  933.  Dot {
  934.   name Dot43
  935.   xpos -996
  936.   ypos -276
  937.  }
  938.  Merge2 {
  939.   inputs 2
  940.   name Merge7
  941.   xpos -1030
  942.   ypos -190
  943.  }
  944.  Merge2 {
  945.   inputs 2
  946.   name Merge9
  947.   xpos -1030
  948.   ypos -100
  949.  }
  950.  Merge2 {
  951.   inputs 2
  952.   name Merge3
  953.   xpos -1030
  954.   ypos -10
  955.  }
  956.  Merge2 {
  957.   inputs 2
  958.   name Merge5
  959.   xpos -1030
  960.   ypos 80
  961.  }
  962.  Shuffle {
  963.   alpha white
  964.   name Shuffle3
  965.   xpos -1030
  966.   ypos 110
  967.  }
  968.  Dot {
  969.   name Dot42
  970.   xpos -996
  971.   ypos 208
  972.  }
  973.  Merge2 {
  974.   inputs 2
  975.   name Merge10
  976.   xpos -1030
  977.   ypos 290
  978.  }
  979.  Merge2 {
  980.   inputs 2
  981.   name Merge11
  982.   xpos -1030
  983.   ypos 380
  984.  }
  985.  Merge2 {
  986.   inputs 2
  987.   name Merge12
  988.   xpos -1030
  989.   ypos 470
  990.  }
  991.  Merge2 {
  992.   inputs 2
  993.   name Merge13
  994.   xpos -1030
  995.   ypos 560
  996.  }
  997.  Dot {
  998.   name Dot24
  999.   xpos -996
  1000.   ypos 654
  1001.  }
  1002.  Dither {
  1003.   channels rgb
  1004.   amount 0.008
  1005.   name Dither1
  1006.   xpos -1030
  1007.   ypos 740
  1008.  }
  1009.  Crop {
  1010.   box {0 0 {MASTER.width} {MASTER.height}}
  1011.   crop false
  1012.   name Crop1
  1013.   xpos -1030
  1014.   ypos 770
  1015.   disable {{Crop5.disable}}
  1016.  }
  1017.  Dot {
  1018.   name Dot2
  1019.   xpos -996
  1020.   ypos 864
  1021.  }
  1022. set Nd3225c00 [stack 0]
  1023.  Output {
  1024.   name Output1
  1025.   xpos -1030
  1026.   ypos 950
  1027.  }
  1028. push $Nd3225c00
  1029.  Viewer {
  1030.   frame_range 1-100
  1031.   frame_increment 8
  1032.   name Viewer1
  1033.   xpos -810
  1034.   ypos 950
  1035.  }
  1036. end_group
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement