hi everyone. first post here, so i should probably start by saying hi. and there it is.
now to my question. i’ve been trying to model a mechanic arm for a couple of days and finally got around to rigging it. everything so far has been pretty uneventful and a lot easier than i thought, but i just stumbled into a bit of a problem i can’t seem to solve.
i need to have a piston working, and so far i’ve had no problems setting up the locked track constraints to make each part of it target the other. however, as you can see on the picture*, the pivot points are to the side of the piston’s actual center axis, which means that each part’s center point has to be different from that part’s pivot point. otherwise, either the constraint will target the other part of the piston from the piston point; or it will pivot around the center axis and not the actual pivot points.
i’m sorry if this all sounds too complicated. i tried to make it as clear as possible. i’ll try to upload some clearer pictures afterwards, but until then…
is there any way of doing this? this kind of piston is not all that strange, so i’m quite surprised i haven’t been able to find info elsewhere on the net or in this forum. i hope someone can help.
well, it could be the noob in me speaking, but… how else can i make them slide up and down each other? (now this starts sounding sorta NSFW, heh) because all i need is for them to do that while pivoting around the red crosses…
ok, so since the only way i know how to do this is with a track to constraint (or a locked track one) i’m still doing it that way. i created four emptys, two for the target points, and two for the pivots. in my head, it all looks great.
in the attached picture there are four states. in 1 and 2, c and d are children of b. in 3 and 4 c is still child of b, but d is parent of b.
one of the problems i’ve had is that, as you can see in 3, when making d parent of b, b changes position. this is not all that bad, though, since i can always change it back to it’s original position. but it’s still a nuisance.
the other problem is much more serious. you see, i need b to be child of d, since d is then going to be moved around by the piece to which it is attached. but when i do, the rig does not move as i want it to. as you can see in 4, when it is parent, d does not rotate as it does in 2 (which is how i want it).
so… is there anyway to achieve the state in 2 by making d parent of b? i know this sounds terribly complicated, but i’m completely halted and blank. any ideas?
i tried using your blend file, Pappy, but either it’s still not what i need, or i couldn’t understand it properly. i really appreciate the time taken though, and it is possible the problem is on my side, but yours is working much like mine, which is to say, not the way i need it to.
however, i do think that armatures may be the solution. i’m uploading one more image , this time of the armature i created. i’ve been messing around with this and i feel i’m getting closer, but it is still not working. i tried different combinations of constraints (copy location, copy rotation, limit rotation, etc), and turning the shoulder-short and elbow-short bones into hinges so that they could rotate independently from their parent bones (shoulder and elbow, respectively).
what i really need is that the angle between shoulder and shoulder-short is determined by the tracking of the other half of the piston, while the angle between shoulder-short and shoulder-long stays the same.
i know how to set up pistons. my question is much more specific than that. as you can see in the last picture, the piston is working, and if i wanted the pivot points to be centered on the tubes themselves, then it would be ok, but i need them on the side.
i’ll check that other post anyway. to see if there’s anything over there that helps.
i’m trying to make a model of the aliens powerloader suit, so i’m trying to be as close as possible to the original.
It’s still not clear what you want. Please show us the required result, not where your attempts are falling short.
A simple drawing will do fine.
Edit.
What is the short leg for on top and bottom? That part of the object is solid, just leave the bones disconnected like I did in the blend above, and you will have the offset you want. without the breakdown on rotation.
I updated the file above with more details included.
i’m sorry if i haven’t been clear enough.
maybe this will help.
EDIT:
if i try deleting the short bones and parenting the long ones to the shoulder and elbow bone i get the same result. i need the short bones and the elbow and shoulder bones to hinge, and these short bones to remain static with respect to the long bones.
i downloaded Pappy’s armature, but it still didn’t do what i wanted. so after crying a little bit, eating a late lunch and watching “when harry met sally”, i went back and started playing around some more, and pushing and shoving my model into doing what i wanted, and it worked!
i used a trimmed down version of my last armature, deleting the -short and -long bones. i then moved the centers of the segments of the piston to where the hinges were supposed to be and created two emptys to record the positions of the TrackTo targets.
i parented these emptys to the corresponding halves of the piston, and then created two extra armatures made of one bone each. these bones had a CopyLocation constrain to follow the emptys, and a TrackTo constrain to point to the empty of the other half. that took care of the piston, and all that was left was actually parenting the halves of the piston to these new bones, and… it worked!
i know the explanation is confusing, but so have all the other i’ve given as far as i’ve been able to get from the replies (sorry for that!). so i have uploaded my blend with the working armature here. rotate the forearm bone to see it in motion.
and thanks Pappy and Mike_S for the support. i would have given up on me a lot earlier.