Have you checked the terminal for errors being emitted from the spawned threads?
I think what’s happening is that, since nuke.executeInMainThread doesn’t wait
for a result, and since the afterFrame/afterRender callbacks are all run from
inside a Nuke execution context, the calls to nuke.execute don’t actually get
run (I would expect RuntimeErrors to be raised in the external threads with the
“I’m already executing something” error).
If you want to render a range, why not just do it all at once and spawn the
thread from afterRender?
-Nathan
From: Hugo Léveillé
Sent: Wednesday, August 15, 2012 10:15 AM
To: PYTHON (nuke) discussion
Subject: Re: [Nuke-python] afterFrameRender freezing....
Not working. Looks like nuke is not even rendering at all until it reach the
last frame.
Looks like a bug?
On Wed, Aug 15, 2012, at 12:56, John RA Benson wrote:
if that's the case, try this:
nuke.tprint('Rendering: path.%04d.jpg' % f)
w['file'].setValue("path.%04d.jpg" % f)
in other words, force the write node to render the frame you are getting.
jrab
On 08/15/2012 06:16 PM, Hugo Léveillé wrote:
if I add a print statement like : print nuke.frame() in the def, it prints
the frame just rendered and not the same frame over and over again.
On Wed, Aug 15, 2012, at 11:30, Howard Jones wrote:
It renders the frame you are on as you specified that in render_jpeg
'f=nuke.frame()'
Howard
------------------------------------------------------------------------
From: Hugo Léveillé mailto:[email protected]
To: Nuke Python discussion mailto:[email protected]
Sent: Wednesday, 15 August 2012, 16:11
Subject: Re: [Nuke-python] afterFrameRender freezing....
thanks
Unfortunately, it's still not working as expected. Nuke is not hanging
anymore, but it only rendering the last frame of the requested range. So
I render 1-10 in the main write, I should be triggering 10 afterFrame
callback, rendering the frame just rendered to jpeg. But it will only
render frame 10.
Any clue why?? Here's my script now. The only difference from yours is
that I create a temp rean so that the jpeg is rendered from the dpx and
not the whole flow.
import threading
def renderAWrite(node, start, end):
nuke.executeInMainThread(nuke.execute, args=(node, start, end),
kwargs={'continueOnError': True})
def render_jpg():
f = nuke.frame()
read = nuke.createNode("Read",inpanel=False)
read['file'].setValue(nuke.thisNode()['file'].value())
read['first'].setValue(f)
read['last'].setValue(f)
w = nuke.createNode('Write', inpanel=False)
w['file'].setValue("path.%04d.jpg")
w.setInput(0, read)
t = threading.Thread(None, renderAWrite, args=(w, f, f))
t.start()
On Tue, Aug 14, 2012, at 15:20, Nathan Rusch wrote:
> I think you may have the calling sequence and locations a little
switched
> around... You only use nuke.executeInMainThread from within the code
> that's
> running on the new thread.
>
>
> import threading
>
> def renderAWrite(node, start, end):
> nuke.executeInMainThread(nuke.execute, args=(node, start, end),
> kwargs={'continueOnError': True})
>
> def afterRenderFunc():
> f = nuke.frame()
> w = nuke.createNode('Write', inpanel=False)
> w['file'].setValue('/path.%04d.jpg')
> w.setInput(0, nuke.thisNode().input(0))
> t = threading.Thread(None, renderAWrite, args=(w, f, f))
> t.start()
>
>
> Hope this helps.
>
> -Nathan
>
> -----Original Message-----
> From: Hugo Léveillé
> Sent: Tuesday, August 14, 2012 11:23 AM
> To: Nuke Python discussion
> Subject: Re: [Nuke-python] afterFrameRender freezing....
>
> yeah but running nuke.execute ends in a "already executing something
> else" ?
>
> import threading
> def renderMe(node,inP,outP):
> nuke.execute( node , inP , outP )
>
> def render_jpg():
> frame = nuke.frame()
> w = nuke.createNode("Write")
> w['file'].setValue("/path.####.jpg")
> thread = threading.Thread( None , renderMe , args = ( w , frame ,
> frame ) )
> nuke.executeInMainThread( thread.start )
>
>
>
>
>
>
> On Tue, Aug 14, 2012, at 13:43, Nathan Rusch wrote:
> > You can't call nuke.executeInMainThread from the main thread or
Nuke will
> > lock up.
> >
> > -Nathan
> >
> >
> > -----Original Message-----
> > From: Hugo Léveillé
> > Sent: Tuesday, August 14, 2012 10:39 AM
> > To: PYTHON (nuke) discussion
> > Subject: [Nuke-python] afterFrameRender freezing....
> >
> > I know there has been few discussions about this, but it's still
failing
> > on me. Basically I just want to render a simple jpg of the frame
just
> > rendered.
> >
> > the code:
> > ----------------------------
> >
> > import threading
> > def renderMe(node,inP,outP):
> > nuke.executeInMainThreadWithResult( nuke.execute , args = ( node
,
> > inP , outP ) , kwargs = { 'continueOnError' : True } )
> >
> > def render_jpg():
> > frame = nuke.frame()
> > w = nuke.createNode("Write")
> > w['file'].setValue("/path.####.jpg")
> > thread = threading.Thread( None , renderMe , args = ( w , frame ,
> > frame ) )
> > nuke.executeInMainThread( thread.start )
> >
> >
> > -------------------------------------
> >
> > I call render_jpg()
> >
> > Sometimes it works but more often than others the progress bar just
> > freeze forever. Anyone knows what the problem might be ?
> >
> >
> > --
> > Hugo Léveillé
> > TD Compositing, Vision Globale
> > [email protected]
> >
> > _______________________________________________
> > Nuke-python mailing list
> > [email protected],
http://forums.thefoundry.co.uk/
> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
> >
> > _______________________________________________
> > Nuke-python mailing list
> > [email protected],
http://forums.thefoundry.co.uk/
> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
> --
> Hugo Léveillé
> TD Compositing, Vision Globale
> [email protected]
>
> _______________________________________________
> Nuke-python mailing list
> [email protected], http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
> _______________________________________________
> Nuke-python mailing list
> [email protected], http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
--
Hugo Léveillé
TD Compositing, Vision Globale
[email protected]
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
--
Hugo Léveillé
TD Compositing, Vision Globale
[email protected]
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
--
Hugo Léveillé
TD Compositing, Vision Globale
[email protected]
--------------------------------------------------------------------------------
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python