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