3D realtime water surface using LBM physical modeling [Videos & Demo]

cristianGB

Newcomer
Hi!
I'm working on a physics-based graphic engine supporting interactive animations of free water surfaces at real-time.

Some Youtube Videos:
Realtime Fluid Simulation [1]

Realtime Fluid Simulation [2]

Solid-Fluid Interaction

Fluid simulation with touchscreen interaction

The basic algorithm is based on a lattice-Boltzmann model of the shallow-waters equations and the interaction between the surface and external objects is achieved by means of source terms. The engine is capable of produce scenes of ponds whose surface reacts to perturbations introduced by the user or controlled by the computer, like drizzle or the stirring of a finger.

Some technical data of the implementation:

-Fluid Models Supported: BGK / Entropic Model / Zhou's SWE
-Grid: The implemented grid is D2Q9
-Realtime Grid Size: 200x200 Grids (including reflection, refraction, cubemaps, user interaction, etc.)
-Boundary Conditions: Zou/He, bounce-back, periodic.
-Parallelism: -


I'll release the project to the achademic/scientific community. I'm thinking on release based in a DLL with header format or source code of the physics core.
The real interest on this is use it for realtime applications, call it from any application and rendering the results in the client application.

Exe Demo Application (Requirements: Graphics Card supporting Shader Model 2.0)
3D Realtime LBM Demo

Now i'm working on solid-fluid interaction subsystem and improve performance.
Test the demo and leave your comments please!

Thanks for watching!
Cristian
 
I like the touchscreen interaction version, pretty sweet. I'll try the reatime one when I'm back on Windows (Ubuntu right now).
 
Hello! First, sorry for double posting :oops:
This is a basic (& very preliminary) version of the DLL that i promised, including the fluid physics module in my last demos.
The zip file includes a Visual C++ Project that show you how to use the library, renders a water grid and permits user interaction.

cap1w.jpg


Of course, the visualization in this demo is simple because i don't use my graphics engine.
I hope that it helps somebody...

Send me an email if you have any question (or you got some results using this) ;)
Download: DLL Project Visual C++ Source Code

Regards,
Cristian
 
Just curious, a lot of the recent very impressive fluid simulations I've seen incorporate a simulation over the surface geometry as well as the volumetric component. Any thoughts on when we might see that in games? It makes it look so much better.
 
What's the visual difference between your LBM simulation and Laplace simulation like the one here ?
Laplace is very fast and simple especially for 2D waves like yours.

The real challenge IMHO is simulation of volume fluids, like on a 3d grid.
I've been working on one with a 200x200x200 grid, I'll post it in the near future.
 
Sorry for the delay..

Out of interest I found some water demo's done in less than 256 bytes
http://www.team5150.com/~andrew/asm_toys/

Wow, very cool museum :smile:

What's the visual difference between your LBM simulation and Laplace simulation like the one here ?
Laplace is very fast and simple especially for 2D waves like yours.

The real challenge IMHO is simulation of volume fluids, like on a 3d grid.
I've been working on one with a 200x200x200 grid, I'll post it in the near future.

With a basic algorithm, we can obtain good results too. In most cases, a simple
elastic membrane model is often sufficient for games.
And you're right... the real challenge is simulation of volume fluids ;)

The state of the art in off-line fluid simulation is impressive; (see Ron Fedkiw or some Nils Thurey works), but some minutes per frame (in average) is not suitable for realtime.
So, always the challenge is get as close as possible to off-line results with new or modified technics.
Today, procedural water (shaders, etc); particle systems and heightfields are used. Some method is more stable, other is more customizable,and so on...
In particular, i develop a fluid solver on a scheme based in heightfield and LBM, using BGK and Enthropy scheme; (there are a lot of works based on NS equations, for example, but with LBM we model turbulence too).

The idea is extend this, using particles (splash, breaking waves, etc); implements some LOD, etc. and release a "stable" version.

New versions and future updates are here
(recently version 1.1 was released)

Comments, questions and suggestions are welcome.
Thanks for comment!
 
Back
Top