02-03-2020, 09:55 PM
(28-02-2020, 08:04 AM)josemendez Wrote: Backstop can have positive and negative values.
-A value of 0 will make it so that the surface of the sphere just touches the cloth surface from "inside". That is, the center of the sphere will be along the normal, at "-skin backstop radius".
-Positive values will "sink" the backstop sphere further inside the mesh, negative values will bring it forward, causing the mesh to "bulge" (see image in the middle of this manual page: http://obi.virtualmethodstudio.com/tutor...aints.html). If -backstop = backstop radius, the sphere will barely touch the surface from "outside", and the particle will only be able to move backwards.
Mesh normals should not only point away from the body mesh as in not pointing inwards, but as close to being as perpendicular to the surface as possible. This will ensure the backstop spheres approximate the character's body shape as closely as possible. Pretty much all character cloth simulators I've ever had the opportunity to use (Havok, PhysX) work like this, or in a very similar way(*), to ensure maximum performance: each particle implicitly "knows" what zones it should keep out of, without the need of expensive collision detection. Unfortunately this requires the mesh to be authored with cloth simulation in mind, you can't just throw any mesh to it and get perfect results.
If necessary, you could modify the code that feeds the vertex normals to the skin constraints every frame, and modify the normals procedurally. Let me know if you want to go this route and need help with it.
(*)PhysX had the ability to "warp" the skin spheres into skin ellipses, but everything else behaved the same.
So I've tried what you suggested with the negative backstop and backstop radius, and I think it's kind of working, but probably the mesh itself just isn't well designed for the simulation, like you said. Thanks for all your help anyway!