Rigid body dynamics - problems with jittering
I am not very experienced using the Bullet dynamics system, and I have come across a job project where I am setting up an animation of a bracelet that has several decorative parts hanging off the main bracelet part, and figured the best approach is to use dynamics to simulate them moving realistically when rotating the bracelet.
However, I am really struggling to make this work. I have set up a simplified test file where I have a Collider object in the shape of a torus acting as the attachment part on the bracelet, and then a hanging "tag" dynamic object.
I have tried adjusting the Collision Margin, Scale and Steps Per Frame in the Bullet Expert settings , and played around with a massive amount of different settings in the Collision/Mass/Force tabs on the Dynamics Body tag of the dynamic object, but none provide a stable solution. The dynamic object either jitters or starts tilting oddly, seemingly regardless of settings chosen.
I have read that scale might be an issue here, but changing scene scale is not really an option as that would cause a whole lot of headache with other scale dependent parts of the scene.
I have attached my current test file. Any help with figuring this out would be massively appreciated as I have really hit a wall here and I see the deadline on the horizon.
Thanks in advance!
Dr. Sassi last edited by Dr. Sassi
Thanks for the file!
First, at Frame zero, hold down the L key and move the axis of the medallion where it rotated. This is needed for later.
You can switch to a tiny unit for a moment.
Then cache the Bullet setup.
Go back to your original scale.
There are specific settings in the Project> Bullet> Advanced> Steps
That needs to be explored, but I would do it differently.
The critical problem is that it is pretty much half of the time an issue that the result is not expressing what art direction needs.
With the Cached solution, call up Cappucino (Shift C)
Then start the process and click (HOLD!) the object's axis in question.
This produces all the Keyframes values that Dynamic has defined in the cache. Now the Dynamic Tags can be disabled.
One option, use the Track Modifier to smooth the track.
In the F-Curve timeline, select all the keyframes of that object.
Use: Function> Delete every nth Frame, set to 2.
Select all the Rotation keys and use the function again.
While all keyframes are selected, set the Tangent Preset to Auto Weighted in the Attribute Manager.
Another part of exploring could be the F-Curve> Reduced Modification Mode. This allows you to get significant keyframes from a single channel directed.
This hybrid approach seems the fastest to get to what you want. Dynamics, especially if way off the scale, will take a long time to produce this precision. Any change is an adjustment, especially since the object's rotation point works.
Yes, it is possible with Dynamics. If the motion is apparent, perhaps some other options will support this, like Simulate> Bullet> Connector.
Here is your file back
Enjoy your Sunday
Hello Dr Sassi!
First off, massive thanks for the very quick reply (on a sunday no less)!
I see. My issue with the solution is that my part of the process is more preparing the scene for an animator/motion designer who will take it over and do final movement and such. What I'll do is have a chat with him and we will figure out how to move forward with this.
Perhaps even some hand animating will be easier to get an art directable result here. Maybe combined with a setup where the medallion part has a Constraint tag to help it be oriented downwards.
Fingers crossed that we will be seeing some improved rigid body dynamics in Cinema in the near future of course as part of the new improved dynamics system.
Anyway, again big thanks for taking the time!
Dr. Sassi last edited by Dr. Sassi
Please have a look below:
This is a straightforward setup with little change from the default.
I think it is fair to say that it solves the motion of the Torus nicely.
In your file, you fight the resulting rotation with tremendous values. This means the needed rotation to discharge the incoming force cannot unfold.
Here is my point about Art Directing. You like to have Dynamic do the work for you but limit it to do your will, while this leads to these jumps when the energy can't work as it should. So it jumps at one point.
The example in an earlier post tried to follow your art direction but to heal the unwanted effect it caused.
It is common to try to solve animations with Dynamics and then want to have the dynamics not behave as they should. I get that, but there is a limitation when one idea counters the other. So values get increased, settings explored, and often only the invested time increases, not the quality.
Hence my suggestion is to do a Hybrid. A setup like this will swing, and to "freeze" the rotation is easier to do with F-Curves, IMHO.
Hello Dr Sassi!
Thank you very much for the files and explanation.
In this particular case I spoke to the animator and we decided to solve it with only keyframes, but I will definitely look into your solution and play around with your suggestions anyways for future use.
Dr. Sassi last edited by
Thanks for your openness and for mentoring your team. It is always a balancing act.
The idea of collaboration and how to operate along a pipeline while including multi-disciplines should be worth a more extended discussion.
It is like the teamwork between a Rigger and a Character Animator. How to find the right balance, to have each field working efficiently, but not cutting into the comfort of the other. When one likes to animate the character, there should be no long search for the right parameter, and distracting so from the target, creating an expression should be the only concern.
With Dynamics, there is no default concept to rig it for the next stop along the pipeline, like setting up a few sliders in a User Data Interface to hide the complexity involved. (Time to think about it.)
My best wishes for your project