diff options
author | Nils Thuerey <nils@thuerey.de> | 2006-11-05 19:30:29 +0300 |
---|---|---|
committer | Nils Thuerey <nils@thuerey.de> | 2006-11-05 19:30:29 +0300 |
commit | 3bea663ffa27cab0a60b3ed1ac41d431ce55cecc (patch) | |
tree | c58fa1f791654b0b5e0d4057a0ec38ce541038c5 /intern/elbeem/extern | |
parent | 64b9cda68eb4cd25bc9ce37d710a603b2fc4c81d (diff) |
- bugfixes
#4742 exported normals are now correct
#4821 & 4956 for complex movements in/outflows can now also
use the animated mesh option
- new features
* isosurface subdivision: directly
creates a finer surface mesh from the simulation data.
this increases simulation time and harddisk usage, though, so
be careful - usually values of 2-4 should be enough.
* fluidsim particles: extended model for particle
simulation and generation. When isosurface subdivision is enabled,
the particles are now included in the surface generation,
giving a better impression of a single connected surface.
Note - the particles are only included in the final surface
mesh, so the preview surface shows none of the particle
effects.
* particle loading: different types of particles can now be selected for
display: drops, floats and tracers. This is a bit obsolete
due to the extensions mentioned above, but might still be useful.
Floats are just particles floating on the fluid surface, could
be used for e.g. foam.
* moving objects impact factor: this is another tweaking option,
as the handling of moving objects is still not conserving
mass. setting this to zero simply deletes the fluid, 1 is
the default, while larger values cause a stronger
impact. For tweaking the simulation: if fluid disappears, try
increasing this value, and if too much is appearing reduce it.
You can even use negative values for some strange results :)
- more code cleanup, e.g. removed config file writing in fluidsim.c,
added additional safety checks for particles & fluidsim domains (these
currently dont work together). I also removed the "build particles"
debug message in effects.c (seemed to be unnecessary?).
Some more info on the new features:
Here are two test animations showing the difference between
using the particle generation with isosurface subdivision.
This is how it would look with the old solver version:
http://www10.informatik.uni-erlangen.de/~sinithue/blender/fluid6_fl6manc4_1noparts.mpg
and this with the new one:
http://www10.informatik.uni-erlangen.de/~sinithue/blender/fluid6_fl6manc4_2wparts.mpg
Both simulations use a resolution of 64, however, the version with particles
takes significantly longer (almost twice as long).
The .blend file for a similar setup can be found here:
http://www10.informatik.uni-erlangen.de/~sinithue/blender/fluid6_testmanc4.blend
(Minor Tips for this file: dont enable subdivions of characters until rendering,
thus leave off for simulation, as it uses the rendering settings! For making
nice pictures switch on subdivion, and OSA.)
And here's a picture of old vs. new (for webpage or so):
http://www10.informatik.uni-erlangen.de/~sinithue/blender/fluid6_manc4compare.png
Diffstat (limited to 'intern/elbeem/extern')
-rw-r--r-- | intern/elbeem/extern/elbeem.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/intern/elbeem/extern/elbeem.h b/intern/elbeem/extern/elbeem.h index ea21e807a6f..b3feda8bbe8 100644 --- a/intern/elbeem/extern/elbeem.h +++ b/intern/elbeem/extern/elbeem.h @@ -3,7 +3,7 @@ * El'Beem - Free Surface Fluid Simulation with the Lattice Boltzmann Method * All code distributed as part of El'Beem is covered by the version 2 of the * GNU General Public License. See the file COPYING for details. - * Copyright 2003-2005 Nils Thuerey + * Copyright 2003-2006 Nils Thuerey * * API header */ @@ -72,13 +72,14 @@ typedef struct elbeemSimulationSettings { float *channelGravity; // vector /* boundary types and settings for domain walls */ - short obstacleType; - float obstaclePartslip; + short domainobsType; + float domainobsPartslip; /* generate speed vectors for vertices (e.g. for image based motion blur)*/ short generateVertexVectors; /* strength of surface smoothing */ float surfaceSmoothing; - // TODO add surf gen flags + /* no. of surface subdivisions */ + int surfaceSubdivs; /* global transformation to apply to fluidsim mesh */ float surfaceTrafo[4*4]; @@ -147,6 +148,8 @@ typedef struct elbeemMesh { /* boundary types and settings */ short obstacleType; float obstaclePartslip; + /* amount of force transfer from fluid to obj, 0=off, 1=normal */ + float obstacleImpactFactor; /* init volume, shell or both? use OB_VOLUMEINIT_xxx defines above */ short volumeInitType; @@ -230,5 +233,8 @@ double elbeemEstimateMemreq(int res, #define FGI_MBNDINFLOW (1<<(FGI_FLAGSTART+ 6)) #define FGI_MBNDOUTFLOW (1<<(FGI_FLAGSTART+ 7)) +// all boundary types at once +#define FGI_ALLBOUNDS ( FGI_BNDNO | FGI_BNDFREE | FGI_BNDPART | FGI_MBNDINFLOW | FGI_MBNDOUTFLOW ) + #endif // ELBEEM_API_H |