From BlenderWiki
Fluid Simulation
Det følgene kapitel beskriver hvordan man animerer væsker ved at bruge fluid simulatoren, som har været integreret i Blender siden version 2.41
Arbejds Oversigt
- Mens du modellerer en scene med blender kan visse objekter blive valgt til at deltage i fluid simulation, f.eks som væske eller som en hindring. Den bestemte kasse af et andet objekt ville blive brugt til at define en kasse-formet region som man simulerer fluid i (det bliver også kaldt for domian)
- De globale simulations parametrer så som viscosity og gravity kan blive bestemt for domain objectet.
- Ved at bruge "bake" knappen, bliver geometrien og dens indstillinger exporteret til simulatoren og fluid simulation bliver udført, hvilket skaber et surface mesh og et preview for hver animations frame, og gemmer dem til harddisken.
- Den tilsvarene fluid surface for den aktive frame bliver loaded fra harddisken og vist eller renderet.
De to billeder ovenover og nedenunder denne paragraf er et eksempel på fluid animationer skabt med El'Beem simulatoren i Blender (og renderet med Yafray).
Forklaring af GUI-Indstillinger:
Skærmbilled af den nuværende gui for et domian objekt. Efter man har gjort fluid simulation muligt for et objekt, kan typen blive valgt (domain,fluid,obstacle,...) udfølge yderliger indstillinger for hver type.
Efter man har gjort fluid simulation muligt for et mesh objekt, er følgene fem objekt typer mulige.
- Domian: Den bestemte kasse af dette objekt vil være grænsen for fluid simulation. Vær opmærksom at på formen af dette objekt er ligegyldigt (så for det meste vil der ikke være en grund til at bruge en anden form end en kasse). Hvis du har brug for hindringer eller ander grænser end en kasse skal du indsætte yderliger obstacle objekter. For øjeblikket bør der kun være et fluid simulatons domian objekt. Længden af den bestemte kasses sider kan være forskellige.
- Resolution: Resolutionen er hvor selve fluid simulationen finder sted. Dette er nok den aller vigtigste indstilling for simulation da det bestemmer hvor mange detajler der er i fluiden, hukommelsen og harddisk forbrug og computerens beregnings tid. Læg mærke til at den krævede mængde hukommelse hurtig bliver forøget: en resoltion på 32 kræver ca. 5MB, 64 kræver ca. 40MB, mens 128 allerede kræver mere end 250 MB. Hver sikker på at sætte resolutionen lavt nok, alt efter hvor meget hukommelse du har, til at forhindrer Blender i at crashe eller fryse. Hvis domain ikke er kvardratisk, vil resolutionen blive taget fra den længeste side. Resolutionen langs de andre sider vil blive reducered alt efter deres længder.
- Preview-Res.: Dette er resulationen hvor det generede preview surface mesh vil blive genererat. Så det har ingen indflydelse på selve simulationen, og selvom der ikke er noget at se i previewet, kan der måske være et tyndt lag fluid surface som ikke kan blive løst i previewet.
- Start time: Simulation tid (i sekunder) af den første Blender frame. Så denne indstiling gør at animation i Blender starter sener inde i simulationen.
- End time: Simulation tid af den sidste Blender frame.
- Disp.-Qual.: Hvordan den baked simulation i Blender bliver vist i Blender GUI (først træk menuen ned) og for renderen (den anden): orginal geometri, preview mesh eller det endelige mesh. Når ingen baked data bliver fundet, vil det orginale mesh bliver vist som standard.
- Bake fil sted: Sted og fil for udbestemt sted til at opbevare baked surface meshes. Dette minder om animations udput indstillingerne, borset fra det at vælge en fil er lidt specielt: når du vælger en af de forrige generede surface meshes ( f.eks. untitled_OBcube_fluidsurface_final_0132.bobj.gz) det for udbestemte sted vil automatisk blive sat til (untitled_OBcube_ for dette eksempel). På denne måde kan simulationen blive gjort flere gange med forskellige indstillinger, og give adgang til hurtige ændringer mellem de forskellige sæt af surface data.
- Bake-Knappen: Udføre den nuværende fluid simulation. Blender GUI vil fryse og vil kun vise den nuværende frame som bliver simuleret. At trykke ((TASTEN|ESCAPE)) vil afbryde simulationen. Derefter vil der være to .bobj.gz i det valgte fil opbevarings sted for hver frame.
Frigøring af de forrige baked filer
At slette indholdet af Bake fil opbevarings stedet er en god (men destruktiv) måde at opnå det her på; alternativet, vis den første simulation løb fra frame 1 (Start) til frame 250 (End), kør den så fra frame 251 til frame 500, for eksempel.
|
- Advanced-Knappen: Vis du Trykker denne knap vil der komme nogle mere advandcerede indstillinger frem, som man for det meste ikke behøver at ændre på.
- Gravity vector: Styrke og retning for gravity acceleration. I øjeblikket burde hoved indstilling være langs den negative z-akse [m/s^2]. Den her burde ikke være nul (men ihvertfald et lille tal).
- Viscosity: Viscosity, betyder "tykkelse" af fluiden. Du kan vælge at taste en værdig direkte ind eller du kan bruge en af de for ud bestemte. For manuel indtasting, er værdigen specificeret af et flydene punkt tal der bør være omkring 1.0, og en negativ exponent. Dette simplificere indtastningen af meget små tal, da viscosity af f.eks. vand er omkring 10 til minus 6.
- Real-World size: Størrelsen af domian objektet i den virkelige verden i meter. Hvis du vil skabe et glas af vand, kunne denne være 0.2 meter, mens for en dråpe en centimeter (således 0.01m) ville være mere end nok. Størrelsen her bliver sat for den længeste side af det bestemte kasse domian.
- Gridlevel: How many adaptive grid levels to be used during simulation - setting this to -1 will perform automatic selection.
- Compressibillity: If you have problems with large standing fluid regions at high resolution, it might help to reduce this number (note that this will increase computation times).
- Fluid: All regions of this object that are inside the domain bounding box will be used as actual fluid in the simulation. If you place more than one fluid object inside the domain, they should currently not intersect. Also make sure the surface normals are pointing outwards. In contrast to domain objects, the actual mesh geometry is used for fluid objects.
- Initial velocity: Speed of the fluid at the beginning of the simulation in meters per second.
- Initial velocity: Speed of the fluid at the beginning of the simulation in meters per second.
- Obstacle: This object will be used as obstacle in the simulation. As with fluid object, obstacle objects should currently not intersect. As for fluid objects, the actual mesh geometry is used for obstacles.
- No settings as of now...
Some tips
Your obstacle should have a thickness greater than the unit element of the domain (e.g., the longest side of the domain bounding box divided by the resolution) or the fluid will travel through the obstacle as if it was not there. Moreover, make sure that the normals of the obstacle are calcultated the same way, and radiating properly (use the Flip Normal button, Mesh Tools pannel, Editing context [F9]), particularly when using a spinned container. Applying the Modifier Subsurf before baking the simulation could also be a good idea.
|
- Inflow: This object will put fluid into the simulation (think of a water tap).
- Initial velocity: Speed of the fluid that is created inside of the object.
- Initial velocity: Speed of the fluid that is created inside of the object.
- Outflow: Any fluid that enters the region of this object will be deleted (think of a drain). This can be useful in combination with an inflow to prevent the whole domain from filling up.
- No settings here...
- No settings here...
Some Background Information
Fluid animation can take a lot of time - the better you understand how it works, the easier it will be to estimate how the results will look. The algorithm used for Blender's fluid simulation is the Lattice Boltzmann Method (LBM); other fluid algorithms include Navier-Stokes (NS) solvers and Smoothed Particle Hydrodynamics (SPH) methods. LBM lies somewhere between these two. In general, it is really hard for current computers to correctly simulate even a 1-meter tank of water. For simulating a wave crashing through a city, you would probably need one of the most expensive supercomputers you could get, and it might still not work properly, no matter which of the three algorithms above you're using.
But, similar to what film makers have been doing in "analogue" movies for years, you can pretend to have a wave in a city by building a smaller model, have a small wave in the model, and hope that nobody will notice the difference between a 100m and a 1m wave. For Blender's LBM solver, the following things will make the simulation harder to compute:
- large domains
- long duration
- low viscosities
- and high velocities.
The viscosity of water is already really low, so especially for low resoltuions, the turbulence of water can not be correctly captured. If you look close, most simulations of fluids in computer graphics do not yet look like real water as of now. Generally, don't rely on the physical settings too much (such as physical domain size or length of the animation in seconds). Rather try to get the overall motion right with a low resolution, and then increase the resolution as much as possible or desired.
Notes / FAQ / Known problems
|
Further Information
- Tutorial 1: Very Basic Introduction
- Tutorial 2: The Next Step
- Tutorial 1&2 Gui Changes for newer builds
- Developer documentation (implementation, dependencies,...)
Acknowledgements
The integration of the fluid simulator was done as a Google Summer-of-Code project.
More information about the solver can be found at www.ntoken.com.
These Animations were created with the solver before its integration into blender:
Adaptive Grids,
Interactive Animations.
Thanks to Chris Want for organizing the Blender-SoC projects, and to Jonathan Merrit for
mentoring this one! And of course thanks to Google for starting the whole thing...
SoC progress updates were posted here: SoC-Blenderfluid-Blog at PlanetSoC.
The solver itself was developed with help and supervision of the following people:
U. Ruede, T. Pohl, C. Koerner, M. Thies, M. Oechsner and T. Hofmann at the
Department of Computer Science 10 (System Simulation, LSS) in Erlangen, Germany.
http://www10.informatik.uni-erlangen.de/~sinithue/img/lsslogo.png http://www10.informatik.uni-erlangen.de/~sinithue/img/unierlangenlogo.png




