I mean, any 3 points can be built into a barycentric coordinate system, so there’s no need to explicitly define some intrinsic.
And I’m 100% sure that any mesh connection just processes input coordinates into barycentrics, then just weights between the 3 points of whatever triangle you’re binding to. Luckily (unless you’re moving your bind point around) this only has to be done once, and the cached values can be reused.
Controlling a connection directly via barycentric coordinates could be useful sometimes, but the manual process of inputting them would be incredibly annoying.
Generally, uv coordinates won’t change their “meaning” as easily, or as often as verts, faces, or edges. This is because it would be a real pain to have to repaint a texture every time the mesh changed. So once a map has been painted, we generally match our uv coordinates to the map instead of the other way around. This means that our coordinate that sits at the tip of the nose will stay at the tip of the nose so long as we’re using the same map. Then under the hood, it probably finds the uv triangle containing your sample point, figures out the corresponding mesh triangle (and caches that data), and uses barycentrics to apply new motion.
But the best way IMO is the ProximityPin because instead of sampling a uv point from a uv layout, it samples a 3d point against an orig mesh. And the overall pose of a mesh (especially once it’s made it into rigging) should be static. But if it’s not, then some easy constraints to guide joints turn it into a fully procedural setup that will require no numerical tweaking, or custom UV sets. You can sort of do this already by getting the uv coord from closestPointOnMesh node, then connecting that to a UV based constraint. But using the ProximityPin is easier and way more efficient when you’re doing multiple connections.
Also, I’m totally glossing over the crazy algorithms you have to use to find a containing triangle in UV space, or a closest point in 3d space in a reasonable amount of time.
In other words: Unless you’re doing something very specific (or just trying to learn!) then we have some great tools already that you should probably try to use before rolling your own solution.