When a piece of cloth lies down on the floor or on something else, and a force – like gravity – is applied on it to drive it forward, then the contact of that cloth with the floor will work against it. Up till some limit the cloth won’t move at all, that limit is called the static friction. When that limit is exceeded it will move but will still apply a force against it. This latter is called dynamic or kinetic friction. Generally, dynamic friction is less than static. Friction is a surface quality only, it does not depend on cloth density nor on the cloth speed over the surface. It is said that rough surfaces have more friction, but that might be as well the other way around: cloth with more friction is experienced rougher. It is said that alike surfaces have more friction than surfaces which are far from similar, which is why insects can walk on vertical glass panels. It is said that surface structure from a geometrical point of view has not that much impact, friction is the result of (electrostatic) forces between the surface molecules. Take your pick. For Poser use, let’s stick to the roughness concept for the sake of it.
Total friction in green, Static portion in red, dynamic portion in blue.
An experiment the get a feel for friction is easy to do at home. Clean up a smooth long table, or a smooth plank, put a piece of cloth flat on one end and tilt the table. Until some tilt angle is reached, the cloth will stay put. That’s static friction. When the tilt becomes larger than that, the cloth starts to move smoothly. That’s dynamic friction working against the gravity pulling it down.
- Static and Dynamic between cloth element and collision object, from the collision object point of view.
It sort of states the roughness of the surface of the collision object. These parameter values can be set in panel 2, where I manage the collision objects. Each object from the list has its own settings.
- Self-friction between cloth elements themselves, which is always about cloth surfaces.
For the moment I’ll concentrate on Static and Dynamic and leave Self-friction alone. Just leave it at 0 in the parameters panel, no harm done.
In life, friction not only depends on surface structures but also on complex interactions. Silk might do smooth and fine over glass and female bodies, but can turn in disaster when moving over plastics due to electrostatics, or when moving over brushed aluminum because the fine surface structures seem to ‘fit’.
In Poser I can define frictions for the object as well as for the cloth, but I’ve got to tell Poser which ones to use in the calculations.
If I uncheck the box, then all collision elements will experience the friction as defined for this piece of cloth.
So, the friction values for a specific collision object hold for the interactions with all cloth elements that will slide over it – as long as these cloth elements have their Collision Friction ticked. And the friction values for a specific cloth element hold for the interactions with all collision objects that it will slide over, when its Collision friction is not ticked. Hence, there is no combination of values that takes object roughness, cloth roughness as well as some interaction into account.
the girl in my scene wears a silk blouse and a long leatherish skirt. The skirt collides to the ground as well, which is covered with a rough carpet. For the skirt, the friction with the girl and with the ground drastically differ and I want to show that, so for the skirt I tick the Collision Friction box and I assign the girl and the carpet appropriate values, the latter substantially larger than the former. For the blouse I can’t check the box too, as the friction of silk with the body differs too much from the friction of the skirts leather with the body. So I leave the box unticked and I give the blouse its own – rather low – silky friction values.
Friction is important for cloth room. While density (gravity) and air-resistance address the interaction between the cloth and the room itself, friction addresses the interaction between the cloth and the figure it collides with. Simply stated: when the cloth vertices hit the figure in a perpendicular way we’re talking collision, and when they interact in a parallel way, we’re talking friction. So friction might be as relevant as collision. Might not be so much for still images, but it certainly plays a relevant role in believable animations using dynamic clothes.
Finding real world values
With a flattened and stretched box and a square piece of cloth, I just rebuild the “tilted plank” experiment mentioned above. And after each run of the sim, I gathered positions for the various frames in the animations. Position changes over time make velocity, velocity changes over time make acceleration.
For this acceleration a, I know that a = G*sin(z) – D*cos(z) for tilt-angle z (with the horizon, as set in Z-Rotate), for dynamic friction effect D (under investigation) and for gravity acceleration G = 9.8 m/s2 = 1.089 cm/f2 when switching to the Poser Cloth Room units cm and frames, at 30 fps. That’s basic mechanics.
The question is: how does D in this theory relate to the setting in the Poser cloth parameters?
Well, it IS the setting !! The Poser dynamic friction is not a dimensionless ratio between forces as in the physics literature, it is the resisting acceleration from the cloth on to some surface (or the other way around, in the collision object properties), under Earthy gravity, expressed in Poser Cloth Room units: cm and frames. So, when you set D to the default 0.1, the cloth on the tilted box is accelerated with 1.089*sin(z) – 0.1*cos(z), which determines its speed and displacement. Now I can appreciate why Dynamic Friction has a max on 1.0, where the critical tilting angle is about 45*. More is quite meaningless, it would lock the cloth to the object in about all positions.
Poser Cloth Density had no effect on these findings, tested from 0.001 to 0.500. As in the theory. That’s something.
When G*sin(z) – D*cos(z) < 0 the net force on the cloth is negative, and the cloth eventually would stop moving, or vice versa: doesn’t even start. At least, that’s the idea. Not starting, in formula: S>G*tan(z) introduces S for Static Friction.
I observed that the formulas did not hold very well at low cloth speeds, where Dynamic and Static frictions both became a factor of influence. This was not the case at higher cloth speeds. I observed that no value for Dynamic Friction could bring the cloth to a stand still once moving, nor could prevent it the cloth from starting to move. Only Static friction could do that. The other way around, the Static Friction parameter has no effect in the “tilted table” experiment, except for low dynamic friction (<0.1), small tilt angles (< 20*), low speeds (I sometimes needed over 3200 frames in animation / simulation). From this and the above I infer that static friction is something extra, having noticeable effects at zero or low speeds only. I can expect a minor effect from stretch, as gravity stretches the cloth, and therefore it moves the center of mass. I then guess that the Static Friction is here to prevent the entire cloth from moving as well.
In the mixture, Static became noticeable only at low Dynamic values (< 0.1) or at Static values close to the critical G*tan(z) one, where it prevents the cloth from moving at all and velocities are very low.
Two issues in here, on the mixture at low speeds:
- Determining Static friction at low speeds at low Dynamic Friction is very hard. It either requires very small tilt angles or precise observation in the few frames after the start of the cloth movement. Not very accurate, that is, and therefore all conclusions get drowned in a sea of measurement errors.
- unfortunately, the low speed 1-10 cm/frame = 30-300cm/sec range mentioned above is the one for clothes under normal moving conditions. Girl getting seated: 60cm/sec=2cm/frame. Default cloth falling due to gravity: 245cm/sec=8cm/frame. See Density & Air Damping (previous section) and
Cloth-the Sim Side on air damping and (animation) speed limits. That’s bad luck for simulating clothes. We need both the Frictions.
When I use or analyze python scripts that address the Cloth Room, I find a parameter VelocityCutOff associated with the Frictions, set to 30. Sounds like 30cm/sec = 1 cm/frame to me. Perhaps that’s the moment Dynamic Friction kicks in.
www.hypertextbook.com/facts and a few other places on the net present acceleration and static numbers for human skin and cloth-to-cloth like info. These vary between 0.65 (skin to metal), 0.70 (skin to paper, cloth to cloth) and 0.75 (skin to plastic). Other reasonable values for Poser use (cloth, skin) ranged from 0.3 to 0.6. The latter suggests that the Poser default for Static, 0.5, is reasonable. The former suggests that the Poser default 0.1 for dynamic friction is far too low. Unless we stick to the idea that de default stand for light silk. Silk is extremely smooth, and perhaps 0.1 is fine for silk over a polished wooden table or a lacquered car surface. It does not represent normal clothing over human skin though.
Next to that there are hardly relevant numbers available for our Poser use in the literature. Lots of industrial materials, and long / heavy duty applications. Like tire rubber on concrete, like steel on steel (bolts), and so on. In general, static values are a bit higher than dynamic but not too different. Values for industrial materials can vary wildly: from 0.04 (Teflon) to over 1 (iron to iron on railroad tracks).
From the S = G*tan(z) formula, setting the angle z for a tilted plank and altering Static Friction till the cloth just did/did-not started moving revealed values for Static Friction that did not resemble any physical meaning to me.
Then I had a peek into Cloth Friction. I clothified the plank itself, put all its vertices in a choreographed group, combined both the plank and the former piece of cloth in one simulation and – of course – I checked the cloth-cloth collision box.
The first results were a nightmare, as the cloth started to wrinkle and crumble, and fell through the clothified plank. This was repaired by raising the fold-resistance (from 5 to 100).
Since then, I have not found any effect of varying this friction parameter on the position or speed of the cloth at any moment. the results are different from Static or Dynamic, but the same for all values of the Cloth friction. Some literature suggest 0.3 as a decent cloth-to-cloth value.
On top of all this, the SM page http://my.smithmicro.com/tutorials/2313.html does not show any differences between values 0.001 and 0.9, and notices that the effects will mainly be visible in animation. Well, not in mine!
So my question to you all: has anyone seen any noticeable effects in animation or stills of changes in this parameter? because if not, no investigation can be done. And then there is no need to, as any value will do for anything.
The concept of Static and Dynamic friction is sort of understood by most people: Static holds the cloth in place until the ‘driving force’ gets too large, and Dynamic works against the driving force when the cloth is moving. Both are independent of cloth density, and Dynamic friction is independent of cloth speed (unlike for instance air damping).
At the angle where static friction just prevents the cloth from moving, both forces are equal, and all collapses to f = tan(z), having most values between 0.3 and 0.6 in real nature, as I found while wading those loads of physics tables on the net. Values for f larger than 1 are rare.
For dynamic friction, we’ve got Coulombs Law stating that the force is independent of the sliding velocity.
So, when the cloth moves, we should see a constant acceleration of the cloth with gravity force F = d * S * g * sin(z) minus friction F = f * d * S * g * cos(z), over the cloth mass d*S. Hence, the acceleration reads g * [sin(z) – f*cos(z)].
For a given angle z this is like free fall along the boxes surface, so we might expect
- falling speed v = g * [sin(z) – f*cos(z)] * t (t for time) and
- distance s = 1/2 * g * [sin(z) – f*cos(z)] * t2.
Correcting for unit conversions, and noting that the friction parameter is a ratio between forces and therefor unit-less, we should be able to interpret the Poser measurement results. So I created an animation, 240 frames in total, and made the box rotate along the Z-axis in the first 120 frames, up till the angle of interest, say 30 degrees. I had to do this slowly, because otherwise the cloth would get launched. And it’s a good idea to zero out Air Damping to prevent hovering.
This means that at a tilt angle of 30 degrees the cloth started moving when the Static friction value came below 0.13, while physics theory says that at that angle the friction value is 0.58 (=tan(z)). So, the Static friction does not resemble anything in real life to my current knowledge. It prevents the cloth from moving indeed, not effected by Dynamic friction, but there is no relationship (discovered yet) between measured values and the literature ones. The concept fits but the model does not. So those who want to match cloth behavior to life, need a re-direction.
A similar experiment could be done for Dynamic Friction. Same setup, I took a Static Friction value a bit below the critical one, so the cloth would move but not before it had reached the top at frame 120. I varied the Dynamic Friction value and noted the frames (the time) that the cloth passed halfway and the end of the box. Higher friction values made lower speeds and therefore larger pass-by frame numbers.
After measuring the size of the box I could infer the speed, meters per frame or per second, as a result from the dynamic fraction, at that angle limit of the box. This is a shipload of details, so I’m not posting them. In the meantime, I noticed a few effects while playing with the parameters.
- Density has no effect on friction, at the larger angles. This is physically correct. But it does have effect at the smaller angles.
- The stiffness parameters (fold/shear/stretch) do not have effect (which is correct), until the stiffness passes values like 400.
- In some cases with large parameter values, the cloth started rotating while coming down.
I have no physical interpretation for any of these. It might be something in the simulation algorithm. But most important, while I got neat looking results of cloth displacement over time, I could not make any physical sense out of it.
To summarize, my Poser Cloth Room experimental measurements do not fit physical theory. That’s it, plain and simple. The static friction angle vs critical value list does not follow the simple f = tan(z) or anything alike. The dynamical friction values do lead to neat distance vs time relationships, but not the one from Coulombs Law.
After a (long) while of puzzling, I finally got the message. Dynamic Friction in Poser is independent of speed and density (Poser matches theory), but it’s not a ratio between forces but a material-dependent acceleration by itself. So 1 stands for: 1 cm/frame2 which is comparable to the 1.089 of the gravity constant in Cloth Room. It won’t vary when I alter the tilting angle of the plank in the experiment. This matched my findings for higher cloth speeds (> 10 cm/frame) only. At lower speeds the effect of Dynamic Friction decreases and the results are effected by Static Friction as well. Which might be a good idea from a simulation point of view, but it’s not according to the books, and it does not help my determining of values and Poser behavior.
So, for Dynamic Friction we’ve got an acceleration D instead of the f*g*cos(z) on the plank, and units are cm and frames. Now let’s face it: when a sleeve of a shirt moves over my arm, and my arm is held under a small angle (say < 15°), the sleeve is not going to move in a way that Dynamic Friction becomes important. And when I hold my arm under a large angle, say >30°, the sleeve comes loose a bit which reduces the effect of Dynamic Friction too. This means that in practical cases where Dynamic Friction can be relevant, g*cos(z) has a value between 0.95 and 1.05 (note that g=1.089 in cm and frames). And when we allow for a range 0.90 – 1.10, we’re considering all tilt angles from 0 to 35°.
The conclusion from that is, that within a 10% accuracy, I can use the literature values (for friction constant f) for the Poser dial value D. That’s a breakthrough. And according to www.hypertextbook.com/facts and some other places on the net life values vary between 0.65 (skin to metal), 0.70 (skin to paper, cloth to cloth) and 0.75 (skin to plastic). If you find reasonable values somewhere else, you can just plug them in (and please tell me about them). Industrial values are plenty (teflon 0.04, iron-on-iron 1.0 or more, good for railroad tracks), but normal cloth over normal skin is scarce in the literature.
From this we can infer that the Poser default value 0.1 is not too bad for silk over a lacquered wooden table, but is far too low for cloth over cloth or skin. Good for Cloth Room, not too well for Clothes Room :). We might guess some values as well. Rubbing my arm with rubber eventually burns and hurts, so that’s a high value (0.85). Leather is a bit less (0.75), then comes burlap and wool (0.70), then the normal linen and cotton shirts (0.65), and then the smooth stuff, like flannel (0.55) and silk (0.50).
Another observation is that Static plays a role on moving cloth as low speeds. This is not what one expects from the books. And unfortunately, this “low speed range” (1-10 cm/frame) is very common in our clothing use of the Cloth Room. From getting seated very gracefully (0.5 cm/frame) to a speedy cartwheel (20 cm/frame), all normal animation fits in this range.
So, in order to improve image or animation results one not only has to take care of Dynamic but of Static also, while the meaning of the dial-values for both are very different. Since friction plays a relevant role in the interaction between cloth and figure, this is the place where our artistic / alien experience or gut feeling will creep in., and Real World should be considered overrated.
Finally, Cloth self-friction is a mystery to me as no change in value provides any effect on any result in animation or final image. I have no fit for even the concept.