The whole course revolves around a realistic production scenario that involves creating a Digital Asset for creating roof tiles on a variety of buildings. The first classes will go over the creation of the user interface and present some techniques for making more user friendly HDAs. The next classes will continue the development by improving the performance and the iteration times of the HDA as well as best practices for organizing the internals of the HDA, validating input attributes and performing error checks, documenting and debugging.
The last part of the course will cover tips for updating HDAs and introduce 2 new techniques for automating tests that check the integrity of the HDA by performing geometry and render comparisons in Python. The last classes will cover some more Python tips and tricks that can be applied to HDAs, which will lead to the finalization of the roof tiles generator project. By the end of this course you will have learned enough techniques to create better, more reliable and more user friendly HDAs.
Jeronimo Maggi started his career as a 3D generalist and has been working with Houdini as an FX TD on feature films for the last 8 years. He worked for several years in the education field teaching Houdini and currently works in Walt Disney Animation Studios as a General TD.
Class 1: What makes a good HDA?
This first class will introduce the project which is going to be used as an example throughout the whole course as well as explain the setup for generating roof tiles that needs to be turned into a Digital Asset. Afterwards, the focus will shift to exploring what makes a good HDA and getting a new perspective on how to better approach the HDA creation process.
Class 2: The User Interface
This lesson will cover the new dialog for creating HDAs in Houdini 19.5 and how to best leverage namespaces and versions. After, the roof tiles setup will start to be converted into a Digital Asset while applying all the concepts learned in the previous class. The main focus will be on creating the user interface by promoting parameters and looking at best practices and tips and tricks to keep the UI lean, organized and easy to use.
Class 3: Organizing the Internals, Part 1
The next step is to clean up the HDA. This class will cover the best practices such as using internal attributes to avoid clashing with existing ones, being explicit about what attributes are being output by the HDA and maintaining all existing attributes and topology. Most of these concepts will first be applied with a new utility HDA for deleting primitives based on their area or perimeter.
Class 4: Organizing the Internals, Part 2
Continuing the concepts from the last class, it will go over explicitly reading input attributes as opposed to just assuming it as well as other smaller details that can be added to HDAs to make them even more user friendly. The class will continue exploring how to improve the performance using the performance monitor and finally it will go over a few techniques to allow for workflows that will improve the responsiveness of the HDA to make it faster to iterate.
Class 5: Node Tab and Error Checks
This class will start by covering how to use the guide geometry, message nodes and descriptive parms of the Node tab of the HDA. Next, a very important step in creating a Digital Asset is validating if all the required data is being correctly input. This can involve checking if an attribute is present, if it’s of the right type or class and if the input geometry is of the right type. The lesson will go over a technique to validate input data and how to report any errors in a more friendly way so users can better understand why the HDA isn’t working.
Class 6: Debugging and Documentation
An often forgotten step when it comes to creating HDAs is documentation. This class will go over the best practices for documenting HDAs using Houdini’s Wiki Markup, organizing nodes by using sticky notes and node comments as well commenting VEX and Python code. It will also cover some good practices for creating visualizers that can be easily accessed in the future when debugging.
Class 7: Updating and maintaining
HDAs are continuously evolving. Whether it’s a bug fig or a new feature, Digital Assets are bound to change. This class will go over the best practices when it comes to updating HDAs. The roof tile Digital Asset will be updated to be more flexible and include some more features. The lesson will go over versioning HDAs and how to deal with adding and removing new features and parameters and what the implications are for the end user.
Class 8: Testing
This class will cover the importance of testing HDAs and how it can be applied in the context of Digital Assets. It will go over how tests can be created and run as well as their importance when it comes to making changes to the HDA. Different techniques to create and automate tests by comparing renders and geometry in Python will be introduced.
Class 9: Scripting
This lesson will go over some Python use cases for HDAs such as menu scripts, event callbacks and caching. It will go over examples of event callbacks, how to create a custom menu script and how to cache menu data to improve the performance of the HDA. Finally it will cover creating a custom tab menu tool that can create multiple nodes.
Class 10: Project finalization
This final class will go over finalizing the project and using the HDA created in all the previous lessons to finally generate the tiles that will be used in the final render. Finally it will cover the shading and rendering of the project.