[HN Gopher] 2D Liquid Simulator with Cellular Automaton (2017)
___________________________________________________________________
2D Liquid Simulator with Cellular Automaton (2017)
Author : KqAmJQ7
Score : 199 points
Date : 2023-02-26 16:41 UTC (6 hours ago)
(HTM) web link (www.jgallant.com)
(TXT) w3m dump (www.jgallant.com)
| tehsauce wrote:
| Shamelessly sharing some research I worked on a few years ago-
| Using ML to learn cellular automata which simulate a given system
| (uses neural cellular automata).
|
| Code: https://github.com/PWhiddy/Growing-Neural-Cellular-
| Automata-...
|
| Demo: https://transdimensional.xyz/projects/neural_ca/index.html
| [deleted]
| [deleted]
| luismedel wrote:
| Cool. Check the 1994 demo "Heartquake" from the spanish demogroup
| Iguana for an earlier realtime water simulation
| https://youtu.be/LLsRBbFOa3k?t=350
| waynecochran wrote:
| Very cool. I wonder if this, in some sense, is a numerical
| solution to the various differential equations that govern fluid
| flow (e.g. Navier-Stokes).
| kqr wrote:
| Key phrase: "in some sense". I mean clearly, yes, it looks
| fluid-ish to a layman, so in some sense it does simulate a
| fluid.
|
| But as soon as you dive into a tiny bit of detail, no, this
| violates those equations at basically every iteration.
| alar44 wrote:
| Not at all. Maybe if your fluid was magnetic Legos.
| animaomnium wrote:
| For a more physically-accurate fluid sinulation using Cellular
| Automata, see _Reintegration Tracking_ :
|
| https://michaelmoroz.github.io/Reintegration-Tracking/
| csense wrote:
| Oxygen Not Included is a video game with some pretty good liquid
| and gas simulations along these lines.
| tomxor wrote:
| If you limit the cell states to to 0 and 1 it behaves much like
| sand.
|
| Shameless plug, in 194 bytes:
|
| https://www.dwitter.net/d/19550
| KRAKRISMOTT wrote:
| Does this use the Lattice-Boltzmann method?
| ulrischa wrote:
| Same idea: General framework for observer based cellular automata
| simulation. Invented years ago as a geospatial research.
| https://github.com/ulrischa/OCell
| SeanAnderson wrote:
| This is great, thanks for sharing. I'm planning on using this, or
| something similar, in a game I'm developing. It'll be waves of
| fog, but act like a fluid, and will encroach on simulated ants :)
|
| I'm curious why the simulator never reaches a complete, steady
| state? It seems to settle mostly and then a few squares flicker
| rapidly. Is this just floating point math doing its thing, or ?
| isoprophlex wrote:
| Seeing this wonderful simulation makes me wonder if a physics
| simulation using cellular automata could benefit from a HashLife-
| esque algo to speed up calculations.
|
| For GoL, the speedups are just insane. The linked wiki shows a
| simulation: _The 6,366,548,773,467,669,985,195,496,000 (6
| octillionth) generation of a Turing machine in Life computed in
| less than 30 seconds on an Intel Core Duo 2GHz CPU using
| Hashlife_
|
| But then of course, Game of Life has loads of 'boring' repeating
| stuff and is much more discrete compared to physical fluid
| dynamics simulation.
|
| https://en.m.wikipedia.org/wiki/Hashlife
| [deleted]
| ricardobeat wrote:
| Why are 'pressurized' cells needed, vs having water not flow
| downwards when the cell undermeath is full? Does this help to add
| a slosh effect?
| explaininjs wrote:
| Consider a J-shaped tube, open on both ends. After you add some
| water to the taller end, the bottom loop fills up. When you add
| more water, what happens? The water flows downwards even though
| the cell underneath is full.
| ricardobeat wrote:
| That makes sense. The counterintuitive part for me was a cell
| causing the one underneath to become pressurized and _then_
| flowing back up. You don't usually think of water as
| compressible.
| zmgsabst wrote:
| A falling stream generates outward flow without piling up.
|
| Watch your faucet run into a partially full sink: there's a
| small depression where the stream impacts it -- while the
| pressurized region under the stream pushes the water out and
| away.
|
| This is in contrast to honey, which will form a mound when a
| stream hits, because of its higher viscosity.
| 6502nerdface wrote:
| My favorite 2D liquid simulator is this IOCCC2012 submission
| [1]... simply astonishing.
|
| That is the source file shown at the beginning of the video... it
| compiles without warnings, runs a full blown fluid dynamics sim
| with surface tension and everything, can take itself as its own
| input... truly a work of art.
|
| [1] https://youtu.be/QMYfkOtYYlg
| suby wrote:
| If we're posting 2D fluid sims that we like, I've always loved
| this one -- http://haxiomic.github.io/GPU-Fluid-
| Experiments/html5/?q=Ult...
| lukko wrote:
| Oh, that is cool! I love that the code itself can be used in
| the sim - reminds me a bit of 'quines' from GEB:
| http://www.madore.org/~david/computers/quine.html
| dekhn wrote:
| https://www.ioccc.org/2012/endoh1/hint.html for those who want
| a direct link.
| diceduckmonk wrote:
| It's got to be this one for me:
|
| https://madebyevan.com/webgl-water/
| lukko wrote:
| That one is brilliant - I just realised you can change the
| light direction.
|
| Another classic: http://david.li/fluid/
| notmysql_ wrote:
| this is probably the best form of user interaction with
| simulated fluid I have seen
| [deleted]
| floodle wrote:
| This one looks like a shallow water simulation, rather than a
| fluid simulation in the sense of handling pressure etc.
| Rendering is gorgeous though!
| l33t233372 wrote:
| It's very impressive how well this works on mobile.
| nextaccountic wrote:
| I was going to reply this is at least 10 years old and it was
| already butter smooth the first time I interacted with it
| (with even older hardware, from when webgl was still a
| novelty and not widely supported across browsers)
|
| And indeed it's at least 11 years old according to this
| youtube video https://www.youtube.com/watch?v=R0O_9bp3EKQ
| isoprophlex wrote:
| Holy hell that's cool. Thanks for sharing.
| F-W-M wrote:
| This must be how dwarf fortress does it
| tantalor wrote:
| Doesn't model air pressure, so no siphon :(
| taylorius wrote:
| This seems to be a version of a lattice gas fluid model. (Or,
| more precisely, lattice-boltzmann, since it allows for fractional
| values of fluid occupancy per cell.) I had a Santa Fe institute
| monograph on this back in the day, and I seem to recall that they
| ended up using a hexagonal grid, in order to achieve the required
| isotropy of fluid behaviour. Might be something to consider.
| [deleted]
| lukko wrote:
| Quick video of a viscoelastic fluid sim I made that runs on iPad
| GPU - https://vimeo.com/779004024.
|
| You can get really interesting mixing behaviour by varying the
| density of the particles -
| https://en.wikipedia.org/wiki/Rayleigh-Taylor_instability
| choubli wrote:
| Love this one, I've ported it to Godot Engine a while ago for fun
| :
|
| https://www.youtube.com/watch?v=nF7cdUVgvNc
| https://github.com/tterrasson/liquid-simulator-godot/
| Bobaso wrote:
| It reminds me of the way Minecraft simulates flowing water
| convolvatron wrote:
| if you want waves..check out huygens principle. you'll need alot
| more cells though.
| pohl wrote:
| Reminds me of how liquids behave in Starbound.
| bartwe wrote:
| Ha, yup, I enjoyed adding that to the game :) It was inspired
| by the system dwarf fortress used at the time extended with
| pressure to allow equalizing vessels.
| antegamisou wrote:
| Also check out wavelet-based water wave simulation for a very
| close approach to the real thing, by a pioneer in the field of
| physics simulation in Computer Graphics, Matthias Muller-Fischer:
|
| https://www.youtube.com/watch?v=6I6BV0-BVxI
|
| https://github.com/lecopivo/WaterSurfaceWavelets/
| madamelic wrote:
| Everyone in this thread is much smarter than me. If you are an
| idiot like me:
|
| make a 3x3 block, delete the middle, hold down the "spawn water"
| button for as long as you like while the mouse is on the empty
| block then remove the top block to create an explosion of water.
| swayvil wrote:
| Speaking as a cellular automation enthusiast, this is hot.
|
| First questions on my mind : Can it do surface tension? Pressure?
| evrimoztamur wrote:
| This is quite close to Terraria's implementation, earlier
| versions having the same falling water rendering 'glitch.' It
| does not implement pressurised water flowing upward on the other
| hand.
| 9dev wrote:
| This has always annoyed me about Terraria a bit; it would have
| been so much cooler to have properly flowing water, with air
| pockets and all.
| diceduckmonk wrote:
| Simple Hooke's Law for Springs worked pretty well [1], even when
| I generalized to 3D. There much less nodes you have to iterate
| over to achieve a water effect.
|
| https://gamedevelopment.tutsplus.com/tutorials/make-a-splash...
| elietoubi wrote:
| remind me of a old cellular automaton I built to picture covid
| propagation: https://www.coronasimulator.com/
| genpfault wrote:
| See also Tom Forsyth's "Cellular Automata for Physical Modelling"
| from 2006[1]:
|
| [1]:
| https://tomforsyth1000.github.io/papers/cellular_automata_fo...
| 6451937099 wrote:
| [dead]
| 6451937099 wrote:
| [dead]
___________________________________________________________________
(page generated 2023-02-26 23:00 UTC)