What's wrong with the default Backdrop node?
This is a tool I've been planning for a while to create mostly because I am just
really unhappy with the default Backdrop tool. A few reasons are:
- when you create one without having anything selected it is too small
- it is difficult to resize, even now that you have 4 corners in Nuke v13
because the little triangles in the corners aren't scaling
- grabbing the top bar of the node to move around without grabbing the nodes on it also often requires some zooming ( on the DAG ) because the top bar doesn't scale
- the left aligned text often not practical
- the random colors are often too colorful and distracting in the scripts,
which is not a surprise as the tile_color gets generated with this code:
tile_color = int((random.random()*(16 - 10))) + 10
- the current way of the Backdrop node is created ignores the scenario when you want to create the node on top of a larger one AND have a smaller one selected. When the z_order gets calculated the code using an IF/ELSE for these two cases.
- the 200 limitation on the font size is unpractical in larger scripts
I am aware that as the current Backdrop has multiple shortcomings there are more than a few customized improvements out there - here are some of my favourites:
So as mine is merely another Backrop tool customized according to studio's/personal taste,
feel free to customize it futher!
It also can be helpful that the Backdrop's sourcecode is visible here.
And a useful resource to check out nuke.BackdropNode too.
Point is that Backdrop could be one of our best allies to keep our scripts
organized and tidy so let's use it well:
Updated 03 / 12 / 22
- added BackdropAdjust(search)
- fixed/updated z_order calculation
- added custom icons
- updated place on the node menu
Part under the Re Size dropdown
After installing it your node will be added to the Nodes/Other menu and you can also
create it with a Alt+ B shortcut.
By using the Shift+Alt+B shortcut you can also create a node and set up the main information
via a pop up window.
By using the Ctrl+Shift+B shortcut you can search for a specific Backdrop using a dropdown menu that lists the Backdrop node's label values.
How does it work?
With this node you should not touch the label on the Node tab as you can set that value from the Note knob here. ( also the label currently has a long expression with some html so this part can work )
On the Tasks part you get some options for the most common tasks in comp.
The idea here is that the more vital parts of the script get a more vivid color to
make it easier to find them.
When you use the Cover Selected Area and Extend to Selected Area and the options under the Re Size dropdown the nodes that are in the BD area gets selected, so it is easier to move them together.
When you create a new Backdrop Adjust with the area where other Backdrop nodes selected it takes the darkest color value from the selection and makes it slightly darker, keeping the hue and saturation values the same.
Using BackdropAdjust (popup)
With using the Alt+Shift+B shortcut you can create the node while setting up the more important information such as label/color by using a pop up window. The text typed into the Label/Note section will get capitalized.
Using BackdropAdjust (search)
With using the Ctrl+Shift+B shortcut you can create a popup window with a dropdown listing the Backdrop nodes' label values. After selecting the preferred one you can choose to zoom on the node.
Things I learned by
making this node
About Tile Color
First, here is where you can manually change the tile_color on the node which
changes the node's color:
If you are new to modifying Nuke's tile_color value with python, I highly recommend to start by checking out Erwan Leroy's fantastic side note on the matter!
So I had a plan to make a tile_color value automatically changing based on the value of the selected backdrops, and artists to easily be able to make it darker or brighter but didn't know how.
Oddly, this challenge proved to be the most difficult. Making node's color change luma is hard!
Had some experimentation and got some help and eventually bumped into the colorsys module that helped with converting the numbers!
It doesn't have many functions but these are very useful.
So if anyone else needs to modify those numbers, here is a way to convert them to HLS and back.
Also, if you want to create a node and set up the tile_color via python you need to delete the tile_color value of the node's file ( be it .gizmo or .nk ), otherwise, it will overwrite that!
So here is the line you need to delete if working on something similar:
Another odd thing about tile_color is that if you try to get the value most native nodes, it only returns 0 as a Result.
It is happening because most native nodes' color values are coming from the
Preferences/Node Colors tab. In there you can hover your mouse over the knobs to
see their name too:
Here's the formula to get these values:
I wrote this function to help getting the right tile_color value searhing in the Preferences/Node Colors for you if the returned value is 0. You can see how it works under the code.
About html on label
Html is our ally when it comes to customizing tools and making things more user-friendly.
So we know where we can find things we need!
I wanted people to see the color the node will have when they select a certain item from the Tasks.
So was setting up the background color but that alone didn't look good.
To have a little extra space around the text that you can't do with hitting a space here but need to use html's non-breaking space formula:
<font style="background-color:#559d63;"><font color=black> Plate </font>
For the color palette, I wanted to use only the colors as options so I picked a symbol that got a font color set up for it:
Huge thanks for the people who helped me making this node:
Hope you will find it useful!