

If you’re not used to dealing with JSON, it’s basically a bunch of key/value pairs in a hierarchical structure. Houdini package files are written in JSON, which is a bit finicky to say the least. I’m going to explain a bit about how this syntax is supposed to work, and then write a couple of sample packages you can follow that should be enough to configure just about any add-on or plugin you choose to add to Houdini. Little inconsistencies like this can really throw a wrench in what should otherwise be a pretty simple file format. However, other environment-related keys default to the “replace” mode, and confusingly one of the common environment variables you need to edit is named “PATH”, and this is not the same as the special “path” key. Part of this is due to the internal inconsistency of how different “keys” in the package file are handled for some reason, SideFX decided that any additions to the HOUDINI_PATH variable can be done with a special key called “path” that automatically operates in “prepend” mode, meaning each package automatically adds the new value to the beginning of HOUDINI_PATH.

SideFX has a reasonably long documentation page on what packages are and how they work, but I still keep seeing a lot of badly-configured package files floating around out there that can prevent your environment from working correctly when multiple packages are combined. JSON syntax can take a little getting used to, but the advantage of using packages over the Houdini.env file is that these packages can be easily enabled or disabled individually, and they can support special syntax for loading packages only when certain conditions are met (such as a specific build of Houdini). They’re meant to fill the exact same role as the Houdini.env file. Houdini 17.5 introduced the concept of “packages”, which are little JSON files (JSON meaning JavaScript Object Notation, filling a similar role as XML or YAML) that define Houdini-specific changes to be made to the environment. This is a sort of sequel to the previous post I made about handling the Houdini.env file, and about configuring environments in general.
