1
$\begingroup$

Noob help request please to carry this the last 2 yards to the goal line! I'm trying to rig 2 objects who move up and down Z independently, and a 3rd point that tracks them horizontally, at the same distance, in the Y axis as the 2 in Z move together and apart. Please see the attached Blend file.

I can best describe the requirements using our hands: Place your hands palms-together in front of you, (like praying). Obviously the dist between your wrists and your finger tips are fixed. Now, move either of your wrists, singularly, or together, away from each other in a horizontally straight line, while keeping your finger tips together. Notice how your hands eventually flatten out horizontally, palms down at the point where your hand size restricts any further wrist movement without moving your fingers apart.

That's what I'm trying to get to -- that V-shaped movement with the fingers as the linked pivot. I've got there most of the way. Please see the blend file attached. My rig gets the central finger touch-point to track the wrist movement very well as they draw together/closer, but it's the point where the wrists move apart is where the rig breaks down -- the pivot will not go/align itself to a vertical position in the Z, as I'd expect.

What am I doing incorrectly or missing please? Mark

enter image description here

$\endgroup$
  • $\begingroup$ If the 'wrists' are constrained to the horizontal, then the system is constrained to be symmetrical? That's OK? $\endgroup$ – Robin Betts Dec 19 '19 at 8:20
  • $\begingroup$ I suggest adding some images to illustrate this. $\endgroup$ – Ray Mairlot Dec 19 '19 at 13:05
  • $\begingroup$ @RobinBetts Not sure what you mean by "system symmetrical", (I think yes) but the bottom line is that either wrists 1 or 2 can move in Z, independent of each other, but when they do, then 2 needs to swing back and forth along Y so that 4 and 7 rotate around 3, 6 so that 2 is always equidistant from 3 and 6 respectfully. $\endgroup$ – Mark777 Dec 19 '19 at 16:07
  • $\begingroup$ @RayMairlot added image. Hope that helps. $\endgroup$ – Mark777 Dec 19 '19 at 16:07
1
$\begingroup$

For independent control from each end, you can use an IK chain.

  • Create an armature of 2 bones and a target bone, as an IK joint.
  • Create left and right controller empties, and a Pole empty to control the direction of bend in the bones
  • Directly Bone-Parent each bar to its respective bone.

enter image description here

  • Parent the entire armature to the left controller, and put a Copy Location bone constraint on the target bone, binding its location to the right controller
  • Parent all controllers to another Empty, to manage the whole rig.

enter image description here

(The armature is in a hidden collection:'Bones')

| improve this answer | |
$\endgroup$
1
$\begingroup$

You could do this with drivers and a bit of Pythagoras.

  • Construct your bars and linkage in the fully extended position:

enter image description here

  • The origins of both bars, Bar_L, Bar_R are at the centers of their sliding pivots, the centers of the large circles
  • The central Link (pink) is at World 0
  • All parented to an Empty,(the square) so all coordinates can be measured in the Empty's space, and everything transformed as a group.

Both bars are given a Locked Track constraint, aiming their X / -X at the link object:

enter image description here

To set up a driver, right-click in the X location field of one of the bars in the 3D View > N Properties region > 'Item' tab, and select 'Add Driver'. You have the option to open a Driver Editor on the selected object.

You can also set any split-off pane in the interface to be a Driver Editor with the Editor Type dropdown in its header.

enter image description here

There will be other ways of doing this, I'm sure. This way is prone to a bit of numerical error, but maybe it's good enough?

EDIT in response to query..

If, say, you wanted the left bar tip to slide along X while the right remains stationary, then you could drive the Empty to translate the whole rig to compensate for the inward/outward movement of the right tip. For instance, the Empty could be driven to be halfway between whatever other parts were squeezing the joint open and closed. Is that what you'd like?

.. This can be done with an IK chain, see other answer.

| improve this answer | |
$\endgroup$
  • $\begingroup$ This is very good! Just a quick question though... the need was for either of the bar ends to be able to be moved independently, and the middle link follow. Will your method allow for that... in other words, move the ends of the bars (Maybe even one at a time and obviously only towards each other from the max extended state) and the middle pivot will slide along Y to maintain the v shape. Yes? And where is the "driven Properties" window found from in the Blender UI? Many Thanks!! This is exactly what was needed with the one clarification ask above. $\endgroup$ – Mark777 Dec 20 '19 at 17:06
  • $\begingroup$ Perfect! the top one is what's needed...and the flexibility to flip direction is a nice side benefit but the bottom one with good old Pythagoras is something new so I learned from reading and looking it over, so got a 2-fer! :) Thank You!! PS: what tools did you use to get the really nice clean Bar objects with their nice clean round roles at the tips? $\endgroup$ – Mark777 Dec 20 '19 at 22:04
  • $\begingroup$ @Mark777.. I learned something, too .. my previous experience in rigging would not have allowed the top answer. The bars were made by starting with the inset circles, deleting unwanted bits, bridging edge-loops lengthways, cutting cross-loops.. all under mirror in X and Y. $\endgroup$ – Robin Betts Dec 20 '19 at 22:16
  • $\begingroup$ Ok, I completely get this, spent all PM trying to replicate, unsuccessful. Thinking my problem is my parts are not at the exact center of the world, and when I try to apply any of the constraints, like the the Armature child-of to the top empty especially, parts and bones fly off waaay out of alignment. I tried applying Transform All to the bones and parts before applying the constraints, but that made no difference. Likewise the limit constraints work on 1 empty (L) but not the (R). Loath to give you the blend because I really want to do this, but any suggestions fr me try? $\endgroup$ – Mark777 Dec 21 '19 at 8:52
  • $\begingroup$ Added file. really appreciate the time being taken. the objects are copied from my working blend file, so they are in exactly the location that's needed; also labeled them to match the image <img src="https://blend-exchange.giantcowfilms.com/embedImage.png?bid=RYpzdJWD" /> Thanks!! $\endgroup$ – Mark777 Dec 22 '19 at 16:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.