Flipping follicles in ribbon IK



Got a case I can test with? Or at least describe your test, and where it was failing? Every time I’ve worked with it, it’s been solid so long as I had good UVs. Though I admit I probably didn’t test too rigorously because I just started using the tool that was built for the job.

Basically, I’m trying to squash this “Bad PR” for the PointOnPoly constraint because it’s the Right Way™ to do it, and if there’s something wrong with it, it needs to get fixed rather than worked around again. (Sorry if I’m being intense about this. When we were forced to make the XSI->Maya transition, I ran into this stuff a lot, and I got a little salty)

  1. Make a poly plane
  2. Auto UVs (resulting in a clean flat plane of UVs, and yes I deleted history.)
  3. Select one vertex
  4. Select a locator
  5. PointOnPoly constraint
  6. Deform the plane gently and moderately.
  7. Bad PR



Maybe I’m missing something but isn’t pointOnPolyConstraints only job to constraint the position at the vertex and not the normal? Jitter is probably a result or re-calculating against the mesh as its a worldSpace constraint. Is this a bug? - in theory the locator should not even rotate seeing as its point.

From the docs:

pointOnPolyConstraint is undoable, queryable, and editable.

Constrain an object’s position to the position of the target object or to the average position of a number of targets. A pointOnPolyConstraint takes as input one or more “target” DAG transform nodes at which to position the single “constraint object” DAG transform node. The pointOnPolyConstraint positions the constrained object at the weighted average of the world space position target objects.

It’s your job to build the normals/bi-tangent from other pop’s I’d assume.


huh… The first time I tried specifying the transform as the target, it just did nothing. The locator didn’t follow.

Now as I test it, it is stable, and animatable along the poly’s “surface”, if you are transforming the mesh.

(When deforming the mesh, still flips like mad.)


I tried with 2016.5, 2017, and 2018 (Don’t have 2016.0), and I can’t reproduce your test.
I tried with vertical motion and, shearing, along with locators at vertices ± 0.001 in uv space.
There’s something else going on here.


Use a curve and use a wire deformer on top of the mesh, this way the curve will provide the translation information, also the mesh will give the normal from wire deformer to the curve.