set cut_paste_input [stack 0] version 9.0 v4 push 0 push $cut_paste_input Group { inputs 2 name ramp4point 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). " selected true xpos 289 ypos -181 addUserKnob {20 Points} addUserKnob {41 point01 l "Point 1 (UL)" T MASTER.point01} addUserKnob {41 point01color l Color T MASTER.point01color} 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)"} addUserKnob {26 ""} addUserKnob {41 point02 l "Point 2 (UR)" T MASTER.point02} addUserKnob {41 point02color l Color T MASTER.point02color} 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)"} addUserKnob {26 ""} addUserKnob {41 point03 l "Point 3 (LL)" T MASTER.point03} addUserKnob {41 point03color l Color T MASTER.point03color} 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)"} addUserKnob {26 ""} addUserKnob {41 point04 l "Point 4 (LR)" T MASTER.point04} addUserKnob {41 point04color l Color T MASTER.point04color} 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)"} addUserKnob {26 ""} 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} addUserKnob {7 boxX l SampleSize t "The radius of pixels around the source point to average the color from." R 1 15} boxX 1 addUserKnob {26 dither2 l Dither} addUserKnob {41 amount T Dither1.amount} addUserKnob {41 seed T Dither1.seed} addUserKnob {41 static_seed l "static seed" -STARTLINE T Dither1.static_seed} addUserKnob {41 disable_1 l "Disable Cropping" T Crop5.disable} addUserKnob {20 Settings l Matte} addUserKnob {6 Matte l "Comp Over Source" +STARTLINE} addUserKnob {26 Matte2 l Matte} addUserKnob {41 maskChannelMask l "" +STARTLINE T MergeMatte.maskChannelMask} addUserKnob {41 invert_mask_1 l invert -STARTLINE T MergeMatte.invert_mask} } Input { inputs 0 name source label source xpos -988 ypos -1108 } set N8786720 [stack 0] NoOp { name MASTER xpos -988 ypos -1032 addUserKnob {20 User} addUserKnob {12 point01} point01 {{curve x26 628 x82 440} {curve x26 706 x82 764}} addUserKnob {18 point01color} point01color {0.07080696523 0.1416417509 0.3586869836} addUserKnob {6 point01color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {12 point02} point02 {{curve x26 1340 x82 1442} {curve x26 710 x82 770}} addUserKnob {18 point02color} point02color {0.02713956125 0.1475701332 0.2225143164} addUserKnob {6 point02color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {12 point03} point03 {{curve x26 626 x82 724} {curve x26 262 x82 160}} addUserKnob {18 point03color} point03color {0.02802207693 0.0649933517 0.1862350702} addUserKnob {6 point03color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {12 point04} point04 {{curve x26 1320 x82 1248} {curve x26 258 x82 362}} addUserKnob {18 point04color} point04color {0.02506730333 0.09587413073 0.1623772234} addUserKnob {6 point04color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} } Shuffle { red black green black blue black alpha black name Shuffle11 xpos -988 ypos -989 } set Nc3e9bb0 [stack 0] Dot { name Dot12 xpos -1132 ypos -985 } Dot { name Dot14 xpos -1132 ypos 53 } push $Nc3e9bb0 Dot { name Dot13 xpos -954 ypos -938 } set N96a7c00 [stack 0] Dot { name Dot10 xpos -773 ypos -938 } set N96ac600 [stack 0] Dot { name Dot4 xpos -652 ypos -938 } set N96b1070 [stack 0] Dot { name Dot1 xpos -550 ypos -938 } set N96b5ae0 [stack 0] Dot { name Dot11 xpos -477 ypos -938 } set N96dbc10 [stack 0] Dot { name Dot5 xpos -372 ypos -938 } set N96e0560 [stack 0] Dot { name Dot21 xpos -315 ypos -938 } set Na78c210 [stack 0] Dot { name Dot19 xpos -257 ypos -938 } set N96e4fd0 [stack 0] Dot { name Dot17 xpos -174 ypos -938 } set N96e9b20 [stack 0] Ramp { premult rgba cliptype none p0 {0 0} p1 {{MASTER.width} 0} name TopRamp xpos -208 ypos -753 } Multiply { value {{MASTER.point02color} {MASTER.point02color} {MASTER.point02color} 1} name Multiply2 xpos -208 ypos -720 } push $N96e4fd0 Expression { expr0 MASTER.point01color.r expr1 MASTER.point01color.g expr2 MASTER.point01color.b channel3 rgba expr3 1 name Expression13 xpos -307 ypos -676 } Merge2 { inputs 2 name Merge2 xpos -208 ypos -676 } Shuffle { alpha white name Shuffle2 xpos -208 ypos -611 } set N9906210 [stack 0] CornerPin2D { to1 {{CornerPinTop.to1} {CornerPinTop.to1}} to2 {{CornerPinTop.to2} {CornerPinTop.to2}} to3 {{CornerPinTop.to3} {CornerPinTop.to3}} to4 {{CornerPinTop.to4} {CornerPinTop.to4}} invert false from1 {0 0} from2 {{MASTER.width} 0} from3 {{MASTER.width} {MASTER.height}} from4 {0 {MASTER.height}} name CornerPin2D5 xpos -114 ypos -557 } push $N9906210 CornerPin2D { to1 {{MASTER.point01.x} {MASTER.point01.y}} to2 {{MASTER.point02.x} {MASTER.point02.y}} 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}} 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}} invert false black_outside false from1 {0 0} from2 {{MASTER.width} 0} from3 {{MASTER.width} {MASTER.height}} from4 {0 {MASTER.height}} name CornerPinTop xpos -208 ypos -560 } ShuffleCopy { inputs 2 name ShuffleCopy4 xpos -208 ypos -482 } set N99385a0 [stack 0] push $N8786720 Dot { name Dot2 xpos 731 ypos -1105 } set N96c9210 [stack 0] Dot { name Dot15 xpos 868 ypos -1105 } Dot { name Dot16 xpos 868 ypos 166 } Input { inputs 0 name matte label matte xpos 1094 ypos 84 number 1 } push $N96e9b20 Dot { name Dot20 xpos -74 ypos -938 } set N96ee510 [stack 0] Dot { name Dot18 xpos 17 ypos -938 } set N96f2f80 [stack 0] Dot { name Dot6 xpos 211 ypos -938 } set N96f79f0 [stack 0] Dot { name Dot7 xpos 341 ypos -937 } set N96fc430 [stack 0] Dot { name Dot8 xpos 467 ypos -937 } set N9700d70 [stack 0] Dot { name Dot9 xpos 596 ypos -936 } Radial { cliptype none area {{center.x-(hoirzDistance)} {center.y-(vertDistance)} {center.x+(hoirzDistance)} {center.y+(vertDistance)}} color {{MASTER.point03color} {MASTER.point03color} {MASTER.point03color} 1} p1 {{center} {center}} color0 {{MASTER.point01color} {MASTER.point01color} {MASTER.point01color} 1} p0 {{MASTER.point01} {MASTER.point01}} name RadialLLeft xpos 562 ypos -859 addUserKnob {20 User} addUserKnob {12 center} center {{MASTER.point03} {MASTER.point03}} addUserKnob {7 vertDistance} vertDistance {{sqrt(pow2(MASTER.point01.y-center.y)+pow2(MASTER.point01.x-center.x))}} addUserKnob {7 hoirzDistance} hoirzDistance {{sqrt(pow2(MASTER.point04.y-center.y)+pow2(MASTER.point04.x-center.x))}} } push $N9700d70 Radial { cliptype none area {{center.x-(hoirzDistance)} {center.y-(vertDistance)} {center.x+(hoirzDistance)} {center.y+(vertDistance)}} color {{MASTER.point04color} {MASTER.point04color} {MASTER.point04color} 1} p1 {{center} {center}} color0 {{MASTER.point03color} {MASTER.point03color} {MASTER.point03color} 1} p0 {{MASTER.point03} {MASTER.point03}} name RadialLRight xpos 433 ypos -859 addUserKnob {20 User} addUserKnob {12 center} center {{MASTER.point04} {MASTER.point04}} addUserKnob {7 vertDistance} vertDistance {{sqrt(pow2(MASTER.point02.y-center.y)+pow2(MASTER.point02.x-center.x))}} addUserKnob {7 hoirzDistance} hoirzDistance {{sqrt(pow2(MASTER.point03.y-center.y)+pow2(MASTER.point03.x-center.x))}} } push $N96fc430 Radial { cliptype none area {{center.x-(hoirzDistance)} {center.y-(vertDistance)} {center.x+(hoirzDistance)} {center.y+(vertDistance)}} color {{MASTER.point02color} {MASTER.point02color} {MASTER.point02color} 1} p1 {{center} {center}} color0 {{MASTER.point04color} {MASTER.point04color} {MASTER.point04color} 1} p0 {{MASTER.point04} {MASTER.point04}} name RadialURight xpos 307 ypos -861 addUserKnob {20 User} addUserKnob {12 center} center {{MASTER.point02} {MASTER.point02}} addUserKnob {7 vertDistance} vertDistance {{sqrt(pow2(MASTER.point04.y-center.y)+pow2(MASTER.point04.x-center.x))}} addUserKnob {7 hoirzDistance} hoirzDistance {{sqrt(pow2(MASTER.point01.y-center.y)+pow2(MASTER.point01.x-center.x))}} } push $N96f79f0 Radial { cliptype none area {{center.x-(hoirzDistance)} {center.y-(vertDistance)} {center.x+(hoirzDistance)} {center.y+(vertDistance)}} color {{MASTER.point01color} {MASTER.point01color} {MASTER.point01color} 1} p1 {{center} {center}} color0 {{MASTER.point02color} {MASTER.point02color} {MASTER.point02color} 1} p0 {{MASTER.point02} {MASTER.point02}} name RadialULeft xpos 177 ypos -858 addUserKnob {20 User} addUserKnob {12 center} center {{MASTER.point01} {MASTER.point01}} addUserKnob {7 vertDistance} vertDistance {{sqrt(pow2(MASTER.point03.y-center.y)+pow2(MASTER.point03.x-center.x))}} addUserKnob {7 hoirzDistance} hoirzDistance {{sqrt(pow2(MASTER.point02.y-center.y)+pow2(MASTER.point02.x-center.x))}} } push $Na78c210 Roto { output alpha cliptype none curves {{{v x3f99999a} {f 0} {n {layer Root {f 512} {t x44c54000 x44838000} {a} {curvegroup Bezier1 576 bezier {{cc {f 8192} {px {x41c00000 x42100000} {{0} {0}} {{=calc.A_LEFT {0 x44080000}} {=calc.A_LEFT {x4486eba3 x441a0000}}} {{0} {0}} {{0} {0}} {{=calc.A_RIGHT {x44f00000 x44878000}} {=calc.A_RIGHT {x4462345d x44208000}}} {{0} {0}} {{0} {0}} {{=MASTER.point04 {x44e4c000 x44834000}} {=MASTER.point04 {x444e0000 x43960000}}} {{0} {0}} {{0} {0}} {{=calc.C_LEFT {0 x44030000}} {=calc.C_LEFT {x44840c31 x43880000}}} {{0} {0}}}} idem} {tx x42100000 x44482000 x43e4c000} {a str 1 spx x44c54000 spy x44838000 sb 1 ltn x42100000 ltm x42100000 tt x40800000}}}}}} toolbox {selectAll { { selectAll str 1 ssx 1 ssy 1 sf 1 } { createBezier ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 } { createBezierCusped ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 5 } { createBSpline ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 6 } { createEllipse ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 7 } { createRectangle ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 8 } { createRectangleCusped ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 9 } { brush str 1 ssx 1 ssy 1 sf 1 sb 1 } { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 } { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 } { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } } } toolbar_brush_hardness 0.200000003 toolbar_source_transform_scale {1 1} toolbar_source_transform_center {1578 1052} colorOverlay {0 0 0 0} lifetime_type "all frames" lifetime_start 36 lifetime_end 36 motionblur_shutter_offset_type centred source_black_outside true name Roto2 xpos -324 ypos -507 } Dilate { size {{Blur1.size/2}} name Dilate1 xpos -324 ypos -438 } Blur { size {{Blur1.size}} filter box name Blur2 xpos -324 ypos -375 } Crop { box {0 0 {MASTER.width} {MASTER.height}} crop false name Crop5 xpos -324 ypos -337 } set N982f410 [stack 0] push $N96f2f80 Ramp { premult rgba cliptype none p0 {0 0} p1 {{MASTER.width} 0} name BottomRamp xpos -17 ypos -753 } Multiply { value {{MASTER.point04color} {MASTER.point04color} {MASTER.point04color} 1} name Multiply3 xpos -17 ypos -711 } push $N96ee510 Expression { expr0 MASTER.point03color.r expr1 MASTER.point03color.g expr2 MASTER.point03color.b channel3 rgba expr3 1 name Expression14 xpos -108 ypos -667 } Merge2 { inputs 2 name Merge4 xpos -17 ypos -667 } Shuffle { alpha white name Shuffle1 xpos -17 ypos -614 } set N98700a0 [stack 0] CornerPin2D { to1 {{CornerPinBottom.to1} {CornerPinBottom.to1}} to2 {{CornerPinBottom.to2} {CornerPinBottom.to2}} to3 {{CornerPinBottom.to3} {CornerPinBottom.to3}} to4 {{CornerPinBottom.to4} {CornerPinBottom.to4}} invert false from1 {0 0} from2 {{MASTER.width} 0} from3 {{MASTER.width} {MASTER.height}} from4 {0 {MASTER.height}} name CornerPin2D4 xpos 82 ypos -527 } push $N98700a0 CornerPin2D { 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}} 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}} to3 {{MASTER.point04 i} {MASTER.point04 i}} to4 {{MASTER.point03 i} {MASTER.point03 i}} invert false black_outside false from1 {0 0} from2 {{MASTER.width i} 0} from3 {{MASTER.width i} {MASTER.height i}} from4 {0 {MASTER.height i}} name CornerPinBottom xpos -17 ypos -526 } ShuffleCopy { inputs 2 name ShuffleCopy2 xpos -14 ypos -448 } Crop { box {0 0 {MASTER.width} {MASTER.height}} crop false name Crop7 xpos -14 ypos -422 disable {{Crop5.disable}} } ChannelMerge { inputs 2 operation from name ChannelMerge2 xpos -14 ypos -349 } Premult { name Premult2 xpos -14 ypos -241 } push $N982f410 push $N99385a0 Crop { box {0 0 {MASTER.width} {MASTER.height}} crop false name Crop6 xpos -208 ypos -456 disable {{Crop5.disable}} } ChannelMerge { inputs 2 operation from name ChannelMerge1 xpos -208 ypos -395 } Premult { name Premult1 xpos -208 ypos -276 } push $N96b5ae0 Rectangle { area {{curve} {curve} {MASTER.width} {MASTER.height}} name Rectangle1 xpos -584 ypos -708 disable true addUserKnob {20 User} addUserKnob {7 difference} 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]"}} addUserKnob {7 startPoint} 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]"}} addUserKnob {7 endPoint} 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]"}} addUserKnob {26 ""} addUserKnob {7 newSlope} newSlope {{(topPoint.y-bottomPoint.y)/(topPoint.x-bottomPoint.x)}} addUserKnob {12 topPoint} topPoint {{((MASTER.point02.x-MASTER.point01.x)/2)+MASTER.point01.x} {((MASTER.point02.y-MASTER.point01.y)/2)+MASTER.point01.y}} addUserKnob {12 bottomPoint} bottomPoint {{((MASTER.point04.x-MASTER.point03.x)/2)+MASTER.point03.x} {((MASTER.point04.y-MASTER.point03.y)/2)+MASTER.point03.y}} addUserKnob {12 maskUpRight} 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}} addUserKnob {12 maskDownRight} 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} } Roto { output alpha cliptype none curves {{{v x3f99999a} {f 0} {n {layer Root {f 512} {t x44c54000 x44838000} {a} {curvegroup Bezier1 512 bezier {{cc {f 8192} {px x42100000 {0 0} {{=0 x42cc0000} {=MASTER.height x44fe8000}} {0 0} {0 0} {{=Rectangle1.maskUpRight.x x449c8000} {=Rectangle1.maskUpRight.y x44f78000}} {0 0} {0 0} {{=Rectangle1.maskDownRight.x x444a8000} {=Rectangle1.maskDownRight.y x432a0000}} {0 0} {0 0} {{=0 x43200000} {=0 x43220000}} {0 0}}} idem} {tx x42100000 x44114000 x4487e000} {a str 1 spx x44c54000 spy x44838000 sb 1 ltn x42100000 ltm x42100000 tt x40800000}}}}}} toolbox {selectAll { { selectAll str 1 ssx 1 ssy 1 sf 1 } { createBezier ro 0 go 0 bo 0 ao 0 str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 } { createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 } { createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 } { createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 } { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 } { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 } { brush str 1 ssx 1 ssy 1 sf 1 sb 1 } { eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 } { clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 } { dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } { smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 } } } toolbar_brush_hardness 0.200000003 toolbar_source_transform_scale {1 1} toolbar_source_transform_center {1578 1052} colorOverlay {0 0 0 0} lifetime_type "all frames" lifetime_start 36 lifetime_end 36 motionblur_shutter_offset_type centred source_black_outside true name Roto1 xpos -584 ypos -625 } Blur { size {{Rectangle1.difference/5}} name Blur1 xpos -584 ypos -556 } Crop { box {0 0 {MASTER.width} {MASTER.height}} crop false name Crop3 xpos -584 ypos -519 disable {{Crop5.disable}} } push $N96e0560 Ramp { premult rgba cliptype none p0 {0 0} p1 {0 {MASTER.height}} name LeftRamp xpos -406 ypos -892 } Multiply { value {{MASTER.point01color} {MASTER.point01color} {MASTER.point01color} 1} name Multiply5 xpos -406 ypos -828 } push $N96dbc10 Expression { expr0 MASTER.point03color.r expr1 MASTER.point03color.g expr2 MASTER.point03color.b channel3 {rgba.red rgba.green -rgba.blue rgba.alpha} expr3 1 name Expression6 xpos -513 ypos -782 } Merge2 { inputs 2 name Merge8 xpos -403 ypos -782 } Shuffle { alpha white name Shuffle4 xpos -403 ypos -696 } CornerPin2D { 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\\]]"}} to2 {{MASTER.point03} {MASTER.point03}} to3 {{MASTER.point01} {MASTER.point01}} 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\\]]"}} invert false black_outside false from1 {0 0} from2 {{MASTER.width} 0} from3 {{MASTER.width} {MASTER.height}} from4 {0 {MASTER.height}} name CornerPin2D9 xpos -403 ypos -624 } Crop { box {0 0 {MASTER.width} {MASTER.height}} crop false name Crop4 xpos -403 ypos -598 disable {{Crop5.disable}} } ShuffleCopy { inputs 2 name ShuffleCopy3 xpos -404 ypos -519 } Premult { name Premult3 xpos -404 ypos -464 } push $N96b1070 Ramp { premult rgba cliptype none p0 {0 0} p1 {0 {MASTER.height}} name RightRamp xpos -686 ypos -920 } Multiply { value {{MASTER.point02color} {MASTER.point02color} {MASTER.point02color} 1} name Multiply4 xpos -686 ypos -888 } push $N96ac600 Expression { channel0 {rgba.red -rgba.green -rgba.blue -rgba.alpha} expr0 MASTER.point04color.r channel1 {-rgba.red rgba.green -rgba.blue -rgba.alpha} expr1 MASTER.point04color.g channel2 {-rgba.red -rgba.green rgba.blue -rgba.alpha} expr2 MASTER.point04color.b channel3 rgba expr3 1 name Expression5 xpos -807 ypos -782 } Merge2 { inputs 2 name Merge6 xpos -686 ypos -782 } Shuffle { alpha white name Shuffle6 xpos -686 ypos -727 } CornerPin2D { to1 {{MASTER.point04 x1 1630} {MASTER.point04 x1 674}} 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\\]]"}} 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\\]]"}} to4 {{MASTER.point02 x36 2982} {MASTER.point02 x36 1360}} invert false black_outside false from1 {0 0} from2 {{MASTER.width} 0} from3 {{MASTER.width} {MASTER.height}} from4 {0 {MASTER.height}} name CornerPin2D6 xpos -686 ypos -632 } Crop { box {0 0 {MASTER.width} {MASTER.height}} crop false name Crop2 xpos -686 ypos -606 disable {{Crop5.disable}} } push $N96a7c00 NoOp { name calc xpos -988 ypos -710 addUserKnob {20 User} addUserKnob {7 A_SLOPE} A_SLOPE {{(MASTER.point01.y-MASTER.point02.y)/(MASTER.point01.x-MASTER.point02.x)}} addUserKnob {12 A_LEFT} A_LEFT {0 {A_SLOPE*(0-MASTER.point01.x)+MASTER.point01.y}} addUserKnob {12 A_RIGHT} A_RIGHT {{MASTER.width} {A_SLOPE*(MASTER.width-MASTER.point01.x)+MASTER.point01.y}} addUserKnob {7 B_SLOPE} B_SLOPE {{(MASTER.point02.y-MASTER.point04.y)/(MASTER.point02.x-MASTER.point04.x)}} addUserKnob {12 B_TOP} 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}} addUserKnob {12 B_BOTTOM} 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}} addUserKnob {7 C_SLOPE} C_SLOPE {{(MASTER.point03.y-MASTER.point04.y)/(MASTER.point03.x-MASTER.point04.x)}} addUserKnob {12 C_LEFT} C_LEFT {0 {C_SLOPE*(0-MASTER.point03.x)+MASTER.point03.y}} addUserKnob {12 C_RIGHT} C_RIGHT {{MASTER.width} {C_SLOPE*(MASTER.width-MASTER.point03.x)+MASTER.point03.y}} addUserKnob {7 D_SLOPE} D_SLOPE {{(MASTER.point01.y-MASTER.point03.y)/(MASTER.point01.x-MASTER.point03.x)}} addUserKnob {12 D_TOP} 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}} addUserKnob {12 D_BOTTOM} 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}} } Merge2 { inputs 2 name Merge7 xpos -686 ypos -290 } Merge2 { inputs 2 name Merge9 xpos -404 ypos -239 } Merge2 { inputs 2 name Merge3 xpos -208 ypos -210 } Merge2 { inputs 2 name Merge5 xpos -14 ypos -179 } Shuffle { alpha white name Shuffle3 xpos -14 ypos -145 } Merge2 { inputs 2 name Merge10 xpos 177 ypos -145 } Merge2 { inputs 2 name Merge11 xpos 307 ypos -105 } Merge2 { inputs 2 name Merge12 xpos 433 ypos -84 } Merge2 { inputs 2 name Merge13 xpos 562 ypos -67 } Dither { channels rgb amount 0.0008 name Dither1 xpos 562 ypos -34 } set N9b79070 [stack 0] push $N96c9210 Dot { name Dot3 xpos 731 ypos -7 } Merge2 { inputs 2+1 name MergeMatte xpos 697 ypos 89 } ShuffleCopy { inputs 2 name ShuffleCopy1 xpos 697 ypos 163 } push $N9b79070 Switch { inputs 2 which {{"\[python nuke.thisParent().knob(\\\"Matte\\\").getValue()]"}} name Switch1 xpos 562 ypos 211 } Crop { box {0 0 {MASTER.width} {MASTER.height}} crop false name Crop1 xpos 562 ypos 270 disable {{Crop5.disable}} } Output { name Output1 xpos 562 ypos 329 } Viewer { inputs 2 frame 82 frame_range 1-258 fps 23.97602463 input_number 1 input_process false name Viewer1 xpos -378 ypos 143 } end_group