The Ultimate Houdini node reference

Visit the Node Bible

To learn more, please log in or sign up for free to explore the Node Bible.
Write your awesome label here.


Write your awesome label here.
Write your awesome label here.
Write your awesome label here.
Write your awesome label here.

The Transform SOP transforms the source geometry in "object space" using a transformation matrix

Drag to resize


    A great way to understand the transform node in more detail is by also visiting the course - Quaternions and Matrices.  In practice, you'll want to use the transform node whenever you're trying to transform something procedurally.  If you're not trying to do something procedurally, then the Edit node is better to use.  

Drag to resize

Main Parameters:


--  The group allows you to select certain prim/point ids along with any specifed group names which may be present on the geometry stream.  For more information about groups, please visit the node bible's Group entry.

Group Type:

--  Be sure that you specify the correct group type

Transform Order:

--  In what order would you like to apply the transformation?  That means, are you going to scale first, then rotate, then translate?  Or would you like the order of operations to be different?  This parameter may be particularly relevant when rigging - especially when it comes to the order in which something is rotated.


--  Moves your geo around in x,y,z


--  Rotates your geo in x,y,z


--  Scales your geo in x,y,z


-  Shear is typically used to calculate the Scale of something when using a 4x4 matrix.  Here you can specify any additional shear, but in practice, this doesn't get used very often... or much at all really.

Pivot Transform:

--  This changes where the pivot is located.  This is especially important when rotating because it will rotate everything relative to the pivot's location and rotation.  To manually change this, you can press "insert" on the keyboard, move around the handle in the viewport to where you want the pivot to go, and then press "insert" again to exit pivot edit mode. 


-  This area is particularly useful for rigging because it allows riggers to set a certain position, rotation, and/or scale as the "rest" or "zero" state for that object.  In other words, it's like a transform that you do to something before the main transform is applied.  This might be useful for, let's say, a rigger to bring something back to its rest pose by taking the difference between the current transform and the rest transform.

Move Centroid to Origin:

-- This initiates a script which takes the negative center bbox position of an object and moving that to the origin. 


--  Transforming doesn't just apply to the P, it can affect all attributes - such as velocity, normal, etc...  If for any reason you do not want to transform an attribute along with this translate, you can specify so here.

Recompute Point Normals:

--  It is recommended that you leave this off and use a normal sop instead.  The normal sop is a much cleaner workflow because it's easier to see when the normals are being changed.

Recompute Affected Normals:

--  If you do not Recompute point normals above, then this option will be available.  This only relates to normals which relate to the geometry specified in the group field.  So, if you want to make a partial selection of faces, for instance, you can choose to only compute those face normals by checking this on.

Preserve Normal Length:

--  With this checked on, the normal lengths are not affected.  In most situations, you want to leave this on.

Invert Transformation:

--  Inverts the transformation values.  This is useful when you want to remove the transform information that has been generated by another transform node... or by some other transformation matrix.

Output Attribute:

--  This creates a transform matrix that relates to the data generated by this node.  You can use this, for example, to apply the same transform elsewhere, or reverse the transformation later in the chain.  The replace existing, pre-multiply, and post-multiply relate to how the transform node deals with any transform matrix which already exists with the same name.  "Post-multiplication" applies the transform in the same way as if you wired multiple transform nodes to each other in the network.  I believe "Pre-Multiply" is like placing the current transform node above the existing xform data.

Drag to resize

Local Variables:

Sometimes nodes contain "local variables."  These local variables do various things and can be used with the "$FOO" syntax.  So, as an example, if you want to return the centroid z position of the input, you can say $CEZ.  The transform sop has some very useful local variables which might help you procedurally control its behavior.  Check out Jeff's video above for a good demonstration.

The centroid of the input
The centroid of the input group
The X extents of the bounding box of the input
The Y extents of the bounding box of the input
The Z extents of the bounding box of the input
The size of the bounding box of the input