\

Cloth

311 points - today at 5:31 AM

Source
  • Borzadaran

    today at 3:05 PM

    What fascinates me the most is how setting a few parameters and constraints can lead to such realistic motion. It feels like a reminder that the world around us might just be a set of hidden models and forces โ€” and our task is to discover and simulate them. Beautiful work!

    • Borzadaran

      today at 3:03 PM

      This is seriously impressive work โ€” simple yet mesmerizing. Really highlights how powerful Verlet integration is for creating natural, believable cloth simulations. For anyone interested, I'd also recommend checking out Jakobsen's paper from the Hitman game engine โ€” it's a classic. Thanks for sharing this inspiring project!

      • mmwelt

        today at 9:14 AM

        Another one for the browser: https://oimo.io/works/cloth/

          • luotuoshangdui

            today at 1:28 PM

            Cool. When can we get this kind of cloth interaction in games?

            • varun_ch

              today at 10:54 AM

              such an unbelievably cool website.

              • rand0m4r

                today at 10:42 AM

                simply lovely (like the other stuff on that website)

                • stefanka

                  today at 10:40 AM

                  And another one (Rusty with bevy).. runs better on desktop

              • mattfrommars

                today at 1:01 PM

                How do people go from web dev/gradle/java knowledge to build something like this.

                For me, sometimes I wonder since I never did CS undergrad, I will never understand any of this no matter how many programming langauge I learn. I did dabble a bit with OPENLY, LIBGDX, GODOT, unity but to come to with cloth simulation from scratch, damn

                  • timeforcomputer

                    today at 2:16 PM

                    I have felt similar, wanting to learn physics sims. I have had to learn over time to separate domains of knowledge like physics from programming tools used to ~manifest them. Especially starting with gamedev, initially it felt like there should be a natural programming idiomatic way to set up each of the major simulations like rigid bodies, cloth, springs, fluids, so the first thought I had was these sims will be naturally encoded in the language, like a fluid sim being somehow setting up a grid, then choosing some update rules per timestep. But really it is modelling a problem as real mathematics and physics, then mapping this to a language/toolset which perhaps can't naturally express it idiomatically.

                    There are a few algorithms like some cloth sims based on particle positions and springs, which can be coded easily, but that was misleading to me when trying to improve, I had to dig a lot more into physics and numerical analysis then mapping the problem to code, which can end up clunky and with a lot of magic numbers.

                    • DavidPiper

                      today at 2:38 PM

                      At the end of the day, it's all just maths and physics.

                      You didn't specifically ask about game development, but that domain is where the majority of graphics, mathematics, lighting, physics, etc, knowledge is distributed. And it can be difficult to find information solely about (e.g.) cloth simulation and other niche topics without it being coupled into game development resources.

                      I happened to read https://alextardif.com/LearningGraphics.html today, which might give you some pointers in various directions. https://learnopengl.com/ gets a consistently good rap, even today when there are newer APIs like Vulkan, Metal and DX12. Consider the API as 5% of the problem to solve though (less tbh, though Vulkan is proving even heavier than I was warned).

                      If you don't want to learn C/C++, I understand there's a large community around WebGL, so finding their subreddits and other forums could be a good starting point too.

                      However, again, the API and platform is really just a wrapper around the actual physics simulation (the impressive/novel part).

                      (Source: I'm a web dev/gradle/java developer who is once again building a game engine in their spare time after a previous attempt many years ago)

                      • qoez

                        today at 2:28 PM

                        They're completely different skillsets. You just have to go from the ground up and grind to learn it all (this demo isn't that hard but generally it could take years). You probably have to unlearn a ton of stuff you adapted to when learning java/web dev.

                        • gosub100

                          today at 1:05 PM

                          it's not that difficult. in javascript, you represent each point in (x,y,z), give it a mass, and every frame apply gravity, maybe with some noise added. every time the particle tries to move, you use trigonometry to transmit the forces through the edges to the other points + some damping amount so it doesn't runaway. the mass determines how much each point is affected by subsequent forces.

                          If you aren't ready for it in 3d, do it in 2d.

                            • jeffreygoesto

                              today at 1:58 PM

                              Then you read into things like runge-kutta and implicit methods that make your little simulation not blow up...

                      • atan2

                        today at 2:41 PM

                        I was able to understand verlet integration and write my own cloth simulation after reading the blog post from Marian Pekรกr:

                        https://pikuma.com/blog/verlet-integration-2d-cloth-physics-...

                        • falcor84

                          today at 10:14 AM

                          This reminded me of this cool Polygon video examining the incredible cloth design in the game Elden Ring

                          https://youtu.be/wSSqx-Dh6ko

                          • sph

                            today at 7:50 AM

                            These cloth simulators always feel somewhat unstable - try generating a Grid cloth, and see it start bouncing and moving randomly. Is this due to accumulating IEEE 754 floating point errors?

                              • Karliss

                                today at 9:04 AM

                                Search for "numerical integration" in the context of physics simulation/game engines. You can use https://en.wikipedia.org/wiki/Numerical_methods_for_ordinary... as a starting point.

                                From what I understand it's not just floating point errors, but due to the nature of approximating continues function as simple discrete steps. Linked wikipedia article has a graph demonstrating that with large steps the error accumulates way before floating point precision is a concern.

                                There are different numeric integration techniques with different tradeoffs. Stuff like Eulers method, Verlet, Runge-Kutte. In some of them overall energy tends to accumulate in others it gets lost both of which is wrong. Some of the more complex ones tend to behave a bit better, but then you get into the problem whether gains from each individual step being more complex outweighs what you would get from running more iterations of simpler/faster algorithm.

                                  • rikroots

                                    today at 10:58 AM

                                    I've got a demo[1] where people can play with (my interpretation of) various calculation engines, adjust variables, etc. But seeing this comment made me realise I've never heard of Verlet integration[2] before - not surprising given that I got an F in Maths (and got thrown out of Physics before I could take the exam). So ... how efficient and accurate is Verlet compared to Euler/Runge-Kutte/etc? And what other methods are out there for this sort of calculation?

                                    [1] - https://scrawl-v8.rikweb.org.uk/demo/particles-008.html

                                    [2] - https://en.wikipedia.org/wiki/Verlet_integration

                                      • debugnik

                                        today at 11:45 AM

                                        Verlet integration became the go-to method for particle effects and soft surfaces back when people wrote their own game engines, mostly thanks to the paper documenting its implementation for the first Hitman game [1]. In fact, I'd say it got cargo-culted by game devs for that purpose and that purpose only, despite it being a general method and competing with others.

                                        [1]: https://www.cs.cmu.edu/afs/cs/academic/class/15462-s13/www/l...

                                    • Azrael3000

                                      today at 10:07 AM

                                      Would be interesting to know what integrator they use. Verlet schemes can be implemented with very little effort and they don't suffer from this issue (see e.g. the leap frog method). But in general you would nearly always add some sort of damping mechanism, particularly for CG applications.

                                        • debugnik

                                          today at 11:28 AM

                                          You mean for this submission? The window title says "Verlet simulation test".

                                            • Azrael3000

                                              today at 11:58 AM

                                              Ah thanks I missed that. Then it seems there is nearly no damping used.

                                  • praptak

                                    today at 11:04 AM

                                    Energy preservation doesn't work by default in physics simulations unless you specifically code for it (e.g. by periodic explicit adjustment).

                                    It's not only the rounding error, it's also quantisation of time and other minor errors coming from the mathematical model itself.

                                    If the error is on the damping side, you get the real life effect of motion eventually stopping due to energy dissipation. If it's on the acceleration side you get a runaway simulation.

                                • rikroots

                                  today at 7:00 AM

                                  I've always loved this sort of cloth animation. I think the first one I saw was dissimulate's tearable cloth demo on Codepen - I can't believe they wrote that code 9 years ago!

                                  [1] - https://codepen.io/dissimulate/pen/eZxEBO

                                  [2] - https://github.com/Dissimulate/Tearable-Cloth

                                    • wingerlang

                                      today at 7:56 AM

                                      Here's mine from 14 years ago https://www.youtube.com/watch?v=G05M_Y6NQVM

                                      It's very simple to implement a basic setup like this, and I agree that the results are super cool.

                                      • ribcage

                                        today at 8:50 AM

                                        Video game Hitman from 2000 had cloth. Mirror's Edge from 2008 had tearable cloth. And I am pretty sure they weren't the first.

                                    • ninju

                                      today at 1:43 PM

                                      Click on the word in front of "Cloth Type" to change it to a Grid for even a cooler interaction

                                      • stefanka

                                        today at 10:29 AM

                                        The author created some Godot addons. Is this made with Godot too? Would be a nice to have for a free game engine

                                          • __loam

                                            today at 10:44 AM

                                            Godot can target the web so it's conceivable

                                        • polotics

                                          today at 8:05 AM

                                          Does this mean I can finally get a robot to fold my shirts in ten years?

                                            • stefanka

                                              today at 10:38 AM

                                              Simulating cloth for instance with spring/damper models is quite old. Even older than robotics research on folding clothsโ€”and it has progressed pretty far. See for a recent survey:

                                              https://arxiv.org/abs/2407.01361

                                              • DonHopkins

                                                today at 8:51 AM

                                                Yes, but you will have to wear a hinged stainless steel shirt that makes you look as ugly as a CyberTruck.

                                                  • skrebbel

                                                    today at 9:31 AM

                                                    worth it!

                                                • m0llusk

                                                  today at 12:25 PM

                                                  Are the Foldimate and Laundroid not meeting your needs?

                                              • faeyanpiraat

                                                today at 11:17 AM

                                                Is there a simple way to do fluid (air) simulations like this?

                                                  • xiaoyu2006

                                                    today at 11:46 AM

                                                    No they are completely different.

                                                • sashank_1509

                                                  today at 7:09 AM

                                                  So beautiful, robotics simulation can benefit from something like this. The state of cloth simulation in robotics is still pretty pathetic

                                                  • brcmthrowaway

                                                    today at 7:32 AM

                                                    Is this the new Ciechanowski