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 are geometry (surface) nodes that 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 container objects with surface nodes inside. For example, clicking the Sphere tool on the shelf creates a new geometry container object named object_sphere1
, with a sphere surface node inside named sphere1
that defines the sphere geometry.
Note that the container object and the surface nodes inside the container object each have their own parameters. In some cases, the functionality of the parameters seem to overlap. For example, with only one sphere inside the container object:
-
The sphere surface node’s Center parameter sets the sphere’s location. This has the same effect as the container object’s Translate parameter, which moves the entire object.
-
The sphere surface node’s Radius parameter sets the size of the sphere inside the container, while the container object’s Scale parameter sets the size of the entire object.
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
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 the controls for the surface node inside the container with the display flag on.
You can click the Jump button on the toolbar to jump down to the geometry level inside the container.
Path gadget
Click obj
in the path gadget at the top of a pane to jump back up to the scene (object) level.
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 click the node and choose Dive into Network.
Press U in the network editor to jump back up to the container network.
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, look for opportunities to accomplish your goals by transforming objects before you consider 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.
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. 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 (child) transforms with the object (parent).
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 transforms of the subnet’s parent, if any.
Besides transformations, other information can also be inherited from parent objects. 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 only have 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 |
|
Unparent an object in the network editor |
Disconnect the parent from the child. |
Unparent an object in the 3D viewport |
|
Keep position and child compensation ¶
When you parent an object, its transforms become relative to the parent. This means that the object might jump to a new position/rotation in the scene. Changes to the parent will affect the position of the child, and changes to the child’s transforms will be relative to the parent.
The following settings in the Houdini Preferences (Edit ▸ Preferences ▸ Objects and Geometry) can change these behaviors.
Keep Position When Parenting
When you parent an object, Houdini automatically modifies its transforms so that it maintains its old position and rotation.
Child Compensation
When you move a parent object, Houdini automatically modifies the transforms of its children so that they stay at their current positions (instead of moving relative to the parent).
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 |
|
Set an object’s pivot point numerically |
|
Move an object’s pivot point to the center of the object |
|
Move the center of an object to its pivot point |
|
Pre-transform ¶
The pre-transform is like an invisible parent Null inside each object. The position, rotation, and scale 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 |
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 Pre-transform (see below). |
Make one of the object’s current position, rotation, or scale the “zero” state |
|
Delete the pre-transform |
Note 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 |
This moves the object’s current pre-transform values into the parameters, and resets the pre-transform. The opposite action is Clean Transform (see above). |