As you’d have gathered, I’m not an expert with Houdini – far from it. I learn from tutorials other people create. I learnt most about Houdini Digital Assets (HDAs, historically known as OTLs) from the following tutorial by Houdini Kitchen.
So, what is a HDA? It’s a network of nodes gathered into a single entity that can be used time and time again in your scenes. You define which variables the world outside of your HDA can see and change by creating an interface.
There are two types of HDA, they share most characteristics – though the definitions blur into one another they are basically as follows:
- A simple HDA that you create inside a geometry SOP and may be reused at that level as desired. Your simple HDA usually gets it’s inputs (if required) from the subnet inputs.
- A complex HDA that you create at the OBJ level that can contain geometry, lights, pretty much anything. You normally get your inputs from object merges then make the links to the object merge available via your interface. This type are often used in game development software such as Unity.
I’ll be looking at the former simpler type in the rest of this blog.
In my first blog I used a simple example of a blob maker, so I’m going to turn that into a HDA so I don’t have to keep on copying and pasting that network of nodes in my scenes if I need it again.
Here we have our network, it has three nodes. The first creates a sphere, the second adds noise to the vertices and the third adds a colour.
Creating a HDA is surprisingly easy, the first stage is to turn our network into a subnet. Select all items you want inside your HDA, right click and under Actions you’ll find Collapse to Subnet.
If we look inside you’ll see your original network and four Sub-Network Inputs. If your HDA doesn’t need an input (as ours doesn’t) you may just ignore them.
But what is an input? Well, if you were making a HDA designed to blobify any geometry at all you could delete your sphere and plug Sub-Network Input #1 into your mountain node. Then you could plug any geometry into the first input in the image above and your subnet (and soon your HDA) would process that geometry in the same way it used to do the sphere.
To create your HDA simply select your subnet, right click it and select Create Digital Asset.
This will bring up the following window where you may name your HDA, the Operator Name is the internal name used within Houdini and the Operator Label is the human friendly name you’ll use when using your HDA. I won’t cover the issue of Save to Library here, just use the default and it’ll be available in your Houdini.
I’ve used Blobify here because I used “Blob” when creating this HDA originally and it should be unique. Finally hit Accept and that’s it. Your HDA is created. The following window ill appear, which for now you can close and test your HDA.
Go back to any Geometry context (or create a new one) hit Tab to bring up the node menu and begin to type “blobify”, you’ll see your item appear, select it and you’ll have a new Blobify before you know it.
Here I’ve done that, moved our second Blobify with a transform node and merged the two together so we can see them.
That’s pretty cool. We now have a tool that can create a totally attractive teal coloured blob anywhere we like in our scenes. But it’s maybe not too useful. What if we want a blob with different noise or a different colour? Thankfully we don’t have to create a new HDA for each permutation, that would be madness. Instead we edit the Parameter Interface and tell it which parameters to expose to the rest of Houdini.
We need to bring up that window that automatically opened when you created your HDA. We get to it by right clicking our HDA and selecting Type Properties.
If you do that and select the Parameter tab you’ll see the following, this is where the magic happens.
You may have seen this before if you’ve ever set up controls for normal objects. It works just the same. But it’s a very complex window and I won’t be able to go into much detail about it here. For our purposes just know that you can drag and drop any parameter from inside your HDA into the middle pane and that parameter will be exposed to Houdini. I’m going to expose the colour to begin with.
So with both your normal Houdini window and the Type Properties window opened navigate in the normal window inside your HDA and select the color1 node. You’ll see the following with the network below and the paramaters above. What we’re intereted in is the word ‘Color’ that I’ve helpfully marked out in red. Click and drag that word into your middle pane of the Type Properties window.
As you can see the parameter has been added. Because you were creating a parameter from an existing parameter you do not have to set up how it looks and acts in the pane on the right. It just copies it over.
[Admission: I foolishly set my colour type to “Detail” in the color node above. This needed to be “Primitive” to work properly.]
Now if you hit Accept and go up to your HDA you’ll see Color is now exposed in our parameters and may be changed as you like. It’s important to remember not to change that parameter inside your HDA anymore. It’s linked to the Parameter Interface and probably won’t work.
To show you how it works I’ve created a second Blobify from the Tab menu, changed the colour to a deep blue, moved it over with a transform and merged the two so they can both be seen.
Now I’m going to make the tool even more useful by exposing more parameters. I won’t go over every step here, you just drag anything you need from inside our HDA to the middle pane of the Type Properties>Parameters window. I choose to expose the Scale and Frequency of the sphere and various parameters from the mountain node. I ended up with a pane that looked like this.
And our parameter interface now looks like this.
It’s no doubt a bit messy but everything works – you can tidy up the look of your interface using folders and tabs and menus and add defaults and all sorts of things from inside the Type Properties>Parameters window. That’s a blog for another day.
Finally, here’s a network with four Blobify HDAs with different parameters added.
And that I think is enough for my first blog about HDAs. As is ever the case with Houdini you could write a book about this one single aspect of the software and just about any tutorial you care to mention can only skim the surface.