I just noticed the new Soft & Hard solver component, and while the idea seems very applicable to my use case, I’m not able to get good results because I also need the damping ability provided by the Bouncy solver to keep the system stable. Is there a way to combine both of these features?
I’ve actually been looking recently at ways of improving the Soft/Hard solver.
I think in theory it could be very useful, but am not yet completely happy with how it works.
Currently it does one step with the soft goals, then a fixed number of iterations for the hard constraints, but I was thinking it could be useful to make it iterate the hard constraints until they are satisfied to some user defined threshold each time before output and another round of applying the soft goals.
I’m not sure what you mean about the damping though. I’d be interested to see what you are applying it to.
Also - I’ve sometimes found it can be helpful to connect the goals you want as hard constraints to both the soft and hard inputs - so that even for the soft step it prevents the hard constraints being too heavily violated, making it easier for it to converge when enforcing them strictly.
Thanks, that helps me understand how it works. Perhaps a flexible solution would be to allow each goal to have its own threshold, so hardness/softness becomes more of a scale.
I’m trying to create some geometry with very artificial constraints, not at all like a real physical system. Some of my custom goals suggest movement vectors that wouldn’t necessarily result in zero-energy, but at least try to reduce it with the hope that it will eventually converge to zero. If I use the regular solver the whole system often builds energy and explodes. I’m using BouncySolver instead, not to animate it with bounciness, but because its damping parameter allows me to quell some of the excess resonant energy in the system and maintain stability.
Another strategy I sometimes use if I have a goal like that (that doesn’t necessarily minimise energy at each step), is to add other goals to slow things down.
If things are all happening on a plane, adding an OnPlane goal (even if they would already stay on that plane without it) with a very high weighting will have the effect of slowing all the other goals down.
Alternatively, applying anchors or plastic Anchors to all the points, and slowly reducing their strength down to zero can be a way of guiding the system down to a gentle landing where it might otherwise start bouncing around too much.