Group { name GM_Repeater tile_color 0xdf7100ff selected true xpos 400 ypos -826 addUserKnob {20 User} addUserKnob {26 shape l "I N P U T"} addUserKnob {41 translate2 l translate T Trans_COPY1_proxy_2.translate2} addUserKnob {41 rotate2 l rotate T Trans_COPY1_proxy_2.rotate2} addUserKnob {41 scale2 l scale T Trans_COPY1_proxy_2.scale2} addUserKnob {41 skewX2 l skewX T Trans_COPY1_proxy_2.skewX2} addUserKnob {41 skewY2 l skewY T Trans_COPY1_proxy_2.skewY2} addUserKnob {41 skeworder2 l "skew order" T Trans_COPY1_proxy_2.skeworder2} addUserKnob {41 center2 l center T Trans_COPY1_proxy_2.center2} addUserKnob {22 set_center_2 l "Set Center" -STARTLINE T "this_width = nuke.thisGroup().width()\n\nthis_height = nuke.thisGroup().height()\n\nnewWidth = this_width/2\nnewHeight = this_height/2\n\nnuke.thisGroup().knob(\"center2\").setValue(\[newWidth, newHeight])"} addUserKnob {41 invert2 l invert T Trans_COPY1_proxy_2.invert2} addUserKnob {41 filter2 l filter T Trans_COPY1_proxy_2.filter2} addUserKnob {26 rep1 l "R E P E A T E R"} addUserKnob {41 copies l Copies T PROXY.copies} addUserKnob {41 fadeout1 l "Fade Out" T Trans_COPY1_proxy.fadeout1} addUserKnob {41 fadein1 l "Fade In" T Trans_COPY1_proxy.fadein1} addUserKnob {6 apply_on_copy1 l "Apply Transform on Input Image" +STARTLINE} apply_on_copy1 true addUserKnob {41 operation1 l Operation T Merge_Proxy.operation1} addUserKnob {41 translate1 l translate T Trans_COPY1_proxy.translate1} addUserKnob {41 rotate1 l rotate T Trans_COPY1_proxy.rotate1} addUserKnob {41 scale1 l scale T Trans_COPY1_proxy.scale1} addUserKnob {41 skewX1 l skewX T Trans_COPY1_proxy.skewX1} addUserKnob {41 skewY1 l skewY T Trans_COPY1_proxy.skewY1} addUserKnob {41 skeworder1 l skeworder T Trans_COPY1_proxy.skeworder1} addUserKnob {41 center1 l center T Trans_COPY1_proxy.center1} addUserKnob {22 set_center_center l "Set Center" -STARTLINE T "this_width = nuke.thisGroup().width()\n\nthis_height = nuke.thisGroup().height()\n\nnewWidth = this_width/2\nnewHeight = this_height/2\n\nnuke.thisGroup().knob(\"center1\").setValue(\[newWidth, newHeight])"} addUserKnob {41 invert1 l invert T Trans_COPY1_proxy.invert1} addUserKnob {41 filter1 l filter T Trans_COPY1_proxy.filter1} addUserKnob {41 motionblur1 l motionblur T Trans_COPY1_proxy.motionblur1} addUserKnob {41 shutter1 l shutter T Trans_COPY1_proxy.shutter1} addUserKnob {26 ""} addUserKnob {6 clamp l Clamp +STARTLINE} clamp true addUserKnob {6 crop l Crop +STARTLINE} crop true addUserKnob {26 ""} addUserKnob {22 tut l Tutorial T "import os\nimport sys\n\ntry:\n import subprocess\n def _run(cmd, shell, wait):\n opener = subprocess.Popen(cmd, shell=shell)\n if wait:\n opener.wait()\n return opener.pid\nexcept ImportError:\n import popen2\n def _run(cmd, shell, wait):\n opener = popen2.Popen3(cmd)\n if wait:\n opener.wait()\n return opener.pid\n\ndef _open(url, wait=0):\n if sys.platform == \"darwin\":\n cmd = \[\"open\", url]\n elif hasattr(os, \"startfile\"):\n return os.startfile(url)\n elif os.environ.has_key(\"KDE_FULL_SESSION\") or os.environ.has_key(\"KDE_MULTIHEAD\") or \\\n os.environ.has_key(\"GNOME_DESKTOP_SESSION_ID\") or os.environ.has_key(\"GNOME_KEYRING_SOCKET\"):\n cmd = \[\"xdg-open\", url]\n else:\n raise OSError, \"Desktop not supported.\"\n\n return _run(cmd, 0, wait)\n\n_open('https://www.gatimedia.co.uk/repeater')\n" +STARTLINE} addUserKnob {26 ""} addUserKnob {26 TEXT l "" +STARTLINE T "1.01 version"} addUserKnob {26 HeadlineB l "" +STARTLINE T "GM_Repeater© by Attila Gasparetz"} } BackdropNode { inputs 0 name BackdropNode1 tile_color 0xff label "
DON`T TOUCH\nstatic" note_font "Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold Bold" note_font_size 42 xpos 738 ypos 63 bdwidth 285 bdheight 305 } Input { inputs 0 name Input label static xpos 510 ypos 272 } Transform { translate {{Trans_COPY1_proxy_2.translate2} {Trans_COPY1_proxy_2.translate2}} rotate {{Trans_COPY1_proxy_2.rotate2}} scale {{Trans_COPY1_proxy_2.scale2} {Trans_COPY1_proxy_2.scale2}} skewX {{Trans_COPY1_proxy_2.skewX2}} skewY {{Trans_COPY1_proxy_2.skewY2}} skew_order {{Trans_COPY1_proxy_2.skeworder2}} center {{Trans_COPY1_proxy_2.center2} {Trans_COPY1_proxy_2.center2}} invert_matrix {{Trans_COPY1_proxy_2.invert2}} filter {{Trans_COPY1_proxy_2.filter2}} shutteroffset centred name Trans_COPY2 label static xpos 510 ypos 464 } set N1319d180 [stack 0] push $N1319d180 Transform { translate {{Trans_COPY1_proxy.translate1} {Trans_COPY1_proxy.translate1}} rotate {{Trans_COPY1_proxy.rotate1}} scale {{Trans_COPY1_proxy.scale1} {Trans_COPY1_proxy.scale1}} skewX {{Trans_COPY1_proxy.skewX1}} skewY {{Trans_COPY1_proxy.skewY1}} skew_order {{Trans_COPY1_proxy.skeworder1}} center {{Trans_COPY1_proxy.center1.x} {Trans_COPY1_proxy.center1.y}} invert_matrix {{Trans_COPY1_proxy.invert1}} filter {{Trans_COPY1_proxy.filter1}} motionblur {{Trans_COPY1_proxy.motionblur1}} shutter {{Trans_COPY1_proxy.shutter1}} shutteroffset centred name Trans_COPY1 label static xpos 400 ypos 632 } Switch { inputs 2 which {{!apply_on_copy1}} name Switch1 label static xpos 510 ypos 632 } set N1319ca80 [stack 0] Dot { name Dot1 } Transform { translate {{Trans_COPY1.translate} {Trans_COPY1.translate}} rotate {{Trans_COPY1.rotate}} scale {{Trans_COPY1.scale.w} {Trans_COPY1.scale.h}} skewX {{Trans_COPY1.skewX}} skewY {{Trans_COPY1.skewY}} skew_order {{Trans_COPY1.skew_order}} center {{Trans_COPY1.center} {Trans_COPY1.center}} invert_matrix {{Trans_COPY1.invert_matrix}} filter {{Trans_COPY1.filter}} motionblur {{Trans_COPY1.motionblur}} shutter {{Trans_COPY1.shutter}} shutteroffset centred name t0 } set N6122b180 [stack 0] Transform { translate {{Trans_COPY1.translate} {Trans_COPY1.translate}} rotate {{Trans_COPY1.rotate}} scale {{Trans_COPY1.scale.w} {Trans_COPY1.scale.h}} skewX {{Trans_COPY1.skewX}} skewY {{Trans_COPY1.skewY}} skew_order {{Trans_COPY1.skew_order}} center {{Trans_COPY1.center} {Trans_COPY1.center}} invert_matrix {{Trans_COPY1.invert_matrix}} filter {{Trans_COPY1.filter}} motionblur {{Trans_COPY1.motionblur}} shutter {{Trans_COPY1.shutter}} shutteroffset centred name t1 } set N6122a380 [stack 0] Transform { translate {{Trans_COPY1.translate} {Trans_COPY1.translate}} rotate {{Trans_COPY1.rotate}} scale {{Trans_COPY1.scale.w} {Trans_COPY1.scale.h}} skewX {{Trans_COPY1.skewX}} skewY {{Trans_COPY1.skewY}} skew_order {{Trans_COPY1.skew_order}} center {{Trans_COPY1.center} {Trans_COPY1.center}} invert_matrix {{Trans_COPY1.invert_matrix}} filter {{Trans_COPY1.filter}} motionblur {{Trans_COPY1.motionblur}} shutter {{Trans_COPY1.shutter}} shutteroffset centred name t2 } set N8fd57500 [stack 0] Transform { translate {{Trans_COPY1.translate} {Trans_COPY1.translate}} rotate {{Trans_COPY1.rotate}} scale {{Trans_COPY1.scale.w} {Trans_COPY1.scale.h}} skewX {{Trans_COPY1.skewX}} skewY {{Trans_COPY1.skewY}} skew_order {{Trans_COPY1.skew_order}} center {{Trans_COPY1.center} {Trans_COPY1.center}} invert_matrix {{Trans_COPY1.invert_matrix}} filter {{Trans_COPY1.filter}} motionblur {{Trans_COPY1.motionblur}} shutter {{Trans_COPY1.shutter}} shutteroffset centred name t3 } Multiply { value {{"((1/(ReMax-1))*(ReMax-ReNum)) + ( ( 1- ((1/(ReMax-1))*(ReMax-ReNum)) ) * Trans_COPY1_proxy.fadeout )"}} name mu1_3 addUserKnob {20 User} addUserKnob {3 ReMax} ReMax 5 addUserKnob {3 ReNum} ReNum 4 } Multiply { value {{"((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) + ( ( 1- ((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) ) * Trans_COPY1_proxy.fadein )"}} name mu1t2_5 addUserKnob {20 User} addUserKnob {3 ReMax} ReMax 5 addUserKnob {3 ReNum} ReNum 4 } push $N8fd57500 Multiply { value {{"((1/(ReMax-1))*(ReMax-ReNum)) + ( ( 1- ((1/(ReMax-1))*(ReMax-ReNum)) ) * Trans_COPY1_proxy.fadeout )"}} name mu1_2 addUserKnob {20 User} addUserKnob {3 ReMax} ReMax 5 addUserKnob {3 ReNum} ReNum 3 } Multiply { value {{"((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) + ( ( 1- ((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) ) * Trans_COPY1_proxy.fadein )"}} name mu1t2_4 addUserKnob {20 User} addUserKnob {3 ReMax} ReMax 5 addUserKnob {3 ReNum} ReNum 3 } push $N6122a380 Multiply { value {{"((1/(ReMax-1))*(ReMax-ReNum)) + ( ( 1- ((1/(ReMax-1))*(ReMax-ReNum)) ) * Trans_COPY1_proxy.fadeout )"}} name mu1_1 addUserKnob {20 User} addUserKnob {3 ReMax} ReMax 5 addUserKnob {3 ReNum} ReNum 2 } Multiply { value {{"((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) + ( ( 1- ((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) ) * Trans_COPY1_proxy.fadein )"}} name mu1t2_3 addUserKnob {20 User} addUserKnob {3 ReMax} ReMax 5 addUserKnob {3 ReNum} ReNum 2 } push $N6122b180 Multiply { value {{"((1/(ReMax-1))*(ReMax-ReNum)) + ( ( 1- ((1/(ReMax-1))*(ReMax-ReNum)) ) * Trans_COPY1_proxy.fadeout )"}} name mu1_0 addUserKnob {20 User} addUserKnob {3 ReMax} ReMax 5 addUserKnob {3 ReNum} ReNum 1 } Multiply { value {{"((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) + ( ( 1- ((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) ) * Trans_COPY1_proxy.fadein )"}} name mu1t2_2 addUserKnob {20 User} addUserKnob {3 ReMax} ReMax 5 addUserKnob {3 ReNum} ReNum 1 } push $N1319ca80 Multiply { value {{"((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) + ( ( 1- ((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) ) * Trans_COPY1_proxy.fadein )"}} name mu1t2_1 label static xpos 695 ypos 577 addUserKnob {20 User} addUserKnob {3 ReMax} ReMax 5 addUserKnob {3 ReNum} ReNum 1 } Merge2 { inputs 2 operation {{Merge_Proxy.operation1}} also_merge all name m0 } Merge2 { inputs 2 operation {{Merge_Proxy.operation1}} also_merge all name m1 } Merge2 { inputs 2 operation {{Merge_Proxy.operation1}} also_merge all name m2 } Merge2 { inputs 2 operation {{Merge_Proxy.operation1}} also_merge all name m3 } NoOp { name COPIES1_end label static xpos 510 ypos 1832 } Clamp { name Clamp label static xpos 510 ypos 1921 disable {{!parent.clamp}} } Crop { box {{input.format.x} {input.format.y} {input.format.r} {input.format.t}} name Crop1 label "Box: \[value box]\nstatic" xpos 510 ypos 2017 disable {{!parent.crop}} } Output { name Output1 label static xpos 510 ypos 2096 } NoOp { inputs 0 name Trans_COPY1_proxy_2 label static xpos 290 ypos 464 addUserKnob {20 User} addUserKnob {12 translate2} addUserKnob {7 rotate2 R -180 180} addUserKnob {14 scale2 R 0 100} scale2 1 addUserKnob {7 skewX2 R -1 1} addUserKnob {7 skewY2 R -1 1} addUserKnob {4 skeworder2 M {XY YX ""}} addUserKnob {12 center2} center2 {960 540} addUserKnob {6 invert2 +STARTLINE} addUserKnob {4 filter2 M {Impulse Cubic Keys Simon Rifman Mitchell Parzen Notsch Lanczos4 Lanczos6 Sinc4 ""}} filter2 Cubic } NoOp { inputs 0 name PROXY knobChanged "\nm = nuke.thisNode()\nkc = nuke.thisKnob()\nif kc.name() in \[\"copies\"]:\n for n in nuke.allNodes():\n if \"static\" not in n\['label'].getValue():\n nuke.delete(n)\n \n iRep = m.knob('copies').getValue()\n iRepeats = int(iRep)-1\n RepMax = int(iRep)\n bfirstLoop = True\n \n # Main Transform for Copy1\n w = nuke.toNode('Trans_COPY1')\n \n # Last Merge connected to this\n b = nuke.toNode('COPIES1_end')\n \n # Dot would be connected to this and allows toggle between original and modified source \n s = nuke.toNode('Switch1')\n \n nDot = nuke.nodes.Dot()\n nDot.setInput(0, s)\n\n nMult = nuke.toNode('mu1t2_1')\n \n if (iRepeats+1) >= 2: \n \n for i in range(iRepeats):\n RepNum = int(i)+1\n RepNum2 = int(i)+2\n nMult.knob('ReMax').setValue( RepMax )\n nMult.knob('value').setExpression('((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) + ( ( 1- ((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) ) * Trans_COPY1_proxy.fadein )')\n CTrans = nuke.nodes.Transform(name = \"t\" + str(i))\n CTrans.knob('translate').setExpression('Trans_COPY1.translate')\n CTrans.knob('rotate').setExpression('Trans_COPY1.rotate')\n CTrans\['scale'].setSingleValue(False)\n CTrans\['scale'].setExpression(('Trans_COPY1.scale.w'),0)\n CTrans\['scale'].setExpression(('Trans_COPY1.scale.h'),1)\n CTrans.knob('skewX').setExpression('Trans_COPY1.skewX')\n CTrans.knob('skewY').setExpression('Trans_COPY1.skewY')\n CTrans.knob('skew_order').setExpression('Trans_COPY1.skew_order')\n CTrans.knob('center').setExpression('Trans_COPY1.center')\n CTrans.knob('invert_matrix').setExpression('Trans_COPY1.invert_matrix')\n CTrans.knob('filter').setExpression('Trans_COPY1.filter')\n CTrans.knob('motionblur').setExpression('Trans_COPY1.motionblur')\n CTrans.knob('shutter').setExpression('Trans_COPY1.shutter')\n CTrans.knob('shutteroffset').setValue(0)\n CMult1 = nuke.nodes.Multiply(name = \"mu1_\" + str(i))\n k = nuke.Int_Knob('ReMax', 'ReMax' )\n k2 = nuke.Int_Knob('ReNum', 'ReNum' )\n CMult1.addKnob(k)\n CMult1.addKnob(k2)\n CMult1.knob('ReMax').setValue( RepMax )\n CMult1.knob('ReNum').setValue( RepNum )\n CMult1.knob('value').setExpression('((1/(ReMax-1))*(ReMax-ReNum)) + ( ( 1- ((1/(ReMax-1))*(ReMax-ReNum)) ) * Trans_COPY1_proxy.fadeout )')\n CMult1.setInput(0, CTrans)\n CMult2 = nuke.nodes.Multiply(name = \"mu1t2_\" + str(RepNum2))\n k = nuke.Int_Knob('ReMax', 'ReMax' )\n k2 = nuke.Int_Knob('ReNum', 'ReNum' )\n CMult2.addKnob(k)\n CMult2.addKnob(k2)\n CMult2.knob('ReMax').setValue( RepMax )\n CMult2.knob('ReNum').setValue( RepNum )\n CMult2.knob('value').setExpression('((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) + ( ( 1- ((1/(ReMax-1))*(ReMax-(ReMax-ReNum))) ) * Trans_COPY1_proxy.fadein )')\n CMult2.setInput(0, CMult1)\n nMerge = nuke.nodes.Merge2(name = \"m\" + str(i))\n nMerge.knob('also_merge').setValue('all')\n nMerge.knob('operation').setExpression('Merge_Proxy.operation1')\n nMerge.setInput(1, CMult2)\n \n if bfirstLoop:\n bfirstLoop = False\n CTrans.setInput(0, nDot)\n CMult1.setInput(0, CTrans)\n CMult2.setInput(0, CMult1)\n nMerge.setInput(0, nMult)\n else:\n CTrans.setInput(0, nPrevTrans)\n CMult1.setInput(0, CTrans)\n CMult2.setInput(0, CMult1)\n nMerge.setInput(0, nPrevMerge)\n \n nPrevMerge = nMerge\n nPrevTrans = CTrans\n nPrevMult1 = CMult1\n nPrevMult2 = CMult2\n \n MNum = int(iRepeats) - 1\n \n p = nuke.toNode(\"m\" + str(MNum))\n \n b.setInput(0, p)\n else:\n b.setInput(0, nDot)\n\n" label static xpos 840 ypos 272 addUserKnob {20 User} addUserKnob {3 copies l Copies} copies 5 } NoOp { inputs 0 name Merge_Proxy label static xpos 620 ypos 464 addUserKnob {20 User} addUserKnob {4 operation1 M {atop average color-burn color-dodge conjoint-over copy difference disjoint-over divide exclusion from geometric hard-light hypot in mask matte max min minus multiply out over overlay plus screen soft-light stencil under xor ""}} operation1 xor } NoOp { inputs 0 name Trans_COPY1_proxy label static xpos 290 ypos 632 addUserKnob {20 User} addUserKnob {12 translate1} translate1 {50 0} addUserKnob {7 rotate1 R -180 180} addUserKnob {14 scale1 R 0 100} scale1 1 addUserKnob {7 skewX1 R -1 1} addUserKnob {7 skewY1 R -1 1} addUserKnob {4 skeworder1 M {XY YX}} addUserKnob {12 center1} center1 {960 540} addUserKnob {6 invert1 +STARTLINE} addUserKnob {4 filter1 M {Impulse Cubic Keys Simon Rifman Mitchell Parzen Notsch Lanczos4 Lanczos6 Sinc4}} filter1 Cubic addUserKnob {7 motionblur1 R 0 4} motionblur1 1 addUserKnob {7 shutter1 R 0 2} shutter1 0.5 addUserKnob {26 ""} addUserKnob {7 fadeout l "Fade Out"} fadeout {{1-fadeout1}} addUserKnob {7 fadeout1 l "Fade Out"} addUserKnob {7 fadein l "Fade In"} fadein {{1-fadein1}} addUserKnob {7 fadein1 l "Fade In"} } end_group