I’m trying to create a cloth dynamic chain mail cape made from buttons.
I have a hidden polygon cape and a hidden collider. Using mograph I have cloned the buttons onto the polygon cape.
I now have a realistic looking simulation (using cache) except that there is still a slight jitter and the buttons rotate a little. I have tried everything in the cloth tag settings to fix it (increasing iterations in tag/expert tabs seems to be most important but I can’t eliminate it and higher values didn’t seem to make it better).
Any suggestions? Would using a copy of the cape using a surface deformer help?
Cheers
Chris
I HAVE A ZIP TEST FILE BUT AS USUAL I CAN’T UPLOAD IT - CAN YOU PLEASE SEND ME A LINK
I have set the Drag parameter to 5% and increased it at the end. Ideally, for this case, the amount should be increased when a slow down is needed and decreased when new energy is given to the Cloth. Like an echo of the bodies velocity.
I have set as well the Up vector for the buttons and moved them below the Cloth set up.
The amount of the needed Drag, as well as Friction, will undoubtedly have a need to be adjusted to your specific art direction.
As mentioned, the Drag should increase when the motions stop, to drain the energy. Here is an animated parameter that goes more closely along with that though.
Independent, but just to show one more idea, I used the polygon center. Since each polygon is based on this model on four points, the four points become averaged than accumulated in their movements. I used only one Cloner here, as it shows the effect clearly.
There is a tiny bit of movement left, perhaps where it is needed, increase the Drag needs to pull more energy out. I would not recommend having a high value consistently set, as that would delivery a fabric like moved like in a substance.
Also I’m animating the character using the advanced biped character and it’s made of screws and found objects. I used a parent contraint tag to fix objects to joints - is that reasonable. The rig seems to work fine.
BTW do you have any tutorials on efficiently animating/keyframing with the advanced biped rig. Not much on the web.
Hi Chris, thanks so much for the feedback, very much appreciated.
I’m glad that worked.
I hesitated to mention it, but the Cloth Cache tool might be useful for final mini adjustments.
I will have a look into it this evening, but I’m not aware of any best practice keyframing series.
As I write in a forum, I like to say it so anyone can follow, and I hope skilled people get not bored with it either.
Two things will give an idea about it. If you ever have used Illustrator, or just splines to stay in Cinema4D, the fewer points are given, the more power each point has. Points or keyframes that are pretty much exchangeable in terms of information-philosophy (the art of setting keyframes is the method of defining values and the change thereof. Of course, the Reduced modification mode allows to set or use just a few keyframes, even there are uncounted on an individual track. Speaking of spline points, the F-Curve manager is the place to apply one’s own information philosophy. This provides the elegant part of the work.
The other skill that is proper training for keyframes is given in the art of Roto. At the moment you have footage from an actor, for example, the shape of each part of his/her body needs to be placed/changed over time. To see after a while, the KEY position allows as well to be efficient in this. Storyboards are helping for the main idea you need to visualize, then find the points in time where a change needs to happen. While being slowed down in Roto work, a feeling of timing and points of change become familiar.
Any animation is change over time, as you know. There are critical points and interpolation.
Any keyframe that is not changing anything is perhaps not needed, except for allowing more details over time, but then it would change something. I hope that was not “mentioning the obvious and wasting your time.”
Yes, this looks like a massive, but flexible, armor for that little guy. I can feel it. Well done.
If it moved more, it would pull a lot of attention away from the character itself.
Thanks. Trying to get that feeling of weight with a little flexibility is key.
A question on animation and order of objects.
The character uses the advanced biped rig and elements (like screws) are bound to individual joints using constraint parent tags (including the button cloth). Are there any ordering issues I should be aware of?
In the file that you have shared, the cloth is on the lowest position, that should be above the cloners. Yes, Caching will prevent problems. But also, before the caching, make sure that the position as well the priorities are in order.
If you have the same priority, the top elements are calculated first, if they depend on the object below in the Object Manager, you will see a delay.
The lower the priority, the earlier they get calculated. Which means, if an object needs the information from a higher priority object, the information is not fresh, and it will be taken from the previous frame. Constrains can’t be cached, and their priority must agree with the source objects priority (Higher).
The flow of information can be sketched on a piece of paper like a tree (trunk, branch, twig, etc.). Some things built up, some not, and there are as well chain reactions, or again, caches. As each scene will be set up individually, you have to get through that. Instead of hoping for the best, integrate this in your muscle memory, and keep the scene organized. Sadly there is no short-cut nor a little trick to keep it working anyway.
Thanks for those videos although I’m still a little confused with the character object. Should it come before or after the geometry/constraint/cloth objects?
Remember, I’m using parent constraints to attach objects to joints - Would it be useful to see the file? If so please send me an upload link.
another thing I found was that the cloner buttons lagged behind the cloth. I fixed that by changing the cloth simulation tag from generators to dynamics (still 1000 so that the cloner object would calculate after the cloth - was that the best way to do this? I don’t see a way to change priority of cloner objects.
Joints can be driven in several ways, but they must be moved first to make the Weighting, then the Skin object working to move the mesh, the Cloth object can work. However, a Point Cache created for the mesh shares the moving mesh information Initially (even before Animation). All of that was not your question, but kind of related.
Whatever moves the joints, will set a specific position in the processing hierarchy: Priority Hierarchy. If the joints are just driven by keyframes, anything that is set in the Expression Level will get frame-based information. (… which is how it should be)
Also here, the Priority settings of the Constrain tags will be an essential part to keep an eye on.
I can’t stress enough to cache things, especially when you have such long dependencies (information pipelines/flow).
Please cache the Cloth, it will be rather a problem than not, to have no cache on it. It is easy to reach the end of a hierarchy while in the middle of the information flow, which concludes always in a problem. It cycles only once per frame (Don’t get ‘fooled’ by the editor refresh). Cache it, in the same way the priorities process the information, so you don’t ‘bake’ stuff into that cache that lags behind. I hope I make sense here, while trying to be short.
If you have objects via constraint on the joints, these objects might be Generators by itself (Icon color: Green!). Those will not really work on anything (i.e., Collision) if Cloth is just set lower.
Again, you need to draw this on a piece of paper, to really see the flow of information. This is key. It will also be essential to check this in each project. Things change or get mixed differently. Sometimes it makes even sense to bake it out as Alembic.
I have sent you a link. I’m happy to look into it.
I was caching the cloth but the cloner was lagging until I changed the cloth expressions from generators to dynamics so it calculated before the cloner. Did the same on your test file and it worked.