Houdini 17.0 Basics

Working with objects

On this page

Overview

Objects are the top level representations of things in the scene. They have location, rotation, and scale in world space.

Geometry containers and surface nodes

Models in Houdini are represented by Geometry objects at the scene level. Inside a geometry container object, geometry 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.

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.

Selection mode

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.

Path gadget

Click obj in the path gadget of a pane to jump back up to the Scene (object) level.

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.

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.

Parenting

Parenting makes a child object’s transformations (moves, rotations, and scales) relative to those of a parent object.

Connecting the output of object A to the input of object B makes object A the parent of object B. For example, to view the scene from the point of view of a particular object, you can parent the camera to the POV object so the camera transforms with the object.

Note

In computer graphics, we say that we "parented" B to A. This might seem backwards, but that’s the way it is.

An object which is parented to (that is, the child of) another object inherits the transformations of the parent object. Moving or rotating the parent moves/rotates the child as well.

You can also put objects inside an object subnetwork (use the tab menu to create a Subnet node at the object level). All objects inside the subnetwork inherit the transform of the subnet’s parent, if any.

Some other information is inherited from parent objects besides transformations. For example, motion blur can be inherited from a parent object. If the rendering parameters are not enabled for an object, they will be inherited from the parent object.

Each object can have only one parent, however the Blend object lets you blend between the transforms of multiple parents.

How to

To...Do this

Parent an object in the network editor

Connect the output of the parent object to the input of the child object.

Parent an object in the 3D viewport

  1. Select the child object in the viewer.

  2. Click Parent in the Modify shelf.

  3. Select the parent object and press Enter.

Unparent an object in the network editor

Disconnect the parent from the child.

Unparent an object in the 3D viewport

  1. Click the Parent tool on the Modify shelf tab.

  2. Select the child object(s) and press Enter.

  3. Select nothing and press Enter.

Keep position and child compensation

When you parent an object, its transforms become relative to the parent. This means the object might jump to a new position/rotation in the scene. From then on, changes to the parent will affect the position of the child, and changes to the child’s transforms will be relative to the parent.

There are two settings that can change these behaviors.

Keep position when parenting

If you turn this on, when you parent an object, Houdini automatically modifies its transforms so it maintains its old position and rotation.

Child compensation

If you turn this on, when you move a parent object, Houdini automatically modifies the transforms of its children so they keep their positions (instead of moving relative to the parent).

You can change both settings on individual objects, or turn them on or off globally in the "Objects and Geometry" page of the main preferences.

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

To...Do this

Set an object’s pivot point in the viewport

  • Press Ins or ", use the handle to move the pivot point, then press Ins or " again.

  • You can temporarily move the handle, which scaling and rotating is relative to, by pressing ', using the handles, and pressing ' again. This does not move the actual pivot point.

Set an object’s pivot point numerically

  1. In the parameter editor, click the Transform tab.

  2. Use the Pivot text fields to set the pivot point’s X, Y, and Z relative to the object’s origin.

Center an object’s pivot point

  1. Select the object.

  2. On the Modify shelf tab, click the Move Pivot to Center tool.

Move the center of an object to it’s pivot point

  1. Select the object.

  2. On the Modify shelf tab, click the Move Pivot to Center tool.

Pre-transform

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 can be 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.

To...Do this

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

Basics

Getting started

Next steps

Customization

Guru-level