Gizmo { help "@b;RampColor v0.1@n; for Nuke 7 and above\n\nCreated by Vladislav Bakic\vladislav.bakic@gmail.com" onCreate "def toggleRampCtrl(ramp):\n\tif not nuke.thisNode()\[ramp+'_percent'].getFlag(nuke.INVISIBLE):\n\t\tnuke.thisNode()\[ramp+'_percent'].setVisible(False)\n\t\tnuke.thisNode()\[ramp].setVisible(False)\n\t\tnuke.thisNode()\[ramp+'_percent'].setFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\[ramp].setFlag(nuke.INVISIBLE)\n\t\tnuke.thisKnob().setLabel('
')\n\telse:\n\t\tnuke.thisNode()\[ramp+'_percent'].setVisible(True)\n\t\tnuke.thisNode()\[ramp].setVisible(True)\n\t\tnuke.thisNode()\[ramp+'_percent'].clearFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\[ramp].clearFlag(nuke.INVISIBLE)\n\t\tnuke.thisKnob().setLabel('
')\ndef copyKnob(inKnob, outKnob):\n\toutKnob.fromScript(inKnob.toScript())\n\ndef swapKnobs(knob1, knob2):\n\tval1 = knob1.toScript()\n\tval2 = knob2.toScript()\n\t\n\tknob1.clearAnimated()\n\tknob1.fromScript(val2)\n\n\tknob2.clearAnimated()\n\tknob2.fromScript(val1)\n\ndef swapRamps(node, index, dir):\n\tramps = \['p0']\n\tfor i in range(18):\n\t\tr = 'r'+str(i+1)\n\t\tif node\[r+'_color'].visible():\n\t\t\tramps.append(r)\n\tramps.append('p1')\n\tif index == 19:\n\t\tindex = len(ramps)-1\n\tattrs = \['_interpolation', '_enabled', '_color']\n\tif dir == 0:\n\t\tfor attr in attrs:\n\t\t\tswapKnobs(node\[ramps\[index]+attr], node\[ramps\[index+1]+attr])\n\telse:\n\t\tfor attr in attrs:\n\t\t\tswapKnobs(node\[ramps\[index]+attr], node\[ramps\[index-1]+attr])\n\t\t\t\ndef copyRamps(node, ramp1, ramp2):\n\tattrs = \['', '_percent', '_interpolation', '_enabled', '_color']\n\tfor attr in attrs:\n\t\tcopyKnob(node\[ramp1+attr], node\[ramp2+attr])\n\ndef addRamp(node, index):\n\tramps = \['p0']\n\tfor i in range(18):\n\t\tr = 'r'+str(i+1)\n\t\tif node\[r+'_color'].visible():\n\t\t\tramps.append(r)\n\tramps.append('p1')\n\tnumShown = len(ramps)\n\t\n\tattrs = \['', '_percent', '_interpolation', '_enabled', '_color', '_toggle', '_add', '_rem', '_down', '_up']\n\n\tnode\['r'+str(numShown-1)+'_toggle'].setLabel('
')\n\t\n\tfor attr in attrs:\n\t\tnode\['r'+str(numShown-1)+attr].setVisible(True)\n\t\tnode\['r'+str(numShown-1)+attr].clearFlag(nuke.INVISIBLE)\n\n\tramps.insert(-1, 'r'+str(numShown-1))\n\n\tfor i in range(index+1, len(ramps)-2):\n\t\tpos = len(ramps)-2-i+index\n\t\tcopyRamps(node, ramps\[pos], ramps\[pos+1])\n\t\n\tcolor = \[b*0.5+a*0.5 for a,b in zip(node\[ramps\[index]+'_color'].value(),node\[ramps\[index+2]+'_color'].value())]\n\tpercent = node\[ramps\[index]+'_percent'].value() + (node\[ramps\[index+2]+'_percent'].value()-node\[ramps\[index]+'_percent'].value())/2\n\tnode\[ramps\[index+1]+'_percent'].setValue(percent)\n\tnode\[ramps\[index+1]+'_color'].setValue(color)\n\tnode\[ramps\[index+1]+'_interpolation'].setValue(node\[ramps\[index]+'_interpolation'].value())\n\tnode\[ramps\[index+1]+'_enabled'].setValue(True)\n\ndef removeRamp(node, index):\n\tramps = \['p0']\n\tfor i in range(18):\n\t\tr = 'r'+str(i+1)\n\t\tif node\[r+'_color'].visible():\n\t\t\tramps.append(r)\n\tramps.append('p1')\n\tnumShown = len(ramps)\n\t\n\tattrs = \['', '_percent', '_interpolation', '_enabled', '_color', '_toggle', '_add', '_rem', '_down', '_up']\n\n\tfor attr in attrs:\n\t\tnode\['r'+str(numShown-2)+attr].setVisible(False)\n\t\tnode\['r'+str(numShown-2)+attr].setFlag(nuke.INVISIBLE)\n\n\tfor i in range(index+1, len(ramps)-1):\n\t\tpos = i\n\t\tcopyRamps(node, ramps\[pos], ramps\[pos-1])\n\t#disable\n\tnode\['r'+str(numShown-2)+'_enabled'].setValue(False)\nif not nuke.thisNode()\['created'].value():\n\tnuke.thisNode()\['p0'].setValue(\[0, nuke.root()\['format'].value().height()/2])\n\tnuke.thisNode()\['p1'].setValue(\[nuke.root()\['format'].value().width(), nuke.root()\['format'].value().height()/2])\n\tnuke.thisNode()\['created'].setValue(True)" knobChanged "def positionCallback(group):\n\tp0 = \[group\['p0'].x(), group\['p0'].y()]\n\tp1 = \[group\['p1'].x(), group\['p1'].y()]\n\tgroup.node('Controls')\['p0'].setValue(p0)\n\tgroup.node('Controls')\['p1'].setValue(p1)\n\tfor knob in group.knobs():\n\t\tif knob.endswith('_percent'):\n\t\t\tif group\['relative'].value():\n\t\t\t\tname = knob.split('_')\[0]\n\t\t\t\tpercent = group\[knob].value()\n\t\t\t\tr = \[group\[name].x(), group\[name].y()]\t\n\t\t\t\tpercentPoint = \[(p1\[0]-p0\[0]) * percent + p0\[0], (p1\[1]-p0\[1]) * percent + p0\[1]]\n\t\t\t\tgroup\[name].setValue(percentPoint)\n\t\t\telse:\n\t\t\t\tcolorCallback(group, group\[knob])\ndef colorCallback(group, knob):\n\timport math\n\tid = knob.name().split('_')\[0]\n\t\n\tp0 = \[group\['p0'].x(), group\['p0'].y()]\n\tp1 = \[group\['p1'].x(), group\['p1'].y()]\n\tr = \[group\[id].x(), group\[id].y()]\n\t\n\tx1 = p1\[0] - p0\[0]\n\ty1 = p1\[1] - p0\[1]\n\t\n\tx2 = r\[0] - p0\[0]\n\ty2 = r\[1] - p0\[1]\n\t\n\tt = (x2*x1 + y2 * y1) / (x1 * x1 + y1 * y1)\n\t\n\tclosestPoint = \[p0\[0] + t * x1, p0\[1] + t * y1]\n\t\n\tgroup\[id].setValue(closestPoint)\n\t\n\tvec1 = math.sqrt(pow(closestPoint\[0]-p0\[0],2) + pow(closestPoint\[1]-p0\[1],2))\n\tvec2 = math.sqrt(pow(p1\[0]-p0\[0],2) + pow(p1\[1]-p0\[1],2))\n\t\n\tpercent = vec1/vec2\n\tgroup\[id+'_percent'].setValue(percent)\n\ndef drawRamp(group):\n\tsortedKnobs = \{\}\n\tfor knob, value in group.knobs().iteritems():\n\t\tif '_percent' in knob:\n\t\t\tname = knob.replace('_percent', '')\n\t\t\tif group\[name+'_enabled'].value():\n\t\t\t\tpos = value.value()\n\t\t\t\tinterpolation = group\[name+'_interpolation'].value()\n\t\t\t\tsortedKnobs\[name] = \{'pos':pos, 'interpolation':interpolation\}\n\t\n\tpoints = sorted(sortedKnobs.items(), key=lambda x: x\[1]\['pos'] )\n\t\n\tt = '(x-\{0\})/((\{1\}-\{0\})/2)'\n\tnone = '(x-\{0\}) < (\{1\}-\{0\}) ? 0 : 1'\n\tnone2 = '(x-\{0\}) < (\{1\}-\{0\})/2 ? 0 : 1'\n\tlinear = '(x-\{0\})/(\{1\}-\{0\})'\n\tquadratic = '\{0\} < 1 ? (1/2*\{0\}*\{0\})+0 : (-1/2 * ((\{0\}-1)*((\{0\}-1)-2) -1))'\n\tcubic = '\{0\} < 1 ? 1/2*\{0\}*\{0\}*\{0\}+0 : 1/2*((\{0\}-2)*(\{0\}-2)*(\{0\}-2)+2)'\n\tbase = 'x >= \{0\} && x< \{1\} ? (1-(\{5\}))*\{2\}_color.\{4\} + (\{5\})*parent.\{3\}_color.\{4\} : '\n\n\tfor ch in \['r','g','b','a']:\n\t\tresult = ''\n\t\tfor i in range(len(points)):\n\t\t\tif i < len(points)-1:\n\t\t\t\tp0 = '('+points\[i]\[0]+'_percent*width)'\n\t\t\t\tp1 = '('+points\[i+1]\[0]+'_percent*width)'\n\t\t\t\tt1 = t.format(p0, p1)\n\t\t\t\ttype = points\[i]\[1]\['interpolation']\n\t\t\t\tif type == 'linear':\n\t\t\t\t\teq = linear.format(p0, p1)\n\t\t\t\telif type == 'quadratic':\n\t\t\t\t\teq = quadratic.format(t1.format(p0, p1))\n\t\t\t\telif type == 'cubic':\n\t\t\t\t\teq = cubic.format(t1.format(p0, p1))\n\t\t\t\telif type == 'none':\n\t\t\t\t\teq = none.format(p0, p1)\n\t\t\t\telif type == 'none2':\n\t\t\t\t\teq = none2.format(p0, p1)\n\t\t\t\tresult += base.format(p0, p1, points\[i]\[0], points\[i+1]\[0], ch, eq)\n\t\tresult += '0'\n\t\tif ch == 'r':\n\t\t\tgroup.node('color')\['expr0'].setValue(result)\n\t\telif ch == 'g':\n\t\t\tgroup.node('color')\['expr1'].setValue(result)\n\t\telif ch == 'b':\n\t\t\tgroup.node('color')\['expr2'].setValue(result)\n\t\telif ch == 'a':\n\t\t group.node('color')\['expr3'].setValue(result)\n\nif nuke.thisKnob().name()=='p0' or nuke.thisKnob().name()=='p1' or nuke.thisKnob().name().endswith('_percent'):\n\tpositionCallback(nuke.thisGroup())\n\t\nif nuke.thisKnob().name().replace('r','').isdigit():\n\tcolorCallback(nuke.thisNode(), nuke.thisKnob())\n\tdrawRamp(nuke.thisNode())\n\t\nif(nuke.thisKnob().name().endswith('interpolation')) or nuke.thisKnob().name().endswith('percent') or nuke.thisKnob().name().endswith('enabled'):\n\tdrawRamp(nuke.thisNode())\nif nuke.thisKnob().name() == 'displace':\n\tif nuke.thisKnob().value() == 'noise':\n\t\tnuke.thisNode()\['frequency'].clearFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\['uwaves'].setFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\['vwaves'].setFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\['vwaves'].setLabel('u waves')\n\telif nuke.thisKnob().value() == 'wave':\n\t\tnuke.thisNode()\['uwaves'].clearFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\['vwaves'].clearFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\['frequency'].setFlag(nuke.INVISIBLE)\n\telif nuke.thisKnob().value() == 'radial wave' or nuke.thisKnob().value() == 'circular wave':\n\t\tnuke.thisNode()\['uwaves'].clearFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\['vwaves'].setFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\['frequency'].setFlag(nuke.INVISIBLE)\n\t\tnuke.thisNode()\['vwaves'].setLabel('waves')" addUserKnob {20 ramp l Ramp} addUserKnob {4 rtype l type t "ramp type" M {uRamp vRamp symmetrical square circular radial "" "" "" "" "" ""}} addUserKnob {14 scale t "Scales the ramp result regardless of the markers position. Could be useful when wanting to adjust the height of the uRamp to extend beyond the bounding box" R 0 100} scale 1 addUserKnob {7 offset t "Moves the ramp in u direction, with the wrap around effect. Can be used to animate wave displacement for example."} addUserKnob {41 columns l repeat t "makes the ramp tile in u direction" T Tile1.columns} addUserKnob {41 mirrorCols l mirror t "mirrors the repeated ramp" -STARTLINE T Tile1.mirrorCols} addUserKnob {6 mask t "Masks the bounding box, meaning it will not affect the displacement effects for example." -STARTLINE} addUserKnob {6 blackoutside l "black outside" t "Clips the ramp area to the bounding box, it will affect the displacement." -STARTLINE} addUserKnob {4 displace t "Gives a few displacement types for the ramp.\n• noise creates a random noise \n• wave creates waves in x and y space of the format, not the u and v space \n• radial wave creates radial waves, extending from the first ramp position. \n• circular wave these waves have a ripple like effect, starting from the first ramp position." M {noise wave "radial wave" "circular wave" "" "" "" ""}} addUserKnob {6 displace_relative l "relative scale" t "scales the noise with the ramp" -STARTLINE} displace_relative true addUserKnob {41 uv_scale l magnitude T IDistort1.uv_scale} addUserKnob {7 frequency t "noise frequency" R 0 100} frequency 10 addUserKnob {7 uwaves l INVISIBLE t "number of waves in u direction" +INVISIBLE R 0 10} uwaves 10 addUserKnob {7 vwaves l INVISIBLE t "number of waves in v direction" -STARTLINE +INVISIBLE R 0 10} addUserKnob {41 filter T Remap.filter} addUserKnob {4 output t "Choose between ouputing the ramp on top of the input or a remapped input image. Remapping takes into account the postion of the ramp, so make sure it extends from 0 to 100 percent of the format width for best results." M {ramp remapped ""}} addUserKnob {41 format l "output format" T OutputFormat.format} addUserKnob {26 ""} addUserKnob {6 relative l "relative positioning" t "Scales the position of the ramps when moving the first and the last ramp" -STARTLINE} relative true addUserKnob {19 p0_color l p0} p0_color {0 0 0 1} addUserKnob {6 p0_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 p0_interpolation l "" -STARTLINE M {linear quadratic cubic none none2 ""}} addUserKnob {22 p0_toggle l "
" -STARTLINE T toggleRampCtrl('p0')} addUserKnob {22 p0_add l "
+
" -STARTLINE T "addRamp(nuke.thisNode(), 0)"} addUserKnob {22 p0_rem l "
-
" -STARTLINE +DISABLED} addUserKnob {22 p0_down l "
" -STARTLINE T "swapRamps(nuke.thisNode(), 0, 0)"} addUserKnob {22 p0_up l "
" -STARTLINE +DISABLED} addUserKnob {6 p0_enabled l "" -STARTLINE} p0_enabled true addUserKnob {12 p0 l position} p0 {0 240} addUserKnob {7 p0_percent l percent -STARTLINE +DISABLED} addUserKnob {19 r1_color l r1 +HIDDEN +INVISIBLE} r1_color {1 1 1 0} addUserKnob {6 r1_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r1_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r1_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r1')} addUserKnob {22 r1_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 1)"} addUserKnob {22 r1_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 1)"} addUserKnob {22 r1_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 1, 0)"} addUserKnob {22 r1_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 1, 1)"} addUserKnob {6 r1_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r1 l position +INVISIBLE} r1 {168.1556468 240} addUserKnob {7 r1_percent l percent -STARTLINE +INVISIBLE} r1_percent 0.2627431981 addUserKnob {19 r2_color l r2 +HIDDEN +INVISIBLE} r2_color {0 0 0 1} addUserKnob {6 r2_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r2_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r2_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r2')} addUserKnob {22 r2_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 2)"} addUserKnob {22 r2_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 2)"} addUserKnob {22 r2_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 2, 0)"} addUserKnob {22 r2_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 2, 1)"} addUserKnob {6 r2_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r2 l position +INVISIBLE} r2 {3065.186809 240} addUserKnob {7 r2_percent l percent -STARTLINE +INVISIBLE} r2_percent 4.789354389 addUserKnob {19 r3_color l r3 +HIDDEN +INVISIBLE} r3_color {0 0 0 1} addUserKnob {6 r3_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r3_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r3_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r3')} addUserKnob {22 r3_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 3)"} addUserKnob {22 r3_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 3)"} addUserKnob {22 r3_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 3, 0)"} addUserKnob {22 r3_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 3, 1)"} addUserKnob {6 r3_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r3 l position +INVISIBLE} r3 {2412.438838 240} addUserKnob {7 r3_percent l percent -STARTLINE +INVISIBLE} r3_percent 3.769435684 addUserKnob {19 r4_color l r4 +HIDDEN +INVISIBLE} r4_color {0 0 0 1} addUserKnob {6 r4_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r4_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r4_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r4')} addUserKnob {22 r4_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 4)"} addUserKnob {22 r4_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 4)"} addUserKnob {22 r4_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 4, 0)"} addUserKnob {22 r4_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 4, 1)"} addUserKnob {6 r4_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r4 l position +INVISIBLE} r4 {2412.438838 240} addUserKnob {7 r4_percent l percent -STARTLINE +INVISIBLE} r4_percent 3.769435684 addUserKnob {19 r5_color l r5 +HIDDEN +INVISIBLE} r5_color {0 0 0 1} addUserKnob {6 r5_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r5_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r5_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r5')} addUserKnob {22 r5_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 5)"} addUserKnob {22 r5_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 5)"} addUserKnob {22 r5_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 5, 0)"} addUserKnob {22 r5_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 5, 1)"} addUserKnob {6 r5_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r5 l position +INVISIBLE} r5 {3065.186809 240} addUserKnob {7 r5_percent l percent -STARTLINE +INVISIBLE} r5_percent 4.789354389 addUserKnob {19 r6_color l r6 +HIDDEN +INVISIBLE} r6_color {0 0 0 1} addUserKnob {6 r6_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r6_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r6_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r6')} addUserKnob {22 r6_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 6)"} addUserKnob {22 r6_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 6)"} addUserKnob {22 r6_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 6, 0)"} addUserKnob {22 r6_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 6, 1)"} addUserKnob {6 r6_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r6 l position +INVISIBLE} r6 {3065.186809 240} addUserKnob {7 r6_percent l percent -STARTLINE +INVISIBLE} r6_percent 4.789354389 addUserKnob {19 r7_color l r7 +HIDDEN +INVISIBLE} r7_color {0 0 0 1} addUserKnob {6 r7_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r7_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r7_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r7')} addUserKnob {22 r7_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 7)"} addUserKnob {22 r7_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 7)"} addUserKnob {22 r7_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 7, 0)"} addUserKnob {22 r7_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 7, 1)"} addUserKnob {6 r7_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r7 l position +INVISIBLE} r7 {3065.186809 240} addUserKnob {7 r7_percent l percent -STARTLINE +INVISIBLE} r7_percent 4.789354389 addUserKnob {19 r8_color l r8 +HIDDEN +INVISIBLE} r8_color {0 0 0 1} addUserKnob {6 r8_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r8_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r8_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r8')} addUserKnob {22 r8_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 8)"} addUserKnob {22 r8_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 8)"} addUserKnob {22 r8_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 8, 0)"} addUserKnob {22 r8_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 8, 1)"} addUserKnob {6 r8_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r8 l position +INVISIBLE} r8 {3065.186809 240} addUserKnob {7 r8_percent l percent -STARTLINE +INVISIBLE} r8_percent 4.789354389 addUserKnob {19 r9_color l r9 +HIDDEN +INVISIBLE} r9_color {0 0 0 1} addUserKnob {6 r9_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r9_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r9_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r9')} addUserKnob {22 r9_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 9)"} addUserKnob {22 r9_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 9)"} addUserKnob {22 r9_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 9, 0)"} addUserKnob {22 r9_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 9, 1)"} addUserKnob {6 r9_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r9 l position +INVISIBLE} r9 {3065.186809 240} addUserKnob {7 r9_percent l percent -STARTLINE +INVISIBLE} r9_percent 4.789354389 addUserKnob {19 r10_color l r10 +HIDDEN +INVISIBLE} r10_color {0 0 0 1} addUserKnob {6 r10_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r10_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r10_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r10')} addUserKnob {22 r10_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 10)"} addUserKnob {22 r10_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 10)"} addUserKnob {22 r10_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 10, 0)"} addUserKnob {22 r10_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 10, 1)"} addUserKnob {6 r10_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r10 l position +INVISIBLE} r10 {3065.186809 240} addUserKnob {7 r10_percent l percent -STARTLINE +INVISIBLE} r10_percent 4.789354389 addUserKnob {19 r11_color l r11 +HIDDEN +INVISIBLE} r11_color {0 0 0 1} addUserKnob {6 r11_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r11_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r11_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r11')} addUserKnob {22 r11_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 11)"} addUserKnob {22 r11_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 11)"} addUserKnob {22 r11_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 11, 0)"} addUserKnob {22 r11_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 11, 1)"} addUserKnob {6 r11_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r11 l position +INVISIBLE} r11 {3065.186809 240} addUserKnob {7 r11_percent l percent -STARTLINE +INVISIBLE} r11_percent 4.789354389 addUserKnob {19 r12_color l r12 +HIDDEN +INVISIBLE} r12_color {0 0 0 1} addUserKnob {6 r12_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r12_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r12_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r12')} addUserKnob {22 r12_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 12)"} addUserKnob {22 r12_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 12)"} addUserKnob {22 r12_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 12, 0)"} addUserKnob {22 r12_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 12, 1)"} addUserKnob {6 r12_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r12 l position +INVISIBLE} r12 {3065.186809 240} addUserKnob {7 r12_percent l percent -STARTLINE +INVISIBLE} r12_percent 4.789354389 addUserKnob {19 r13_color l r13 +HIDDEN +INVISIBLE} r13_color {0 0 0 1} addUserKnob {6 r13_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r13_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r13_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r13')} addUserKnob {22 r13_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 13)"} addUserKnob {22 r13_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 13)"} addUserKnob {22 r13_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 13, 0)"} addUserKnob {22 r13_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 13, 1)"} addUserKnob {6 r13_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r13 l position +INVISIBLE} r13 {3065.186809 240} addUserKnob {7 r13_percent l percent -STARTLINE +INVISIBLE} r13_percent 4.789354389 addUserKnob {19 r14_color l r14 +HIDDEN +INVISIBLE} r14_color {0 0 0 1} addUserKnob {6 r14_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r14_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r14_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r14')} addUserKnob {22 r14_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 14)"} addUserKnob {22 r14_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 14)"} addUserKnob {22 r14_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 14, 0)"} addUserKnob {22 r14_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 14, 1)"} addUserKnob {6 r14_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r14 l position +INVISIBLE} r14 {3065.186809 240} addUserKnob {7 r14_percent l percent -STARTLINE +INVISIBLE} r14_percent 4.789354389 addUserKnob {19 r15_color l r15 +HIDDEN +INVISIBLE} r15_color {0 0 0 1} addUserKnob {6 r15_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r15_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r15_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r15')} addUserKnob {22 r15_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 15)"} addUserKnob {22 r15_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 15)"} addUserKnob {22 r15_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 15, 0)"} addUserKnob {22 r15_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 15, 1)"} addUserKnob {6 r15_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r15 l position +INVISIBLE} r15 {3065.186809 240} addUserKnob {7 r15_percent l percent -STARTLINE +INVISIBLE} r15_percent 4.789354389 addUserKnob {19 r16_color l r16 +HIDDEN +INVISIBLE} r16_color {0 0 0 1} addUserKnob {6 r16_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r16_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r16_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r16')} addUserKnob {22 r16_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 16)"} addUserKnob {22 r16_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 16)"} addUserKnob {22 r16_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 16, 0)"} addUserKnob {22 r16_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 16, 1)"} addUserKnob {6 r16_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r16 l position +INVISIBLE} r16 {3065.186809 240} addUserKnob {7 r16_percent l percent -STARTLINE +INVISIBLE} r16_percent 4.789354389 addUserKnob {19 r17_color l r17 +HIDDEN +INVISIBLE} r17_color {0 0 0 1} addUserKnob {6 r17_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r17_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r17_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r17')} addUserKnob {22 r17_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 17)"} addUserKnob {22 r17_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 17)"} addUserKnob {22 r17_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 17, 0)"} addUserKnob {22 r17_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 17, 1)"} addUserKnob {6 r17_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r17 l position +INVISIBLE} r17 {3065.186809 240} addUserKnob {7 r17_percent l percent -STARTLINE +INVISIBLE} r17_percent 4.789354389 addUserKnob {19 r18_color l r18 +HIDDEN +INVISIBLE} r18_color {0 0 0 1} addUserKnob {6 r18_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 r18_interpolation l "" -STARTLINE +INVISIBLE M {linear quadratic cubic none none2 ""}} addUserKnob {22 r18_toggle l "
" -STARTLINE +INVISIBLE T toggleRampCtrl('r18')} addUserKnob {22 r18_add l "
+
" -STARTLINE +INVISIBLE T "addRamp(nuke.thisNode(), 18)"} addUserKnob {22 r18_rem l "
-
" -STARTLINE +INVISIBLE T "removeRamp(nuke.thisNode(), 18)"} addUserKnob {22 r18_down l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 18, 0)"} addUserKnob {22 r18_up l "
" -STARTLINE +INVISIBLE T "swapRamps(nuke.thisNode(), 18, 1)"} addUserKnob {6 r18_enabled l "" -STARTLINE +INVISIBLE} addUserKnob {12 r18 l position +INVISIBLE} r18 {3065.186809 240} addUserKnob {7 r18_percent l percent -STARTLINE +INVISIBLE} r18_percent 4.789354389 addUserKnob {19 p1_color l p1} p1_color {1 1 1 1} addUserKnob {6 p1_color_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {4 p1_interpolation l "" -STARTLINE M {linear quadratic cubic none none2 ""}} addUserKnob {22 p1_toggle l "
" -STARTLINE T toggleRampCtrl('p1')} addUserKnob {22 p1_add l "
+
" -STARTLINE +DISABLED} addUserKnob {22 p1_rem l "
-
" -STARTLINE +DISABLED} addUserKnob {22 p1_down l "
" -STARTLINE +DISABLED} addUserKnob {22 p1_up l "
" -STARTLINE T "swapRamps(nuke.thisNode(), 19, 1)"} addUserKnob {6 p1_enabled l "" -STARTLINE} p1_enabled true addUserKnob {12 p1 l position} p1 {640 240} addUserKnob {7 p1_percent l percent -STARTLINE +DISABLED} p1_percent 1 addUserKnob {41 rp0 l INVISIBLE +INVISIBLE T Controls.p0} addUserKnob {41 rp1 l INVISIBLE -STARTLINE +INVISIBLE T Controls.p1} addUserKnob {3 created l INVISIBLE +INVISIBLE} addUserKnob {26 author l "" +STARTLINE T "vladislavbakic.com"} } BackdropNode { inputs 0 name RampType tile_color 0x9fffff note_font_color 0xff xpos 538 ypos -714 bdwidth 380 bdheight 246 } BackdropNode { inputs 0 name Displace tile_color 0xff55d4ff xpos 537 ypos -453 bdwidth 383 bdheight 242 } BackdropNode { inputs 0 name Color tile_color 0xdfff00ff note_font_color 0xff xpos 334 ypos -715 bdwidth 153 bdheight 84 } BackdropNode { inputs 0 name Mask tile_color 0x1fff00ff xpos 534 ypos -198 bdwidth 387 bdheight 187 } BackdropNode { inputs 0 name Transformations xpos 331 ypos -490 bdwidth 163 bdheight 157 } Input { inputs 0 name Input xpos 97 ypos -827 } Dot { name Dot10 xpos 131 ypos -161 } set N6b0bfeb0 [stack 0] Dot { name Dot11 xpos 253 ypos -161 } Roto { inputs 0 output alpha cliptype bbox curves {{{v x3f99999a} {f 0} {n {layer Root {f 512} {t x447a8000 x44700000} {a} {curvegroup Ellipse1 512 bezier {{cc {f 8192} {p {xc40d46cb} {x3dcd10e4 xc47ff42c} {x440d46c7} {0 xc40d46c8} {x447fd435 xbf199800} {0 x440d46c7} {x440d46c7} {x3dcd10e4 x447fa756} {xc40d46cb} {0 x440d46c7} {xc47fc755 xbf199800} {0 xc40d46c8}}} {cc {f 8192} {p {xc40d46cb} {} {x440d46c7} {0 xc40d46c8} {} {0 x440d46c7} {x440d46c7} {} {xc40d46cb} {0 x440d46c7} {} {0 xc40d46c8}}}} {t 0 0 {{x41d00000 0}} {=Controls.p0.x {{0 0}}} {=Controls.p0.y {{0 0}}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {"=sqrt((Controls.p1.x-Controls.p0.x)*(Controls.p1.x-Controls.p0.x)\ +\ (Controls.p1.y-Controls.p0.y)*(Controls.p1.y-Controls.p0.y))/1024" {{0 1}}} {"=sqrt((Controls.p1.x-Controls.p0.x)*(Controls.p1.x-Controls.p0.x)\ +\ (Controls.p1.y-Controls.p0.y)*(Controls.p1.y-Controls.p0.y))/1024" {{0 1}}} {{x41d00000 1}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 1}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 1}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 1}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 1}}} {a str 1 spx x44800000 spy x44428000 sb 1 ltn x41d00000 ltm x41d00000 tt x41000000}}}}}} toolbox {selectAll { { selectAll str 1 ssx 1 ssy 1 sf 1 } { selectCurves str 1 ssx 1 ssy 1 sf 1 } { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 } { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 } { 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 tt 8 } { 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_source_transform_scale {1 1} toolbar_source_transform_center {1024 778} colorOverlay {0 0 0 0} lifetime_type "all frames" lifetime_start 26 lifetime_end 26 motionblur_shutter_offset_type centred source_black_outside true createNewTrack {{-1} "-1\t(none)\t-1" "1000\tNew Track Layer\t1000"} name Circle xpos 742 ypos -161 } Roto { inputs 0 output alpha cliptype bbox curves {{{v x3f99999a} {f 0} {n {layer Root {f 512} {t x447a8000 x44700000} {a} {curvegroup Square 512 bezier {{cc {f 8192} {px x41d00000 {0 0} {x3dcd10e4 xc47ff42c} {0 0} {0 0} {x447fd435 xbf199800} {0 0} {0 0} {x3dcd10e4 x447fa756} {0 0} {0 0} {xc47fc755 xbf199800} {0 0}}} idem} {t 0 0 {{x41d00000 0}} {=Controls.p0.x {{0 0}}} {=Controls.p0.y 0} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {=Rotation.rotate x41a00000} {"=sqrt((Controls.p1.x-Controls.p0.x)*(Controls.p1.x-Controls.p0.x)\ +\ (Controls.p1.y-Controls.p0.y)*(Controls.p1.y-Controls.p0.y))/1024" {{0 1}}} {"=sqrt((Controls.p1.x-Controls.p0.x)*(Controls.p1.x-Controls.p0.x)\ +\ (Controls.p1.y-Controls.p0.y)*(Controls.p1.y-Controls.p0.y))/1024" {{0 1}}} {{x41d00000 1}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 1}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 1}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 1}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 0}} {{x41d00000 1}}} {a str 1 spx x44800000 spy x44428000 sb 1 ltn x41d00000 ltm x41d00000 tt x41000000}}}}}} toolbox {selectAll { { selectAll str 1 ssx 1 ssy 1 sf 1 } { selectCurves str 1 ssx 1 ssy 1 sf 1 } { selectPoints str 1 ssx 1 ssy 1 sf 1 } { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 } { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 } { 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 tt 8 } { createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 } { createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 } { cuspPoints str 1 ssx 1 ssy 1 sf 1 } { curvePoints str 1 ssx 1 ssy 1 sf 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_label_points true toolbar_show_clone_settings true toolbar_source_transform_scale {1 1} toolbar_source_transform_center {1024 778} colorOverlay {0 0 0 0} lifetime_type "all frames" lifetime_start 26 lifetime_end 26 motionblur_shutter_offset_type centred source_black_outside true createNewTrack {{-1} "-1\t(none)\t-1" "1000\tNew Track Layer\t1000"} name Diamond xpos 740 ypos -114 } Roto { inputs 0 output alpha curves {{{v x3f99999a} {f 0} {n {layer Root {f 512} {t x44800000 x44428000} {a} {curvegroup Shape1 512 bezier {{cc {f 8192} {p {} {xc4800000 xc4800000} {} {} {xc4800000 x44800000} {} {} {x44800000 x44800000} {} {} {x44800000 xc4800000} {}}} {cc {f 8192} {p {} {} {} {} {} {} {} {} {} {} {} {}}}} {t {{x41800000 0}} {{x41800000 0}} 0 {=Controls.p0.x {{x41800000 0 -}}} {=Controls.p0.y {{x41800000 0 -}}} 0 0 0 {=Rotation.rotate {{x41800000 0 -}}} {"=sqrt((Controls.p1.x-Controls.p0.x)*(Controls.p1.x-Controls.p0.x)\ +\ (Controls.p1.y-Controls.p0.y)*(Controls.p1.y-Controls.p0.y))/1024" {{x41800000 1 -}}} {"=sqrt((Controls.p1.x-Controls.p0.x)*(Controls.p1.x-Controls.p0.x)\ +\ (Controls.p1.y-Controls.p0.y)*(Controls.p1.y-Controls.p0.y))/1024" {{x41800000 1 -}}} 1 {{x41800000 0}} 0 0 0 0 0 0 {{x41800000 1}} {{x41800000 0}} {{x41800000 0}} {{x41800000 0}} {{x41800000 0}} {{x41800000 1}} {{x41800000 0}} {{x41800000 0}} {{x41800000 0}} {{x41800000 0}} {{x41800000 1}} {{x41800000 0}} {{x41800000 0}} {{x41800000 0}} {{x41800000 0}} {{x41800000 1}}} {a str 1 spx x44800000 spy x44428000 sb 1 ltn x41800000 ltm x41800000 tt x40800000 str 1 spx x44800000 spy x44428000 sb 1 ltn x41800000 ltm x41800000 tt x40800000 str 1 spx x44800000 spy x44428000 sb 1 ltn x41800000 ltm x41800000 tt x40800000 str 1 ss 0 spx x44800000 spy x44428000 sb 1 ltn x41800000 ltm x41800000 tt x40800000}}}}}} toolbox {selectAll { { selectAll str 1 ssx 1 ssy 1 sf 1 } { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 } { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 } { 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_source_transform_scale {1 1} toolbar_source_transform_center {1024 778} colorOverlay {0 0 0 0} lifetime_type "all frames" lifetime_start 16 lifetime_end 16 motionblur_shutter_offset_type centred source_black_outside true createNewTrack {{-1} "-1\t(none)\t-1" "1000\tNew Track Layer\t1000"} name Mirror xpos 739 ypos -75 } Roto { inputs 0 output alpha curves {{{v x3f99999a} {f 0} {n {layer Root {f 512} {t x44800000 x44428000} {a} {curvegroup Shape1 512 bezier {{cc {f 8192} {p {} {0 xc4000000} {} {} {0 x44000000} {} {} {x44800000 x44000000} {} {} {x44800000 xc4000000} {}}} {cc {f 8192} {p {} {} {} {} {} {} {} {} {} {} {} {}}}} {t 0 0 0 {=Controls.p0.x {{x40800000 0 -}}} {=Controls.p0.y {{x40800000 0 -}}} 0 0 0 {=Rotation.rotate {{x40800000 0 -}}} {"=sqrt((Controls.p1.x-Controls.p0.x)*(Controls.p1.x-Controls.p0.x)\ +\ (Controls.p1.y-Controls.p0.y)*(Controls.p1.y-Controls.p0.y))/1024" {{x40800000 1 -}}} {"=sqrt((Controls.p1.x-Controls.p0.x)*(Controls.p1.x-Controls.p0.x)\ +\ (Controls.p1.y-Controls.p0.y)*(Controls.p1.y-Controls.p0.y))/1024" {{x40800000 1 -}}} 1 {{x40800000 0}} 0 0 0 0 0 0 {{x40800000 1}} {{x40800000 0}} {{x40800000 0}} {{x40800000 0}} {{x40800000 0}} {{x40800000 1}} {{x40800000 0}} {{x40800000 0}} {{x40800000 0}} {{x40800000 0}} {{x40800000 1}} {{x40800000 0}} {{x40800000 0}} {{x40800000 0}} {{x40800000 0}} {{x40800000 1}}} {a str 1 spx x44800000 spy x44428000 sb 1 ltn x40800000 ltm x40800000 tt x40800000 str 1 spx x44800000 spy x44428000 sb 1 ltn x40800000 ltm x40800000 tt x40800000 str 1 spx x44800000 spy x44428000 sb 1 ltn x40800000 ltm x40800000 tt x40800000 str 1 ss 0 spx x44800000 spy x44428000 sb 1 ltn x40800000 ltm x40800000 tt x40800000}}}}}} toolbox {selectAll { { selectAll str 1 ssx 1 ssy 1 sf 1 } { createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 } { createOpenSpline str 1 ssx 1 ssy 1 sf 1 sb 1 } { 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_source_transform_scale {1 1} toolbar_source_transform_center {1024 778} colorOverlay {0 0 0 0} lifetime_type "all frames" lifetime_start 4 lifetime_end 4 motionblur_shutter_offset_type centred source_black_outside true createNewTrack {{-1} "-1\t(none)\t-1" "1000\tNew Track Layer\t1000"} name Square xpos 740 ypos -39 } set N6b2e4530 [stack 0] push $N6b2e4530 Switch { inputs 5 which {{parent.rtype}} name Switch1 xpos 574 ypos -108 } Dot { name Dot6 xpos 479 ypos -105 } set N6b2e48a0 [stack 0] push $N6b2e48a0 Reformat { inputs 0 type "to box" box_width {{"sqrt(pow(Controls.p1.x-Controls.p0.x,2)+ pow(Controls.p1.y-Controls.p0.y,2))*2 > 0.99 ? sqrt(pow(Controls.p1.x-Controls.p0.x,2)+ pow(Controls.p1.y-Controls.p0.y,2))*2 : 1"}} box_height {{"sqrt(pow(Controls.p1.x-Controls.p0.x,2)+ pow(Controls.p1.y-Controls.p0.y,2))*2 > 0.99 ? sqrt(pow(Controls.p1.x-Controls.p0.x,2)+ pow(Controls.p1.y-Controls.p0.y,2))*2 : 1"}} box_fixed true name RampFormat xpos 367 ypos -781 } set N6b2e4c10 [stack 0] Dot { name Dot15 xpos 859 ypos -778 } Dot { name Dot5 xpos 859 ypos -677 } set N6b2e52f0 [stack 0] Dot { name Dot13 xpos 859 ypos -641 } set N6b2e5660 [stack 0] Dot { name Dot4 xpos 859 ypos -610 } set N6b2e59d0 [stack 0] Dot { name Dot3 xpos 859 ypos -569 } set N6b2e5d40 [stack 0] Dot { name Dot2 xpos 859 ypos -529 } set N6b190920 [stack 0] Dot { name Dot1 xpos 859 ypos -490 } Expression { expr0 "atan2(((height/2)-y%height)/height, ((width/2)-x%width)/width)*(180/pi/360)+0.5" channel1 {-rgba.red -rgba.green -rgba.blue none} name radial1 xpos 738 ypos -493 } push $N6b190920 Expression { expr0 "sqrt(pow(width/2.0-x%width, 2) + pow(height/2.0-y%height, 2))/sqrt(pow(width/2, 2) + pow(height/2, 2))/0.7071067811865475" name circular xpos 738 ypos -532 } push $N6b2e5d40 Expression { expr0 "(abs((width/2)-x%width)/width*2 + abs((height/2)-y%height)/height*2)" channel1 {-rgba.red -rgba.green -rgba.blue none} name box xpos 739 ypos -572 } push $N6b2e59d0 Expression { expr0 abs(((width-0.5)/2)-x%width)/width*2 channel1 {-rgba.red -rgba.green -rgba.blue none} name symmetrical xpos 740 ypos -613 } push $N6b2e5660 Expression { temp_name0 t temp_expr0 x/(width/2) temp_name1 li temp_expr1 (x/width) temp_name2 q temp_expr2 "t < 1 ? (1/2*t*t)+0 : (-1/2 * ((t-1)*((t-1)-2) -1))+0" temp_name3 c temp_expr3 "t < 1 ? 1/2*t*t*t+0 : 1/2*((t-2)*(t-2)*(t-2)+2)+0" expr0 y/height expr1 q expr2 c name v xpos 738 ypos -644 } Transform { translate {{RampFormat.width/2} {RampFormat.width/4}} scale 0.5 black_outside false name Transform1 xpos 639 ypos -644 } push $N6b2e52f0 Expression { temp_name0 t temp_expr0 x/(width/2) temp_name1 li temp_expr1 (x/width) temp_name2 q temp_expr2 "t < 1 ? (1/2*t*t)+0 : (-1/2 * ((t-1)*((t-1)-2) -1))+0" temp_name3 c temp_expr3 "t < 1 ? 1/2*t*t*t+0 : 1/2*((t-2)*(t-2)*(t-2)+2)+0" expr0 x/width name u xpos 738 ypos -680 } Transform { translate {{RampFormat.width/2} {RampFormat.width/4}} scale 0.5 black_outside false name Transform2 xpos 640 ypos -680 } Switch { inputs 6 which {{parent.rtype}} name TypeChooser xpos 559 ypos -600 } push $N6b2e4c10 Expression { temp_name0 wave temp_expr0 (sin(y/50)/2+0.5)*200 expr0 "x >= (p0_percent*width) && x< (p1_percent*width) ? (1-((x-(p0_percent*width))/((p1_percent*width)-(p0_percent*width))))*p0_color.r + ((x-(p0_percent*width))/((p1_percent*width)-(p0_percent*width)))*parent.p1_color.r : 0" expr1 "x >= (p0_percent*width) && x< (p1_percent*width) ? (1-((x-(p0_percent*width))/((p1_percent*width)-(p0_percent*width))))*p0_color.g + ((x-(p0_percent*width))/((p1_percent*width)-(p0_percent*width)))*parent.p1_color.g : 0" expr2 "x >= (p0_percent*width) && x< (p1_percent*width) ? (1-((x-(p0_percent*width))/((p1_percent*width)-(p0_percent*width))))*p0_color.b + ((x-(p0_percent*width))/((p1_percent*width)-(p0_percent*width)))*parent.p1_color.b : 0" expr3 "x >= (p0_percent*width) && x< (p1_percent*width) ? (1-((x-(p0_percent*width))/((p1_percent*width)-(p0_percent*width))))*p0_color.a + ((x-(p0_percent*width))/((p1_percent*width)-(p0_percent*width)))*parent.p1_color.a : 0" name color xpos 367 ypos -679 } Crop { box {0 0 {RampFormat.width} {RampFormat.height}} crop false name Crop1 xpos 188 ypos -679 } Reformat { type "to box" box_width {{input.width*2}} box_height {{input.height}} box_fixed true name Reformat1 xpos -105 ypos -679 } Tile { rows 0 columns 2 name Tile2 xpos -105 ypos -648 } Transform { translate {{parent.offset%1*width/2} 0} center {4096 2048} name Transform3 xpos -105 ypos -624 } Crop { box {{RampFormat.width} 0 {RampFormat.width*2} {RampFormat.height}} reformat true crop false name Crop2 xpos -105 ypos -600 } Tile { rows {{columns}} filter Impulse name Tile1 xpos 189 ypos -600 } STMap { inputs 2 channels rgba uv {rgba.red -rgba.green} blur_scale 0 name Remap xpos 369 ypos -600 } Transform { translate {{-RampFormat.width/2} {-RampFormat.height/2}} black_outside false name Position xpos 369 ypos -454 } Transform { translate {{Controls.p0.x} {Controls.p0.y}} rotate {{atan2(Controls.p1.y-Controls.p0.y,Controls.p1.x-Controls.p0.x)*(180/pi)}} scale {{parent.scale} {parent.scale}} black_outside {{parent.blackoutside}} name Rotation xpos 369 ypos -418 } Reformat { resize none center false filter {{Remap.filter}} name OutputFormat xpos 369 ypos -381 } Dot { name Dot8 xpos 403 ypos -295 } Merge2 { inputs 2 operation mask name Merge4 xpos 445 ypos -298 disable {{!parent.blackoutside}} } Reformat { inputs 0 format {{{OutputFormat.format}}} resize none center false filter {{Remap.filter}} name OutputFormat1 xpos 822 ypos -422 } Dot { name Dot7 xpos 856 ypos -377 } set N6b4e54b0 [stack 0] Dot { name Dot16 xpos 856 ypos -347 } set N6b4e5820 [stack 0] Expression { temp_name0 aspectx temp_expr0 "displace_relative ? (width/RampFormat.width) : 1" temp_name1 aspecty temp_expr1 "displace_relative ? (height/RampFormat.height) : 1" temp_name2 div temp_expr2 (162.776/parent.uwaves) expr0 "sin(hypot(x-Controls.p0.x, y-Controls.p0.y ) / div*aspectx)" expr1 "sin(hypot(x-Controls.p0.x, y-Controls.p0.y ) / div*aspectx)" name circularWave1 selected true xpos 741 ypos -350 } push $N6b4e5820 Dot { name Dot14 xpos 856 ypos -312 } set N6b55f1c0 [stack 0] Expression { expr0 "sin( (atan(x - Controls.p0.x, y - Controls.p0.y)) *(parent.uwaves-1))" expr1 "sin( (atan(x - Controls.p0.x, y - Controls.p0.y)+(175/(parent.uwaves-1)*2)) *(parent.uwaves-1))" name radialWave xpos 739 ypos -315 } push $N6b4e54b0 Expression { temp_name0 aspectx temp_expr0 "displace_relative ? (width/RampFormat.width) : 1" temp_name1 aspecty temp_expr1 "displace_relative ? (height/RampFormat.height) : 1" expr0 sin((y/height)*parent.uwaves*aspecty*pi)/aspecty expr1 sin((x/width)*parent.vwaves*aspectx*pi)/aspectx name uvWave xpos 741 ypos -380 } push $N6b55f1c0 Dot { name Dot9 xpos 856 ypos -279 } Expression { temp_name0 aspectx temp_expr0 "displace_relative ? (width/RampFormat.width) : 1" temp_name1 aspecty temp_expr1 "displace_relative ? (height/RampFormat.height) : 1" expr0 "noise(x/width*aspectx*frequency,y/height*aspecty*frequency, 10)" expr1 "noise(x/width*aspectx*frequency,y/height*aspecty*frequency, 20)" name uvNoise xpos 741 ypos -282 } Switch { inputs 4 which {{parent.displace}} name Switch2 xpos 574 ypos -335 } ShuffleCopy { inputs 2 red red green green blue blue out2 forward name ShuffleCopy4 xpos 574 ypos -298 } IDistort { channels rgba uv forward uv_scale 0 blur_scale 0 name IDistort1 knobChanged "if nuke.thisKnob().name() == 'uv_scale':\n\tif nuke.thisKnob().value() == 0:\n\t\tnuke.thisNode()\['disable'].setValue(True)\n\telse:\n\t\tnuke.thisNode()\['disable'].setValue(False)" xpos 574 ypos -255 } Dot { name Dot17 xpos 403 ypos -252 } Merge2 { inputs 2 operation mask name Merge2 xpos 369 ypos -108 disable {{!parent.mask}} } set N6b560d40 [stack 0] Dot { name Dot12 xpos 403 ypos -37 } STMap { inputs 2 channels rgba uv rgba blur_scale 0 filter {{Remap.filter}} name Remap1 xpos 219 ypos -40 } push $N6b0bfeb0 push $N6b560d40 Merge2 { inputs 2 metainput A Bchannels {-rgba.red -rgba.green -rgba.blue rgba.alpha} maskChannelInput rgba.alpha invert_mask true name Merge3 xpos 97 ypos -114 } Switch { inputs 2 which {{parent.output}} name Switch3 xpos 97 ypos -40 } Output { name Output1 xpos 97 ypos 11 } Ramp { inputs 0 p0 {0 240} p1 {640 240} name Controls xpos 367 ypos -829 disable true } end_group