Case Study: Covering Up (07 Banner and Flags)

Let me show some basics on banners and flags. First I drag and drop a decent piece of cloth onto an emptied Pose Room:

Then I put it in position (xRot=90, yTran=1 mtr) and assign it neat material. After switching to Cloth Room I create a [New Simulation…] (panel 1) and I [Clothify…] (panel 2) the sheet. There is nothing to [Collide Against…] so I can leave that one, I only need to [Edit Choreographed Group…] (panel 3).

I decide just to select to top corner areas:

And now I can [Calculate Simulation…] for the first run. Perhaps I like a more flexible banner. I can do that by reducing all the resistances (friction and air damping won’t affect the result anyway). But instead, I can increase the Cloth Density as well, tenfolding to 0.05 for instance. The magic here is that the result is determined by the ratio of <parameter>/density, so reducing all parameters, or just increasing density, have a similar effect.

Variations to this theme are: adding more points to the Choreographed Group, or adding the complete top row of vertices to it. Using only one corner turn the banner into a towel, which I can hang onto a wall or so. And, for a change, I can put both sides into the group, rescale (in Pose Room), and reset the Cloth Density to its original 0.005 :

When to cloth continues to wobble up and down, I need more frames (in Simulation Settings, try 90) and/or I have to pump up the Stretch Damping to say 0.1: When banners are hanging outside, the wind will play with them. Let’s see how that works out in Poser. By now, we know how to hang a banner (top row of vertices in the choreographed group) and prepare it for simulation. In panel 4, [Reset] will bring back the default values (except for Stretch Damping, a Poser bug still not fixed in P9/PP2012 SR2. It’s not you). I can make a test simulation if I want to, to check the effects of the settings. Now (in pose Room) I rotate the camera a bit to get some side view, and by menu Object > Create Wind Force I add a ventilator. Using the various camera position (Front, Aux, …) I position the ventilator somewhat at the bottom half of the banner. I also set the parameters:

Amplitude is left at its default: 1,
Spread Angle is reduced to 30, it narrows the stream bundle width,
Range, beyond that no winds will blow so it has to reach beyond the banner at least,
Turbulence, just a bit for the fun of it.

And now, in Cloth Room, I can [Calculate Simulation…].

In most cases, the source of the wind is not what should be seen in the render, so I uncheck the visibility options in its properties. And render the result.

 

<= hanging vertical banner with wind.

Now, let’s discard the entire Choreographed Group which keeps the top of the banner in place. Then the banner will fall, while the winds are blowing. In the editor (Cloth Room, Edit Choreographed Group) I [Remove All]. And…

 

 

 

 

 

 

 

I have to add the Ground for a Collision Object (panel 2, Collide Against, check Ground). Otherwise, the cloth will fall right through it. Then, [Calculate Simulation…] again:

Note that even when the cloth is completely on the ground, the wind will keep blowing it away depending on the (dynamic) friction, until the cloth is out of range of the ventilator.

 

 

WARNING: in Poser 9 / Pro 2012, Service Release 3 (SR3), the Wind Generator in Cloth Room is BROKEN. You won’t get any effect. It’s not you, it’s a software bug

Case Study: Covering Up (08 Finish flag)

Since the car has escaped its covering cloth (see the Pin and Move II section), let me create a finish flag. So I import (or drag and drop) the 1×1 mtr X-tri cloth (in the download), give it a Black & White tile material:


and put it in upright position. I also get a standard Cylinder (Library, Props, Primitives) which I scale into a flag pole (20% overall, then 3000% in Y) and put in such a position that it intersects with the top vertices of the flag.

The next step is to animate the pole, and after that I’ll use Cloth Room to drag the flag with it. Pole first.

In the properties pane, I select my camera and switch off Animating, so I can freely move without seeing that back into my result.Next I set the pole: zRot = -90 at frame 1, zRot=0 at frame 30 and zRot =-90 again at frame 60.

In Cloth Room, I create a [New Simulation…] (and call it Finish Flag for the sake of it) with the end frame set to 90 as I need 60 frames (2 sec) for the pole to animate, and then I like another second (30 frames) for the flag to come to rest. This might look better when I’m repeating the final result.

Since (see the wireframe) the cloth polys are fine compared to the pole I might not need the extra collision options but the waving flag will collide onto itself, especially around frame 30 when the flag still is going up somewhat while the pole is coming down already. I don’t need extra drape frames at the start.

Then I [Clothify…] the flag, make it [Collide Against…] the pole, and leave all other settings to their defaults.

 

Now I have to fetch the flag to the pole, in such a way that the top vertices of the flag behave like nailed to the vertices and polys of the pole. The pole is in the collection of Collision objects, so putting the flag vertices in the Constrained Group will do.

[Edit Constrained Group…] opens the editor, and checking Hide other objects gets the pole out of the way for the moment. I select the top three rows (the pole and flag intersect somewhere between row 2 and 3), uncheck the Hide objects and close the editor.
Note: when I forget to uncheck the Hide option I might need to make them visible again by using their own Properties setting, which might end up quite tedious when there are a lot.

For this demo I leave the cloth properties in panel 4 at their defaults (fine silk-ish), save the scene, and [Calculate Simulation].
It might come as a shock, but the flag falls off immediately. The Constraining seems to be without effect.

Now I do have two options:

  • Animate the flag itself
  • Change the pole

Animate the flag

I [Clear Simulation] in Cloth Room, enter Pose Room, select the flag, goto frame 1, open the (menu Window >) Hierarchy editor and I drag the flag under the pole:

 

 

This makes the pole the Parent of the flag, and the flag the Child of the pole. Hence it will follow it’s movements.
An alternative way to do this is: menu Object > Change Parent (NB: menu Figure . Set Figure Parent won’t work as the flag is a prop, not a figure).

Now I have to tell Poser that some vertices of the flag should not follow the dynamics simulator, but should follow its animation (which results from following its parent, the pole). So, in Cloth Room, I [Edit Choreographed Group…], I click [Add Group] and I select the _constrained_ group. This puts the previously marked vertices into the other group.

To avoid confusion, I also [Edit Constrained Group…] and click [Remove All]. Actually, as each vertex should be in one group only, I would expect this group to be empty after the transfer but apparently Poser it not working that way when using the Modify Selection buttons. Maybe a bug, maybe a feature J.

Anyway, after [Calculate Simulation] I get the result I wanted, as the figure at the left shows (frame 33).

 

 

 

 

 

 

Change the pole

When you look closely to the wireframe of the pole, you will notice that it offers some vertices at the caps, but the main body is a set of very long polys from one end to the other, without any intermediate vertices. So when the vertices of the flag in the Constrained group look for pole-vertices to track, they hardly can’t find any. The constraining is a (cloth) vertex to (collision object) vertex relationship, not a poly-to-poly or a body-to-body one.
In other words: I want to nail the flag to the pole, but no nails are used. So I can look in the Library for a cylinder with several intermediate points, and shorter polys along the body. In Poser 9 / Pro 2012 the Morphing Cylinder prop is a nice one. It needs some extra care as the point of rotation is in the middle and not at one end so is has to be shifted first, but okay.

As you can see, it does not offer that much extra vertices and after [Calculate Simulation] I do find some improvements, but not that much. The flag is nailed to the pole but given all the forces on the flag, this small amount of nails can hold the flag for just a few frames only.

Conclusion
When using Constrained grouping, ensure that the cloth vertices meets enough object vertices to make the constraining actually happen. Objects with a low mesh-density or areas with large polys make the constraining hard to establish.

But as I illustrated, a simple animation of some vertices in the cloth can do the job as well, in some ways. And I illustrated the use and differences between the constrained and the choreographed groups.

Case Study: Covering Up (09 Simple Examples)

In this chapter I’d like to demonstrate some simple uses of cloth simulation.

With a statue, where I did exclude and include the figure in the set of collision objects:

A table, covered with the round HighRes TableCloth (standard Poser 9/Pro 2012 Library prop), and some clothes thrown over a chair. Just drag them in place and – literally – drop them.

Case Study: Covering Up (10 Advanced Examples)

Clothifying hair

Cloth simulation might be a way to turn Conforming Hair into Dynamic.

Luka Hair, by SWAM (2012).
Conforming hair strokes can be turned into dynamic by treating them like cloth. This make them bounce in animation, and swirl in the wind.

The large amount of fine hair strokes might bring a lot of work when I’d like to clothify them all (separately) but the fine structure might work out quite well in not too extreme conditions.

And… why should I clothify all strokes, perhaps I can do with the top ones only.

A Chain of Links

In the finishing part of this tutorial, I’ll make a swaying chain of iron links:

The links themselves are simple Torus primitives, which I shrunk a bit, opened up (zScale 50%, fatness 0,1) put in a row and I rotated the even ones a bit as the objects could not intersect:

This started the journey along the ways that could turn this series of links into a swaying chain. I will tell you about the mishaps first, and finish with a reasonable successful one.

Simple Clothifying

I open Cloth Room, start a [New Simulation…] and use [Clothify…] on all links 1..9, while the first (leftmost) link #0 is marked a collision object using [Collide Against…]. The alternative is clothify that one too but to put it completely in a choreographed group (which will freeze it, as I did not apply any animation on it).

The idea is that the links will fall (except #0) and each link 1..9 is stopped doing so by the link next to it. As all clothified links are considered pieces of the same one cloth, I’ll need to check the Cloth self-collision option in the [Simulation Settings…].

I also must turn the clothified links into steel ones: stiff compared to their density (mass), and dense compared to the world around them. So I raise the various Resistances to their max, while reducing Air Damping considerably.
When running the sim, I found out it did not work. The first clothified link did stick to the collision object link left to it but the chain broke at the next link. This means that the chain is moving too fast for the simulation to handle the collision, and pumping up the Steps-to-Frame settings in the [Simulation Settings…] is actually the only way out. But to what extent?

The image above shows the result of Steps set to 128 (the sim takes 10 sec/frame) and further testing reveals that Steps set to 512 (40 sec/frame calculation time) only improves the result a little bit.

Altering the collision parameters has no effect, as these concern the interaction between the clothified objects and the collision objects only. And the breaking chain shows that the issue is in the interaction between the clothified objects themselves. 


So, this is not the way.

The Helper Object

My next attempt introduces a simple, long and small cloth plane: the Stripe.

I put the leftmost vertices in a Choreographed group to fixate the Stripe in space, and I gave it the maximum Resistance parameter values similar to the steel links, except for Folding to prevent it from behaving like a steel plate.

Then I ran the sim calculations and found out I needed say 600 frames to give a full right-left-right sway to this stiff object.


Now the question was: how do I connect the steel links to it? I can

  • Parent them to it
  • Attach them as (hard) decorated groups
  • Constrain them to it

Parenting the Links
So I made the Stripe the parent object for all Link objects. Would they follow the movements of the Stripe?

No, they did not, for a simple reason. Parenting implies that the rotation, scaling and displacement of an object as defined by its local origin and axes follow the same of its parent object defined by its local origin and axes. But… the sim calculations do not rotate, scale or displace the Stripe object as such. They produce a morph, displacing all the individual Stripe vertices relative to the Stripe’s local origin and axes, but the local origin is left untouched.

As a result of that, the Link objects are not going to move either. This is not the way.

Decorating the Stripe
Now I used the sim for the Stripe, added all Links to it while clothifying them all. Then I put all vertices in a (Rigid) Decorated group, for each Link. So, actually the sim works on the Stripe, and the Links were expected to follow.

Well, in my simple test they did not. The point is, a piece of cloth and its decorations are expected to be one 3D mesh. They should not share vertices not should assigning vertices to the Decorated group leave holes in the cloth, but there should be some edges in the mesh connecting them. Like a button on a jacket: both are separate but a little thread stitches them together and prevent the button from falling off.

In this case, the stitching thread is missing. The Stripe and the Links are separate objects, and there are no edges connecting vertices of the one to the other.

Constraining the Links

Next idea: what if I treat the links as individual, clothified items like I did at the start, but let each of them follow the chain-stripe the closest as possible? That means: next to the sim which creates the movements of the stripe, I make a second sim containing all the links, and contains the stripe as a collision object. Each link then has a serious Constrained group, relating the link to the stripe. Since this relationship is used at the vertex level, the links can be expected the movements and deformations of the stripe to the closest. At the same time the links are not really hanging to each other anymore (or at least far less), which might prevent the issues mentioned previously.
To prevent the links from slipping along the strip I raised the Frictions, and while I kept on having issues with links snapping off, I solved them by raising the Collision Depth (and altering the other settings as well)

Of course the sim had to be as long as the movements of the chain stripe (600 frames). As I kept having links with intersecting polys (not believable for steel), and snapping off during the sim, I checked the other options and started raising the Steps per Frame. Simple: the intersecting objects suggest that the speed at which they collide is too high to handle, so I have to consider smaller steps in the sim or: more steps per frame.

I ended up at 128 steps per frame. Each frame required about 40 sec to calculate with this amount of steps and all options switched on. Times 600 frames make 24,000 sec = 400 mins = about 7 hours. I do have a fast machine (i990 @4GHz) but this was a typical overnight run.

The result is okay, at least for the first 400 frames. From then on the links suffer noticeably from being clothified: they start getting a deformed shaped in quite an un-steel like way. But anyway, this ‘constrained to the stripe’ seems to be a promising approach. Wild and large chain movements might need some more elaboration, by my girls can wear a chain for a belt from now on. Simulate a normal cloth stripe (belt) first, then constrain the links to it and simulate the links.

For rendering, I gave the links a rough greyish material with some shine to suggest a rough steelish feel, and I made the stripe itself invisible as it’s a helper object after all.

Dynamics II – 3 Quick Tour: Cloth Room

The Cloth Room presents four panels, numbered 1..4, and they have to be visited in that order at least once. That is: I’ve got to start in panel 1, I’ll always end in panel 4 to click [Calculate Simulation], I can’t make sense out of panel 3 without a visit to panel 2 first, etcetera. Once under way, I can jump back and forth at will.

Panel 1. Cloth Simulations

In this panel, I click [New Simulation] to add a new simulation (“sim” for short) to the list. The properties panel presents some magical settings for the calculation algorithm, but for now I just enter a meaningful name. And I add some more sims, just to get a feel for that list, which is part of the Poser scene and gets saved with the scene file.

=>

The triangle opens the list so I can pick one to work on, and then its name is shown in the panel. [Delete Simulation] removes the sim from the list, [Simulation Settings] just re-opens the settings panel to alter the name and the other settings. I’ll deal with them later, in Sim Engine \ Collision tests (part III). So this panel links the sim to any other sims in the scene.

Panel 2. Cloth Object

In this panel of the Room, I can define the contents of the sim at hand. This links the sim to the Poser scene. The sim works with two categories of objects: Cloth Objects and Collision Objects.

Cloth objects
Cloth objects are 3D meshes (made out of vertices, edges, polygons), and the sim can move and deform them while they collide to themselves, to each other and to the collision objects. I select a figure or prop in the scene, eventually a named part of it, and click [Clothify].


Or I just click that button, and it gives me the whole (Body) or part (both for the selected figure only!) or props in the scene.

When there are more figures in the scene I’ve got to select one in the Poser preview window, then I can clothify (a part of) it. I cannot switch to another figure while handling the clothify list at the same time, nor does the list tell me which figure I’m working on. Yes, when I’m clothifying multiple figure parts with the same name from different figures, I’ve got a problem. They all have a Chest and a Hip etc so I’ve got to watch the preview window very well.

So each sim has its own list of clothified (sub)objects, or: cloth elements. Of course [Unclothify] removes a cloth element from the list of the sim at hand.

Troubleshoot: the lists of body and bodyparts are obtained from the group definitions in the underlying OBJ mesh file. For various reasons some groups may be present, but are sort of empty from a clothing point of view. In that case, these groups cannot be clothified. In the example above, I can select Body from the list but the clothify selector keeps on returning None. Then I have to pick the cloth parts separately.

Note that there is hardly any need for fancy tricks to turn a piece of clothing into dynamic. Forums are full of “hybrid clothing” but the general idea is that you can load a clothing set, conform it to a figure, then pick one piece of that set only and turn just that part into dynamic by simply clothifying it. Okay, I know, general ideas don not work out as expected in all cases, and sometimes more issues might come up. I’ll deal with them later, in Meshes and Sims \ MultiCloth (part III).

Collision objects

Collision objects are 3D meshes also, and although Poser itself can move and deform them during an animation, the sim will take their position and shape for granted (although varying over time). Clicking the [Collide Against] button gives me a full hierarchical view on the scene, and I can click anything I want at any level of detail. Simply selecting Universe will add anything to the collection of Collision Objects for the sim at hand.

Some notes:

  • I’m not obliged to have a Collision Object, the sim runs perfectly without although the cloth will not collide to anything at all. Having at least one sim (panel 1) and at least one cloth object (panel 2) is obliged.
  • When I select objects that the cloth will never collide with, I’m just increasing my calculation time somewhat without additional benefits. It won’t hurt though. When I don’t select objects which the cloth will or does collide to, the cloth will just fall through them. It’s up to me to find the balance.
  • The Poser GROUND is an object which can be a Collision object but cannot be a Cloth element. It just misses from the list of props when I [Clothify], and when I deliberately select it and use [Clothify], it just won’t, without a message.
  • A (part of a) mesh cannot be a cloth element as well as a collision object (in the same sim). Clothifying removes it from the list of collision objects automatically. Unclothifying puts it back, but only if it’s part of a figure which by itself is in the collection of collision objects. Once clothified, I can check them in the hierarchical scheme of elements but they just won’t be added to the list of Collision Objects, and the checkbox will be blank next time I open the list again.
  • When an object (or part thereof) is made invisible in the preview, it will not be taken into account in the calculations. Neither as a cloth element, nor as a collision object. So, before running sim calculations, helper objects should be made invisible so they can’t affect the result. But objects that just should be left out of the render result should be made invisible after running the calculations.
    In Poser 9 / Poser Pro 2012, objects can be made Invisible to Camera instead.

    For example, in older versions of Poser I ran the calculations, and I solved some minor poke-through issues by just hiding the bodypart which was fully covered by the cloth anyway. Then, for whatever reason, I wanted a rerun of the calculation. This usually was a disaster, because I always forgot to unhide that body-part first.
    With the new Poser versions I don’t have that issue anymore. I don’t hide, I make Invisible to Camera.

The window I’m in now has a triangle showing the list of Collision Objects, at the prop / figure level, without the underlying details. I can select one (which shows), and for that one I can set specific parameters: Collision Offset and Depth (see Sim Engine \ Offset+Depth (part III)), and Static / Dynamic Friction (see Real World \ Friction (part III)).

Each Collision object has its own set of parameters (for the sim at hand), so any change in these is specific for that Collision Object. A global doubling of, say, all collision depth values for whatever reason hence need to be done for each object in the list separately.
This is something that usually goes wrong: a sim calculation falls apart, I want to raise the collision depth, and only do so for the object selected instead for all the relevant ones.

The Cloth Objects panel shows (triangle again) the list of clothified elements, and the one selected. For this selected one, I can add more details in the next panel of the room.

Panel 3. Cloth Groups

In this panel, the details of a cloth element can be further defined, if I want to. For the 3D mesh at hand this works on a vertex level, and there are four ways to exclude a specific vertex (usually: a group of vertices) from the sim calculation itself.

  • Choreographed group
    the vertices follow the moves and deforms which are defined in Poser for that (part of the) cloth mesh, that is: follow their own settings in the animation. They can move by themselves, hence: choreographed, as I am the choreographer when defining the animation. This includes all moves that result from being conformed to an animated figure, or follow from some parent/child relationship with another object.
    For example:
    I like to represent a towel, which hangs on the wall at one corner of it, then falls off and lands on the ground.
    • I animate the towel. First for a lot of frames it’s at the same height at the wall, then it comes down. I ignore all effects from hanging at its corner, I just animate it as a whole.
    • I clothify the towel (or clothify first, animate later, Poser does not care), make it collide to the ground, then I [Edit Choreographed Group] and I pick just one vertex in the corner. Now this vertex will follow the towel animation, and all other vertices in the towel will be involved in the sim.
    • I [Calculate Simulation]. The single corner vertex will stay at its place for a lot of frames and the rest of the towel starts to hang down diagonally. Then the corner vertex comes down according to is animation, the cloth comes down accordingly but meets the ground and starts folding a lot. That’s it.
    • So, to hang a banner or so in the scene, I can just leave the cloth object unanimated, select the upper row or just a single vertex or whatever (left and right upper vertex will hang on two points) into the Choreographed group, and run the sim. Without any choreography of themselves the selected points stay put, and the rest deforms according to the sim.
  • Constraint group
    the vertices follow the moves of the underlying collision object which they are pinned to. By stapling a piece of cloth onto a pole I can make a flag, by attaching dress straps onto a girls shoulders I can force them to stick. However, I cannot stich pieces of cloth together when these are both in the cloth elements list of the same sim.
    This way I can fix a banner or towel too, I just introduce a pole (cylinder), place the cloth object against (or even a bit into) it, and I add the top-row of corner vertex to the Constrained group instead. As long as the pole is not animated by itself, the points from the cloth are stuck in the scene but as soon as the pole gets moving, the pinned points of the cloth will follow.
    The main differences with the choreographed group are therefore:
    • I need a pole, and it needs to be one of the collision objects, and it needs to touch the cloth
    • I animate the pole, not the cloth
    • Anything that changes the cloth outside the simulation, like morphs, poses, animations, whatever will be ignored and overruled by the simulation. In the Choreographed case this already was the case for most of the cloth, but now it also holds for the remaining points in the constraint group, pinned to the pole. The simulation makes them follow the pole now, even if the cloth was not parented or conformed to it.
  • Soft decorated group
    this is meant for pockets, belt loops etc which are attached onto the cloth, and can deform so they follow the moves and deforms from the sim calculations too, but indirectly. The cloth itself is deformed and the decoration follows.
    Note that “attached onto” is something different than “integrated into”. I’ve got to be able – at least virtually – to rip the decorations off without leaving holes in the cloth. In 3D mesh terms: they have to be separate sets of vertices. A pocket or so which is integrated into the cloth mesh results from displacing a set of vertices either explicitly in the 3D model, or by a morph upon that model, or by a displacement map.
    The first way is fruitless; all that kinds of explicit vertex displacements will be undone by the cloth simulation. The morph is something else: just turn the morph-dial to 0, run the animation, and turn the morph-dial to 1 again (tip by PhilC, thanks). The displacement map is something to try, but like the morph: the underlying cloth might deform a lot and the result might not be that realistic.
  • Rigid decorated group
    this is meant for buttons etc which are attached onto the cloth, will follow the moves of the underlying cloth but will not deform themselves.
    As with soft decorated: the vertices of those groups are not included in the sim calculations but are added back onto the cloth afterwards. This is why I must not make holes in the cloth when defining those attachments: it will cause the sim to run on cloth with holes in it.

The main thing however is in the Dynamic Group(s). There is always one: the “_default_” contains all the vertices which are not put anywhere else. But I can define some more myself. So, each cloth element consists of at least one dynamic group, and one of each aforementioned groups which might be empty. Each vertex in the cloth is in one group only. The sim calculations actually run on the vertices in the dynamic groups (only!). So why does one need more than one dynamic group?

Panel 4. Dynamic Controls

In panel 4, the sim relates to the real world. For each dynamic group in each cloth element in each sim, the physical properties of cloth behavior are defined (see the scheme). This is why a dress made of linen, lace and leather parts can get different behavioral properties for each kind of material used.

This is also why the group editor, used in the previous Cloth Groups panel, offers an Add Material option. I like to have a part of the dress that looks like leather, to behave like leather too. More on physical properties in chapter Cloth-Sim Side (part III)
and chapter Cloth-Real World (part III).

The [Reset] button just refills the physical properties with the default values, and [Clear Simulation] discards the results for that sim derived earlier. [Calculate Simulation] does the job, and presents a progress meter which also tells you the time (in sec, with a lot of irrelevant decimals) it took to handle the calculations for the previous frame. Large values indicate problems, unusable results and instable calculations ahead. A sign to break up the calculations and try different settings. More on that in chapter Quick clues & Recipies. Poser 9 / Pro 2012 offer the feature that when a sim goes wild completely, the calculations are terminated and an error message is shown.
[Play] does the same as the play button in the animation panel, the [Esc] key stops the play and returns to frame 1.

Animation

Cloth needs time to drape and to settle, Poser handles time through animation. In the simplest case of a sheet of cloth over a car or statue, I’ll have to start with the cloth held above it, and let it go. After a few seconds (each lasting 30 frames) the cloth collides with the object, the folds and wrinkles kick in and I get my result.
From a technical point of view, the cloth vertices have to change position. This requires some velocity and time. The velocities have to build up, as the cloth vertices stand still at the start. This requires acceleration, and time as well. The acceleration comes from forces acting upon the cloth, and those forces either are presented by the Cloth Room (gravity, wind), either by the interaction between the cloth and objects (friction), either within the cloth itself (resistance to stretch or fold).

So, given the position of the vertices in the cloth (determining its shape and position), given the forces acting upon them, the cloth and so the sim routine need time to get the job done. Time as in: animation frames, like a piece of cloth needs time to fall on the ground in real life as well. Poser time. That’s a different sort of time than my time, waiting for the sim to step through the frames, and spending time on the calculations. But of course, the more frames, the longer I’ve got to wait for the result.

While getting a result for a single image takes Poser time, I can make animations as well. While objects and body parts move along, the cloth shape keeps adjusting itself to the new situations that present themselves frame after frame. From the notes above, I appreciate that the first series of frames is needed to settle the clothes, and then the scene itself can take its own route.

For clothes on posing figures, and for cloth in more complicated final positions, we might need a process that’s somewhat in between just giving time for the cloth to settle, and a full animated sequence for the sake of it. A girl in a dress being seated requires the cloth to flow gently between her back and the chair, and then between her thighs and the seat. Like in the real world: it’s hard to get your clothes on while being seated and sitting still, so is the case in Cloth Room. I’ve got to animate the girl, and perhaps the chair as well, to get the desired results. The same with tucking in a blouse or shirt into some jeans. Ever tried that yourself while taking a deep breath at the same time? It does not work, you’d better exhale firmly, so there comes room for the blouse or shirt between the body and the pants. The same with strapping a belt around a waist while wearing a dress. No-one puts on the belt first and tucks the dress in, everyone wears the dress first and then tightens the belt.

Note that conforming and morphing clothes can take a rather good start position , and need far less animation and settling time than non-conforming cloths (props) that miss these features and have to start at zero (T-) pose or so.

To my experience, the best results can be obtained by looking how thing work in the real world. Things that work out there, often come handy in Cloth Room. Things which do not work out there, might not work in Cloth Room either. Generally, this is my approach in handling Cloth Room, and in problem analysis. What do all the settings mean in real life, and will it work out then? When that’s unlikely, I alter the appropriate settings accordingly.

In the meantime, Poser is software. It will not get angry or disappointed when I pull it some legs, or just cheat. I’m not presenting any theories on that, I will give examples instead. In a number of elaborated Case Studies (part I), related to this tutorial.

Additional notes on the panels

  1. Panel 3: all vertices start in the _default_ dynamic group, and when they are assigned to another group they get removed from the group they were in. So, all vertices are catered for, and each one is in one group at the time only.Bug report: Except for vertices in the Rigid Decorated Group, which are NOT removed from another group. The other way around does work properly (when in the Rigid group and then put in the Soft group they disappear from the Rigid group). Therefore, vertices can be in one group only PLUS in this Rigid group. Not repaired in Poser 9 / Pro 2012 yet.
  2. Panels 1, 2 and 3 present lists by an arrow and the selected item next to it. The list opens when clicking either of them. Except for panel 3, where the arrow is mute. So click the item-name instead. Repaired in Poser 9 /Pro 2012.
  3. Panel 3: All [Edit … Group …] buttons open the editor panel. The top half is quite straightforward, I can recommend the Add Material option for multi-material cloth pieces. If have not done much work with the bottom half yet. Note that there is a decent chapter on the Group Editor in the Reference Manual.
  4. Panel 4: [Reset] does not reset the Stretch Damping (bug reported end of 2010). Its default value is 0.01

Please note that when you change a cloth item in panel 2 (or by selecting it in the preview window itself), this Group Editor panel does not follow!! It still points to the earlier cloth item, so you might end up looking at the wrong group. Just re-click one of those [Edit … Group …] buttons in panel 3 for a refresh.

What’s more to say?
Well, in practice people experience various problems and like to have a magic bullet, or at least a recipe, or a clue where to look. For that purpose, I’ll present:

And of course, there is more detail and background information to enhance the use and understanding of the Cloth Room. For that purpose, I’ll present (in part III):

  • How a cloth sim relates to physics parameters in general (Cloth Parameters – Sim Side)
  • What the physics parameters mean in real life (and what the related Poser values are) (Cloth Par – Real World)
  • How a single sim relates to all the other sims in the collection (List of sims)
  • How a single cloth sim calculates (sim engine)
  • How a cloth sim relates to the 3D mesh of the cloth elements (Mesh behavior in short)

In Pose Room, I am boss. In Cloth Room, reality is. For some, Pose Room and Cloth Room are both about clothes, and one is an advanced case of another. For Poser, Pose Room is about figures, and just for me: some figures are clothes. For Poser, Cloth Room is about cloth simulation, and just for me: some cloth are clothes. I know about clothes, Poser doesn’t at all. It’s Cloth Room, not: Clothes Room.
For me, Dynamic Clothes relate to Conforming Clothes as a Formula 1 car relates to a bike. Both have two pedals, gear switching in the steering wheel, sporty clothes are handy and for both a helmet is required. Both have their use, and Ferrari (read: SM) is not going to build a “F1-car for bikers”, and a handy “F1 dashboard wizard” will never happen, I guess. I would appreciate it, but we have to learn to live without, I’m afraid. Sorry.

Dynamics II – 4 Quick clues and recipes

The quick clues and recipes come without explanations and without fine details. These can be found in the detailed chapters in the tutorial.

Cloth Room tips

The Real World connection

Almost everything in Cloth Room is based on grams and centimeters. Collision Offset and Collision Depth for instance, are cm. Cloth Density: gr/cm2. And so on. So people using different Poser settings (like inches), using scripts for determining and adjusting sizes and distances (which work in Poser Native Units, 1PNU=262 cm), and translating real world measures to Poser parameters, do have to take care of units. Cloth Room does not follow your user unit settings.

When timing is involved, be aware that Cloth Room ignores all frame-per-second settings in the animation palette or movie export, and works against 30 frames per (real world) second.

People who (also) use the Gravity script in the Poser menu should be aware that this script

  • Uses a gravity constant which is 20% off (compared to Earth surface = Cloth Room)
  • Has a minor flaw in the algorithm which make objects move a bit too fast

Collision Offset

Each figure (but not: figure part!) that’s part of the collection of Collision Objects has a Collision Offset and a Collision Depth. The Collision Offset does not affect the sim calculations as such, but does affect the result as it creates a distance between the collision object and the final cloth position. So it represents cloth thickness, in some way. Values are in cm. Low values (e.g. 0.25) are fine for lace and silk, and make the cloth follow the body contours quite closely. Sweaters will do better at 0.5, the default 1.0 is fine for thick cloth over cars and sculptures, 2.0 might be required for thick winter coats.

Poser limits the values to 0.1 … 10.0 cm, and there are practical limits to the low as well as to the high end:

  • When too high, the result looks unnatural, thick, does not follow the body details, visually unattractive
  • When too low, one might experience poke-throughs, especially after rendering (and not showing in preview)
  • When the cloth has to maneuver in between two collision objects, it needs space to do so. Examples: figure sitting on chair, dress with a belt around it. This limits the upper values: the sum of the offset for the body and the offset for the belt have to be quite less than the distance between those.

Collision Depth and Sim options

Collision Depth will not affect the final result but is essential in the calculations. Although Offset and Depth are not related, setting Depth about equal to Offset makes a nice first step. Only that, nothing more. When the Depth value is too low, the sim might become chaotic, collapsing and during the calculations the time-per-frame as reported by the progress meter will go up enormously. Poser 9 / Pro 2012 will issue an error message and stop the calculations, when things grow out of hand.
Each countermeasure will increase calculation time and might improve the change of success. In order (use one, if it’s not enough add the next):

  • In the settings of the sim itself, check the first “object vertex against cloth polygon” option.
  • In the sim settings, check the second “object polygon against cloth polygon” option.
  • Increase Collision Depth. I tend to double it (0.5 => 1.0 => 2.0 …) once or twice before taking the next step. Poser limits the values to 0.0 … 10.0 cm, and there are practical limits to the low as well as to the high end:
    • When too small, the cloth might poke-through in an unrecoverable way (cloth going wild)
    • When too large (above 8), the sim might become unstable as well
    • When the cloth faces multiple collision surfaces at the same side, it has trouble to tell them apart and the vertices end up at random positions. For example: cloth over fingers (which are just 1 cm thick), cloth on thin chair seat, … – the depth for an object should not exceed (half) its thickness.
  • In the sim settings, increase Steps per frame. I tend to double it (2 => 4 => 8 …) until my issues get solved. Poser limits the values to 2…33333 (the manual is wrong at this), the latter implies a simulation in steps of 1-millionth of a second as there are 30 frames per second. However, doubling this number also doubles the time to calculate through one entire animation frame (as reported by the progress meter) and hence also doubles the total time to calculate the sim.

See figure. After one step vertex D has not made it to the surface-after-offset, and will not be taken into account for collision check. Vertex made it, and will taken into consideration. But B and A will not be treated, as the Depth value is too small for that. With a thicker Depth, more vertices will be captured (B, and eventually A). With smaller stepsize, the vertices will travel less, so D and C might get ignored for the right reason but B and A will get caught.

As a rule of thumb, the Collision Depth times the Steps per Frame should be twice as large as the relative speed (in cm per frame) with which the cloth and the collision object(s) move towards each other. For example:

When Vicky changes pose from standing to sitting within 30 frames (1 sec), some body parts, and the surrounding cloth with it, might move as much as 60 cm, so as fast as 60 cm per second = 2 cm per frame towards the couch underneath.
As the default collision depth (1.0 cm) and the default steps (2) just make 1.0 *2 = 2.0 cm per frame, this is not good enough and need to be doubled at least. Doubling depth is the most attractive (requires the least calculation time) but might be limited by various practical considerations, or might – for the same reasons – even be reduced to a value below 1.0cm. Then the Steps have to go up accordingly, to compensate.

In various forum threads (Renderosity), RobynsVeil and KobaltKween have reported a successful use of: Offset = 0.25 and Depth= 0.2, while having the sim options checked. In my view the first value is fine for lingerie and fine clothes (as they use), and indeed when applied to sweaters some poke-through issues were reported around sharp bends (elbow etc). The Depth is indeed of the same magnitude of the Offset, and since the sim options are checked things might work out well as long as the body-moves are not too fierce. Given the poses applied, I would not exceed 1 cm for the Depth anyway so doubling Depth twice is some limit here, maybe even less. Hence in case of the simulation going wild, I would start raising Steps quite soon.

Object thickness
As said, the Collision Depth for an object should not exceed (half) its thickness, otherwise the sim might get confused at which side to land the vertex. The sim also gets very confused when it can see right through the object, e.g. when

Collision Offset + Object Thickness < Collision Depth

Look at this, Offset 1cm, Depth 4cm, Box Scale 600% (=1.50 x 1.50 mtr)

Box thickness 10% = 15cm Box thickness 1% = 1.5 cm (< Depth – Offset)

When the box becomes too thin, the cloth falls through it and ends up at an Offset distance… from the bottom, defying gravity. Great fun. But what happens when the object is single sided and does not have a thickness at all?

Nothing.
Whatever my settings are, from Offset=10/Depth=0.0 to Offset=0.1/Depth=10, the cloth does not fall through. For a single sided surface, there is no other side in the scene and Poser seems to treat that as an object of infinite thickness.

Animation

Hence, I have to check my animations against reality. Can the moves be made in the time I set for them in the animation? Normally Poser does not care but Cloth Room offers a physics simulator which relates closely to the real world. When one cannot make fast moves in a tight thick leather outfit, and one cannot run fast or dance fiercely in a wide long velvet dress, then the cloth simulation does hardly support it either and it will be hard to get the calculations done properly. This is all about balancing the animation with the Cloth Properties in panel 4.

Regarding Collision Depth

The other issue, raised above, was balancing animation speed with Collision Depth. Again: the Depth (in cm) should be quite larger than the distance travelled by a vertex during one step in simulation. So that’s speed (cm/sec) times time (1 / 30*steps). But don’t overdo, I don’t have to elongate the animation just to slow down the moves to get the calculations done. This is exactly what Steps per Frame is for: smaller steps through time, without the need to adjust time itself.

For example, I want my posing girl to make a cartwheel in a long dress. Then her feet will travel a distance of 5 to 6 mtr, depending on her length (pi (3.142) * body length). Usually, making a cartwheel lasts shorter than 1 sec so the cloth at the ankles makes 600cm/sec, about. When I’ll discuss the cloth parameters (Parameters – Sim Side and Parameters – Real World, part III) we’ll see that pushing cloth with such a speed at the default cloth settings through air takes about three times the gravity force, so the cloth feels and behaves as three times as heavy. If the cloth is a bit elastic too, the sim will take it all over the place.
And… if I’d set the Collision Depth to 1 cm, cloth at that speed will pass through that detection layer within 1/600 sec = 1/20th frame, so I’ve got to set my Steps per Frame accordingly (rather over 20, so say 32 might do).
In other words; move gracefully, keep it realistic, and watch the speeds.

Regarding Poke-through

At the start, and during the calculations, the objects should not poke through the cloth. They don’t in real life, and so they’d better not do so in cloth room either. It’s ugly in the final result, and when groups of vertices structurally end up at the wrong side of a collision object this may get worse and worse. Small deviations by single vertices usually can be resolved, which is why we’ve got to tick the “object vertex against cloth polygon” and the “object poly against cloth poly” sim settings.
We also saw that there should be enough room for cloth to maneuver between various objects, or parts thereof.

Sounds simple, but the consequence is that a minimum distance for all collision objects and parts thereof should be observed, for each single frame of the animation. As is the case in real life. So the objects certainly should not poke through each other, and through themselves. This implies that one has to pay real attention when animating a figure from a standard standing pose, towards a sitting pose with arms and legs bends. Upper arms should never come to close to the upper body, under arms should never touch the upper legs and the upper legs should never interacts as well.

For some poses this is not an issue. For most poses, my intervention is required, I cannot do with just a T-stand at the start and the final pose at the end. I have to adjust arm and leg positions in between too. And I need some time, 30 or 60 frames perhaps, to get this animation done properly plus say another 30 or 60 frames to make the cloth settle.
The point is, Cloth Room offers some additional animation by itself as well. Draping, an amount of extra, non-editable frames before the Poser animation starts at frame 1.

The Drape can start in the Frame-1-pose, in which case the figure won’t move but only the cloth drapes, or in T-stand in which case the drape sequence animates from there till the Frame-1 pose. This can be set per figure, in panel 2, (un)check Start Draping from Zero Pose. By the way, it’s available for poseable objects only. Not for props.

But as I cannot affect the animation during the drape sequence, this help only makes sense for animations which do not introduces any risks on self-poke-through of body, arm or leg. Otherwise, draping might turn out to be counterproductive.

Animation Overshoot
Say I want to jump from the ground onto the seat of a chair. So I bend my knees a bit, then I stretch them out, and when landing I bend them a bit to absorb the shock and stretch them a bit to normal again. As a result, my center of mass lowers say 10cm, then raises say 60 cm and then lower 10cm again to make an effective net raise of the 40 cm between the floor and the seat.

Overshoot is good, for making believable animations. Overshoot is not always that fine for cloth sims. It creates additional body movements, which might help the cloth to settle but might be counterproductive as well, or just elongate the required animation towards the final pose. On top of that, the overshoot positions of the various objects, bodies and body parts might raise the risk of collision between them, or even self-poke-through during the movements. Those can be disastrous for a decent sim calculation.

The way out is to linearize the animations involved. Use the animation panel, select the elements that need investigation or adjustment, and click the Linearize button to make straight robotic movement trajectories instead of the smooth natural ones. This works for still images, because who cares about the animation details. For animations the robot-like movements might be undesired, then the overshoot might be better reduced. All in case of issues, there is no need to repair things which are not broken. And again, this kind of fine tuning cannot be done for draping before the animation starts.

Dynamics IV – 3 Cloth Simulation in Perspective

When I started to Google on cloth simulation, I stumbled into
http://www.animares.com/book/Secondary-Motion/Cloth/Hintergrund.html.
Its in German, on issues with cloth simulation. The page mainly noted to watch out for parameter settings, conversion and scale.
In short, if the parameters are determined for seconds, meters, kilograms etc and the mesh is defined in inches or internal (poser) units, then you’re off. I’ll let this alone, the Poser parameters are in semi-metrics (cm, s, gram), and I already mentioned the gravity matching the Earth surface conditions. Every now and then in this tutorial you’ll see me juggle to end up right. But for users of Imperial units (inches etc) there is a health warning in here: watch your units.
Also, cloth in real life does not scale, and neither do cloth simulators. Sheets of 1×1 mm, 1×1 mtr and 1×1 km really do behave different. Thread thickness plays a role, and so does the thread pulling strength and loads. You cannot fold the 1x1mm piece, and a 1km fibre will break under its own weight. Things like that.

The webpage also noted that although regular meshes do fine in most areas of 3D, cloth simulation is not one of them. Cloth Simulation benefits from a “Delaunay-Method” which gives irregular triangulation of meshes. It’s implemented in Sim Cloth / Clothmesh, in Cloth Reyes / Hexamesh, in ClothFX / Cloth Panel and in Maya / Cloth. So they said. A familiar collection.

Since ClothFX ended up in 3DSMax (see Poser features in perspective) it’s the Hair&Cloth chapter from 3DSMax that presents clear examples. With a few splines the contours of a garment are defined, and the Garment Maker creates the irregular mesh from it. For a shirt in development:

And for a pocket attached to it (just to illustrate what an irregular mesh looks like):

Since ClothReyes is implemented as Poser Cloth Room, let’s see what we can find out. Google is our friend.
Well, I end up at a program called Virtual Fashion (Pro 1.5), available in Spanish and English, July 2009, with the ability to export Quad and Hexa Meshes to Poser. Doesn’t it sound familiar (Poser features in perspective)?
A Mesh/Garment Maker apparently was not included when Cloth:Reyes was included into Poser, I can’t see it different. Poser got the simulator only.
In the meantime, Hexamesh itself is a toolkit doing fine in CAD/CAM environments, like the fabrication of (e.g. medical) components – which is not on our route.

I’m presenting this meshing story, because simulation results appear to be dependent on mesh structures and people ask (in forums etc) about “best mesh structures” and “what to do with existing mesh files”. We don’t need to re-invent wheels here. At least a serious part of this tutorial is devoted to mesh structures.
So I might need a tool to turn regular (quad, tri, …) meshes into irregular ones.

Since people are fond of Marvelous Designer as a cloth making toolkit, the Show Mesh example in the manual shows:

That’s not just simple triangles, that’s Delaunay Triangulation. Don’t look further!

I continued my strolling around the Net and in the end I found myself buried deep down in a worldwide scientific community on cloth simulation, US patents included, which evolved from about the mid ’80s. That was about the moment I stopped in the scientific arena after getting my MSc on applied math and experimental physics. I never looked back. This means to me that I will stop looking further into this area on the vertex level. Back to the front! Let’s make fun images. But I’ll give you what I found on the ways forth and back.

From www.poserfashion.net (before it got hacked, you can find the Original in Internet’s WayBackMachine) I learned that the author (Serge Marck) was into cloth sim long before Poser started doing it. He states that all cloth sim routines (those days) were based on the modeling of physical fibre behaviour in cloth. He also flagged and demonstrated that because of this modeling, the simulation results depend on non-virtual things as real world cloth size and structure. In effect, he showed differences (from Cloth Room) based on cloth size at constant vertex density, on vertex density at constant cloth size, and on mesh type (quad vs tris) at constant density and size.

His main source was a tutorial by P.S. Karthikeyan. It’s nowhere nowadays, I only could find a Russian translation of one chapter out of it (Google Translate is my friend too), on the modeling fundamentals. This said that all started in the ’80s from the well understood behaviour of cables (hanging bridges, telegraph cables) and the effects of fibre parameters, the effects of fibre thickness on those parameters, and the effects of gravity and wind. Cloth then is interpreted as a two-way weave of cloth fibres each described with cable behaviour.

It also said that – at those days – P.S. Karthikeyan was a 3rd year student on the Aerospace Institute in Madras, India. I did not find any other references to him related to cloth sim, after that. But I did find that the tutorial must have been very good, because it’s quoted in about every paper on this matter from those days on. Google rocks.

One of the papers I ran into looked worth downloading and sharing, it looked readable, an overview on fundamentals and implementations in the popular cloth sim software mentioned above and in various forumposts. Recommended.
This researchpaper can be downloaded here as well (10Mb, use Right-click Save As…), as it seems to be disappeared from its original location. This original location is the RISC – Research Institute for Symbolic Computation, deep down the science dungeons. Get me out!

With respect to all of this, Cloth Room definitely is a different beast than Materials Room or alike. It’s not a Room at all, it’s the Magic Kingdom Castle, or the complete Disneyland Park around it. I’m going back to the front gate. See you there.

Dynamics V – 2 Crash Course on Sims and Settings

Understanding cloth and having a mental model of the physics involved is necessary but not sufficient to make effective and efficient simulating systems. Creating those systems is a world in its own right. Especially those with an engineer’s way of looking at things might be interested in this mini tour through the deep down dungeons. Crash Course on Math & Physics (previous page) and Crash Course on Sims & settings  (this one) really are the math and physics loaded chapters. Any use of the underground escape tunnel brings you into Muppets Lab “where the future is made today”. You have been warned.

In this chapter, I’ll consider the simulation algorithms themselves. Finally, I’ll present some conclusions that help you further in handling the Poser parameters and cloth simulation.

Going Sim

Creating a computer simulation of a mechanical system requires the build of a ball-and-spring network. Like a mesh, the vertexes are small balls with carry all the mass, while the edges connecting the vertices are small (mass-less) springs which do the pushing and pulling. Balls and springs both take their share in damping, and the balls pick up the external forces and limitations like gravity, attached weights, air-damping, collision and friction to objects.

In order to make the simulation work like the real thing, various technical (constructive) aspects require attention. Building goods simulations is a serious profession. To name a few:

  • Resonance
    mentioned already as a ‘natural aspect’ of electrical and mechanical circuits. What does it do?
    Say, the resonance frequency is: 100. This means that a vertex is oscillating around its proper place to be, at 100 times a second, real world time (as the values for Damping, Spring strength, Mass, Object size etc. are real world values). If the simulation recalculates the positions of the vertices in steps of 1/1000 of a second, the oscillation would be clearly visible: a predictable instability. The oscillation is samples ten times a period.
    If the simulation recalculates the vertex position each 1/60 of a second, the neat oscillation would appear as a random jumping around, as a noise, an unpredictable instability. The oscillation is samples less than once a period.
    In all cases, an instability which makes that the sim needs longer calculation times to arrive at a steady result. In other words; we have to wait till the oscillation-energy is faded away. The best way to speed that up, is to increase the damping, as this stands for energy loss per second.
  • Mesh density
    in how many subparts do I chop the system? In cloth, which can be considered a surface, halving sizes in two dimensions imply quadrupling the amount of balls and springs, and calculation time. In Poser I’ve seen pieces of cloth chopped into pieces of 5x5cm (divides 1 m2 into 400 balls) to 1x1cm (10.000 balls), but a cotton fibre is as thin as 0.1mm (100 million balls per m2) and no one is building a sim like that. But by not doing so, one runs the risk of “finite element artifacts”.
  • Non linearity
    as long as the mechanics, the systems and the forces considered are linear, increasing mesh density has no effect. For instance, the cloth has a mass density of 1kg/m2, and whether I chop it into 10.000 or 100 million balls will not have effect on the effects of gravity or air damping on the cloth. And when the cloth is 1 m x 1 m and I chop 1 horizontal fibre into 100 little springs, or 10.000, will not have effect on its sheer stretching behavior. But when things are non-linear, mesh density makes a difference.
    • Resonance.
      as discussed in the electrical and mechanical sections, each system has some kind of resonance frequency for which the damping is minimal. If I give the system a kickstart, it will send all sorts of signals around in all sorts of frequencies (noise like) but the resonance one stays alive the longest. For mechanics, it’s proportional to sqrt(S/M) for spring strength (say: stretch resistance) S and mass M.
      Now I chop the cloth into pieces, at mesh density d. For instance, d=100 chops the 1x1m cloth into fibers of 1 cm (with stretch resistance S/100) and pieces of 1x1cm (with mass M/10.000).
      As a result, the resonance frequency goes up a tenfold (sqrt(d) to be precise). As stated above, this affects the noisiness, the randomness of the vertex positions.
    • Folding
      one can imagine that making an angle between two adjacent polys in a mesh is easy for very small distortions but becomes quite hard for the larger angles. Each extra degree of bending requires more and more force to accomplish. So if the 1x1m cloth is divided into 10x10cm pieces and I need a 30° between two adjacent pieces, or the cloth is divided into 1×1 cm pieces and I need 3° between two adjacent pieces but for 10 pieces in a row, the latter requires less force to accomplish.
      In Poser terms: with the same fold-resistance, finer meshes will fold easier. Mesh density makes a difference.
  • Edge effects
    You might have experienced it when making waves with a heavy rope or garden hose (if not, give it a try). When the other end is loose it jumps up end down wildly. Actually, when your waves in the rope have some amplitude, the loose end will show you the double. You can create some constant wave in the rope if you manage to pick a frequency that creates a specific length of the wave: such that there are ¼ , ¾ , 1 ¼ etc waves in the length of the rope.
    When you fix the other end, to a wall or a pole, the other end will be still at any time. You can still make those standing waves but at different frequencies, such that there are ½, 1, 1 ½ etc waves in the length of the rope.
    Not only ropes and garden hoses, but simulations as well suffer from edge effects. At the end of the ball/spring network, balls have less springs attached. Does that require heavier balls, more strength for the remaining springs attached to those balls, or just the other way around? Does the sim require fixation (like the rope at the wall) or does it allow for jumping around (like the open end case)?
    Anyway, as the image illustrates, the vertices at the edge of a mesh behave different because they are missing forces, as the springs (in between edges) are not there.
    All this is up to the sim builder, and there is no real escape. No sims without edge effects, unless one can make calculations on an edgeless world (a globe, e.g.). For cloth and clothes, one might give the edges specific treatment, like is done with real clothes. A rim, with higher mass / density, less stretching and less folding.
  • Calculation order
    There are various ways to get the results of a simulation. Iterating step by step is always required, but one can take a ball/spring network in iteration N, and use that information only to calculate the next iteration N+1. A layered approach, so to speak. Another, more continuous approach, is to take a vertex with the information from iteration N, plus the already derived information for surrounding vertices from iteration N+1, and calculate the iteration N+1 for that vertex.
    Again, this is up to the sim builder and there is no escape. The first approach requires more memory (as two nets have to be kept in store) and requires more iterations (as less info is used per step), but is easier to implement as a multi-threaded routine, it will be less prone to edge effects, and if any these will be distributed quite evenly along all edges. The second approach requires less resources, less iterations, but is typically a single-thread routine which will add directional effects to the edges. That is; it will calculate the vertices in a specific order, like top to bottom left to right so edge effects will typically appear in the top left or bottom right corner.

First, there is gravity only. But having the first ball moved will skew the forces on the second, and so on.

Then, you will get this, a piece of cloth skewing to the right-bottom corner when let loose.

I suspect modern simulators like Marvellous Designer to be of the first kind, and Poser Cloth Sim of the second kind as it stems from the Poser 5 period (even before) and has hardly seen a methodical update after then.

  • Unsimulated aspects
    Aspects of cloth which are absent in the sim, are: thread thickness, and weave density. Thicker threads make thicker cloth, with more weight per square inch, are harder to fold especially over large angles, are harder to stretch, and might increase the friction between threads. This friction between threads by itself affects shear and folding, affects air damping, and so on. A high weave density (threads x thickness per stretching meter) has similar effects.
    Modern advanced cloth simulations take threads and weave aspects into account. Poser cloth room limits itself to global cloth descriptors which include named details. From that, Poser simulates non-woven materials as well; leather, fleece, rubber and the like. This implies a simulation mechanism which is further away from physical details in the real world.

Perhaps you’re familiar with software creation. Then you’re aware that only 20% of the effort really goes to the program’s functionality, and 80% is about the user interface, preventing people from inputting erroneous values or clicking buttons at the wrong moment or selecting impossible combinations of options; that is: making the software user aware. For sims, things are about similar. 20% is about the simulation itself and 80% is about handling the resource requirements, the artifacts from resonance and edges and non-linearities of nature.
This implies that you might have to upgrade yourself from a Poser User to a Poser Sim User.

Going Poser Cloth Room

Offering a cloth simulator to end users introduces a guaranteed set of shortcomings which are not well understood, by those users at least. Not simulating various aspects of cloth (thread thickness, weave density, weave structure) makes it harder to translate the real world to sim parameters, and impatience combined with insufficient resources introduces algorithms with additional artifacts (like skewing cloth).

Mesh structures, mesh densities and various resistance and damping settings will affect the presence or absence of edge effects and resonance, which – at least from an end users perspective – introduce seemingly random vertex movements and floppy edges. Increasing mesh densities, resistance and damping as well as longer simulation times (more frames) kill those effects eventually. Sometimes raising the damping might just make things worse instead of better. But for most people it’s unclear that they have to cope with simulation artifacts that have nothing to do with cloth behavior or with their use of Cloth Room.

In the end, it’s clear not what is meant by the various kinds of parameters:

  • Resistance, against pulling or torque, is like electrical capacity: it stores energy in the cloth and releases it later on.
  • Damping is like electrical resistance: it turns cloth movements into energy loss and brings the system to a standstill.
  • Gravity, Friction and Wind make the forces (via Mass, or: Cloth Density), and so generate the energy for Resistance to store and for Damping to lose. Which effectively make these the drivers of the simulation.

Unsupported aspects

When I take the backdoor to enter the stage Cloth Room behind the scenes, that is: I take a look at the Python manual, I find some parameters which go unsupported by the properties dials in the 4th panel of the cloth room. These are all of them:

  • Airdamping         Dial: Air Damping
  • Clothclothforce        always 10, no way to set it manuall (python script required), unclear what is does
  • Clothfriction         Dial: Cloth Self Friction
  • Dampingstretch         Dial: Stretch Damping
  • Density             Dial: Cloth Density (grams per cm2, 1g/cm2 = 10kg/m2)
  • DynamicFriction     Dial: Dynamic Friction
  • FrictionFromSolid     Checkbox: Collision Friction. If checked, the Object parameter are used instead of the Cloth parameters. So either cloth shows a different behavior over rough and smooth object surfaces but the same for all cloth elements, OR cloth shows a different behavior for various cloth elements but the same for all collision objects. In one sim one cannot have both, various cloth elements over various surfaces.
  • FrictionvelocityCutoff  always 30 (cm/s), no Dynamic Friction below this speed, no way to set it manually
  • ShearResistance     Dial: Shear Resistance
  • SpringResistance     no way to set it manually, might be related to EdgeSprings, which are OFF (0)
  • StaticFriction         Dial: Static Friction
  • Thickness         is derived from Collision Depth and Collision Offset, which define distances between the outside of the object and the outside of the cloth, which are the parts we see. These collision parameters BTW are aspects of the objects, not of the cloth so in one sim all cloth elements have the same thickness for a specific object, and another thickness or another object. So Cloth Thickness is not very well represented. I guess it doesn’t do anything
  • U-BendRate         not used, no way to set it manually
  • U-BendResistance     Dial: Fold Resistance
  • U-Scale             purpose is unclear, no way to set it manually
  • UseEdgeSprings         0/1 whether to use Edge Springs calculations. No way to set it, though. It’s OFF (0). Here you have the ability of Cloth Room to manage edge effects, as discussed in earlier chapters.
  • U-StretchResistance    Dial: Stretch Resistance
  • V-Bendrate         V-values are not used
  • V-BendResistance      ditto
  • V-Scale             ditto
  • V-StretchResistance    ditto

File layout

Cloth info about a cloth prop or cloth figure is stored in the pp2/ppz (prop) and cr2/crz (figure) respectively, and looks like:


    vertsGroup _default_
        {
        v 0 
        v 1 
        … 
        v 6003 
        v 6004 
        stitchVertsGroupProperties 
            { 
            U_Bend_Resistance 30.000000 
            V_Bend_Resistance 5.000000            \ no dial 
            U_Stretch_Resistance 40.000000 
            V_Stretch_Resistance 50.000000        \ no dial 
            Shear_Resistance 50.000000 
            U_Scale 1.000000                \ no dial 
            V_Scale 1.000000                \ no dial 
            Density 0.010000 
            Thickness 0.000000                \ no dial 
            Spring_Resistance 5000.000000 
            Air_Damping 0.020000 
            Dynamic_Friction 0.100000 
            Static_Friction 0.500000 
            Friction_Velocity_Cutoff 30.000000    \ no dial 
            Cloth_Cloth_Force 10.000000        \ no dial 
            U_Bend_Rate 0.000000            \ no dial 
            V_Bend_Rate 0.000000            \ no dial 
            Cloth_Cloth_Friction 0.000000 
            Damping_Stretch 0.010000 
            get_friction_from_solid 0 
            Use_Edge_Springs 0                \ no setting 
            anisotropic 0                    \ no setting 
            } 
        } 
    vertsGroup _choreographed_ 
        { 
        } 
    vertsGroup _constrained_ 
        { 
        v 3 
        v 6 
        … 
        v 5752 
        v 5753 
        } 
    vertsGroup _softDecorated_ 
        { 
        } 
    vertsGroup _rigidDecorated 
        { 
        }