The Complete Houdini: Interface Customization (7/x) (Patreon)
Content
Houdini's complexity is a double-edged sword. You can achieve any creative result you can dream up, but at the cost of sometimes unintuitive, slow and confusing workflows. When doing the same or similar tasks over and over, interface speed bumps can become more and more of an annoyance. The interfaces on many nodes are essentially just Big Lists of Stuff that offer few concessions to efficiency or user experience.
My go-to example of this is the Guide Groom node. Not only is it a long list of every possible function to do with hair/fur guide manipulation, but the very first tool in the list, the number one spot, is the button that erases all your work. It doesn't even ask for confirmation!
Needless to say, this is a poor user experience. One of the most important rules of interface design is that the stuff used most often should be brought to the fore. Less-frequently used commands and options can be safely put off to the side.
So, the bad news is that a large chunk of Houdini isn't great from a UI/UX perspective. Not only is this frustrating for advanced users who encounter these issues countless times every day, but it also provides a barrier to entry to new users. Houdini is widely regarded as complex and difficult to learn; the UI is a big part of the reason why.
But there is good news! The interface on every node in Houdini is more or less fully customizable in very powerful ways. There is one exception: interfaces that contain Python code. It's easy to completely break the inner workings of these tools. While not impossible to get them working again, it's generally not worth the trouble. Examples of this are Guide Groom and many tools in Solaris, such as the Light Mixer.
That being said, we've still got a lot of stuff we can customize. Let's learn how!
Recipes
The release of Houdini 20.5 marked the debut of Recipes. These are basically presets and they replace Houdini's old Presets functionality. With Recipes you can save settings on individual nodes and also save entire node networks.
Let's say you often sculpt organic forms and need a basic starting setup. You could create a Recipe that includes a Sphere, a Labs Auto UV, a Subdivide and a Sculpt node, all with your preferred settings. Create your node network as desired, select all the nodes, right click and select Recipes > Save Selected Items as Tool....
In the window that pops you you can choose a name, a Tab Menu folder location, an icon, and a few other settings.
You can then load up the mini network any time by pressing Tab and selecting the just-created Recipe.
Recipes for individual nodes can be saved and loaded using the Frying Pan icon on every node's parameter interface.
Existing recipes can be edited and deleted by clicking Windows > Recipe Manager.
Let's take this a step further and break down the interface of a commonly-used node to make it easier and more efficient to interact with. We'll use the Subdivide node as a guinea pig. The default UI is a bit of a mess and we can do a lot to make it more accessible.
Click the Gear icon and select Edit Parameter Interface...
In the window that comes up, the center panel shows Existing Parameters, ordered from top to bottom just as they are in the node itself. The Create Parameters panel on the left give us access to every single element that can be added to our custom interface. Finally, the Parameter Description panel on the right lets us customize each parameter in exhaustive detail.
Our customizations in this case will be entirely cosmetic, simply reorganizing what already exists. As such, we'll just be using items from the By Type tab in the left panel. We'll dig a little deeper in the next section.
Create new tabs, dividers, labels and more by dragging elements around, updating values as needed and clicking Apply to preview the results.
Once we've got a look we're happy with, click Accept. We can now use the same process as before and save this to our Recipe library as a Tool. I like to put everything into my BHGC Tab Menu folder and include BHGC in the name, making it easy to find these custom nodes in the future. I'll call this new and improved Subdivide node BHGC Subdivide.
From now on, not only will the default, original Subdivide be available, but we'll also have access to the newly created one.
You might find yourself creating custom versions of half the nodes you regularly use. The beauty of this is you can identify points of friction and make exactly the changes that fit with your way of working and thinking.
Building New Tools
Let's go further and explore how to create a totally custom tool and save it as a Houdini Digital Asset (HDA). As an example, let's look at a simple tool I created for managing hair taper. In every groom I create I always want to run a final pass to taper the hairs as desired. Instead of building the same node network over and over and copy/pasting it, I made a tool that does exactly what I need.
First, create a Subnetwork. This is like a "folder" within a node tree that contains another tree. (Gaffer users would call these "Boxes.")
Dive into the subnetwork and build your desired tree. In this case it's a Resample node to create a curveu attribute and a Point Wrangle with a couple lines of code. (There are errors on each node just because there is no input connected yet.)
Once the nodes are set up, go back up one level to the subnetwork and edit its Parameter Interface.
Here, we'll be creating a new interface based on the contents of the subnetwork. We can drag and drop parameters from the From Nodes tab in the Create Parameters panel. This allows us to reference, well, basically anything, anywhere. You could control the settings of a node in a completely different location in your scene. You probably don't want to reference a lot of stuff in wildly varying locations just because it would get confusing very fast, but we can reference everything within our subnetwork with confidence.
So, let's include the parameters we need to access to control our hair taper. It's only a small subset of the settings on the actual nodes and that's great. We want it to be as simple as possible. Here we're just adding the Width and Taper parameters from the Point Wrangle:
When finished, click Accept. To create our HDA, right click on the subnetwork and select Create Digital Asset.
Set the HDA parameters in the same way we would for a Recipe.
When finished, click Create. This brings up a Type Properties window that allows us to further customize our new tool. You can choose an icon here, further edit the interface and generally tweak about 5 billion other settings. Very useable HDAs can be made without changing any of the defaults, so we'll leave all that advanced stuff for a later date!
BHGC Hair Taper can now be found in the Tab menu, ready to be quickly added to any scene.
Finally, HDAs allow versioning. If we want to update the tool in the future, all we have to do is make our changes, then right click on the the node and select Digital Asset > Increase major/Minor Version.
Conclusion
This article provided an introduction to the incredible customizability of Houdini's interface. Anyone planning on using Houdini extensively will want to spend a good amount of time adjusting nodes to their liking and building custom tools. Have fun!