Explains how objects, geometry containers, and surface nodes work in Houdini.
Objects are the top level representations of things in the scene. They have location, rotation, and scale in world space. Some examples of objects are:
|Props and character geometry|
Static props such as tables, chairs, spaceships, lamps, and planets, as well as the geometry (skin) for characters, are represented by Geometry container objects. Geometry container objects contain Surface nodes that define the shape of the prop or character. See Geometry containers and surface nodes below.
Character parts such as bones and muscles are objects. Character skin geometry and the nodes that describe how the bones and muscles capture and deform the geometry are contained in a Geometry container object. See the character section for more information.
|Lights and cameras|
Null objects have a location, rotation, and scale, and they have a representation in the viewer you can select, but they don’t render. Nulls have two main uses: you can parent multiple objects to them to be able to move, rotate, or scale the parented objects as a group. And you can parent character handles to them to make them easier to select and move.
Geometry containers and surface nodes
Models in Houdini are represented by Geometry container objects at the scene level. Inside a geometry container object, surface nodes define the geometry of the object. The geometry container object lets you translate (move, rotate, and/or scale) and shade the entire object, as opposed to individual surfaces inside the object.
When you use the shelf tools Houdini will create geometry containers with surface nodes inside for you. For example, clicking the Sphere tool on the shelf creates a new container named
object_sphere1, with a sphere surface node inside named
sphere1 that defines the sphere geometry.
Note that the object container and the surface nodes inside each have their own parameters. In some cases, the functionality of the parameters might seem to overlap at first. With only one sphere inside the sphere node’s Center parameter, which sets the sphere’s location, has the same effect as the container object’s Translate parameter, which moves the entire object. Similarly, the container object’s Scale parameter sets the size of the entire object, while the sphere node’s Radius parameter sets the size of the sphere inside.
Transforming objects vs. surfaces
Keep in mind that the normal unit of transformation (moving, rotating, and scaling) is the object. Transforming surfaces at the Geometry level (for example, using the Transform surface node) is more accurately deformation, and can potentially take much longer for Houdini to calculate than just transforming static object geometry at the scene level.
This is not to say that transforming at the geometry level is bad: often you need an object’s shape to deform over time. However, you should remember to look for opportunities to accomplish your goals by transforming objects before you look at transforming surfaces, because the former is more efficient.
Moving between the container object and the surface nodes inside
Houdini provides several methods for navigation between the geometry container object (and its parameters) and the surface nodes and their parameters.
Switching between object mode and Component mode, either by clicking the mode icons in the toolbox on the left or by pressing F8, switches the network and parameter panes between the Scene (object) level and the geometry (component) level.
|Jump icon in the operation controls toolbar|
When you select a geometry container object at the scene level, the operation controls toolbar (at the top of the viewer) displays controls for the last surface node in the geometry network inside the container (technically, the surface node with the display flag).
You can click the Jump button on the toolbar to jump down to the geometry level inside the container.
|Object “Jump to” context menu|
Right-click a geometry object in the viewer. In the context menu, open the Jump to sub-menu. This menu shows a list of nodes related to the object. Choose Contained geometry to jump down to the surface node with the display flag inside the object.
|In the network editor|
In the network editor, double-click a geometry container node to go inside. You can also select the node and press I or Enter. Or right-click the node and choose Edit network.
Press U in the network editor or use the path gadget to jump back up to the container network.
|Back and forward buttons|
Once you've visited the geometry level inside an object, you can use the back and forward buttons next to the path gadget in a pane to go back and forth between the Scene (object) level and the Geometry level.
See the section on the network editor for more information on navigating networks.
Each surface node contains geometry. Some surface nodes are generator nodes that create geometry, such as the Sphere and Box nodes. Other surface nodes are filter nodes that take input geometry from another node and modify it, such as Twist.
Only one surface node inside geometry container providers the geometry for the entire object (Houdini does not automatically merge all the free-floating surface nodes together to create the final geometry). To set which node provides the geometry for the object, you set the display flag on that surface node.
The node with the display flag is indicated in the network with a large blue ring.
For the three sphere surfaces to be visible in the final object geometry, they must be merged together with a Merge surface node and the display flag is set on the merge node.
You can even set separate display and render flags so one model represents the object in the viewer, but a different model is actually rendered. This lets you use lightweight proxy geometry in the viewer and render a more detailed version.
Display flags are used when cooking the network for displaying in Houdini. Render flags are used when a ROP cooks the network.
Edit an object's origin/pivot
All transformations are relative to an object’s pivot point. An object scales toward/away from the pivot point and rotates around the pivot point.
|Set an object’s pivot point in the viewport|
|Set an object’s pivot point numerically|
|Center an object’s pivot point|
The pre-transform is like an invisible parent Null inside each object . The position, scale, and rotation values in the object’s parameters are relative to the (normally hidden) values in the pre-transform.
The pre-transform is useful, especially in character rigging , for setting a certain position, rotation, and/or scale as the “rest” or “zero” state for that object. After that, values you enter are relative to the pre-transform values.
The pre-transform uses a fixed, non-configurable transform order. If you try to copy a non-uniform scale into the pre-transform, you can get shearing.
|See the values in an object’s pre-transform|
Press on the object’s tile in the network editor.
|Make the object’s current transform the “zero” state|
In the object’s parameter editor, click the Transform tab and choose Pre-transform > Clean transforms.
This moves the object’s current transformation into the pre-transform and resets the transformation parameters to the “identity” (position and rotation = 0, scale = 1).
The opposite action is Extract pretransform (see below).
|Make only the object’s current position, rotation, or scale the “zero” state|
In the object’s parameter editor, click the Transform tab. Open the Pre-transform pop-up menu and choose Clean translates, Clean rotates, or Clean scales.
|Delete the pre-transform|
In the object’s parameter editor, click the Transform tab and choose Pre-transform > Reset pretransform.
This will probably change the position, rotation, and or scale of the object because the current values in the parameters will no longer be relative to the pre-transform.
|Move the pre-transform values into the parameters|
In the object’s parameter editor, click the Transform tab and choose Pretransform > Extract pretransform.
This moves the object’s current pre-transform values into the parameters and resets the pre-transform.
The opposite action is Clean transforms (see above).
As you apply additional operations to a geometry container object, Houdini will not automatically rename the object node. For example, if you apply a Twist surface node to the sphere, the object will still be named
twisted_sphere or some such.
To keep things organized, you may want to rename your objects as you go to have descriptive names (for example,
twisted_cube) instead of the defaults Houdini assigns based on the initial operation.
To rename an object, click its name in the network editor.