Houdini-Digital-Asset-Versioning

Houdini Digital Asset Versioning

Overview


Deep dive into new style Houdini digital asset versioning. Shoutout to Faitel that inspired this post through his comment on Houdini Environment setup blog post. We will also go into HDA naming and namespaces and why you should leverage namespaces when creating Houdini Digital Assets.

Here is the official documentation on what we will be talking about.



Namespaces


"Namespaces are one honking great idea -- let's do more of those!" - Bonus points if you know where that quote comes from (I linked the quote if you don't know and want to find out).
We begin with namespaces since they are heavily involved in the new style versioning - the version is simply in the last namespace.

When you create a Houdini Digital Asset (HDA), in the operator name, you assign the namespaces, with a :: divider. I usually go with the style in the screenshot.

HDA Versioning - name components

HDA Versioning - name components


The documentation on the node type name components lists that the tuple is listed in the following order:

  1. scope network type
  2. node type namespace
  3. node type core name
  4. version

It is really handy to put all of your custom nodes into your own namespace, because you can avoid name clashing, as well as using Python to easily find your stuff in hip files.

Next, we dive into the versioning.

Versioning


First, let's make sure you have the HDA version selection enabled in the Houdini user interface. Go to Widows -> Asset Manager. Select any HDA and change the menu drop down to display the asset bar menu. You will see a drop down menu that gives you access to all of the versions for all the definitions inside the hda library file path.

HDA Versioning - Display asset bar

HDA Versioning - Display asset bar

The way you can create a new version is by right clicking on the HDA and select the "Show in asset manager... command. In the Operators tab, your operator will be selected. Right click on it and select "Copy..."' and increase the version number in the pop up dialog and click "Accept". You will now see another option in the asset bar drop down menu. You can select this to jump between versions.

HDA Versioning - Make a copy

HDA Versioning - Make a copy

Asset bar versions

Asset bar versions

I added in a network that sets a message string read be a font sop to display the info about the HDA.

HDA Versioning

HDA Versioning


Automating HDA Versioning with a shelf tool


Here is a toolbar tool that can automate the creation of new versions. Select any HDA and run the tool.

Hda Versioning - Automation

Hda Versioning - Automation

Follow the Houdini Environment Setup , to make it easy to drop in your own resources like toolbars. Below is the Python code for this tool.

You can download the toolbar from here and use as is or change it to fit your needs.

Also here is the must have link to the Houdini Python documentation


Conclusion


Many times in production, I use version control like Perforce to store HDA versions that are distributed to teams. Houdini's HDA versioning gives another layer of flexibility to experiment and move pipelines forward without the risk of breaking existing setups. When a new version is introduced, the already existing nodes stay on the version that they were originally created on.

To update them, use the Python code in the beginning of the article to find the instances and set their version.

Hope you have found the information useful. Feel free to drop a line below with any comments you have, or just to say hello.


About the Author

Christian Akesson

Facebook Twitter Google+

Senior Technical Artist at Nvidia. Maya user since beta 1 in 1999. Mostly in Houdini and Omniverse these days...