Hi Nathan,

Thanks for checking on it! I did have a threading thing in my code that I
mentioned, but probably didn't include in my example code. Mine didn't work
in the order that I was implementing it. Yours is working better, but the
whole script is still skipping over some outputs. I can print the node
names, but once it's sent to the writeIt() function it skips some things.
Slightly odd. I have tried to slow down the output with a longer sleep
which actually helps and outputs a few more files. I'm debugging some more.
I'll send you the code if I get somewhere, and definitely will if I don't!
:)

thx,
Dan

On Fri, Nov 2, 2012 at 12:00 PM, Nathan Rusch <nathan_ru...@hotmail.com>wrote:

>   Hmm, I see. Well, one other question, I guess, is if you’re getting
> CDLs, is there a reason you can’t use OCIOCDLTransform nodes to apply them?
> Or are you using LUTs to make the transforms available outside of Nuke as
> well?
>
> I would try spawning your loop function on a separate thread, and maybe
> sticking in a short sleep between node connections for good measure. I
> haven’t tested this, but it should allow the main processing thread to be
> released to evaluate the nodes in question. Might look something like:
>
> import threading
> import time
>
> def writeIt(node):
>     node.setSelected(True)
>     nukescripts.connect_selected_to_viewer(0)
>     node.setSelected(False)
>
> def setLutNodes(nodes):
>     for n in nodes:
>         # If it meets the criteria...
>         nuke.executeInMainThread(writeIt, args=(n,))
>         time.sleep(1)
>
> # Main entry point (could be in a function...)
> threading.Thread(target=setLutNodes, args=(nuke.allNodes(),)).start()
>
>
> Hope this helps.
>
> -Nathan
>
>
>  *From:* Dan Rosen <danrosenro...@yahoo.com>
> *Sent:* Friday, November 02, 2012 11:40 AM
> *To:* Nuke Python discussion <nuke-python@support.thefoundry.co.uk>
> *Subject:* Re: [Nuke-python] control viewer
>
> Hi Nathan,
>
> Thanks for the reply. We unfortunately don't write the plugin in-house. We
> are moving away from using it by implementing OCIO, but it currently still
> provides us the ability to format different luts for other software
> packages.
>
> It's pretty rare, but only time that it comes up for us to process
> hundreds of luts (via this Nuke/py process) is when working on a show with
> CDLs per shot from the DP. We've been providing CDLs as 3DL lut files back
> to production, so it's handy to script the process to format and
> output/name them all this way.
>
> thx
> Dan
>
> On Thu, Nov 1, 2012 at 10:48 PM, Nathan Rusch <nathan_ru...@hotmail.com>wrote:
>
>>   GUI updates and redrawing cannot occur while a block of Python code is
>> executing. I don’t know the details of Nuke’s core threading design, but it
>> seems that things like nuke.message may cause the lock on the thread
>> responsible for hashing, validation, etc. (which may be separate from the
>> GUI thread) to be released temporarily, allowing the tree to be evaluated.
>>
>> A couple initial questions would be:
>>
>> 1) Where in the plugin code is the LUT written? (_validate, engine, etc.)
>> 2) Is there a reason you can’t/don’t want to make it an executable op?
>>
>> -Nathan
>>
>>
>>  *From:* Dan Rosen <danrosenro...@yahoo.com>
>> *Sent:* Thursday, November 01, 2012 3:23 PM
>> *To:* Foundry <nuke-python@support.thefoundry.co.uk>
>> *Subject:* [Nuke-python] control viewer
>>
>>  Hi,
>>
>> I have a plugin that writes luts, but only by viewing through the node
>> itself. There is no execute button a la GenerateLUT or Write. I use python
>> to troll my Nuke flow-graph when setting up multiple lut outputs.
>>
>> The problem is when I have many luts only the last one is writing out in
>> a for loop. I know that each one should be working since I have a print
>> statement to show that it should be. Also, if I throw up a
>> nuke.message("writing lut") then it works and all the luts are written. I
>> just don't want to have to hit the 'OK' button. That pause is allowing
>> enough time to get the node to successfully write. Having said that a
>> regular python pause or a Nuke python progress bar doesn't work in the same
>> way. My question is if the nuke.message is actually allowing the viewer to
>> update. Any suggestions of other ways to force viewer update or similar?
>> I've tried having the viewer forward a frame and back, but that isn't doing
>> the same thing as the nuke.message. Maybe there's a way to automatically
>> close the nuke.message pop-up?
>>
>> Here's a snippet of the code:
>>
>>  def writeIt(n):
>>     n.setSelected( True )
>>     nukescripts.connect_selected_to_viewer(0)
>>     n.setSelected( False )
>>
>>  def setLutNodes():
>>
>>     for n in nuke.allNodes():
>>
>>         if n.name() == "SHOT_LUT_CDL_3DL":
>>             n['lookFile'].setValue(file_output_lut_cdl_3dl)
>>             print "writing " + file_output_lut_cdl_3dl
>>             writeIt(n)
>>         elif n.name() == "SHOT_LUT_3DL":
>>             n['lookFile'].setValue(file_output_lut_3dl)
>>             print "writing " + file_output_lut_3dl
>>             writeIt(n)
>>         elif n.name() == "SHOT_LUT_3DL_W_OFFSET":
>>             n['lookFile'].setValue(file_output_lut_3dl_w_offset)
>>             print "writing " + file_output_lut_3dl_w_offset
>>             writeIt(n)
>>         elif n.name() == "SHOT_LUT_CUBE":
>>             n['lookFile'].setValue(file_output_lut_cube)
>>             print "writing " + file_output_lut_cube
>>             writeIt(n)
>>         elif n.name() == "SHOT_LUT_TXT":
>>             n['lookFile'].setValue(file_output_lut_txt)
>>             print "writing " + file_output_lut_txt
>>             writeIt(n)
>>         elif n.name() == "SHOT_LUT_LUT":
>>             n['lookFile'].setValue(file_output_lut_lut)
>>             print "writing " + file_output_lut_lut
>>             writeIt(n)
>>         elif n.name() == "SHOT_LUT_ACV":
>>             n['lookFile'].setValue(file_output_lut_acv)
>>             print "writing " + file_output_lut_acv
>>             writeIt(n)
>>         elif n.name() == "SHOT_LUT_ICC":
>>             n['lookFile'].setValue(file_output_lut_icc)
>>             print "writing " + file_output_lut_icc
>>             writeIt(n)
>> ------------------------------
>> _______________________________________________
>> Nuke-python mailing list
>> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>
>> _______________________________________________
>> Nuke-python mailing list
>> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>
>>
>
> ------------------------------
> _______________________________________________
> Nuke-python mailing list
> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
> _______________________________________________
> Nuke-python mailing list
> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to