Hey! Sorry for missing all the rigging fun (!) here… Unfortunately discord has been squeezed out of the every day happenings 😦 @TOAD$TORM One approach you could take to a planar lookat is to slightly bastardise the build in lookat constraint. The lookat constraint uses the same logic that you might be used to in the `maketransform(v@z, z@y)` vex function – i.e. the up axis gets corrected to form a rigid transform after the z and x axes have been determined. We can leverage that to keep the resulting ‘forward’ vector at 90 degrees to a given ‘up’ vector by switching them around: Set the ‘lookat’ target to the ‘up’ vector and the ‘lookat-up’ target to the position of the driver object – the result of which being that the constraint output swivels around the axis set by the ‘lookat’ input. By default this would give us a transform with the ‘Y’ axis pointing towards the driver, but fortunately the lookat constraint lets us set which axis points to ‘target’ and ‘up’ which will give us something like this
The other potentially nifty thing here is that because we’re setting the ‘lookat’ based up the DRIVEN objects own world space, we can modify the DRIVEN objects orientation and the constraint will continue to swivel around its own axis
And here’s the belated example of rigging a planar chain of more than 2 bones with a kind of ‘stiffness’ control that allows us to control how the solution is distributed between two-bone segments… Maybe it’s useful/helpful?
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20194211/14/19/lookat_zx_plane.hip
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20194211/14/19/zig_zag_bones_with_quasi_stiffness.hip