Dynamics III – 4.1 Density, Air Damping and Wind

Most Poser Rooms are on the details of scene building, and Pose Room itself is all about virtuality. Size does hardly matter, when everything is doubled in size you still might get the same result. Things are relative (with a few exceptions, like some parameters in the new scatter node and some camera settings).

Cloth Room is different. Although the Stretch, Fold and Shear parameters define the behavior of cloth related to itself, and the Friction parameters define the relationship between cloth and the objects in the scene, the Cloth Density and Air Damping introduce real concepts like gravity and an surrounding atmosphere filled with air. They cannot be turned off, and are the essential driving forcing of everything that further happens in the Cloth Room. No sim without gravity. So let’s start there.

Density and gravity

In Cloth Room, take a piece of cloth, pump up the density (increase mass) as well as the Fold etc. resistances (stiffen it), zero the Air Damping to eliminate the air-effects, drop it from some height and look up your high school mechanics formulas, and the Earth gravitational constant. They apply. Use 30 animation frames for 1 second, and you can predict when the thing hits the floor.

H = 1/2 * g * f2 or f = sqrt(2*H/g) with height H in cm, gravity constant g equals 1,089 cm/f2 and f the time in frames.

In detail: Earth gravity reads 9.800 m/s2 on the Earth surface. There are differences, it’s 9.832 at the poles and 9.780 at the equator as the Earth is not a perfect ball, and it varies a bit with underground and surroundings too. But 9.800 is a decent average. That value, converted to 100cm/m, equals 980 cm/s2 and another conversion to 30fps makes 1.089 cm/f2.

Density in Poser is grams per cm2, 1 g/cm2 equals 10kg/m2 which equals 10.000 kg (10 tons) per m3 for a sheet 1mm thick. Office paper is “80 grams”, per m2 that is. A0 flip over / poster size is 1 m2. I’m a 6 feet guy , I guess my summer pants take about 1 m2 = 10.000 cm2 of cloth, when I put them on a kitchen scale it reads say 250 grams. So the Poser setting would be 0.250. Just measure up your own clothes, and you know. These are my findings:

Density, gr/cm2 Weight (grams) Surface (cmxcm)
0.005 Poser default
0.007 Post-its, based on block of 100 40 7,6 x 7,6
0.008 Normal office paper 80 gr/m2
0.012 Very open lace-like cotton shawl 20 80×20 avg
0.012 Small pattern lace top 40 40×80
0.020 Thin summer dress 200 90×110
0.020 Inkjet photo paper (200 gr/m2)
0.021

0.018

Flag

Banner to the flag

300

60

90×155

18×155

0.026 Kitchen towel (for drying dishes) 100 62×62
0.028 Thin shirt 200 70×100
0.029 Open weave / lace-like vest 140 60×80
0.041 T – shirt (short sleeves, good – bit thicker – stuff) 260 70×90
0.045 Thin pants (0.5mm) 500 115×100
0.046 Thick shirt (0.5mm) 320 70×100
0.046 Sweater – industrial knit 500 90×120
0.047 Small kitchen towel (for wiping hands) 100 44×48
0.052 Large bathroom towel 700 90×150
0.055 Sweater – home knit 600 90×120
0.071 Fleece (thick stuff, you know) 600 70×120
0.075 Jeans 600 80×100
0.078 Serious sweater, really warm 840 90×120
0.095 Tie (double/triple layered, lined etc.) 40 110×6 avg
0.256 Leather belt (in pants, just less than 2mm) 100 3×130
0.418 Leather belt (over 3mm, tough to fold) 460 10×110
0.70 – 0.90 Metals sheets 1mm thick (so 10.000 kg/m3=>1g/cm2)
1.91 Gold sheet 1mm (note: Poser has 1 for upper limit)
0.27 Aluminum sheet 1mm
0.5 Wood, 7mm (in case you want a wooden tie)

Thin shirt, Wooden tie.

Air Damping and Wind

Air resistance is similar. Ignoring units for the moment it’s the force generated by an air flow of 1 m/s through (or at) a 1 m2 cloth surface. I can measure it. I take a cylinder (Poser primitive), make it long enough, put it horizontal as a flag pole, and attach a piece of cloth. I just collide it to the pole, and put one row of vertices in the constraints group. Now I’ve got a flag. Or I lose the pole and put the upper row of vertices in the choreographed group. Same to me.

I drape it, after some frames it will hang down properly. Now I can apply wind force, from the menu, let’s make it from aside. The wind will blow it aside, gravity will pull it down and the angle that results from the simulation tells me the relationship. I vary air resistance and density and the angle will exactly vary as expected. We’ll do that later.

First I redo the dropping experiment. I take the cloth up but now I give it meaningful density and air resistance values. Like the default ones, which are suggested for table cloth. I drop it (now the cloth moves, instead of the air, doesn’t matter), and note that it takes a bit longer to hit the floor. If I drop it from larger heights, and note the intermediate results, I can observe that it reaches a constant velocity going down. The cloth moves through the air, the resistance generates a force upward. Gravity pulls it down, and increases the velocity. Therefore, the air resistance force will increase, until it equals gravity. Then the forces are in equilibrium, and the thing will not accelerate any more.

Just another way of deriving the air resistance value, as the final steady speed v (cm/s) reads: v = g *d / a

For speed in cm/s, gravity g (980 cm/s2), density d (gram/cm2) this implies air damping a to be in gr/cm2 per second.
And for the Poser default values d = 0.005 and a = 0.02, I get v = 980 * 0.005/0.020 = 245 cm/s

So now I understand air resistance, in its simplest form, and I can check out the Wind Generator using the flag as described above. I give the cloth maximum stiffness (fold etc), zero friction, and default density and air resistance.

Then I put a Wind Force generator aside, and make it blow straight into the cloth. I give it some distance (twice the cloth size will do), leave the generator angle at 45°, and give it a serious range (4 to 5 times the cloth size will do). A Wind generator is quite a rude thing actually. It will produce the full force in an area determined by angle and range, and nothing outside it. No fall offs like spotlights. I leave the Amplitude at 1, the question is what that means.

So I run the sim, and find the flag hanging at an angle of 45°.

Now I know what’s meant by Amplitude = 1. That’s the wind that – when blowing horizontally – will push a default piece of cloth up with the same force that is exercised by gravity to pull it down.

More precise, a wind speed w will hang the flags at angle z, where w = g * d/a * sin(z)/( 1-sin2(z) ).
So when the flag hangs 45* for the default values d= 0.005 and a=0.02, then Windforce amplitude 1 implies w = 348 cm/s.

What will happen to the wind speed when I adjust Amplitude? For this, I had to repeat the sim at various amplitude settings.

  • Amplitude 2 created an angle of 66,5, that’s a windspeed of 1360 to 1400 cm/s, that’s about 4 times as fast.
  • Amplitude 4 created an angle of 80-78, that’s a windspeed of 8000 – 5500, or: another 4 times as fast again.
  • Amplitude 0.5 gave an angle of 34, that’s 199.3 (say 200) cm/s, or roughly half as much compared to amplitude 1.
  • And Amplitude 0.25 gave an angle of 22, windspeed 106.7 (say 100) cm/s, or another half as much again.

It looks like the amplitude and windspeed relate in a linear way below amplitude 1 or a 45* flag angle (half the amplitude gives half the windspeed), and relate in a squaring way (double the amplitude quadruples the windspeed) above amplitude 1 or a 45 flag angle. This gives artists more control in both regions, as if the dial changes sensitivity.

Wrap up

Gravity acceleration in Poser is 980 cm/s2. It is slightly different from the one used in the Gravity script from the Scripts menu, so take care when mixing results from both. I’ve not looked at the Poser Physics application yet.

Density in Poser is gram/cm2, so the default 0,0050 means 50 grams/m2, about half the value for office paper and good for light silk. The max 1.0 means 10 kg/m2 which is about a sheet of lead of 1 mm thick, or a piece of usual cloth material, 1 cm think.

Air damping in Poser is gram/cm2 per second. An object that feels a force will accelerate, the air damping will increase with velocity, and this results in a maximum speed for the cloth relative to the wind/atmosphere. So when my figure is wearing a gown, and some body parts are moving at about or above this speed limit, we can expect the cloth sim to break or to show that the other forces have to work hard to make it possible.

For a force of 1G (normal gravity pull) this speed is v = g*d/a for the Poser dial values d (density) and a (air damping). So our default light silk reads: v = 0,005 * 980 / 0,02 = 245 cm/s (=> 2,45*100/30) = 8,16 cm/frame. So, at this speed the cloth feels a windforce with is equal to the gravity force pulling it down.
245 cm/s is pretty fast, but sometimes our animation moves about the same speed or faster and then the cloth is facing windforces of 1G or more. For instance, if my 180cm large figure in the scene makes a cartwheel then the feet will travel a distance of 2*pi*180/2 = 565cm in say 0.7 sec gives 800cm/s and hence a long skirt requires a 3.3G force at ankles height to move forward. Such a force requires high values for Stretch and Shear resistance and a large number of steps per frame in the calculations to prevent is from ripped apart in the sim. The good news is that the cloth will be pushed against the legs with that same force, so we’ll need only a little bit of friction to keep it in place.

Windforce amplitude in Poser represents windspeed in cm/s, that is : amplitude 1 applied horizontally to a cloth of default material (light silk) pulled down vertically by gravity, will bring the cloth into a 45 degrees angle. That results in : 346 cm/s. For amplitudes below 1 the dial behaves in a linear way, so 0.5 implies half the windspeed. For amplitudes above 1, doubling the dial value quadruples the windspeed. This translates into :

  • amplitude 0,10 is the upper limit of Beaufort 0, calm, smoke plumes going up straight
  • amplitude 0,50 is the upper limit of Beaufort 1, light air, smoke plumes tell the wind direction
  • amplitude 1,00 is the upper limit of Beaufort 2, light breeze, feel the wind, leaves whisper, minor seawaves
  • amplitude 1,25 is the upper limit of Beaufort 3, waving flags, whirling dust, moving leaves
  • amplitude 1,50 is the upper limit of Beaufort 4, waving hair, whirling paper and fierce moving leaves
  • amplitude 1,75 is the upper limit of Beaufort 5, moving branches
  • amplitude 2,00 is the upper limit of Beaufort 6, strong breeze, problems with your umbrella, large seawaves
  • amplitude 2,25 is the upper limit of Beaufort 7, hard wind, really hard to walk of cycle against the wind
  • amplitude 2,45 is the upper limit of Beaufort 8, stormy, falling twiggs
  • amplitude 2,65 is the upper limit of Beaufort 9, storm, falling branches and (roof)tiles
  • amplitude 3,00 is the lower limit of Beaufort 12, hurricane

All this is relevant for those who want to combine poses, moves, cloth sims and falling props into one believable shot. The max value 4 seems nice for extreme comic scenes, the wind will turn you inside out.

For instance: at amplitude 2, the wind speed is 3,46 * 22 = 13,84 m/s. At default cloth density and air damping, this will exercise a force of 13,84 / 2,45 = 5,65 G’s on the cloth (see above, a force of 1G relates to a windspeed of 2,45m/s). Gravity G times 5,65 requires a figure working very hard to walk slowly forward against the wind, and also requires large stretch resistance values to prevent the gown from being shred in pieces.

So I do hope that some understanding not only enables you to make believable dynamic clothes, but also to make believable dynamic pictures.

Reality check

Let’s reconsider some Poser default values.

The default cloth density reads 0.005 which represents light silk. From the measurements however it appears that the tenfold, 0.050, is a better representation for normal cloth. A quarter of that (0.012) for lace, half of that (0.025) for thin clothing (thin shirt, summer dress), one-and-a-half of that (0.075) for thick cloth (jeans).

Now, I hang my flag down. In my observation, a Beaufort 3 is required to skew my flag (density 0.02, see table) at at most 30*, that’s about 540 cm/s wind speed while sin(z)=0.5.

Using the mentioned formula w = g * d/a * sin(z)/( 1-sin2(z) ) I get a = 980 * 0,02 / 540 * 0,5 / (1-0,25) = 0,024 instead of the default 0,02. So regarding to the flag the default Poser cloth density is fourfold too low, and the default Poser air damping is just a bit too low as well.

Note, as you can see in all formulas, it’s the ratio d/a that comes back each time. This means that when I change them in sync I’ll get the same physical results. For the default setting, this ratio is 0.005/0.02 = 0.25. For my flag it’s 0.02/0.024 = 0.83. I can also rephrase this as: regarding to the flag, the Poser default stuff offers far more air damping for is density. Which is quite an adequate description of the tight woven light silk, which gently floats down when I drop it above the floor.
Hence, I either set my density to 0.02 and the air damping to 0.024 or I leave the density at its default 0.005 and reduce the air damping to 0.006. For flags that is. Change things when you do know different. Just for making waves on a little bit of wind, flags have a higher air damping than standard linen. Light silk also is different, silk is known for its specific high air damping due to its very tight weave: it hardly lets the air pass through.

So as far as I can see now, Poser default represents light silk. Not table cloth, not flags, not heavy cloth covering cars and statues, not shirts, not jackets, not jeans, not medieval gowns. Light silk.

As far as you consider the use of wind force for some extra dynamics in the scene (like photographers are using a wind machine as well during photo shoots): meaningful amplitudes are between 0.5 and 1.5, and the default 1.0 is a very reasonable default.

Living in another world

Poser Cloth Room is supposed to represent Earth surface, as I can find a decent fit for its gravity and atmospheric density, from cloth drop and flag tests (see next section). This makes me curious: can I mimic other environments as well? It would be handy to have dials for gravity and atmosphere, but there aren’t.

On the Moon, gravity is low (16.7% of Earth), and so it’s on Mars (37.7%). On Jupiter, it’s large (236%). Venus and Saturn have about Earth values. Under water, there is an additional upward force (lowering gravity for the moment) which is proportional to the difference in density between the object and its surrounding water. But since cloth is organic, there is not that much of a difference, except for clothes that are filled with air initially. Fleeces, woolen knits and thick weaves for instance. When the air is gradually replaced by water, they sink like the rest. So for well dressed mermaids, I don’t have to correct for gravity.

To mimic low gravity, I can either increase all parameters except density (for the moon: 1/16.7% = 6-fold), or do the reverse. That is: reduce density (for the moon: 16.7% of the initial value), increase the frictions anyway (!) and leave the other parameters alone. To mimic high gravity, I can either reduce all parameters except density (for Jupiter: to 1/236% = 42%), or do the reverse: increase density (to 236% of the initial value), reduce the frictions anyway and leave the other parameters.

On the Moon and on Mars, the low gravity results in a low atmospheric density as well. Jupiter is different, it’s a gas planet without a surface, it just gets denser the way in. Its “ground level” is defined as the level where the atmospheric pressure equals 1 (Earth) atmosphere, and its composition is very light (mainly hydrogen and helium). But we might want to do high densities anyway. Like under water, where moving cloth definitely is something different. The basic idea is: I just have to reduce (thin atmosphere) or increase (thick atmosphere) the Air Damping, and I’m done.

The Moon effectively has no atmosphere at all, so air damping can be zeroed out. The Mars atmosphere has a low pressure (0.01 Earth atmosphere), but is quite thick thanks to the carbon dioxide and so it supports serious winds and dust storms. I tend to reduce Air Damping to 10%, like I would for Jupiter for its thin atmosphere. Venus on the other hand is extremely hostile, with an thick carbon dioxide and sulfuric acid atmosphere, temperatures from 400 to 700K and an atmospheric pressure of about 90 Earth atmospheres. Not for tourists. Air damping needs to be tenfolded or – like under water – hundredfolded for realistic results, which will bring me at the limits that the sim will support. But I can also reduce the density, and the other parameters (except the frictions) instead. Because it’s the ratio that counts in the sim result.

The issue with large (relative to density) Air Damping, is that it limits the speed which one can move. We know all that, from our attempt to run in a shallow pool, or from attempts to swim with our daily clothes on. The Cloth Room is not different. In real life, the cloth will hamper our movements and we’ll need serious forces to get the job done. If the cloth cannot stand the forces, the fibers will snap and the cloth will tear. In Poser, figures can apply unlimited forces onto the cloth, and its fibers won’t snap. But I’ll need a hell of a Stretch Resistance to keep the cloth in decent shape under those forces, and so things tend to grow out of hand. Many Steps per Frame, and so on. A better way is to slow down the movements, or even reconsider them. Again, if it’s hard to do in real life, then it’s hard to get it done properly in Cloth Room as well.

Engineering stuff

In this section I’ll present some further details on gravity, and handling air damping. For those who did well in physics class, and want to verify (and approve upon) my findings.

On gravity, I’ve noted that the Gravity Script (in Menu > Scripts > Utility) not only let the object bounce (with 50%) on the floor, and on the floor only (Y=0) without any possibility to alter things, but also contains the code lines:

  • g = – 0.005        \ this is the Earth gravity acceleration in the script
  • loop :
    • v = v + g    \ velocity starts at 0, and increases downwards on a per frame basis
    • y = y + v        \ height starts at Y in scene, and decreases on a per frame basis

in that order.

Some things are wrong here:

  • in the script, gravity is expressed in Poser Native Units (1PNU=262cm) per frame squared. From the metrics g=9,80m/s2 this means 0.00416 for 30fps or 0.00598 for 25fps. The value used in the scripts is about the average of those, so the result is about equally inaccurate in both popular playback speeds. It also deviates from the Cloth Room value which exactly matches the Earth value of 9,8 m/s2 on 30fps.
  • The second phrase is correct, it determined the velocity at the end of each frame. But the third phrase misses the point that it should use the average velocity during the frame period, and not the end value. So actually it should read: y = y + (v-g/2). As a result the object displaces too much per frame, it moves too fast according to its speed, and according to the laws of physics. This comes on top of the error in the gravity value itself. For 25fps these errors might cancel out a bit, but for 30fps the errors add up.

So it’s a fun, but inaccurate script which might reveal its surprises the moment you use it next to your cloth sims in the same scene.

On air damping, air is flowing through a piece of cloth, at some velocity v. There is an air pressure difference P between both sides of the cloth. The ratio between those is the air resistance, a. Then P = v * a.
For those into electronics: it’s similar to Ohm’s law, Voltage V, current I, resistance R: V = i * R. Only this time, air is flowing instead of current.

The air pressure (difference) creates a force perpendicular to the cloth, proportional to the amount of cloth (surface S):

F = P * S (add in P=v*a) = v*a*S

Now, consider our drop-drown experiment. There is no atmospheric movement but the cloth is flat falling down at speed v, same effect, same force. But initially, the cloth is dragged down by gravity, at a force F=d*S*g . Same surface S, mass density d (kg/m2) and Earth gravity acceleration g.
While the gravity pulls the cloth down, it accelerates, speed increases, upward air damping force increases and finally, both forces equal out. From then on, the cloth falls down unaccelerated, at constant speed.

From the equations we can see that from that moment a*S*v = d*S*g. The surface cancels out as the result is the same for any size of cloth (and any shape, as long as it falls flat). And the final speed reads v = g * d / a.

When v is in m/s and g in m/s2, then the ratio d/a is in sec. All other units in d and a should be similar, so if d is in g/cm2 as the Poser manual tells us, then a is in g/cm2 too – per second. For v in cm/frame and a per frame as well, gravity should be in cm/f2 (value 1,089).

We know the basic formulas for non-damped motion:

  • acceleration g, which is a constant
  • speed v = g * t, increasing at constant rate over time t
  • displacement h = 1/2 * g * t2

Now for air-damped motion:

  • acceleration g – v * a/d, gravity minus air damping, it varies with speed v itself. So
  • speed v = d*g/a * [ 1 – e ( -a/d * t) ] and therefore
  • displacement h = d*g/a * { t – d/a * [ 1- e ( -a/d*t) ] }

Now back to Poser. I took my cloth, raised it to 19,6 mtr, set folding etc to the max to make it stiff as a marble plate, but kept density and air resistance at default values. That’s 0.005 gram /cm2 for density and 0.02 gram/cm2 per second for air resistance. The ratio a/d reads 0.020/0.005 = 4 /sec, and that implies that at 1 sec, the exp(…) part in the formula is reduced to less than 2% and can be ignored, to simplify calculations.
That means: 19,6 mtr = 0,25 * 9,8 * ( t – 0,25) or : impact at 8,25 sec, that’s just beyond frame 247 (poser time in cloth room is always 30fps, whatever your animation settings). That’s theory.

Sim run. Drop down. At frame 247 it’s just above the ground, at frame 248 it has had the full hit. That’s Poser reality meets theory. Great.

On Wind force, let’s do the math first too. Take angle z as the angle between the flag and the vertical. Z = 0° means hanging down, no winds, and z=90° means a horizontal flag, extreme winds.

The (vertical) gravity force on the skewed flag can be decomposed in a part along with the flag, stretching it and being countered by the pole (if we had one), and a part perpendicular to the cloth, making it rotate downwards. This latter force is F = d*S*g*sin(z), d for mass density, S for cloth surface, g for gravity acceleration constant.

The (horizontal) wind force has a similar effect, but we have to adjust for the fact that a skewed flag will present a smaller surface to the wind. Again, the force can be decomposed into one along the flag stretching it as well (you know cloth is pulling when the wind blows in), and a force perpendicular, rotating it upwards:

F = a*S*w*cos2 (z) with airdamping a, windspeed w (in m/s), surface S and the cosine squared thanks to the mentioned adjustment.

The flag hangs at equilibrium when both rotational forces cancel out, and since cos2 equals 1-sin2, we can make it to

0 = a*w*sin2 (z) + d*g*sin(z) – a*w

From this we learn that when airdamping a or windspeed w equal zero (no atmosphere, or no wind) then the equation reduces to sin(z) = 0, z = 0°, flag hangs down. And we learn that when a and/or w grows really big (under water, hurricane) then the equation reduces to sin(z) = 1, z=90°, flag fully stretched horizontally.

From this we can determine the meaning of Amplitude 1: we just solve the equation for z=45° and find a windspeed of 3,46 m/s. Default density at 0.005, default airdamping at 0.02.
Now I know windspeed, air-damping, mass density and the gravity constant values, I can easily predict the angle or calculate windspeed by solving the generic equation above:

sin(z) = { -d*g + sqrt[ (d*g)2 + (2*a*w)2 ] } / (2*a*w)
or w = d*g/a * sin(z) / [1- sin2 (z)]

Note that the cases a*w= about 0 or a*w= really large already were discussed above.

I ran my sims for 100 frames at various Windforce Amplitudes, flags were still waving a bit at the edges (they make a full wave despite the extreme stiffness settings) but still enough to make estimates of the angles. From these angles I got the windspeeds, and now I know the relationship between Amplitude and Windspeed.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.