Deformation "Rivet" vs Result Mesh Rivet
So I've been using this technique for a long time and I never see other people mention it so I thought I'd do a quick writeup.
There are several ways to rivet a locator to a mesh in Maya but they are just ways of getting a position and orientation (ie: using a normal and some sort of tangent) from a consistent point on the mesh (ie: using a preset UV coordinate).
These a very useful for when you need a control to follow along with a complex deformation, like riveting the lip controls to the mesh so they follow all the deformations that effect the jaw.
They are also good if you want the shearing of a face to affect the orientation of a rivet. But what if you don't want that?
As you can see in the above .gif there are two locators on the upper lip. One of them is riveted using a pointOnPolyConstraint and the other is riveted by copying the deformer stack and the deformer wieghts of the closest point on the mesh.
The pointOnPolyConstraint Result:
The Deform "Rivet" Result:
When it comes to lips that's the desired orientation I want out of my rivet. So that they Y-axis of the control lines up with the direction the mesh will be pulled by the lip deformation. Having it be askew doesn't affect the deformation, it just makes the control interface un-intuitive.
It's hard to measure exactly what the difference in performance is because the result mesh one is lightweight but has to wait for the whole mesh to be recalculated, while the deformation "rivet" is not quite as lightweight but evaluates in parallel with the mesh.
Another minor benefit to this system is that if *really* needed your rivet to inherit scale, you can just use a nurbs patch like this to create your matrix. That's a very niche case but it's worth mentioning.