GSoC 2021: Continued Development on Adaptive Cloth Simulator for Blender: Feedback

Hello community!

This is a thread for discussion about the Adaptive Cloth Simulator for Blender.

About the project:
My GSoC project in 2019, on the Adaptive Cloth Simulator, was an exploration in adding support for parametric on-the-fly remeshing for Blender’s Cloth Simulator in order to provide high-resolution-equivalent fidelity at reduced computational cost. During GSoC 2021, I will utilize the insights gained, as well as previously fleshed-out core ideas, to stabilize this feature for production. This will involve introducing a new mesh structure, fixing bugs and regressions, refactoring to integrate well with the latest Blender updates, etc. As a stretch goal, I would improve Blender’s cloth caching system to introduce support for Adaptive Remeshing.

Happy to hear your feedback :slight_smile:

References:
GSoC 2021 Proposal
GSoC 2021 Weekly Reports
GSoC 2019 Weekly Reports
GSoC 2019 Feedback (Discussion)

16 Likes

Hello! first of all, thank you for keep working on the cloth simulator.

I’m a professional groomer and CFX artist and I’ve worked on several productions at different companies where clothes are modelled by the modelling department with all kind of details (pocket, buttons…) and thickness (kind of the solidify modifier results), at least for the visible parts of the cuffs, collars…

This means we can’t simulate them as they are right out of modelling, we need to build one or several one-sided non-thick geometries that act as a ‘drivers’ for the original mesh, and bind them with a surface deform (or equivalent in other softwares). This way we only simulate simpler pieces of cloth but they drive the original high-res thick mesh, which is the only geometry cached.

AFAIK, this is still one of the standard ways of simulating clothes for production, but since the surface deform depends on a fixed vertex count to work correctly, how would the adaptive cloth simulator fit in this kind of pipeline?

I can think of a way to mix both techniques, but it would be even more involved. I’m really interested in your opinion.

Again, thank you for your work!

4 Likes

Hello!

Sorry about the late reply.

That is an interesting way to add physics to a mesh that would otherwise be hard to simulate. You will be able to continue with this approach since the adaptive cloth simulator is not a replacement but an extra feature that can be used if needed.

There was some discussion during GSoC 2019 about adding a feature where the adaptive cloth simulation data is used to drive the base mesh (since they share the same UV layout, this should be easier), this would, at least in theory, allow a higher quality simulation compared to just simulating the base mesh without making it adaptive but this must be tested. I would love to try this out but is not part of the current plan (it might become some weekend project). This will at least help you utilize the adaptive cloth simulator and get higher quality simulations if there isn’t any other way to use the adaptive cloth simulator in your pipeline.

If you have any other questions, I would be happy to clarify :slight_smile: .

3 Likes

Thanks for your response!

This could be a great solution to have kind of the best of both worlds, I really hope you end up finding some time to work on it!
Thanks again for your work!

5 Likes

Hi!

I have a pair of questions.

For dynamic tesselation, are you using Delaunay triangulation remesh?
I remember it used to be the best possible triangulation system to provide a fine detailed cloth.

Also, for the static one, it does not seems to be delaunay, is it different than Dynamic?

Or maybe it is Delaunay but I’m not recignising the result from the static output of the remesh :slight_smile:

I hope this can get into 3.0 (with this I mean that you get to make it stable and useful to be integrated, we really need improvements in Cloth simulation :slight_smile: )

2 Likes

Hello!

The triangulation of the mesh at the end of the remeshing phase (static and dynamic) will be Delaunay. You are correct, Delaunay triangulation is often regarded to be the best type of triangulation.

As of right now (I am assuming you posted this after seeing week 07’s video), the edges are not flipped to maintain Delaunay, they are only split continuously until they meet the size criterion. The edge flip code is already done but I have some more debugging to do.

Cloth simulation is exciting, I hope to continue to work on this even after GSoC :slight_smile:

11 Likes

Awesome, I hope the delaunay triangulation can be made part also from the remesh modifier and the remesh node for GN, it’s useful in different situations, and some remesh algorithms deliver better results using that before, so probably it can be useful to have it generally available, not just as part of this :slight_smile:

I can give a heads up here to @HooglyBoogly, @Howard_Trickey and @pablodp606 :slight_smile:

Probably, to be super useful for remeshing, another feature that is in the well-known “Triangle” program by Jonathan Shewchuk should be added to my CDT code. That is: the ability to insert “Steiner points” – new extra points in the middle of faces. The Steiner points are needed to keep the angles in the triangles nice and big in all circumunstances. I have thought about adding that feature at some point but have not done so yet.

11 Likes

Hi everyone! @ish_bosamiya I just saw your week 12 report and I want to ask you if it’s possible to make this “sewing connection” dynamic. I mean with the possibility to control it using vertex groups and animate it over time. Like in this example:
ezgif.com-gif-maker
And even beyond…, it would be nice to have those “loose edges” accessible somehow so that we can convert it to actual geometry to make it visible and usable for render the actual “sewing lines”.
Thanks for the hard work on this project @ish_bosamiya ! I’m really excited about this. Especially for the fact that we will finally have a cloth solver that accepts topology changes so we can maybe have this kind of effect and also tearing cloth possible… correct if I’m wrong…

3 Likes

It would be great if you could sewing points could be fused, since the modifier fuse isnt working with cloth modifier.

Cause atm if you have a too high pressure/force affecting cloth that is sewn together it will stretch the sew strings, and it would be great if a fuse option were available that sewn points would be fused :smiley:

Hello @EvertonSchneider!

I think what you mentioned about the vertex groups and animating it over time could work, the weights at the vertices of the sewing (loose) edge can influence the maximum sewing force. But I don’t know enough vertex groups so this is just a guess.
Making that work with remeshing will be extremely difficult since all the new sewing edges added in the remeshing process will need to store the interpolated value but all surrounding sewing edges would need to be considered for the interpolated value. Once someone (or I) tackle this dynamic sewing behavior in the non adaptive cloth simulation, I will take a deeper look at this.

Accessing sewing edges wouldn’t involve the cloth modifier at all. Sewing edges are just loose edges of the mesh. Python scripting should allow you to access the loose edges of the mesh.
Python script to export the mesh at each frame of the simulation → Import mesh sequence → Python script to extract loose edges only → Add wireframe modifier to add thickness to the edges → Render

Thank you, it is nice to know that the community is excited about the project. The cloth modifier will only support internal topology changes, not user defined changes, that is a much harder problem to solve. If you would like more information about why only internal topology change can be supported, let me know.

I want to add adaptive tearing support (when remeshing is on) but there is no solid plan for when this will be added.

6 Likes

Hello @Dragosh!

Sewing is done by adding a spring that has zero length, when some other force is larger than the sewing force, it causes the spring to expand, thus creating the gap.

Fusing the vertices of the sewing edges is a topology change so the cloth solver would need to be reinitialized and this is a costly operation.

The best work around I have found for this is to keep the sewing part of the scene separate. So once the cloth has been sewn, apply the modifier. This still hasn’t merged the vertices together, so either use the weld modifier or use merge by distance in edit mode. Now do the rest of the simulation that is needed (pressure, forces, etc). By doing this, you are manually re-initializing the cloth solver but only the one time that it is needed.

1 Like

Thx for the tip,

However manual welding / destructive welding is a painful process if you have large geometries, there’s also the problem when “fixing” the topology, you would have to take a long amount of time just to fix the topology or delete the whole thing and start from scratch, both of which just needlessly complicate modifying topology.

As an example, if we had the ability for the weld modifier to weld sew points together, we could keep the non destructive workflow without going into edit mode to manually move/fix verts around. (with the everything nodes we do move in that direction slowly)

E.g. = A pillow / 2 planes subdivided 10 times (with welding)

Destructive process

  • Make sew points with bridge tool and delete faces only
  • Run cloth sim with pressure, then wait a couple of frames until the sew lines overlap
  • Then apply cloth sim
  • Apply weld / or merge by distance
  • Run cloth sim again
  • If you need to change anything after this point, redo all the steps above (this gets exponentially harder if you have a more complicated model)

Procedural way (imagine if the weld modifier would work like this)

  • Create planes and sew them in edit mode
  • Place weld modifier, check the “weld sew points” (this is assuming that this modifier works on a cloth sim in realtime )
  • Place cloth sim modifier
  • Done, if you need to change anything go in edit mode and do it, running the sim again would recompute the weld points but you dont have to manually fix anything after changing the topology

Just my thoughts after looking at other software that do the non destructive workflow :smiley:

The weld modifier has a new option in 3.0 where you can just merge loose edges for cloth.

Thanks for the work @ish_bosamiya. Hope it lands in master.

3 Likes

Tried it just now.

It works by welding points and creates a normal surface, crudely said. (this is totally wrong how i described it working)

However the Weld breaks apart if i add a subdiv modifier into the mix, Since i use a lot of subdiv modifiers when modelling cloth.

The new points in between existing points that the subdiv creates dont weld together

But thanks for telling me about it, didnt notice that that was added in 3.0 :smiley:

edit
Got it working normally now, looks like i messed up the modifs ordering :face_with_hand_over_mouth:

3 Likes

What happened to the development?

Hi!

There has been some progress since the last report, but development is on break, I am unable to find time to work on this project as of right now. I hope to get back to it within a month or so.

6 Likes