Description
A node that lets you rivet to polygonal meshes, nurbs surfaces, and nurbs curves. This lets you attach transforms to shapes.
The cvRivet dependency node can drive multiple rivets as shown below:

Node Reference
| Long Name | Type | Default |
|---|---|---|
| rivetTranslation Output translation value |
multi-point | 0 |
| rivetRotation Output rotation value |
multi-point | 0 |
| vertexId Rivet vertex id for mesh rivet. |
multi-int | 0 |
| upVertexId Vertex id of up vector for mesh rivet. |
multi-int | 0 |
| UCoord U coordinate to rivet to for surfaces and curves. |
multi-float | 0.0 |
| VCoord V coordinate to rivet to for surfaces. |
multi-float | 0.0 |
| calculateRotation Set to false to only calculate translation values. Can be used as an optimization. |
bool | true |
| upObject Matrix of a transform to use as an up object. |
multi-matrix | identity |
| useUpObject True to use an explicit up object. If false, the up vector is determined by: Meshes – An adjacent vertex. Surfaces – The surface tangent. Curves – A y vector (0, 1, 0) |
multi-bool | false |
| inMesh Geometry to rivet to (mesh, surface, or curve) |
generic | null |
Usage Notes
Create a Rivet
Rivets of each type (meshes, surfaces, and curves) are created with the same command. You can create rivets by selection or solely by command. For meshes, select one or more vertices. For surfaces, selected one or more surface points. For curves, select one or more curve points.
import cvRivet
cvRivet.create(shape=None, cvs=[], rotation=True, newRivetNode=False, upObject=None)
"""
Sets up a cvRivet node on a mesh, nurbsCurve, or nurbsSurface.
Mesh:
Select vertices on a mesh and run:
import rivet
rivet.create()
or
rivet.create('meshName', [2,4,53,3])
Nurbs Surface:
Select a surface point and run:
import rivet
rivet.create()
or
rivet.create('surfaceName', [[0.2, 0.5], [0.4, 0.3]])
Nurbs Curve:
Select a curve point and run:
import rivet
rivet.create()
or
rivet.create('curveName', [0.0, 0.3, 0.5])
Parameters:
shape - Name of the shape to rivet to.
cvs - List of cvs to rivet to. For meshes, this should be a list of vertex indices.
For nurbs surfaces, this should be a list of lists of uv coordinate pairs.
For nurbs curves, this should be a list of u coordinates.
newRivetNode - If True, a new rivet dependency node will be created to calculate the rivets. If False, an existing rivet node will be used.
upObject - Specifies a transform to use as an up vector.
Returns:
A list of lists of length 3. The first element will be the name of the rivet node.
The second element will be the name of the locator that is connected to the rivet.
The third element is the index of the rivet on the rivet node.
"""
Once the rivets are created, you can adjust the rivet attributes using the attributes added to the riveted locators.
Setting a New Up Vector Object
Select the riveted locator, shift select the new up object:
import cvRivet cvRivet.setUpObject()
or
cvRivet.setUpObject('rivetedLocatorName', 'newUpObject')

