January 2018

FASTDROP, MY FRIEND

tl;dr:  save some of your precious time when using the Backdrop Node.

Typically, when you use a Backdrop node to group a bunch of nodes, you want to set up a nice, descriptive label, a font size, and probably also a cool, elegant color. The problem is that usually, those tasks are done after the Backdrop node is created, one after the other, and that gets somewhat repetitive, boring and time-consuming in the long run.

If you want to save the burden and get those three things done at the same time, here I share with you a little Python snippet that will let you deal with your backdrops the easy way, and just at once.

1 - How to use it

So first things first, let´s place the code where it can be reached, create a new Nuke Menu and set up a Hotkey. Let´s see how this works.

Distribute the code

Copy the script and save it as a Python file called "b_custom_bckdrp.py" where Nuke can find it. In other words, place it within the nuke.pluginPath() file structure. For more info, read my previous posts.

Edit the menu.py file

Now we have the Python module where Nuke can find it, we´re gonna add the following lines to our fantastic menu.py so that we can effectively use it:

n_menu = nuke.menu('Nuke')
b_menu = n_menu.addMenu('MenuName')
b_menu.addCommand('b_custom_bckdrp', 'b_custom_bckdrp.main_function()', 'ctrl+a')

Save the menu.py and restart Nuke.

2 - Try it

You'll notice that there is a new menu in your upper menu bar, listing the new 'b_custom_bckdrp' command and its Hotkey. Just select a bunch of nodes and press 'alt+a '(it´s the hotkey we set up earlier, obviously you can change this to any other of your convenience). A Nuke Panel like this one should appear:

 

 

 

 

 

 

 

 

 

 

 

 

 

Set the "note size" and "label" and click ok.


 

 

 

 

 

 

 

 

 

 

 

 

 

Now select a nice, elegant color (or leave it as is).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Finally, you should end up with something like this :D

code
import nuke
import nukescripts


######################################################################################

__author__ = "Boris Martinez Castillo"
__version__ = "1.0.1"
__maintainer__ = "Boris Martinez Castillo"
__email__ = "boris.vfx@outlook.com"

######################################################################################


def custom_backdrop(txt,fontsize):

    node = nukescripts.autoBackdrop()
    node['label'].setValue('<center><u><b>' + txt)
    #node['bdwidth'].setValue(525)
    prev_sel = nuke.selectedNodes()
    for i in prev_sel:
        i['selected'].setValue(False) 
    node['selected'].setValue(True)
    
    node['note_font_size'].setValue(fontsize)
    nukescripts.color_nodes()


class modalPanel(nukescripts.PythonPanel):

    def __init__(self):
        nukescripts.PythonPanel.__init__(self,"customize_backdrop")


    #CREATE KNOBS

        self.note_size = nuke.Int_Knob("Note Size:")
        self.note_size.clearFlag(nuke.STARTLINE)
        self.frame_display = nuke.String_Knob("Label:")
        self.frame_display.clearFlag(nuke.STARTLINE)
        self.set_note_size_default_value()
        self.author = nuke.Text_Knob("written by Boris Martinez")

    #ADD KNOBS

        for i in (self.note_size , self.frame_display):
            self.addKnob(i)

    #SET KNOB DEFAULT VALUES

    def set_note_size_default_value(self):
        self.note_size.setValue(100)

 
def main_function():
    
    panel = modalPanel()
    if not panel.showModalDialog():
        print "script aborted"
        return
    else:
        fontsize = panel.note_size.getValue()
        note = panel.frame_display.getValue()


    custom_backdrop(note,fontsize)    


if __name__ == "__main__":
    main_function()
Read more →