Lets start out creating a simple cloth plane falling on a colliding cube:
1. MENU "Create: Polygon Primitives: Cube"
2. MENU "nCloth: Create Passive"
3. MENU "Create Polygon Primitives: Plane" Position the plane above the cube
4. MENU "nCloth: Create nCloth" In the attribute editor for nClothShape1 make the thickness 0.1 and set solver display to "Collision Thickness". (The solver display is for feedback only and does not render)

Note that with thick cloth the behavior is somewhat different because the self collision with thickness makes the cloth somewhat less compressible and also restricts bend angles. This is usually desirable, but you probably want to make sure that the selfCollideWidthScale is not greater than one. The "Vertex" selfCollisionFlag works the fastest for very thick cloth, although on occasion you may need to use "Full Surface" for better quality.
Now lets thicken the rendering of the cloth to match the simulation thickness.
5. Select the cloth plane.
6. MENU "Polygons: Edit Mesh: Transform Component"
Move the mesh down to the bottom of the thickness display (polyMoveVertex:local translateZ = -0.1)

8. MENU "Polygons: Edit Mesh: Extrude"
Drag the extrusion to the top of the plane (polyExtrudeFace:localTranslateZ = 0.2)
Turn on "Keep Faces Together" on the polyExtrudeFace node.


9. Edit polyMoveVertex1: set localTranslateZ to -0.01
10. Edit polyExtrudeFace1: set localTranslateZ to 0.02
Also set the divisions to 2 for more resolution around the edge.
11. MENU "Polygons: Mesh: Smooth"
12. MENU "Polygons: Edit Mesh: Transform Component"
Drag the manip away from the surface until the thickness matches (polyMoveVertex:local translateZ = 0.1)


parentToSurface.mel
nClothBook.ma
dynamicFollow.mel
cameraFollow.mel
cameraFollowScene.ma
lightOcclusion.ma
fireball.ma
itsSlinky.ma
TunShu_BindClothSkin.zip
confettiFall.mb
simpleConfetti.ma
roundConfetti.ma
partyStreamers.ma
waterTank.ma
nClothWater2.ma
nClothWater.ma
waterPlayground.ma
sunsetLeaf.zip
oakBigLeaf.mel + oakBigLeaf.mel.icon
ribbonTwist.ma
bagOfMarbles.ma
toonOcean.ma
buckySphere.ma
thickSlab.ma
The thickness here is provided by the built in cloth thickness attribute, and larger thickness values can result in longer collision computation times. The rendered thickness is downstream of the cloth, and does add a fixed overhead, but this will generally not be too bad unless you have high smoothing subdivisions. Being a render effect, the thickness does not have any dynamic or internal volume preserving qualities. If you instead modelled the thickness upstream of the cloth, then you could make it like an air filled bladder by using the volume conserving pressure method. Note however that solving on the extruded surface will be more than two times slower, due to twice the vertices and the added layer of self collisions. It would be even slower if you solved on the smoothed surface( it’s generally best to keep the smoothing downstream of the cloth ).
Duncan
Hi Duncan,
Thanks so much for writing this tutorial on thick cloth. It’s a fantastic look into how to achieve this goal. Does the upstream history from the nCloth node add a lot of computational overhead? Also, it one modeled clothing with thickness, would the solver act like it was a balloon, complete with an internal pressure?
Best,
Jacques



