4
$\begingroup$

I am trying to create a physics simulation, but I not succeed... What settings should I use for rigid body if I want to create an object inside in another object with physics properties (rigid body)

enter image description here

After I click on play the simulation goes wrong...enter image description here

Now the bottle is intersecting or passing through one another ...

I have tried:

  • checked the normals
  • keep the real life proportions (size, weight...)
  • applied all transforms for scale, position and rotation
  • set Origin > origin to geometry
  • increasing the Steps per second and Solver Iterations in the Rigid Body World settings (I tried with the maxima 1000 and 100)
  • set collision shape to Mesh and tried 0.4 or 0 as margins and source to final
$\endgroup$
1
5
$\begingroup$

For those who come here with this problem try setting the shape of the collision to mesh for the outside shape. Bottle Outside Collision Shape

For your problem, I set the collision shape to convex hull for the inner bottle and it reacted normally. I don't know how attached you are to that setting but that might do it. Bottle Inside Collision Shape

$\endgroup$
4
  • 1
    $\begingroup$ @diniulian I suggest this as the correct answer. Of course the other provides a solution, too - but changing geometry for physics, rendering with a different model parented to the rigid body etc. is too much effort if it works with a simple change of the Collision Shape. Physics work better the more basic the collision shape is. For example, with the cube set to Box you don't need much geometry. Mesh is the shape I use least, only where Blender needs to know there might be an object within the bounding geometry of another object, e.g. chain links or things like that outside bottle. $\endgroup$ – Gordon Brinkmann Dec 9 '20 at 7:01
  • 1
    $\begingroup$ Oh, and if there are still problems since your bottles are not very large objects, you might try to set the Collision Margin of the outside bottle from 0.01 to something like 0.005 or 0.001 - but actually there's no need to do it in this example, after you've set the inner bottle to Convex Hull it works as it should. $\endgroup$ – Gordon Brinkmann Dec 9 '20 at 7:05
  • $\begingroup$ @gordonbrinkmann - fair comment about it being a simpler solution, although it isn’t appropriate to all situations. Using Convex Hull does simplify the collision detection and is likely helping since you’ve then effectively got a solid bottle within the outer one - instead of thin surfaces colliding with thin surfaces and risking passing through, Blender can determine that the section of outer bottle is intersecting and push the surfaces apart in the correct direction. I guess both solutions need to be kept in mind but happy this one is the new accepted answer since it is simpler. $\endgroup$ – Rich Sedman Jan 7 at 17:42
  • $\begingroup$ But it's not "thin surfaces colliding with thin surfaces", the bottles have outer and inner faces and the directions in which to push them apart are clearly determined. But since there's nothing inside the smaller bottle, using convex hull on it is completely sufficient. In case it still doesn't work you can increase the number of substeps. Of course this does not apply to every possible rigid body animation, but it serves best for the given question since it works without error, is adequate for similar situations and you don't have to rebuild or add objects or anything like that. $\endgroup$ – Gordon Brinkmann Jan 8 at 7:48
4
$\begingroup$

The problem is with the outer surface of the geometry being too close to the inner. This is causing points that collide with the inner surface from being confused as to which side of the thin glass they should be repelled.

The solution is to simplify your collision mesh so that it only includes the 'inner' surface - with the normals all pointing inwards. This allows Blender to treat it as if it is a bottle-shaped cavity in a solid block of glass so that it is obvious which direction intersecting vertices should be repelled.

I took your example and simply removed the outer faces of the larger bottle and set the number of simulation frames per second to 240 and produced this animation :

bottle drop

For rendering purposes you should create the actual outer bottle and set up the collision collections such that it is not included in the collision of the smaller bottle. The collision mesh (consisting of just those inner faces) should be parented to the actual outer bottle so that it follows the outer bottle and provides the surface for the inner bottle to react.

$\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.