GPUs
Simulations
valley-fluid.png
valley-rigid.png

Interactive Physical Based Simulations

right Integration of a 2D fluid solver and a rigid body engine in our virtual environment. The rigid body engine is based on jiggle by Danny Chapman. It is modified as a FlowVR module, receiving external objects descriptions such as the terrain or the distance field to the user's body down.
collision03.jpg
collision04.jpg
collision05.jpg
collision06.jpg
collision07.jpg
collision08.jpg
collision09.jpg

video down By tracking the position of the head we can attach a virtual hair simulation to give the user a new look! (hair simulation by Florence Bertails, head tracking by Clément Ménier)
hair01.jpg
hair02.jpg
hair03.jpg
hair04.jpg

3D Fluid Solver

Implementing a 3D fluid solver is not trivial. I used the Marker-And-Cell algorithm as described in Mark Carlson's thesis. down A simple 16x16x16 scene running on one CPU served as intial testing environment.

fluid3d-00.png
fluid3d-01.png
fluid3d-03.png
fluid3d-05.png
fluid3d-07.png
fluid3d-09.png

fluid3dparallel.png
left Using MPI for parallelization a larger scene was simulated with a grid of 32x32x64 and approximately 200000 particules, running in real-time on 8 CPUs.
split

Coupling Multiple Simulations

video Really complex and interesting environments can be created by combining multiple types of objects interacting together. This however is a difficult problem, specially if one want to run it in real time. Some simple tests were done using the previously developed simulations. Each test runs in realtime using at most 16 CPUs.

One Simulation (Fluid or Rigid Bodies)

seq1-fluid1.png
seq1-fluid2.png
seq1-fluid4.png
seq1-fluid6.png

seq2-rigid0.png
seq2-rigid1.png

Rigid -> Fluid One-way Coupling

seq3-oneway1.png
seq3-oneway2.png
seq3-oneway3.png
seq3-oneway4.png
seq3-oneway5.png
seq3-oneway7.png
seq3-oneway9.png

Rigid <-> Fluid Two-way Coupling

This interaction uses the rigidfluid algorithm of Carlson et al from SIGGRAPH 2004.

seq4-rigidfluid1.png
seq4-rigidfluid2.png
seq4-rigidfluid3.png
seq4-rigidfluid4.png
seq4-rigidfluid5.png
seq4-rigidfluid6.png
seq4-rigidfluid7.png

Rigid/Fluid/Mass-Spring N-way Coupling

seq5-rigidfluidmass1.png
seq5-rigidfluidmass2.png
seq5-rigidfluidmass3.png
seq5-rigidfluidmass4.png
seq5-rigidfluidmass5.png
seq5-rigidfluidmass6.png

Adding interactions with the user's body

seq6-grimage1.jpg
seq6-grimage2.jpg
seq6-grimage3.jpg
seq6-grimage4.jpg
seq6-grimage5.jpg

split

(Failed) Attempts

Developing physical based simulations always means experiencing surprising results where objets and particules have interesting comportements, just not the one you expected...

tests1.png
tests2.png
tests3.png

up Ok let's add a ragdoll in the rigid->fluid simulation. Oh wait he is drowning :(

We'll activate the two way coupling so that he will float...

tests4.png
tests5.png
tests6.png

up Well, now he is moving, but still underwater! Maybe he's a diver ;)
split

Back to Gallery

Last modification: August 01 2012.