4
$\begingroup$

I am beginner in Blender. When I try to make a bouncing ball (UV sphere marked as "soft body") on the Plane (mark as collision), sometimes the ball falls through the plane.

Or when it works correctly and then I try to extrude or modify somehow the plane, the ball falls always through the plane, even though the plane is marked still as "collision". What am I doing wrong? Thanksenter image description here

enter image description here

$\endgroup$
  • $\begingroup$ Could you include some screenshots of the soft body settings for the ball and the collision settings for the plane? $\endgroup$ – Duane Dibbley Jan 9 '18 at 21:39
7
$\begingroup$

The most likely problems are either due to flipped normals, fast moving soft body (moving so fast as to jump through the plane before collision can be detected), or inappropriate Collision settings.

The first thing to point out is that the collision is an approximation. The soft body solver steps the soft body vertices through a 'step' and compares the positions to any collision surfaces. If the new vertex position is within one of the collision 'zones' (ie, the 'Outer' and 'Inner' settings on the Collision panel) then it will be repelled by the surface on the next 'step'. If the step size is too large for a fast moving vertex to be detected then it can pass straight through a surface unnoticed. To resolve this issue you can tweak the Soft Body Solver settings - drastically increase the Min Step setting and the steps will be considerably shorter, resulting in the fast moving vertices being more frequently sampled and, hopefully, hitting the collision zones.

The next problem is with flipped normals. If a vertex approaches the opposite side of a surface then instead of hitting the surface it will be drawn through the surface to the other side. The normals should (almost) always point to the "outside" of the object so as to repel collisions to the exterior.

The final problem is setting the Internal collision bounds larger than the depth of the object. The collision settings are in scene units (so, by default, Blender Units). The default 'Inner' collision settings of 0.2 are only appropriate for objects that are more than 0.4 units in depth. For example, a cube with 0.4 units per side. This would mean that down to 0.2 units below the surface would be considered for repulsion from that closest surface but anything below that would be repelled out of the other side. If you set collision 'Inner' greater than half the depth of the surface then you start to get strange results where the top surface collision zone interferes with the opposite surface collision zone. IF the Inner is set to more that the total thickness of the object then you can end up with a situation where vertices close to the surface are drawn through the surface as they are within the collision zone of the far side of the object!

collision

So, follow the following rules :

  • Keep Normals pointing 'out' of the object
  • Set Min Step high enough to ensure any vertex motion is not too great per step - faster objects require more steps but more steps take longer to calculate
  • Carefully select collision depths to avoid overlapping zones - avoid Inner being more than half the minimum thickness of the mesh.
$\endgroup$
  • 3
    $\begingroup$ Hello, thank you very much, your answer is great. The problem was with flipped normals. I changed the direction and it works as it should :) I am really brand new in blender, it would take me years to work it out without your help. Thanks $\endgroup$ – Silvia Jan 9 '18 at 23:52

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.