(24-10-2025, 10:24 AM)josemendez Wrote: Rotational mass = "how much material is there?" and can be understood as the thickness of the rod, as far as physics are concerned.
Compliance = "how soft is the material?", so it sort of modulates the rotational mass.
In other words: having a very thick but soft rod (high mass, high compliance) is similar to having a very thin but hard one (low mass, low compliance). Even if your material has zero compliance, making the rod very thick (high rotational mass) will make it very hard to bend.
Keep in mind however that compliance affects both linear and angular forces. Linear and rotational masses only affect linear and angular forces respectively.
Ok so it's actually a bit different than what I expected.
(24-10-2025, 10:24 AM)josemendez Wrote: No. External forces (collisions, wind, gravity, inertial forces, etc) and internal forces (forces that originate inside the object and keep its shape, such as the forces applied by constraints between particles) act on the exact same material (same mass, same compliance) so forces of the same magnitude must result in the same acceleration, regardless of where they originate from.
Think of a foam ball so soft that collapses under its own weight, but that feels hard as concrete when you try to sink your finger on it: this is physically impossible, objects must respond to all forces equally. Any other behavior would mean the object magically changes its mass or its constitutive model depending on the force affecting it, which doesn't make any sense.
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
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. On top of that it can even lose stability, because interation does not happen for all points at the same time.
In any case it does not work that way, so there is nothing to do about it.
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?
(27-10-2025, 09:03 AM)josemendez Wrote: Instead of applying a force to one particle/part of the object and attempt to use infinite temporal resolution to propagate it faster, a much simpler and accurate solution is to just calculate and the end position for all points in the object yourself: 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 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 velocities required to move all actors inside with it (accounting for euler, centrifugal and coriolis forces) and applies a controllable percentage of them instantly.
Yeah, this is why I propagate forces along the rod currently, however the previous idea with moving the solver itself is far from good, because if I want to simulate anything else, then those object would move too, plus when rod bends (imagine rod hitting wall, so it bends 90 deg to right) that force would push part of the rod into wall.
But overall, yes it's better to simulate those forces this way than fighting substeps and simulation itself, even if it's not fully "physical".
(27-10-2025, 09:03 AM)josemendez Wrote: I'm not really sure what stability has to do with this, could you elaborate on it?
When there are different masses, the rod (that is expected actually) behaves like it was thinner or thicker in some places, but this causes natural propagation to break sagnificantly.
The thing is that even if masses are equal you might encounter problem from attached picture, where the fact how constraints are resolved make some "breaking bends", and this is physical behaviour overall, but rod does not have infinite number of particles/atoms and pushing and pulling can cause those bends to resolve in oscillating way. I guess you can picture what I mean. In reality forces propagate with speed of sound, so this problem does not exist.
27-10-2025, 03:51 PM (This post was last modified: 27-10-2025, 03:54 PM by josemendez.)
(27-10-2025, 03:31 PM)Qriva0 Wrote: When there are different masses, the rod (that is expected actually) behaves like it was thinner or thicker in some places, but this causes natural propagation to break sagnificantly.
Oh, I see what you mean. While this doesn't have anything to do with stability (as in numerical stability), its a limitation of how dual descent solvers work indeed. Constraints involving particles with different masses bias the correction towards the particles with lower mass (which is physically accurate), so heavier particles receive a smaller percentage of the correction per iteration. However since the amount of iterations/substeps is finite this means lighter particles end up propagating less data to heavier particles, which makes convergence slower. Primal solvers have the same issue with stiffness ratios. Here's a good read on the subject: https://mmacklin.com/primaldual.pdf
Forcing specific mass ratios, by for instance clamping them is a typical (if unphysical) solution in games, this is what Unity joint's connectedMassScale is used for.
(27-10-2025, 03:51 PM)josemendez Wrote: Oh, I see what you mean. While this doesn't have anything to do with stability (as in numerical stability), its a limitation of how dual descent solvers work indeed. Constraints involving particles with different masses bias the correction towards the particles with lower mass (which is physically accurate), so heavier particles receive a smaller percentage of the correction per iteration. However since the amount of iterations/substeps is finite this means lighter particles end up propagating less data to heavier particles, which makes convergence slower. Primal solvers have the same issue with stiffness ratios. Here's a good read on the subject: https://mmacklin.com/primaldual.pdf
Forcing specific mass ratios, by for instance clamping them is a typical (if unphysical) solution in games, this is what Unity joint's connectedMassScale is used for.
Yes, exactly that. However very similar thing can happen with equal masses, because solver works the way you described.