Page MenuHome

vertex count effects cloth simulations to an inexplicable degree, making the entire system incomprehensible.
Closed, ArchivedPublic

Description

System Information
Operating system: Windows-10-10.0.19042-SP0 64 Bits
Graphics card: NVIDIA GeForce GTX 1070/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 472.12

Blender Version
Broken: version: 3.1.0 Alpha, branch: master, commit date: 2021-12-13 23:43, hash: rBb64750991334
Worked: (newest version of Blender that worked as expected)

I know reporting any bug related to physics is like shouting at a cloud, but here goes. Open below file and press play. Both monkeys have identical cloth sims, right monkey has one level of subdivision. The simulation settings need to have consistency regardless of vertex count, otherwise it's impossible to use the system predictably, and instead requires hours of trial and error.

Event Timeline

In this case it's mostly the "Vertex Mass" setting. Both monkeys have mass set to 0.3 kg, but 1 monkey has 4 times as many vertices. Changing the left monkey to 1.2 kg gets things closer. Simulations include all vertex-vertex interactions, more vertices will change the result accordingly. Fluids will behave the same way where increasing domain resolution will result in different behaving fluid as there's more domain cells to interact and accumulate forces within.

Similarly, if you had "self-collisions" turned on, blindly increasing the vertex count may result in neighboring vertices coming inside the self-collision threshold and destroying the simulation if that threshold is not adjusted.

Thanks. Yeah, I figured that was the cause just after posting the report, but it seems like an incredibly bad idea to have the mass associated with individual vertices....unless it's possible to set variable mass across the mesh? I couldn't see the ability to add a vertex group to mass though.

I think vertex weight should be automatically calculated from volume and material type, this way the mesh resolution won't play a role, and things will act predictably rather than having to try and arrive at ideal settings all the time because of something that shouldn't really be a factor.

Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Needs Information from Developers.Dec 16 2021, 4:27 PM

This all sounds like these could be useful improvements, agree.

I know reporting any bug related to physics is like shouting at a cloud, but here goes

Positive thinking [and reporting anyways] is always welcome on my side :)

Since these are not really bugs (system is behaving as coded), this would be the realm of a feature request though.
Without posting the canned response [which we all know], I would kindly ask the Nodes & Physics department to comment if this is something that could be considered a TODO and kept.
(possibly for the upcoming round of integrating simulation into Geometry Nodes)

@Sebastian Parborg (zeddb): might also be interested.

P.S.: yes, closing this as feature request would also be an option, will just leave it up to others this time (Christmas, this time of the year...)

Philipp Oeser (lichtwerk) closed this task as Archived.Dec 16 2021, 4:35 PM

OKi, changed my mind (this didnt take long), looking at https://metrics.blender.org/d/9TZngd9Gk/blender-bugs-reports-triaging-and-fix

Lets stick to the rules and not let this through (it is just not a bug in the stricter sense).
Dragging in @Jacques Lucke (JacquesLucke) just to raise awareness, but will close.

Thx again reporting anyways!
Feel free to open a design task presenting the ideas for improvement and we'll see where that goes.

what happened to it being Christmas?! :D

Perhaps sebastian will arrive like scrooge and Jacques, you and Ton can be the ghosts of christmas past, showing tales of countless sufferers at the hands of the physics system :D

@michael campbell (3di) we are aware of this.
It is actually one of the first things I stumbled upon myself as previously the "Vertex Mass" didn't mention anything about it being related to vertices at all.
It was simply only called "Mass" with no further explanation. :D

However solving this will require some discussion and testings.

This is because it is not obvious what the user would expect.
Especially since the cloth sim can work on non manifold meshes (wire meshes, edges with more than two faces connected to it).
So you could potentially have a mass variable that can represent a point, surface, or volume depending on the use case.

When using surface or volume masses, the weights of each vertex would have to be updated in real time depending on how the mesh deforms.
Of course we could have a simpler solution, but then that would have to be discussed as well.

@Sebastian Parborg (zeddb) I guess the simplest solution would be to mirror reality by ensuring 0 thickness can't exist.

Solid object - calculate volume (if allowing for variable vertex weights/materials, the objects should be sliced into parts by walking across all connected verts with the same weight/material)
non-solid objects (single verts, edges, faces) user sets thickness parameter per vertex which the volume can be calculated from. Could be a checkbox to treat solid objects as non-solid so it's treated as a hollow object.

Ideally the material weight and thickness should be read from vertex weight groups/attributes so that the user can paint varying materials and thicknesses.