Currently the cloth settings UI suffers from great inconsistencies and design flaws, caused mainly by the great amount of independently developed features added over time, causing the UI to be "patched together" in an unorderly fashion.
I think we are now at a point in time where we have a good view of what is required for the cloth UI to work properly. We can now make a new design, considering all the features that already exist, and organizing things with a mind on what is yet to come. This would not only benefit users, allowing them to find features more easily, but also developers who want to add new features to the cloth simulator, and currently don't have even a remotely logical place to put them in the UI in most cases.
Here is what I have found wrong with the current UI (this includes both objective issues and somewhat personal opinions):
- Settings are not categorized properly (related settings are spread across panels, and panels contain unrelated settings, we even have entire panels dedicated to a single feature):
- The panel actually called "Cloth" contains all the physical properties (mass, stiffness, damping...), but also a few settings that control vertex positions and shape (pinning, rest shape key, and the recent dynamic mesh feature).
- Other shape related settings (shrinking and sewing springs), are located in another panel, entitled "Cloth Sewing Springs", which is misleading seeing as shrinking isn't really related to sewing springs per se.
- Redundant check-boxes and check-boxes that control unrelated features (this is somewhat subjective):
- Check-boxes for pinning and for stiffness scaling are unnecessary, as simply not specifying a vertex group is enough to disable these features.
- Shrinking shouldn't depend on having sewing springs checked.
- It should be possible to have self-collision active without having object collision active, as those are not mutually dependant (this is probably the most debatable thing I am proposing).
- Inconsistent UI design for things that have the same behaviour:
- It is possible to "modulate" structural and bending stiffnesses with a vertex group, by means of the stiffness scaling feature (located in a separate panel from the modulated settings)
- Similarly, it is also possible to modulate shrinking with a vertex group, however the UI design for that is totally different, having min and max shrink values right next to each other, beside a vertex group field.
I have fixed all the mentioned issues by reorganizing the UI, and making some actual behaviour changes to the cloth logic code. Here I'll show my proposed design (patch of the implementation, for actual testing, is attached at the end), and of course I would appreciate it if all of you would chip in with your opinions on what is good about it and what you think should be changed.
Here is an image showing all the changes with my cloth UI proposal:
Finally, here is the diff you can apply onto master to test the new UI (I, of course, have all the changes neatly separated into individual commits, so if anything is to be merged, I can supply a separate diff for a specific change):
