Creating two joints between two objects

I'm trying to recreate the knuckle joint. This joint is able to move far more vertically than it can horizontally. Is this possible? So far, I've been using two joints, with a dummy sphere in the middle that they both connect to, but this has now started to prove problematic for other reasons. It doesn't seem possible to just use one joint, because I can't set minimum and maximum positions for vertical and for horizontal… so the finger would be able to move left/right by the same amount as it can up and down. Obviously, this isn't correct. So, I figure the solution is to use two joints, one for the vertical, one for the horizontal, and connect both the bones to both. But this seems to result in the joint not moving at all. Any ideas?





Also, on a completely unrelated note, does anybody have any idea why cylinders are created pointing horizontally, whilst capsules are created pointing vertically?? Arrrghhh. This has been driving me crazy. And it makes no sense…

As there currently is no ODE joint which satisfies your needs (and I assume you are using the ODE impl), you need to use that dummy node in between. Attaching the two joints to the very same nodes correctly results in the behavior you described (not moving at all).

The proper solution would be to add a new joint to the native ODE library.



Regarding capsules and cylinders: It's the way ODE does it. Seems I have missed that, which is a shame because I don't want to change that now, because it would break some people apps. Sorry for that :expressionless:

Ah, right. That's what I thought. You see, the trouble I'm having with the sphere in the middle is the fact that sometimes the two capsules either side (representing the bones) will intersect with each other when the joint is bent to extreme positions. This causes the sphere to jump around all over the place, which is obviously not typical behaviour for somebody's knuckles. Any ideas? Ideally, if I need to have this sphere in the middle, I want it to be invisible, and have no mass… and therefore no effect on the rest of the model. Thanks for any help…

There is a setting for physics to ignore collisions between two bodies that are connected. I don't remember the method name (maybe bodiesCollide) but if I remember correctly, is set in the joint.