25 September 2020 at 18 h 28 min #17220
I am trying to create a small scene where I have some objects that will eventually move across the floor. However right now I cannot get my elastic objects to collide with the floor so they pass right through.
I also tested out a rigid sphere and that bounces on the floor like I would want / expect.
I think I am missing something fairly small if it is just in the python file, but I made the .msh files myself so I’m not sure if there is something important missing from them.
The scene can be found here: https://drive.google.com/drive/folders/1gQu4EyBqaihXskLhD09kKFOClSakJwRb?usp=sharing30 September 2020 at 18 h 27 min #17236
Could you help me with this or direct me to a resource that might help me understand this.
Arthur2 October 2020 at 0 h 05 min #17252HugoKeymaster
- SOFA Consortium
Hi @amackeith !
Sorry for my latency.
In general, capture collision when objects are moving quickly (large displacement from one time step to another) can be complex. Such a collision detection requires a appropriate/small time step to be properly captured or an alternative can be to use larger alarmDistance (distance starting from which the objects are detected close but not in contact, ie no force applied) and the contactDistance (distance below which a force is applied).
In your simulation, you are using Penalty method (see “default” in response) as a collision response. It is particularly sensitive and can easily get unstable. The force applied below the contactDistance is actually proportional to the interpenetration distance (using the contactStiffness) but does not take into account the physics of your objects.
You can notice such “unstable” behavior, despite increasing alarmDistance=4 and contactDistance=1.
I get a relative stable behavior by using:
– contactStiffness=”3000″ for the Arm
– massDensity=”0.1″ and contactStiffness=”100″ for the Body
Stabler approach relies on Lagrange multipliers, since they would solve the collision as constraints, taking into account the physics of each objects. In this case, there is no need to define (a bit randomly) and use contactStiffnesses.
I hope this helps.
Hugo2 October 2020 at 1 h 48 min #17253
I think Lagrange multipliers are the solution to my issue that will work for what I want to do down the line.
- You must be logged in to reply to this topic.