Character Clothing
#1
Hi all, I'm attempting to get a robust cloth solution for character clothing but running into a few issues. I've attached the scene which has a basic setup and some issues. I'll run through some observations and what the problems are and what I've tried.
Once the shape has been converted to cloth, the object bind works really really well as a skinwrap deform. This does the majority of the work that I need.
I've used the material ID test to determine whether the cloth will follow the object bind or whether it goes to the standard cloth sim.
I've needed to turn the samples to 1/8 frame in order to get more stable results (I guess this is because of the fast-ish movement?).
I still get intersections of the cloth geometry which ends up inside the collision mesh, I've tried subdividing the mesh and also increasing the frame samples to 32 which is better but really slow and seems a bit excessive for this which isn't really fast movement?
The stretch on the cloth still gets really out of hand between the particles that have the object bind and the ones that remain in the main cloth event which leads to the main cloth particles ending up in very odd places.
I've tried slowing the particles with the Slow operator.
I've tried adjusting the cloth and collision settings which will affect the cloth behaviour 
I've tried adding additional particle bindings which has very little affect.

I'm hoping there's a way to either relax particle positions if tension becomes too high or somehow try to retain the particles original state / bind relationships?

The problem areas are unsurprisingly the inside of joints.

Thank you in advance, and should go without saying this plugin is unbelievably impressive, thank you!

attached another test which gets closer in some ways but further in others. This time using the object bind but with object bind friction set lower than 100%. This way there's nice fake collisions with the skinned character and the cloth compresses where it should. However when the verts become close to a different part of the skinned character they stick to a different bit, kind of like the clothes are made of chewing gum. Perhaps there's a way I can combined the two systems so the 100% object bound event is always the target and some test operators measure if the cloth is travelling quickly it will do full cloth sim until it's slow enough to return to it's position. Also if there's a test for how compressed the verts are based on their original frame as a reference point. So if an area becomes creased over a certain threshold it will have self collisions until the particles are relaxed again?


Attached Files
.rar   clothtest.rar (Size: 310.49 KB / Downloads: 25)
.max   cloth_test2.max (Size: 1.88 MB / Downloads: 25)
  Reply
#2
Because I haven't yet implemented solid (vert-poly and edge-edge) collision detection for cloth, doing cloth sims for characters is a bit of a wild west scenario at the moment where it's just you, the Cloth operator, the Particle Physics operator, low sim substeps and high bind solver substeps left to figure things out Smile Once I get proper surface collisions into the cloth solver, cloth sims should become much more intuitive and less finicky.

I'm gone for the next week so I can't look at your file until then. Good luck!
  Reply
#3
That's awesome thank you.
  Reply
#4
Hi Mike,

I took a peek at your scene file. Firstly, anytime you want to deactivate particles from the cloth solver, you need to add a Particle Switch operator set to "deactivate". This will prevent the overstretch you're seeing between cloth particles and bound particles.

Secondly, you'll want to set the timing of your Surface Test to "entry" so that particles are not continually being filtered to the Object Bind event anytime they get close enough to a part of the surface with the matching mat ID.

Most of your cloth issues could be solved by simply subdividing the cloth mesh prior to running the sim. Due to the vertex-based nature of the collision solver right now, the higher density the mesh, the better. The easiest way to subdivide the mesh is to just add a Subdivide operator prior to cloth conversion in the flow. Or of course you could also subdivide the scene mesh using a regular modifier. Also setting a collision radius in your collision operator will help. You had set it to "shape radius" but since your particles don't have a shape, that is effectively zero. You'll want to set it to "absolute" in your case. Too big and the particles will balloon out from the surface, but too small and interpenetrations are more likely to occur in edge cases. In your scene, an absolute value of 0.5 seemed to be pretty good.

Also the Bind Solver substeps are what you want to increase to increase the accuracy of the stretch solver. Default settings are tailored to grain sims. For cloth you'll want to set to 50 or so, depending on sim steps (maybe at 1/8 sim steps 25 bind solver steps would be fine).

In your Collision operator you may also want to set the particle interaction to "collide with front faces" instead of "both", so that if particles end up inside your collision mesh, they are allowed to escape.

Finally, for something like a thin cloth mesh you don't want to set volume constraints on the cloth. That's more for closed-surface softbodies, in order to maintain the inner volume.

I did notice some strange collision inaccuracies in your sim which I will have to dig deeper to see if they're a bug or not. Your file is a bit of a worst-case-scenario since there are lots of interpenetrations in your collision geometry which can result in all kinds of weird collision behavior, but obviously it's nearly impossible to get rid of such things in real productions and so it's a fault of my cloth solver that they are not handled properly, rather than a fault of your setup. In the future I hope to continue to improve the cloth solver for these types of cases (high fidelity character cloth), so stay tuned.
  Reply


Forum Jump: