Rivet

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.

Rivet

Write your awesome label here.
The Rivet Node is an obj level node that is used to attach one piece of geometry to the surface of another piece of geometry.  This node is able to attach one piece of geometry to another by using points found within the target geometry's network.  Typically, it's best to use two - three points in order to determine the orientation of the attached geometry.

Houdini Docs: https://www.sidefx.com/docs/houdini/nodes/obj/rivet.html
Drag to resize

General Parameters:

--  Rivet Geometry:  This is the geometry network that you would like to attach something to.  The rivet node will dive into sops, find the point group, and use those points to attach the geometry along the surface.

--  Point Group:  These will contain the point ids that you would like to consider when attaching along the surface.  You either want to select two or three points here.  Depending on that, the Rivet node will either create an orientation that uses the two points to create an x direction (which will face the object in that direction) or it will use three points to determine an x direction + a z direction that's perpendicular to the plane that is defined by three points.

This, however, can become difficult to intuitively understand because the x direction for the geometry in world space is not the same as the x direction when orienting.  See the image below:

To make this X vector consistent, you can rotate the model by 90 degrees in Y:

If you select 3 points instead of two, then you'll end up with a different scenario.  In this situation, the three points will be used to generate an X plane for orientation, and then a Z plane will automatically be created in the perpendicular direction.  Here's what this looks like...

In theory, you might think these planes align with the world space planes that the attached geo is situated in.  However, this is not always the case...
As we can see, when setting the orientations this way, you will often need to change the rotations on the object in order to achieve the desired look that you're after.  The benefit of using 3 points instead of 2 is that this orientation will keep it's orientation when rotating the object that you're attaching to.  If you only use 2 points, the attached object will not rotate its orientation along with the geometry that it's attached to.

For this reason, it's usually advised to avoid these methods for determining orientation, and instead rely on using @N and @up point attributes in order to determine the orientation of the object.

--  X Axis Attribute:  By default, this is set to the "up" attribute, and it is not advised to change this default.  Instead, if something is not rotating in the direction you'd like it to, focus on changing the attribute value rather than changing this x-axis parameter.

--  Z Axis Attribute:  Likewise with the Z attribute parameter, do not change these defaults from N.

-- Point Weights:  This parameter determines where an object is placed when 2 or 3 points are selected.  According to the docs, "This parameter allows to fine tune the exact position of the rivet origin on the plane constructed from the first three points. For example, the weights (0.5, 0.5, 0) will place the origin half way between the first and the second point. Note that the weights should not sum up to 0. The points beyond the third one, if any, are assigned the weight values of 1."  In short, you can say how close you want the attached object to be to specific points that were used when determining the vector or plane.

--  Misc:  The miscellaneous tab has options that relate to previewing the orientation planes, viewport coloring options, and some optimization parameters.  The most important parameter to keep in mind is the "Cache Object Transform."  This is useful when you have heavy geometry or complex transforms that may slow down the performance in your scene.  If you're experiencing lag when animating and/or using this node, then keep this option on to ensure that it's not causing any issues.  All other parameters are best to played with as you see fit, but are not necessary in determining this node's functionality.


Drag to resize