1
$\begingroup$

I have a human model made of separate objects. Body, thighs, legs, feet, toes, etc. I got the body to collide with the toes and not pass through each other. However, I want the thigh and leg capsules to be placed so their ends overlap, and are able to rotate, as if they can pass through each other. But they must not pass through say the toes when they collide. I thought about Groups but no progress. The human will be able to feel around its body, so, setting limits won't stop it from "puncturing" itself with its finger at any area. Therefore a all-can-pass-each-other solution won't work. The calves behind the knees would, if both can pass each other like want, would actually need set limit rotations, but that works there.

$\endgroup$
1
$\begingroup$

Rigid bodies collisions do not allow the kind of control you describe so, instead, a different approach is required.

First model the system using non-overlapping rigid bodies - create the rigid bodies and enable collision and use Rigid Body Constraints to set up the relationships between them.

rigid body 'skeleton'

The constraints can be easily created using the 'Connect' button in the Physics tab of the 3d view Tool Shelf (T). However, for each connection you need to uncheck the Disable Collisions property in the Rigid Body Constraints panel so that the collisions remain active.

connect rigid body constraint collisions

To add the overlapping elements, create new objects and size and position them as desired and parent each one to the relevant rigid body (select the new object, hold Shift and select the associated rigid body, then press Ctrl+P and select 'Object') - they will now follow the motion of the associated rigid body.

Since the overlapping elements are no longer rigid bodies they do not affect the collision (and so can overlap) while the (non-overlapping) rigid bodies can handle the physics. You can 'hide' the rigid body 'skeleton' by moving it to another layer if desired - or simply set it not to render (click the camera icon against each object in the Outliner).

skinned

To take this a step further you could parent bones to the rigid bodies and have those deform a mesh that would act as a 'skin' to the rigid body skeleton. This is more complicated but would produce much more convincing joint motion for 'organic' characters.

$\endgroup$
  • $\begingroup$ When you say the line "you'd need each element to not collide with its immediate neighbors but to collide with every other object", are you saying a solution in this very line? If so, it doesn't explain how to do it. $\endgroup$ – Friendly Person 44 Jul 21 '17 at 1:40
  • $\begingroup$ @FriendlyPerson44 Sorry for the confusion - I was just trying to describe what you would need to be able to do to directly achieve what you describe. Unfortunately, the rigid body system doesn't provide any mechanism to provide such complicated collision rules. I believe the solution to this would be to have rigid bodies that don't overlap to act as the collision bodies and for that to then be 'skinned' with the actual overlapping elements. I didn't explain it very well. I'll provide a more detailed illustrated answer later. $\endgroup$ – Rich Sedman Jul 21 '17 at 10:06
  • $\begingroup$ @FriendlyPerson44 I've updated the answer - I hope this makes more sense now. $\endgroup$ – Rich Sedman Jul 22 '17 at 22:30
  • $\begingroup$ In my model, I already have a skin linked to bones linked to empties linking to rigid bodies with a gap. My concern, however, was the human baby can poke its finger through the gaps, if it chooses to do so. $\endgroup$ – Friendly Person 44 Jul 24 '17 at 0:20
  • $\begingroup$ @FriendlyPerson44 That wasn't clear to me from the question - you mentioned overlapping rigid bodies. Either close the gaps to smaller than the width of a finger or you could try adding 'shielding' passive rigid bodies set to 'animated', parented to the joints and in a different collision group - with the fingers also in that collision group. This way (since they're passive and set to 'Animated') they won't actively take part in the simulation but will still collide with the fingers, preventing access to those gaps. $\endgroup$ – Rich Sedman Jul 24 '17 at 6:37
0
$\begingroup$

In both BGE and Cycles, Rigid Body Joints (BGE) or Rigid Body Constraints (Cycles) have a option called "linked collision" that allows them to pass through each other.

If you make ball joints to go around problems in your project though, like fixing joints being loose or rising/dropping/repeat, then you won't have this option because you won't be using "joints" with such option...

$\endgroup$

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.