VICODynamics: a particle based Soft-Body physics Plugin

Thank you!

Ok ok, last update for today :wink:

Cloth objects colliding:

It is a bit slomo due to running at 16 fps because my GTX 1080 went out in smoke yesterday and Iā€™m using a GT 610 LOL

The collision is still particle based which is why you see a gap between the two boxes, this will be addressed soon by switching to a per-poly collision solver. Aside from that Iā€™m quite pleased with the result!

Another test of the Cloth from Mesh feature, this time collision between a rigid body:

Still need to fix up the rendering artifacts related to tangent and normal calculation and test out vertex painting attachments. Pretty good so far though!

Fixed the tangent artifacts and tested more complex meshes:

Cloth lamp cover?

Cloth from pretty much any mesh, but for best results youā€™ll want to have a mesh with tuned topology based on the behaviour youā€™re after.

Really cool stuff! Have you had a chance to test performance on a mid-range PC?

What specs did you have in-mind? I can do a test on a Surface Pro 3 and 4, a PC with an i5 6600k + GTX950 and a PC with an i7 5820k @ 4.4GHz + GTX 1080. And of course an Xbox One. PS4 kit should be arriving later.

Woot, itā€™s my dream to be able to paint cloth weights onto clothing directly in-editor :smiley: Looks like youā€™re close. Excellent work.

I have a 660ti and an i5-3570K, but Iā€™m not very knowledgeable about hardware, so Iā€™m not sure how that stacks up to what youā€™ve got. Obviously itā€™s nowhere near your 1080 setup, so maybe more like the 950 machine?

Thank you! Yeah, vertex painting is next.

Yeah, I think youā€™re right. Iā€™ll run the example project today on it and Iā€™ll post the stats.

Wilkes, want to let you know that I have not forgotten to get the figures for you. I went down the infinite rabbit hole of optimization and have only now gotten back out :wink: . Iā€™ll get those figures for you tomorrow!

You donā€™t need to break your back over this ā€“ my question was mostly out of curiosity. Still interested of course!

The future is comingā€¦

Not sure if this was covered or not, but is there a way to limit how much cloth stretches? This is one of the most important features that Iā€™ve never seen done easily if at all, Iā€™ve spent hours in blender trying to limit how far softbodies or cloth can stretch with no success.

Even Batmanā€™s cape in the Arkham games tends to stretch beyond its base length.

Iā€™m hoping that thereā€™s a setting that can limit stretch by a percentage, 0% meaning it never stretches longer than itā€™s base shape ever (no matter how much force is applied). When you have characters that move really fast, this is needed to prevent ā€œrubber band snappingā€ of capes, dresses, bellies, breasts, and hair.

This is a fundamental problem with the way soft-bodies are simulated, by using an iterative correction algorithm. Because it loops through the list of constraints and makes length corrections every pass, these corrections average out across the entire object. I have not looked into a strict length enforcement option, but itā€™s definitely on my todo list now. Iā€™ll let you know how this pans out, Iā€™m now pretty interested myself actually.

Got some metrics for you on my i5-6600k @ 3.6GHz with a GTX 950: running the Examples projectā€™s level which has 340 particles and 614 constraints across ~24 ropes which are all being simulated (3 sub-steps, each with 8 constraint iterations) with Self-collision and Scene collision: the entire simulation tick takes 1.2ms-1.8ms depending on the number of collisions at that point. Do note that this is running the entire simulation on the game thread with no parallelization and no optimization options enabled (worst case if you will). If we enable collision caching (upcoming feature) we get .95ms-1.05ms!

Let me know if there are more figures youā€™d like to see.

PS: Just for comparison, best case scenario (utilizing an upcoming build): asynchronous simulation tick with collision caching results in 0.13ms on the game thread and 1.08ms-1.2ms on the simulation thread! And this can further be improved by using the Parallel version which utilizes a thread pool to speed up the entire simulation tick internally as well as enabling the upcoming ā€œExplicit Collisionā€ feature which allows for defining colliders explicitly, therefore skipping expensive scene queries. Iā€™ll be posting more details on all of the aforementioned new features/improvements soon!

Wow, very impressive!

Really cool video utilizing the plugin here:

As the developer, I love seeing how my work gets utilized! As well as seeing what needs to be improved. And if you noticed it like I did, that ā€œcrawlingā€ effect is fixed in the version on GitHub in the ā€˜Cloth_Componentā€™ branch :slight_smile: .

If you created a video utilizing VICO Dynamics, let me know. Iā€™d love to see it!

Hi team VICO, We just bought the plugin. Thanks for the quick support getting us on the GitHub.

That video reminds me:

What functions do you have for dampning? Something that can soften movement to reduce jittering, possibly have a threshold or bias so users can define when dampning is triggered (how big or small the jitters have to be, before dampning is triggered).

Also, restitution for sofbodies? and is there a property that controls how fast or slow the forces are resolved (I canā€™t remember what itā€™s called, but blender has it, and couple of other physics systems Iā€™ve worked with)