This is a two part series to introduce core concepts of procedural content creation in Houdini.
This is not meant to be a “how-to” or “101-tutorial” style series.
It presents the most essential understanding of Procedural approach.
And be sure to watch some basic tutorials to be familiar with how to interact in Houdini.
If you have prior programming (or scripting) experience in any language, some concepts like functions, classes and data can be easily grasped. However, I will try as much as I can to simplify them for Artists.
So, first of all, Contexts.
Houdini (or other packages like Maya/Max) are packed with many computer graphics toolsets/techniques. In all packages, these CG techniques are divided into categories like –
- Rigid/Soft body Simulation
- Rendering and more…
Houdini groups them under various Contexts like SOPs, POPs, ROPs etc…
They are short for Surface OPerators, Particle OPerators, Rendering OPerators…
For now, just remember that such categorization exists. The significance of these separations will be clear shortly.
Now, to understand Houdini (or almost any procedural system for that matter), you need to internalize two ideas –
Attributes (Data) and Operators (Functions).
Attributes = What data the system (or any Context) has.
Consider a cube below which has some attributes associated with it.
Its attributes are Positions & Normals per Point (or vertex if you prefer Maya/Max terminology, however vertex has a different meaning in Houdini).
Operation = What do you do with system’s data.
With that cube, I am going to add 2 units to Y-position of points whose numbers range from 4 to 7 (point numbers are shown in above image).
The language used here may sound very descriptive for a trivial operation but as you can see below, this is exactly how you execute such operation in Houdini.
At the moment, don’t worry about the expression language and focus on the concept that I gave a very low level instruction to Houdini to operate on cube’s geometry attributes.
Fundamentally and technically, this is the core workflow.
There are bunch of attributes with some values and using node graphs you instruct Houdini to operate on those attribute values.
If you have used Maya or 3ds Max before, a helpful analogy is construction graph or modifier stack. Except that Houdini’s networks are insanely more flexible and powerful compared to other two packages.
In short –
Now going back to Contexts, the example above showcases Surface OPerators, as we are modifying attributes of a surface (geometry). That geometry can be Polygon, NURBS, Curves… And typical attributes are point positions, normals, point/triangle colors, UVs etc…
Another type of context is Compositing OPerators, using which you can work on images (as per below).
COPs operate on images (or sequence of images), hence the attributes you normally deal with are pixels and per-channel values (think Photoshop).
Now, for the cool stuff.
Almost all parameters of all operators in your network are modifiable as needed.
What does that mean? Example below –
Part 2 goes more in depth on why this is very important and real magic of Houdini.
But for now, moving on to another cool aspect 🙂
Contexts in Houdini can interchange certain data in certain ways.
Meaning that, you can prepare a model using SOPs and then send it to Particle OPerators for its surface to be used as emitter. Or send it to Dynamics OPerators to take part in rigid body simulation. While still keeping the modifiable aspect (shown above) of each context.
Below is an example of SOPs to POPs.
In conclusion of first part,
- There is data – Attributes with values.
- Operators act on those attributes. Each operation adds, modifies, deletes, transfers… attribute values. Even geometry like quads, triangles, points are essentially data for Houdini.
- There are various contexts with their own kind of Attributes and Operators.
- Everything is non-destructive and almost everything is modifiable.
- Contexts can transfer data between one another.
If you have any questions on this part or find something confusing or misleading, feel free to mention in the comments.