27-10-2025, 09:03 AM
(This post was last modified: 27-10-2025, 11:55 AM by josemendez.)
(24-10-2025, 04:29 PM)Qriva0 Wrote: Ok so it's actually a bit different than what I expected.
Well, physicly speaking what you said is right, but I try think in simulation reality, what I mean here is that simulation has not the same capabilities as real world, and as you said before reality has technically infinite number of substeps, while mine has got like 16
True, but most physics engines strive to get results as close as the real world as possible instead of straying away from it. We can't have infinite substeps, but we can ensure the accelerations resulting from forces are accurate - and this is important to ensure meaningful results.
You can get behavior you're after by modifying Obi: you'd need to store separate masses from internal and external forces (or just collisions, if that's what you're after) and use them when appropriate.
(24-10-2025, 04:29 PM)Qriva0 Wrote: I thought I could combat a bit problem about propagation of forces and rigidity, because simulation requires more steps, the problem is that in reality I could make quite bendable plastic cable it's bending properties would not affect how it behaves when pulled, while in simulation increasing bending also changes how forces move along the rod, because angles and directions are different.
Tinkering with masses/compliances won't lead you anywhere imho, and increasing the amount of steps will only alleviate the issue but will never resolve it. Propagating forces at the speed they do in the real world is just impractical - it's so fast it can be considered instant, you'd need infinite temporal resolution for this.
Instead of applying a force to one particle/part of the object and attempt to use infinite temporal resolution to propagate the resulting changes in positions/velocities faster, a much simpler and accurate solution is to directly calculate the end position/velocity for all points in the object assuming instant propagation : Eg. if you must move an object from position/rotation A to position/rotation B, derive the position deltas required to take every point in it from A to B and apply them instantly/in a single step. You may also modify velocities to account for drag, coriolis, etc.
With this solution you don't have to wait for the force to propagate across the object during many time steps, and it will behave in a perfectly rigid way. This is what ObiSolver does to calculate inertial forces, and why I suggested using them instead: when the solver moves, it calculates the linear/angular position and velocity deltas required to move all actors inside with it (accounting for euler, centrifugal and coriolis forces) and applies a them instantly.
(24-10-2025, 04:29 PM)Qriva0 Wrote: On top of that it can even lose stability, because interation does not happen for all points at the same time.
I'm not really sure what stability has to do with this, could you elaborate on it?
kind regards


