hi Mark,

there's a gizmo on nukepedia that could be what you're looking for:

http://www.nukepedia.com/time/timemachine/

unfortunately, nukepedia is down at the moment. so i attached the gizmo.
here's the cached version by google for the description:

http://webcache.googleusercontent.com/search?q=cache:I7cU-UN1IIMJ:www.nukepedia.com/time/timemachine/+http://www.nukepedia.com/time/timemachine/&cd=1&hl=de&ct=clnk

cheers,
Holger


Am 03.06.2013 20:51, schrieb Mark Nettleton:
Is it possible to create a timeslice effect in Nuke?

Perhaps using the expression node to lookup pixels @ time?

Is that possible?

thanks


_______________________________________________
Nuke-users mailing list
Nuke-users@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users


--
Holger Hummel  -  hol...@celluloid-vfx.com

Celluloid Visual Effects GmbH & Co. KG
Paul-Lincke-Ufer 39/40, 10999 Berlin
phone +49 (0)30 / 54 735 220  -  m...@celluloid-vfx.com

#! /Applications/Nuke6.0v1-32/Nuke6.0v1.app/Contents/MacOS/Nuke6.0v1 -nx
version 6.0 v1
Gizmo {
 inputs 2
 help "Does a per-pixel time offset on the image, based on a secondary mask 
input.\n\nPixels with a mask value of 1 will be offset by the number of frames 
set in \"frames\".\nMask values of 0 will return the image at the current 
frame. Values between 0-1 will return an interpolated offset."
 onCreate "\n\ng = nuke.thisNode()\n\ni = nuke.toNode(\"img\")\ni2 = 
nuke.toNode(\"mask\")\no = nuke.toNode(\"Output1\")\nc = 
nuke.toNode(\"Copy1\")\n\n\ndefaultNodes = \[i,i2,o,c]\nfor n in 
nuke.allNodes():\n   if n not in defaultNodes:\n       nuke.delete(n)\n       
\n       \nfvalue = g\['frames'].value()\nstep = 1\nif fvalue < 0:\n   step = 
-1\n\n\nfor f in range(0,fvalue+step,step):\n   t = nuke.nodes.TimeOffset()\n   
t\['time_offset'].setValue(-f)\n   t.setInput(0,i)\n\n   if f == 0 :\n       
lastnode = t\n\n   else :\n       slice = nuke.nodes.Grade()\n       
slice\['channels'].setValue(\"alpha\")\n       
slice\['blackpoint'].setValue((1/(fvalue+1))*abs(f))\n       
slice\['whitepoint'].setValue((1/(fvalue+1))*(abs(f)+1))\n       
slice.setInput(0,c)\n       exp = nuke.nodes.Expression()\n       if 
g\['method'].value() == \"average\":\n           
exp\['expr3'].setValue('a>1?1:a')\n       else:\n           
exp\['expr3'].setValue('a>0?1:0')\n       exp.setInput(0,slice)\n       km = 
nuke.nodes.Keymix()\n       km.setInput(1,t)\n       km.setInput(0,lastnode)\n  
     km.setInput(2,exp)\n       lastnode = km       \nsw = 
nuke.nodes.Switch()\nsw.setInput(0,i)\nsw.setInput(1,lastnode)\nsw\['which'].setExpression('parent.maskChannel!=0')\no.setInput(0,sw)\n\nfor
 n in nuke.allNodes():\n    nuke.autoplace(n)\n"
 knobChanged "\ng = nuke.thisNode()\nk = nuke.thisKnob()\n\nif k.name() in 
\[\"frames\",\"method\"]:\n    \n    i = nuke.toNode(\"img\")\n    i2 = 
nuke.toNode(\"mask\")\n    o = nuke.toNode(\"Output1\")\n    c = 
nuke.toNode(\"Copy1\")\n\n    if k.name() == \"frames\":\n    \n        
defaultNodes = \[i,i2,o,c]\n        for n in nuke.allNodes():\n           if n 
not in defaultNodes:\n               nuke.delete(n)\n        \n        fvalue = 
g\['frames'].value()\n        step = 1\n        if fvalue < 0:\n           step 
= -1\n          \n        for f in range(0,fvalue+step,step):\n           t = 
nuke.nodes.TimeOffset()\n           t\['time_offset'].setValue(-f)\n           
t.setInput(0,i)\n        \n           if f == 0 :\n               lastnode = 
t\n        \n           else :\n               slice = nuke.nodes.Grade()\n     
          slice\['channels'].setValue(\"alpha\")\n               
slice\['blackpoint'].setValue((1/(fvalue+1))*abs(f))\n               
slice\['whitepoint'].setValue((1/(fvalue+1))*(abs(f)+1))\n               
slice.setInput(0,c)\n               exp = nuke.nodes.Expression()\n             
  if g\['method'].value() == \"average\":\n                   
exp\['expr3'].setValue('a>1?1:a')\n               else:\n                   
exp\['expr3'].setValue('a>0?1:0')\n               exp.setInput(0,slice)\n       
        km = nuke.nodes.Keymix()\n               km.setInput(1,t)\n             
  km.setInput(0,lastnode)\n               km.setInput(2,exp)\n               
lastnode = km\n        \n        sw = nuke.nodes.Switch()\n        
sw.setInput(0,i)\n        sw.setInput(1,lastnode)\n        
sw\['which'].setExpression('parent.maskChannel!=0')\n        o.setInput(0,sw)\n 
           \n        for n in nuke.allNodes():\n           
nuke.autoplace(n)\n\n    elif k.name() == \"method\":\n\n        for e in 
nuke.allNodes('Expression'):\n               if g\['method'].value() == 
\"average\":\n                   e\['expr3'].setValue('a>1?1:a')\n              
 else:\n                   e\['expr3'].setValue('a>0?1:0')\n\n"
 addUserKnob {20 User}
 addUserKnob {41 maskChannel T Copy1.from0}
 addUserKnob {26 ""}
 addUserKnob {4 method M {nearest average}}
 addUserKnob {3 frames}
}
 Input {
  inputs 0
  name mask
  xpos 400
  ypos -57
  number 1
 }
set N20453280 [stack 0]
push $N20453280
 Copy {
  inputs 2
  from0 rgba.alpha
  name Copy1
  xpos 400
  ypos -33
 }
 Input {
  inputs 0
  name img
  xpos 217
  ypos -111
 }
set N20461250 [stack 0]
 TimeOffset {
  name TimeOffset1
 }
push $N20461250
 Switch {
  inputs 2
  which {{parent.maskChannel!=0}}
  name Switch1
 }
 Output {
  name Output1
  xpos 1390
  ypos 87
 }
end_group
_______________________________________________
Nuke-users mailing list
Nuke-users@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users

Reply via email to