Tag Archives: houdini

Essential Houdini – Part 1

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.

Before we start, feel free to go through –
What is Houdini?
How to get it?
How is it used in various industries?

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 –

  1. Geometry
  2. Animation
  3. Particles
  4. Rigid/Soft body Simulation
  5. Compositing
  6. 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.2016-07-21 14_42_07-untitled.hip - Houdini FX 15.5.523

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 –

2016-07-21 17_20_14-untitled.hip - Houdini FX 15.5.523

 

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).

2016-07-21 17_33_46-untitled.hip - Houdini FX 15.5.523

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 –

PolyExtrude_Parameter_Changes
As you can see, everything you create in Houdini is non-destructive, meaning that almost all parameters of the operators are available to modify.

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.
SOPs_to_POPs_002


In conclusion of first part,

  1. There is data – Attributes with values.
  2. Operators act on those attributes. Each operation adds, modifies, deletes, transfers… attribute values. Even geometry like quads, triangles, points are essentially data for Houdini.
  3. There are various contexts with their own kind of Attributes and Operators.
  4. Everything is non-destructive and almost everything is modifiable.
  5. 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.

 

Essential Houdini – Part 2

This is a two part series on core fundamentals of procedural content creation in Houdini.
Please be sure to read Part 1 first.


When learning Houdini for asset creation, or learning any other procedural system for artistic purposes, a frequent advice is – to “rewire” your brain. This is especially mentioned when coming from other 3D packages like Maya or 3ds Max.
This part explains what “rewiring” means.


Generally speaking, traditional or digital art is created from outside in. Artists start with big shapes/block outs/Silhouettes and then work there way in to define details, patterns, features etc…
This is partly due to how human visual system works. We see silhouettes, shapes before inner details. And also because that’s how an artist can define cohesive vision before diving into nitty-gritty parts.

On the other hand, software systems are generally created inside out. Meaning, components or Lego blocks are identified and coded which have plugs to fit with other components.
The reason for this approach is to promote reuse of components, distribution of tasks and realistic tracking of work being done. Just to note that even with this approach there is a high level vision initially laid out by system architect.

Houdini provides systematic ways to approach artistic creation.

For example, let’s say that you want to model a chair.

7b53de36b3024b9d7050476a04d18faf
Instead of straightforward building it using polygon tools, you break it down in parts like legs, arms, seat and back-support – each part having its own specification and controls. When combined, they give you a chair.
Similarly if it was a building, it can be broken down into entrance, windows, outer walls, main facade and more…

thomas_deckert_buildings_kit-of-parts_02

Now, this looks like an overly complicated process to build just a model.
That’s because it is. Then why do it?

Approaching asset creation this way allows two major benefits (among few others) as opposed to diving in and creating one unique piece.

Variations
Once you have setup the system correctly, there is possibility of creating many different variations of the same asset type.

Iterations
As we build the asset in terms of Lego blocks, adding more details/features to existing system is possible while keeping all the previous systems functional.
Just a note here that, fast iterations are possible as long as you don’t try to make fundamental changes to the asset. I mean, extending chair system to output a sofa or even a seesaw works but not if its being morphed into bike.


I have tried to present and advocate procedural way of defining and creating assets in theses posts and I hope its somewhat clear.
Now for actually learning Houdini, Go Procedural has many good tutorials to get started.

Simple math visualization using Houdini

Here are couple of simple attempts.

 

 

Generative Art

Copy SOP in Houdini is a wonderful tool to generate art based on expressions.
Here are couple of random ones –

Houdini Engine in Unity3D

Most basic use of copy SOP in Houdini and environment map shader in Unity3D.
Houdini Engine allows super-fast iteration of assets as well as procedural-ism to its best.

Copy SOP at Dawn