After working a while in the Cloth Room, people feel that mesh structure and mesh density make a difference. The 3D mesh of the cloth element in the sim does affect the result, the dynamic behavior of the cloth and the calculations themselves. Some believe that the mesh in a way is translated to a mathematical simulation structure. Such a structure, in mechanical simulations, can be thought of as a “ball-and-spring network”. The balls take mass and some friction and damping, the springs take stretching and folding forces and the like, and some damping as well.
I’ll give the mere details of such sim structures in Crash Course on Physics… (part V), and present some summary in this chapter.
In the meantime people question: will the mesh be triangulated first, will it be subdivided first, or refined during the process when necessary? The answer, to my understanding, is: NO. The 3D mesh IS the structure. The vertices of the mesh become the balls, the edges become tension springs that resist elongation (so you’ve got to apply a pulling force), and between two adjacent or opposite edges we can find torsion springs that resist rotation (so you’ve got to apply torque). That’s about it. Period. Cloth has no equivalent for compression springs which resist shortening. I cannot shorten a cotton thread by pushing against its ends, can I?
So a coarse mesh with large polys, long edges, a few vertices will become a sim structure will long springs and large, heavy balls. And a fine mesh becomes a structure with many small balls and short springs. And tension springs are stiff, they cannot bend themselves, they can stretch only and shrink after being stretched first. Un-stretching is a better term better I think, they cannot really shrink but behave like fixed size rods when relaxed.
The connections between balls and springs are very flexible, but the springs around a ball are interconnected by torsion springs which limit the ball-and-spring poly in its deformations. I’ll discuss a load of examples further on, but the bottom-line for now is: if the edges lack in the 3D mesh, then the tension springs will lack in the sim structure, and the interconnecting torsion springs will be absent also. As a result, various mesh structures will behave different to various deforming forces.
Translated to Poser Cloth Room parameters, the balls take care of:
- The dress’ weight, aka: mass, aka: Cloth Density and so the interaction with gravity
- Air damping, aka the interaction with wind and atmosphere
- Friction (Collision, Dynamic, Static and Self-), the interaction between cloth elements and the collision objects when not colliding but sliding along each other.
These parameters themselves will affect the behavior of the cloth, but for given parameters the mesh density and structure have no further impact. I’ll discuss these parameters in chapter Cloth parameters – sim side and Cloth parameters-real world. They make the cloth move, and might generate the forces for deformation, but do not determine the deformation of the cloth by themselves. These parameters, represented by the balls in the simulated mechanical network, represent the interaction of the cloth with its environment.
The springs cater for:
- Fold, Shear and Stretch resistance
- Stretch damping
These do determine the deformation of the cloth. The effect not only depends on the values of the behavioral parameters but also depends on the mesh density and structure. Given values will result in different effects for different meshes.
In addition:
- Density and Air Damping are allocated evenly over the balls. Frictions are applied to those balls that make contact with the collision objects.
- Shear and Fold Resistance are allocated evenly over the appropriate edge-pairs in the spring net. Quads, Hexes and X-tris have equal corners per vertex (quad:4, hex: 6, X: half has 4, half has 8 corners per vertex). Diagonal and Zigzag have 6 unequal corners per vertex: 2x 90° and 4×45°.
- Stretch Resistance is allocated evenly over the edges, proportional to the edge length. So all springs stretch with the same percentage when the same force is applied. Mind that diagonal springs are longer than straight ones.
Forces in short
Stretching – means enlonging the tension spring by pulling. When it’s stretched, reducing the pulling force shortens the spring until it’s relaxed again and it won’t shorten any further. When I pull, the spring pulls back. As long as I pull harder than the spring, it keeps on elongating. When it’s got longer, it pulls harder until we pull equally hard (in opposite directions) and reach equilibrium. From natures laws, the forces applied are then proportional with (that is: a constant times) the relative elongation of the tension spring. Relative, so it does take a specific force to elongate the cloth x%. If the same force is applied to a longer spring it will stretch more in cm but an equal percentage. The constant involved is the Stretch-Resistance.
In a mesh, stretching causes two adjacent polys to stick in the same plane.
Folding – happens when the stretching springs cannot shorten any more, hence: the cloth is relaxed. Now the tension springs start behaving like incompressible rods, and any pushing will force two adjacent polys to go out-of-plane. The cloth is folding. But the two opposite edges are connected by torsion springs, which resists any change of angle, with a force proportional to the angle of deformation. The constant involved is the Fold Resistance of the cloth.
In life, there are limits to folding and stretching cloth, as it may tear, the threads in the weave may snap, there is mainly resistance against folding at high speed but not when doing things slowly, and the folding springs might cause vibrations which require damping as well. Poser does not support all that.
But Poser does support the concept that Folding and Stretching are opposite phenomena. I cannot stretch and fold the cloth in the same direction (or better: opposite directions) at the same time. As hanging curtains show, I can stretch vertically (weight, gravity) and fold horizontally. For folding vertically, the gravity has to be countered first.
So I put my hands on a piece of cloth on the table, and move my hands in opposite directions, away from each other. That’s stretching. Moving them towards each other: that’s un-stretching first, then it becomes folding.
Shearing – happens when I fixate the cloth with one hand, and move it up or down with the other hand. A quad-poly will deform in a straightforward way: the angles between adjacent edges change though but all edges themselves keep their length. Note that this is the opposite of Stretching and Folding, where – for a quad poly – the angles between adjacent edges do not change but the edges change length (stretching) or not even that (folding). The counterforce by the cloth comes from torsion springs between the adjacent edges, they apply a force proportional to the angle of deformation. The constant involved is the Shear Resistance of the cloth.
In life, shear resistance in weaves is the result of the friction between adjacent threats in the cloth, depending on material, thread thickness and weave tightness. When this friction is high, you will have extra trouble bending and stretching the cloth as well, but it does not work the other way around: tablecloth does hardly stretch but shears well. And when cloth stretches easily one might expect easy shears too. This certainly holds for knits, but non-woven cloth like leather and rubber might be different. Shear for non-woven is something for the micro-fibers and molecules that make up the stuff.
Thicker threads
Let’s do some additional real life stuff: what happens when similar cloth gets made from threads which are twice as thick (diameter). For the thread itself, Weight per unit of length, Stretch Resistance and Shear Resistance will quadruple (2nd power) while Fold Resistance will octuple (3rd power (*)). But I will only need half of the amount of thread to make the same size of cloth, so finally cloth density, stretch- and shear resistance will double while fold-resistance will go fourfold: thicker stuff behaves much stiffer.
(*) folding a thread actually implies stretching the core and then make the bend. With a double-thick thread, the stretching itself goes against a four-fold cross-section and hence a fourfold stretching force, and against a doubled amount of stretching to make the same folding bend. That makes eight-fold. Also the bend itself faces a fourfold cross-section and a doubled amount of stretching. Doubling thickness makes eight-fold counterforces.
So, density, shear and stretch resistance behave the same when comparing A) one piece with double thick tread and B) two thin pieces of cloth put together. Relevant, as the latter occurs when I fold a piece of cloth at the edge and stitch things together to make a neat edge to a T-shirt or table-cloth or alike. Folding behaves different: two non-attached (!) thin layers have half the folding resistance of one thick layer. So my T-shirt edges might do something in between, when doubling cloth thickness I can go threefold here. How about the other parameters?
- Air damping: thickening the thread will double the distance air has to travel around it, but we only need half the threads so cloth out of thicker threads will experience the same Air Damping. A double-layers piece of cloth on the contrary will experience double the Air Damping as the air has to flow through both pieces.
- Stretch damping: any thread in a weave is made of many thin threads working in parallel. Doubling the thickness of a thread means a fourfold of thin threads in there, so I need four times the force to stretch the thread, and it loses energy four times as fast as each thin thread just continues its behavior. So as I need half the threads to make the same cloth, like stretch resistance, stretch damping will double when the cloth thickness doubles, whether it’s caused by thicker thread or by multiple cloth layers.
- Friction: in Poser, the parameter values are determined by the materials the cloth and collision objects are made off, and size, thickness, density and the like are not included. So thicker threads or multiple layers do not affect these settings. In real life, weaving cloth with a thicker thread might give a rougher surface (more friction) with less contact to the object (less friction). Hence, no direct need for adjustments but do make some when you feel for it.
Weave tightness
Next to thread-thickness, weave-tightness is a cloth characteristic too. What happens when a loose weave is compared to a tight one, with say twice as many threads cramped in?
Again, the Frictions won’t change a bit. Density, stretch resistance, stretch damping, and fold resistance too will simply double for twice as many threads of the same thickness. Air damping sees twice the amount of threads too and will double. That is; double at least because a tight weave might block the air streams through the cloth far more. Will it go tenfold? More? Shear resistance will double at least too, twice the threads will experience twice the friction between them when shearing. But when the threads are really crushed together the threads will deform a bit, the contact surface between the threads increases, and the force that pushes those surfaces onto each other increases as well. Will it go tenfold? More?
Scaling
Let’s test the last way that can spoil our fun: if I take a cloth 1×1 m in size with 1×1 cm polys, and I scale it to 200%, and I compare it to another cloth 2×2 m in size with 2×2 cm polys (so: the meshes look exactly the same), will I get similar results?
Yes, I will. That saves the day, what I see is what I get.
Conclusion
When I want to consider thicker cloth (say: double), I can leave all Frictions as they are and raise all other parameters with the same relative amount (double also). This represents adding a second layer to the cloth.
When I want to represent single-layer cloth with a doubled thread, I raise the folding (till maximum fourfold) and reduce the Air Damping (till one-fold = no change) and alter the friction somewhat to my liking to represent a rougher cloth surface structure.
When I want to represent a single layer cloth with a doubled weave tightness, I raise the Air Damping and the Shear Resistance till whatever makes me feel comfortable.
When I want to represent a single layer cloth with a mixture of thicker threads and increased weave tightness, I just mix the two mentioned adjustments accordingly. For instance, I leave the Air Damping just at the doubled value (both methods sort of cancel out), and raise Folding and Shear Resistance.
Note that for non-weaves (rubber, fleece, leather, …) the concept of weave-tightness is rather meaningless. For those kinds of cloth materials, I just stick to the “thicker thread” idea when considering thicker cloth.
The other way around
Imagine, someone says: “these … are the parameters describing cloth material X”. Then do I need to know the thickness? First: no I don’t. Because we’ve seen that I can represent a thicker or thinner material by adjusting the density (that’s in grams per cm2) and all other parameters increase or decrease proportionally – except for the Frictions which don’t change at all.
Second: yes I do, so I can take it into account for additional fine tuning of the Folding, Shear Resistance and Air Damping adjustments as described above but also take it into account for adjusting the Collision Offset which emulates the cloth thickness in the final result.
Poser parameters
Up till now I discussed the phenomena Stretch, Shear and Fold as they are considered in math and physics theory. Great, we’ve got the idea now, haven’t we? But… is Poser really working that way?
No it is not. Like in real life, stretching, shearing and folding all come together in the result, I can’t have isolated effects (except for laboratory situations). So does Poser, and actually: it improves the believability of the sim outcomes.
Let’s refer to a previous example of the banner hanging down. At low parameter values it becomes visible that the result not only shows stretching but also some skewing (hence: shearing) and some folding too. And when I start playing with the parameter values, I find that altering the shearing resistance does effect the stretching of the cloth too, and altering the stretch resistance changes the shearing of the cloth.
In other words, the physical, real world behavior is determined by a mixture of the parameter settings. And the other way around, it will be hard to determine the proper parameter values by measuring real world values. Is all lost then?
No, some generic rules could be observed:
- The total amount of stretching and shearing does not depend on the values for Fold Resistance or Stretch Damping. So, it’s only Stretch and Shear which hang together.
- When the Stretch and/or Shear resistance is increased, the stretching will get reduced, in all cases and combinations.
- While the Shear Resistance is smaller than the Stretch Resistance, the result is only determined by the Stretch Resistance. When the Shear Resistance gets increased above the Stretch Resistance the total stretching reduces further. Up till now I’ve not obtained any further understanding of the underlying mechanisms or principles.
- The default is 50 – whatever it means, and noticeable differences in result require “order of magnitude” steps. Halving, doubling, tenfolding, like that. From 50 to 75 makes a difference, from 50 to 55 does not.
- Within the range of normal values, that is: 5 .. 500 (tenfold up or down), each doubling of the Stretch Resistance about halves the amount of stretching (as long as it exceeds the Sheer Resistance). So when a value of 50 stretches the cloth 50mm, then a value of 100 will stretch the cloth about 25mm as expected from physics theory.