Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  Weird behavior when changing resolution
#1
Hi,

I have a rope attached to two cubes and I tried to changed the resolution of the blueprint from 0.05 to 1. I expected that the behavior of the ropes will be just more fluid and accurate, but as shown in this gif, it looks like we just increase the stretching scale and other physical parameters.
Is this the excepted behavior ? In this case, why does the density of particles have this impact on the rope ?

Thank you for your time,
Reply
#2
(23-02-2022, 03:39 PM)lufydad Wrote: Hi,

I have a rope attached to two cubes and I tried to changed the resolution of the blueprint from 0.05 to 1. I expected that the behavior of the ropes will be just more fluid and accurate, but as shown in this gif, it looks like we just increase the stretching scale and other physical parameters.
Is this the excepted behavior ? In this case, why does the density of particles have this impact on the rope ?

Thank you for your time,

Hi there,

Adding more particles to the rope A) increases its massĀ  and B) increases the amount of constraints in it.

More mass and/or more constraints both lead to worse convergence, like in any existing physics engine. In other engines this will manifest as jitter/unstable behavior, in Obi it manifests as spurious compliance (elasticity). From the manual:
http://obi.virtualmethodstudio.com/manua...gence.html

Quote:In most cases, larger simulations (those that have more constraints, like long/high-resolution ropes) need a higher amount of iterations.

If you do increase rope resolution, you will also have to use more distance/bend iterations or more substeps, to compensate for the extra weight and amount of constraints.

Picture a stack of boxes in your favorite rigidbody engine: We have a stack of 5 boxes that behaves ok. If the stack had 20 boxes, they may start to penetrate each other because each box has to support more weight on top of it. To make things worse, there's more contacts between boxes: iterating 5 times trough all contacts was enough to propagate constraints trough 5 boxes in a single step, but it is not enough to propagate it trough 20 boxes. As a result, boxes start to "sink" into each other and the entire stack might fall apart. You might need to use more velocity iterations and/or lower the timestep to attain stability.

A rope is the *exact* same case, only instead of separating bodies (as the contact constraints in a stack) it tries to hold them together.

Note that increasing rope resolution may not be needed at all in your case. Surface collisions typically do a very good job of increasing collision detection accuracy for low-res ropes, and you can independently increase rendering resolution and overall visual smoothness using the ObiPathSmoother component: http://obi.virtualmethodstudio.com/manua...modes.html
Reply
#3
(24-02-2022, 08:10 AM)josemendez Wrote: Hi there,

Adding more particles to the rope A) increases its massĀ  and B) increases the amount of constraints in it.

More mass and/or more constraints both lead to worse convergence, like in any existing physics engine. In other engines this will manifest as jitter/unstable behavior, in Obi it manifests as spurious compliance (elasticity). From the manual:
http://obi.virtualmethodstudio.com/manua...gence.html


If you do increase rope resolution, you will also have to use more distance/bend iterations or more substeps, to compensate for the extra weight and amount of constraints.

Picture a stack of boxes in your favorite rigidbody engine: We have a stack of 5 boxes that behaves ok. If the stack had 20 boxes, they may start to penetrate each other because each box has to support more weight on top of it. To make things worse, there's more contacts between boxes: iterating 5 times trough all contacts was enough to propagate constraints trough 5 boxes in a single step, but it is not enough to propagate it trough 20 boxes. As a result, boxes start to "sink" into each other and the entire stack might fall apart. You might need to use more velocity iterations and/or lower the timestep to attain stability.

A rope is the *exact* same case, only instead of separating bodies (as the contact constraints in a stack) it tries to hold them together.

Note that increasing rope resolution may not be needed at all in your case. Surface collisions typically do a very good job of increasing collision detection accuracy for low-res ropes, and you can independently increase rendering resolution and overall visual smoothness using the ObiPathSmoother component: http://obi.virtualmethodstudio.com/manua...modes.html

Ok it's more clear, thank you a lot Sonrisa
Reply