Create a Realistic Water Simulation
Up until now blender's fluid simulator has kind of been a waste of time. Sure the fluid looked okay in the viewport, but when it came to rendering the internal renderer did a horrible job. The complex properties of water meant that it simply couldn't create realistic water simulation results. However, thanks to the new physically accurate rending engine Cycles, we can have fluid that actually looks half decent. Enter into a new era of realistic water and glass.
The image is based off this concept from iStockPhoto.
Not sure where to take this tutorial? Check out the links below for more fluid inspiration:
Create something cool with this tutorial? Post it below! I'm keen to see your results :)
SimulationsAndrew PriceFluid, Photorealistic
If you ever want a closer look at how water behaves or you simply just want to animate water, then a water simulation is the best way to go. In Blender, its water simulation is an easy method to visualize how water flows and interacts with other objects while a boundary is enclosing it. Its simulation also mimics real-life fluid flow with Blender’s fluid simulation feature.
Water simulation in Blender requires the use of a Domain object as the boundary and a Flow object as the source of water. If you want additional objects to interact with the water, you will also need an Effector object but this is not required. After setting up these objects, you’ll proceed with testing the simulation and changing its properties. Lastly, you will position the camera as to how you want your animation to look before finally rendering your animation.
In this article, you’ll have a comprehensive step-by-step guide on how to do a water simulation in Blender. You will also read about additional water simulation reminders perfect for beginners like you.
Step-by-step Guide For Water Simulation
To start your first water simulation, you can select “General” under New File. This will be shown once you open the Blender application. We will begin the water simulation by creating the necessary objects for your scene.
Creating The Domain Object
The Domain object is an important part of your water simulation. It is the object in your viewport that defines the bounds of your water flow. To better visualize this, imagine simulating water that is moving inside an aquarium. You will need a rectangular box as your Domain object for this simulation. Every water simulation in Blender requires the use of a Domain object to always contain the water regardless of its flow behavior.
When creating the Domain object (or simply the Domain), you must start with the basic structure of your object. Looking back to the previous aquarium example, you will need a cube as the starting object for your Domain. After this, you can proceed on making necessary adjustments in its height, length, and width such that its overall 3D appearance resembles a tall rectangular box similar to an aquarium. Now that you finally understand what a Domain is, here’s how you can create it.
You can start with the cube that is present once a new file is opened. But if you want a different object as a starting point for your Domain, just delete the cube and then click “Add”. Select “Mesh” from the choices and then choose the shape of the object that you will need.
Once you have an object for your Domain, you can scale, resize, and move this object until you achieve your desired model. Then, go to the “Physics Properties” tab and select “Fluid” in the “Enable Physics for:” section. Select “Domain” in the “Fluid” section that will appear. After selecting this, the “Settings” section will appear and then select “Liquid” in “Domain Type”.
In the “Resolution Division”, set the number to 32 first. This is for faster loading time during the testing part of your simulation later on. But if you’re done with testing and already satisfied with the simulation, you can always increase the resolution for better details in your output. Take note that a higher number in the “Resolution Division” corresponds to a better resolution but also a longer baking time.
Lastly, go to the top right corner and select “Viewport Shading: Wireframe” to make the surface of your Domain transparent which lets you see the inside of the object while working on the next steps.
Setting Up The Flow Objects
After creating the Domain, you can now proceed with setting up the Flow objects. Flow objects can be the source or the outlet of water inside the Domain. In simpler terms, a Flow object is where water enters or leaves. For example, you can create a water inlet in a rectangular box by placing a spherical Flow object on its inner surface. This makes it seem like water is flowing inside the box through a hole.
You can use more than one Flow object for your simulation. Just like the Domain, you can use any shape for Flow objects. You can also move and resize these objects as long as they are contained inside the Domain.
To start creating the Flow object, you must click “Add” and select “Mesh” then choose the shape that you want. Go to the “Physics Properties” tab and select “Fluid” in the “Enable Physics for:” section. In the “Fluid” section, select “Flow”. The “Settings” section will appear and then select “Liquid” in “Flow Type”. Choose how you’d like the water to flow in “Flow Behavior”. In the “Flow Source” section, you can change the settings to set an initial fluid velocity. You can also change the position and direction of the water as it is being emitted by the Flow object. If you don’t change these settings, the water will simply fall directly below the Flow object.
The Different Types of Flow Behaviour
As previously mentioned, you can choose the water flow behavior shown by the Flow object. There are three types of water flow behavior namely inflow, outflow, and geometry. Because of the differences in how each Flow object can behave, each Domain can have multiple Flow objects. For example, you can have a rectangular box with both a water inlet and a drain inside.
For an Inflow behavior, the Flow object will basically emit the water inside the Domain. This can be likened to an open faucet spilling water inside a container. On the other hand, Outflow behavior allows the Flow object to remove the water inside the Domain. It behaves similar to a drain or a leak in a water container.
Lastly, selecting Geometry in the “Flow Behavior” allows the surface of the Flow object to be converted into the actual fluid. If you choose a sphere for the Flow Object, it will turn into a ball of water.
Setting Up The Effector Objects
The Effector objects are optional additions to your water simulation. They make the simulation more interesting to look at because Effector objects interact with water flow. They can hinder water movement just like a rock against the flow of water in a river. Or they can influence the flow of the fluid just like a propeller. You can also use any shape for Effector objects.
To set up an Effector object, you need to click “Add” then “Mesh” and select the object shape that you want to use. Proceed to the “Physics Properties” tab and then select “Fluid” in the “Enable Physics for:” section.
In the “Fluid” section, select “Effector”. After this, the “Settings” section will appear, and then in “Effector Type” choose how you want the Effector object to interact with water.
The Different Types of Effector
In general, there are two types of Effector objects: Collision and Guide.
Effector objects that are Collision type hinder fluid flow upon impact. For example, using a cube as a Collision-type Effector object will block the water that approaches the object inside the Domain. When you use this, you can expect that there will be water splashes upon impact.
Meanwhile, Guide-type Effector objects can affect fluid flow velocities. This lets you add moving objects, unlike the Collision-type Effector objects. An example of this is using an Effector object to change the velocity of water as soon as it comes in contact with the object.
After creating all the necessary objects, let’s now proceed with working on how the simulation will look as a whole.
Caching and Testing The Simulation
When the scene for your simulation is complete, caching should be the next thing to do. To do this, click the Domain object and proceed to “Physics Properties”. Then, navigate to the “Cache” section and click the folder icon. On the new window that will appear, make a new folder for your project.
Under the Cache section, select “Modular” on the dropdown menu for “Type”. The Modular setting allows you to bake the data first before baking the mesh. After selecting this, scroll to the “Settings” section and click “Bake Data”.
Once the baking process is finished, you can play the animation and you will see that the particles are already flowing like water in your simulation. If you are not satisfied yet with the current simulation and you’d like to add new changes such as changing the position of objects, just click “Free Data” under the “Settings” section first and then proceed with moving the objects. After applying the desired changes, click “Bake Data” again and wait for the baking to finish.
Adding Mesh To Liquid Properties
Each baking of data allows you to test the movement of the water particles in your simulation. Once you have achieved your desired result, it is time to add the mesh to the particles. This mesh covers or wraps around the entire surface formed by the particles making them appear more fluid-like.
To do this, select the Domain object again and go back to “Physics Properties”. Scroll down until you find the box for “Mesh” and then enable it. Below this section, click “Bake Mesh” and wait for the baking process to finish. Play the animation to see that the liquid particles are already replaced with fluid in your simulation.
Changing Render Properties
The next step is changing the render properties and this lets you enhance how the rendered simulation will look. You can do this by going to the top right corner and selecting “Viewport Shading: Rendered”. After this, you will observe that your viewport is no longer in wireframe mode.
Next, go to the “Render Properties” tab on the column to the right and look for the Render Engine option. Choose “Cycles” in the Render Engine dropdown menu. The use of the Cycles Render Engine makes your simulation more realistic due to producing mathematically correct material and light behavior in the fluid. Wait for the rendering process to finish.
Changing The Lighting and Background
You might also want to change your lighting and background color before finalizing your water simulation. To change the lighting settings, select the lighting icon first. Move it around anywhere you want the light source and you can change the angle of the light as it hits the fluid. You can also enlarge the lighting icon. A bigger radius of the lighting icon will also result in more reflected light.
To make the simulation more realistic, it is better to make it seem like the sun is the light source. To do this, proceed to the Light Properties tab and select “Sun”. Then wait for the rendering process to finish.
For the background color, you just need to go to World Properties and then choose the color that you’d like. After this, wait for the rendering process to finish.
Positioning The Camera
At this point, you are almost done with your water simulation. Everything seems final already but there’s another vital thing that must be always considered in animation – the camera view. You will need to position the camera in such a way that it captures the desired perspective for your audience.
Navigate around your simulation to look for the best spot where you’ll want your camera view. Press Ctrl + Alt + 0 to show the camera view. You can adjust the view to achieve how you’ll like your animation to appear in your final output. Make sure that each frame of the simulation is within the camera view.
To check the appearance of a single frame in the camera view, press F12. After this, you can finally increase the resolution to add more details to your water simulation.
Rendering The Water Simulation
The last step for your water simulation is rendering it in Blender. This is a quick and easy final step but you need to save first your Blender file by going to the File tab and then click “Save”. After this, go to the Render tab at the top left corner of the window and select “Render Animation”.
Additional Tips For Beginners
Water simulation in Blender can get a bit overwhelming especially to beginners. Here are some helpful reminders to help you get through your first water simulation with ease.
The initial step in creating a water simulation is setting up the scene and this includes creating your Domain, Flow objects, and even Effector objects. To make this easier for you, you can use a background image to help you in structuring every object. When you’re done and before rendering, you can just delete the image.
Make sure that your Domain object is large enough to contain everything you want for your water simulation. Its structure should be enough to contain the splashes or any movement of the water. Take note that the Domain object will usually appear like an invisible wall in your animation.
As soon as you have successfully created the Domain, make its surface transparent before proceeding to the next steps. In this way, you can easily position other objects inside the Domain object and view the fluid flow too.
Try to practice the use of shortcut keys for your own convenience. The basic shortcuts that you can use for your objects are G = free Translate/Manipulate (X, Y, and Z to lock axis), S = free Scale/Resize (X, Y, and Z to lock axis) and R = free Rotate (X, Y, and Z to lock axis).
Before baking the data, try to recheck everything and apply the necessary changes you want to your objects. This saves you time for multiple baking and freeing of data. Once the baking of data is done, you constantly need to free the data first before making some changes.
You can only change the liquid properties after baking. Prior to baking, all you have are data that is not yet considered fluid. You cannot change how the water will look if you haven’t baked the data and mesh first.
Although you want your domain to be large enough, always try to use the least possible size. As the Domain object becomes bigger, the longer the simulation needs to render. If you want to save time but also want your animation to appear bigger, just zoom in on the camera view before rendering.
Blender once again proves itself to be reliable in producing advanced animations like water simulation. Regardless if you are a beginner, you can easily simulate water in Blender because it is pretty much a straightforward process. You just need to establish the scene using Domain, Flow, and Effector objects followed by testing the simulation and changing its properties as well as the camera position. After these, you will just need to render out your water simulation. Of course, there will be technicalities but this guide is specially designed for beginners to help you get through your first water simulation. Through this comprehensive guide, I’m sure you will finish your simulation in no time and without having much to worry about.
The Blender Fluid simulation is a very interesting topic. Usually these simulations are a lot of fun and allow users to create some awesome renders. Blender has Fluid Simulations built-in and they are pretty good too. But it is not easy to use them for a newbie, so let’s see how to create liquid and smoke simulations in Blender yourself.
Blender How to Simulate Liquid
Blender Simulating Liquid can be really confusing on the first glance. But let’s just start. Follow my steps and everything will be altright.
Creating Liquid Simulation Domain in Blender
First of all we need to create bounds for the liquid to contain. We can’t simply put it to nowhere in Blender. So this step is very important, as there always needs to be bounds for the fluids. For this bounds we need to use an object. Any object will be found, but a bit sized Cube would be perfect for now.
Now with this box selected proceed to the Physics Properties and turn on the Fluid Simulation for it by clicking on the name.
Then in the Fluid Type choose the Domain. This means that it will be bound for our Fluid Simulation. You will see the changes to the Cube right away.
Now we need to change the Domain Type from Gas to Liquid. This is important, because it will not work with liquids right now. The Cube should turn back to solid after that.
We also need to change some other settings. Firstly, we need to turn on the Diffusion option. This one is important because it decides how our liquid feels and looks. There are three available presets even for Honey, Oil and Water. I will leave it at the default – Water.
Also enable the neighbouring Mesh option. This will enable a Fluid Mesh that we will create later.
And the last thing is to check in the Cache section whether your Type is set to Replay and not Modular. It should be like that by default, but it is useful to check. Otherwise you could not be able to see liquid in real time.
Creating Liquid Simulation Flow Object in Blender
Now that we created the bound object for our Blender Liquid Simulation, we need to add liquid itself. For this we also need to create an object that will spawn liquid to the scene. The best object for this right now is probably a UV Sphere.
After creation – place it somewhere in the Cube. Turn on the X-Ray[Ctrl+Z] or Wireframe Viewport Shading to help you with this.
Now enable the Fluid Physics Simulation on the Sphere in the Physics Properties. But this time change the Type to the Flow.
After that change the Flow Type to the Liquid, because that is the one that we want to deal with. Also change the Flow Behavior to the Inflow option that will add fluids to the simulation.
Objects are ready and you should be able to Play Animation[Spacebar] and see the fluids flowing. But there is a good chance that nothing happens. It looks like that is a bug. But worry not, because it is easy to fix.
All you need to do is select the Domain Object again and change the Resolution Division setting. You can change it to whatever you want and then turn back. This will just refresh the simulation and fix the problem. Also make sure that your Animation is starting from the exact frame №1.
If you did everything right – the Domain object should become transparent and you should see the fluid particles appearing around the Flow Object in the X-Ray mode.
Simulating Liquids and its Settings
Finally, you should be able to Play Animation now by pressing the [Spacebar]. This should start calculating the physics. This can be heavy on your system and especially on your CPU, so depending on how good it is – it may take some time to calculate. Though after the initial calculations are done – next times would be a lot faster.
As you can see – the result is not very detailed. Water is quite low-poly and is shown in big “chunks”. That is because of the Resolution Divisionsetting in the Domain Object settings. The bigger the value of these settings – the more detailed your liquid will be and vice versa. But, of course, this will also change the calculation times tremendously.
The minimum value is 6 and it looks quite funny. Does not look really like liquid, but more like jello. Though the calculations are practically instant.
The default value of 32 is more of a preview value. It is high enough that you would see the minimum amount of details and approximation of how liquid will behave. But it is always recommended to bump this setting up a lot before rendering.
This shows how much better it looks by only increasing it to the 50 divisions:
Changing Resolution Divisions to a 100 resulted in a really nice simulation quality that you see below. By far has most details and small droplets everywhere from liquid hitting the ground and walls. But it was very slow compared to the others. Though people usually go even higher for final renders.
The other important setting is the Time Scale just under the Resolution Division. It controls how fast the liquid simulates. Meaning how much changes between each frame. The default value is 1.0 and all the previous results were with it.
Here is the result of the Resolution Division 50 calculation, same as was 2 screenshots before. But with the Time Scale set to 2.
If you compare – you will see the difference. The one with the bigger Time Scale is a lot further in animation, there are more liquid and it is calmer already. Even though it is the same frame of the animation.
Usually people decrease the Time Scale value. This will slow down the animation, but each frame of the animation will be more detailed. Some people use this to increase the detail level of their final render animation. Sometimes you can even decrease Time Value by a lot and then in post-production increase the speed of the animation so it would look realisticly.
How to Add Collision Objects to the Fluid Simulation
Just simulating plain liquid in a box is not that interesting. It is far better when there is something for these Fluids to interact with. Some other objects that they can wrap around.
To add an object like this – first create one. It can be any mesh that you like, absolutely no restrictions. Then, if you read our Blender Physics Simulation you would guess that we probably should add Collision Physics to it, because that is the one that interacted with other physics.
That is not right, sadly. Because liquid goes right through the object. Same goes for the Active and Passive Rigid Bodies.
What we really need to do is to again add a Fluid Physics to the object. But this time we will choose the Effector Type.
This means that the object will be affected by our fluids. And by default Effector Type is set to Collision and that is exactly the one that we need. Now it will Collide with our object.
You may need to change the Resolution Division back and force again to refresh the simulation. And then it should be done:
Our Fluid collides with the mesh and wraps around it nicely.
Blender How to Simulate Smoke
There is more to Fluid Simulations in Blender than just Liquids. Namely I am talking right now about Smoke Simulation. So let’s create a small scene with the Smoke Simulation.
Basically it is all the same as the Liquid Simulation that we did before, we just need to change some settings a bit. That is why I am even going to use the same scene I had – a big Cube and Sphere inside it.
First of all I want to change the Domain type of my Cube back to Gas as it was by default.
After that you also need to change the Flow Object’s Flow Type from the Liquidto either Smoke or Fire + Smoke.
When this is done – you can Play Animation[Spacebar] and see how Smoke starts coming out from the sphere and interacting with the Cube’s “roof”.
All the same rules from the Liquid Simulation also apply here. Meaning that Time Scale will increase or decrease the speed of the smoke appearing and moving and the Resolution Division will increase or decrease its detail level.
Resolution Division 100
And, of course, you can create Effector Objects that will interact with the smoke just as they did with the Liquids.
Conclusion Blender Fluid Simulation
At the beginning a Blender Fluid Simulation can be really confusing and we know it. But we hope that with the help of this tutorial you learned how you can use Blender to simulate physical liquids and smoke. Here the final animation below.
Have a look also at our other Blender Tutorials and Top 3D Model Reviews.
What is this article about?
In this article, I will talk about the fluid simulator in Blender 2.80. This simulator was first added to the blender at the end of 2005, in version 2.40. Since then, it has not changed significantly (the changes were mainly in the beginning, after the introduction of the blender). The simulator code was written by a third-party developer Nils Thuerey. He wrote a fluid simulation library and named it El’Beem. The engine is voxel-based on the method of lattice Boltzmann equations. It is best suited for creating water, but it has the ability to create viscous liquids (honey, chocolate …) that are not very well implemented. Soon, a new Mantaflow simulator will be introduced into the blender (by the way, Nils Thuerey is taking part in its development).
The simulator is voxel, which means that you need a domain to create fluid. A domain is a region of 3D-space, which is a parallelepiped (or cube) that is filled with voxels. Voxels are three-dimensional pixels, similar to small cubes, are the minimum unit in the simulation. To add a domain, you need to create a cube (it makes no sense to create other objects, since when creating a domain, only the dimensions of the object are taken into account). Next, go to the Properties window Physics tab and click on the Fluid button.
A Fluid tab appears below that stores the Type parameter. By default, this parameter is set to None. This means that the object will not participate in the simulation. You need to change this setting to Domain.
That’s all, we have created a domain. But, if we run the simulation, we get the error “No fluid input objects in the scene“. No fluid will be created. Since we have not added a source of fluid. To fix this, add any object, for example, a UV sphere (you can move it and change the scale), then in the same Physics tab, again click on the Fluid button and point Type to Fluid. Now there are two fluid objects in the scene (Domain and Fluid). Next, you can run the simulation. This is done by clicking the Bake button on the domain object (Fluid tab, Bake sub-tab). To stop the simulation, you need to click on the cross in the status bar (on which is written the number of percent of the baked simulation) the status of the bar (bottom). If you do not click on the cross, the simulator will calculate the frames from zero to the last (the Frame End parameter in the Timeline window). As a result, the sphere will create a certain volume of liquid, which (by default) under the force of gravity will fall down to the floor (if you play the animation using the Space key) and begin to flow along the lower boundary of the domain. The fact is that liquid cannot go beyond the domain. A domain is a space enclosed by “walls” that does not release liquid beyond its boundaries. The domain object itself (by default) will turn into a liquid. And in one scene there can be several domains, but liquid can be baked only when there is only one domain in the scene (otherwise the blender will give an error “There should be only one domain object“). That is, if you need more than one domain, then they need to bake the simulation in separate scenes. And to add already baked simulations to a new scene, you can add a domain object using the File> Append operator. And then you will have several liquids in the scene.
Briefly about the fluid types
- None – an object with this type not involved in the simulation. It is like a blank for creating a certain type of liquid.
- Domain – as I said, this is a space for simulation. In this space, all the miscalculations are made. Outside the domain, nothing is calculated.
- Fluid – A mesh object that has this type of fluid emits fluid from its volume once.
- Obstacle – is an obstacle – a collision for a liquid.
- Inflow – emits liquid like a water tap. That is, unlike the Fluid type, it can emit fluid not once, but continuously, creating a fluid flow.
- Outflow – is an outflow for liquid, like a drain in the bathroom. By default, liquid that enters the volume of an object of this type will be removed.
- Particle – represents settings for particles. Although the simulator is voxel, it supports the so-called secondary particles. Such as floating particles (foam), drops/splashes/splashes/tracers (various inclusions in liquids, for example, garbage in the water, berries in jam, bubbles in honey, etc.).
- Control – is a controlling object. Allows to attract or repel liquid. Useful when creating various logos from liquid, etc.
All of the fluid types have parameters. But some parameters are common to various types.
And the first parameter is Volume Initialization. This parameter is for Fluid, Obstacle, Inflow, Outflow types. This parameter indicates how the volume of the object mesh will be used. Three types of volume initialization can be specified:
- Volume. Means that the mesh volume will be used in the simulation. And in the simulation, the object will be hollow. For example, a Fluid or Inflow object will only emit fluid from its volume. And the obstacle will also be created based on the volume of the original mesh of the object. And the mesh volume will be converted to liquid voxels (in the case of Fluid/Inflow) or obstacle voxels (in the case of Obstacle).
- Shell. Uses only the shell of the source mesh of the object. That is, if you add a Fluid sphere, then in the simulation from this sphere an empty liquid sphere will be created (that is, externally the sphere will look like a sphere, and inside it will be a void, like a balloon). The wall thickness of an empty object will be one voxel.
- Both. It uses both the volume of the original mesh of the object and is covered with a shell with a layer of one voxel.
And the next general parameter is Export Animated Mesh. If this checkbox is disabled, then only the basic transformations of the original mesh object (position/rotation/scale) will be taken into account in the simulation. Otherwise, deformations of the original mesh will be taken into account (for example, deformations using reinforcement, shape keys, various modifiers that change geometry, etc.). In general, if the positions of the vertices of the original mesh change (or new vertices are created), then this checkbox should be turned on. If the original mesh object has only object transformations, this checkbox should be turned off, the simulation will be calculated faster.
On this, the general parameters are over. Next, are the unique parameters of various types of liquids.
Here is everything related to the basic settings of the simulation.
Simulation Threads – indicates the number of CPU cores that will be used during the simulation. If set to 0, then the blender will automatically determine the number of cores and will use the maximum available cores, but sometimes instead of using 4 cores, the blender will use only 2 cores. Therefore, it is advisable to manually specify this parameter if you do not want to wait longer than a miscalculation, or vice versa if you do not want the system to freeze.
Final Resolution – the resolution of the final simulation, the number of voxels of the longest side of the domain (the permissions of the other sides of the domain are calculated automatically, based on the proportions of the domain).
Preview – a resolution that can be used for faster playback in the 3D-view window. That is, the blender allows you to specify two permissions: Final and Preview. The first permission is the simulation permission, and the second permission is the permission for the mesh that is created for preview. The fact is that liquid voxels are converted to a mesh, and you can use the Preview parameter to specify fewer voxels to convert to a mesh. To make this easier to understand, look at the screenshot:
On the left in the screenshot, the mesh is generated using the Final Resolution parameter, and on the right using the Preview Resolution parameter. There are more polygons on the left, and less on the right. The same liquid voxels are converted to a mesh with different resolution variations. That is, there is one simulation of fluid voxels and two variations of the generated mesh (Final and Preview).
Render Display – indicates which fluid mesh will be displayed:
- Final – on the render there will be a mesh generated using the Final Resolution permission.
- Preview – on the render there will be a mesh generated using Preview permission.
- Geometry – the source domain mesh will be on the render.
Viewport – the same as the Render Display, but for a 3D-view window. That is, it indicates what will be displayed in the 3D-view window.
Time Start – the initial time of the simulation. If more than zero is set, the blender will calculate the first simulation frames in memory and will not save them to the hard drive. And as soon as the simulation time is longer than the Time Start, the blender will start writing the simulation frames to the cache. And in the status bar, the simulation progress can show 0% for a long time (until it starts writing to the cache). And it is worth noting that the simulation always starts with a zero frame.
End – the end time of the simulation. If the scene is set to FPS 30 frames per second and the final frame is 120, then for simulation in real-time, this parameter must be set to 4.0 seconds. Otherwise, the simulation will either be slowed down or accelerated. That is, this parameter indicates what time will be in the last frame. If Time Start is equal to 0.0, End is equal to 10.0, FPS is equal to 30, and the last frame of the animation (scene setup, located in the Timeline window) will be equal to 600, then the simulation in slow motion will be twice as slow (the simulation will stretch for all 600 frames).
Speed – the parameter that indicates the speed of the simulation. It is multiplied by the speed, which is calculated based on the Time Start and End parameters. And this parameter can be animated. For example, to speed up the simulation first, and then slow it down.
Generate Speed Vecotrs – this parameter tells Blender to generate speed vectors for the fluid mesh or not. That is, if the parameter is enabled, then the vectors will be generated. And these speed vectors can be used in post-processing or in Cycles Render without post-processing to add motion blur. Useful for fast-moving streams to simulate the effects of a real camera on a render (in real cameras fast-moving fluid flows look blurry).
Reverse Frames – if this option is enabled, the simulation frames will be played back. For example, if frames from 0 to 3 are baked, then if the option is disabled when playing the animation, the frames will be played in turn like this: 0, 1, 2, 3. And if you enable this option, the frames will be played like this: 3, 2, 1, 0.
Offset – Offset simulation frames. All simulation frames (fluid cache) are stored on the hard disk as *.gz files. Some frames of the scene correspond to some files from the cache. For example, frame 0 corresponds to a file from the cache under the name fluidsurface_final_0000.bobj.gz, and frame 257 corresponds to a file from the cache under the name fluidsurface_final_0257.bobj.gz. But with this parameter, you can specify other cache files to frames. Add offset to the cache. You can make sure that the first frame of the cache starts not from the zero frame, but from the tenth. To do this, set the Offset parameter to -10. Or if you want the simulation in frame zero to be 2 seconds at 30 FPS, then Offset must be set to 60.
Everything related to the cache is located here. There are one parameter and one operator (button) in this tab:
Cache Path – the directory where the cache (baked simulation) will be stored.
Bake – button to start the simulation. When the simulation is already running, it can be interrupted in the status bar by clicking on the cross in the progress bar, or you can press the Esc key. Keep this in mind when playing already baked frames (the blender interface does not freeze during baking). It is possible to accidentally cancel the process of baking liquid and it will be impossible to resume it.
Here are the domain border settings and mesh generation settings. This tab stores the following parameters:
Slip Type – indicates what friction/slip the fluid will have on the domain boundary:
- No Slip – no slip. The fluid adheres to the boundaries of the domain.
- Free Slip – no friction. The liquid glides along the boundaries of the domain, as on ice (but without friction). If the liquid enters the domain boundary, then it will not be able to bounce off of it, since the domain boundary resets the velocity along the normal vector.
- Partial Slip – Partial Slip. When this type of slip is turned on, the parameter is added: Amount – slip amount. If 0.0, then there is no slip (the border is sticky), if 1.0, then there is no friction (100% slip). 0.5 – 50% slip and 50% friction.
Surface Smoothing – smoothing the surface of the fluid mesh (the effect is similar to the work of the Smooth modifier). The higher the value, the smoother the surface of the fluid mesh. 0.0 – no smoothing. The maximum allowed value is 5.0.
Subdivisions – with this parameter you can subdivide the grid to generate a mesh. If the parameter is less than 2, then there will be no subdivision; if it is equal to 2, then one cell of the grid to generate the mesh will be divided into 8 cells (2 vertically, two horizontally and two in depth, from one cube you get 8 cubes 2x2x2). If this parameter is set to 3, then one cell will be divided into 27 cells (3x3x3), with 4 by 64 (4x4x4), etc. For example, if the resolution of the simulation is 100x50x25, and the Subdivisions is 2, then the resolution of the grid for generating the fluid mesh will be 200x100x50, respectively. In general, this option allows you to create a higher poly fluid mesh.
Remove Air Bubbles – if this option is enabled, air gaps are removed between obstacles and the surface of the liquid by adding additional voxels to generate the mesh. To better understand this parameter, see the following image:
The option is enabled on the left and disabled on the right. As you can see, when the option is enabled, the fluid mesh penetrates the obstacles so that there are no air gaps.
This tab with particle settings.
Tracer – the number of particles of tracers. It can be bubbles in honey, pieces of berries in jam, various kinds of inclusions in liquids that float in it. I will tell you about tracers below.
Generate – This parameter is ambiguous. Firstly, it affects the number of generated floating particles (foam) and the number of bursts (Drops). But the second value of this parameter takes effect when the Subdivisions value (Boundary sub-tab) is higher than 1. If the Generate parameter is greater than zero and the Subdivisions parameter is greater than or equal to 2, then sprays are generated that are implemented as geometry (in the form of polygons). The figure below shows an example with and without geometric particles:
In the picture, two simulations have the same parameters, except for the Generate parameter. On the left, this parameter is set to 10.0, and on the right, 0.0.
The parameters of the simulation space are stored here. By default, two parameters are not active. These parameters are Gravity and World Size Meters.
Gravity – gravity in a fluid simulation. By default, scene gravity is used. If gravity is disabled in the Scene tab of the Properties window, then the gravity value can be specified in this parameter.
World Size Meters – the real domain size in meters. By default, the size of the source domain object is used. If you set the units to None in the Scene tab of the Properties window, you can specify the domain size value in this parameter.
Stores viscosity settings. In the header of the Viscosity panel, you can select presets: Water, Oil, Honey.
Base – base value of viscosity. The higher this value, the more viscous the liquid.
Exponent – the negative exponent of the viscosity value. That is, the Base value is multiplied by 10 to the power minus the Exponent. For example, if Base is 4 and Exponent is 3, then the viscosity will be 4 * 10 ^ (-3). The exponent is needed to make it easier to indicate too low or too high viscosity values. The higher this parameter, the lower the viscosity (i.e. there is an inverse relationship).
Volume Initialization – a general parameter (described above).
Export Animated Mesh – is also a general parameter, which I have already described above.
Initial Velocity XYZ – a vector indicating the initial fluid velocity. If equal to (1.0, 0.0, 0.0), then the initial fluid velocity will be one unit (meter/blender unit) along the X-axis.
Volume Initialization – described above.
Export Animated Mesh – described above.
Slip Type – similar to the domain parameter with the same name. But in the domain, this parameter is responsible for the friction against the walls, and in Obstacle, it is responsible for the friction on the surface of the obstacle. For Free Slip the liquid will glide over the surface of the obstacle, No Slip – will stick, Partial Slip – will be the intermediate between the absence and presence of friction (partial friction is indicated by the Amount parameter, as in the domain).
Impact Factor – this parameter indicates how the obstacle acts on the fluid. This parameter takes effect if the obstacle object is moving. If the value is 1.0, the obstacle in the usual way collides with the liquid and pushes it with a standard force. If the value is greater than 1.0, then the force that the obstacle gives to the liquid will be increased. If the value is negative, then when the obstacle is inserted into the liquid, the liquid will be removed, and when the obstacle is removed from the liquid, all the liquid that is on the surface of the obstacle will be repelled from it. Experiment with this parameter and understand what I mean. This parameter can be used to adjust the mass of the obstacle. That is, an obstacle can be made more or less massive than it actually is.
Flow checkbox in the panel title – enables or disables the emission of fluid from the Inflow object. For example, you can turn off (like a water tap) a fluid source, and then turn it on again. This parameter is animated, like most parameters.
Volume Initialization – described above.
Export Animated Mesh – described above.
Local Coordinates – use the local coordinates of the source object to indicate the direction of the initial velocity of the fluid source. Otherwise (if turned off) the global coordinates of the scene will be used. For example, if the fluid source is rotating, it is advisable to enable this parameter.
Initial Velocity XYZ – the same as for the Fluid object. Indicates the initial velocity and direction of the fluid source.
Flow checkbox in the panel title – enables or disables the outflow object. Similar to the same checkmark of the Inflow object. That is, the outflow can be turned off from the simulation, and then turned on again.
Volume Initialization – described above.
Export Animated Mesh – described above.
Influence Size – indicates whether the secondary particles will be of different sizes. With a value of 0.0, all particles will have the same size. At 1.0 – the particle size will be different and ranges from 0.2 to 2.0. If the value is higher than 1.0, then the particle size difference will be even greater.
Influence Alpha – if this value is greater than zero, then the transparency values of the particles change depending on their size.
Drops – includes the generation of droplet particles (those particles that are located above the surface of the liquid).
Floats – includes the generation of foam particles (those particles that are on the surface of a liquid).
Tracer – includes the generation of particle tracers (those particles that are interspersed in a liquid).
You can create three Particle objects (for greater control) and activate different checkboxes for each. Or you can create one Particle object and activate all the checkboxes in it.
A fluid system is created for the Particle object (it has fewer settings than a regular particle system). It is located in the same place as ordinary particles (the Particles tab).
It has only one parameter:
Path – indicates where to look for the particle cache (the particle cache is stored in the files fluidsurface_particles _ ####). Typically, this path should match the Cache Path parameter of the domain object.
Quality – Main quality. The miscalculation is slower with higher quality.
Reverse Frames – flip the animation of the Control object back to front. For example, there are 4 frames of animation: 0, 1, 2, 3 of the Control object. If the checkbox is off, the animation will play in the same order. And if enabled, then the frames will follow in the reverse order: 3, 2, 1, 0.
Time Start – indicates the initial time of the monitoring object. For example, if you want the Control object to not immediately begin to attract liquid, but after a certain time, then increase this parameter.
Time End – the end time of the controlling object. If you want the liquid to be attracted to the last frame, set this parameter to the same value as the domain object in the Time End parameter. If you want to stop attracting fluid in the middle of the simulation, lower this parameter (so that it is below the Time End parameter of the domain object).
Attraction Strangth – gravity. Positive values attract liquid, negative values repel.
Attraction Radius – the radius of the force field on which the force of gravity acts.
Velocity Strength – this parameter is responsible for how the speed of the liquid depends on the speed of the Control object.
Velocity Radius – the radius of the force field affected by the speed of the Control object.
Simulation blender water
File download (.blend Blender file): download link (0.1 MB)
Details about file:
Reference for this work: “High-frequency nano-optomechanical disk resonators in liquids,” E. Gil-Santos, C. Baker, D.-T. Nguyen, W. Hease, C. Gomez, A. Lemaitre, S. Ducci, G. Leo, and I. Favero, Nature Nanotechnology, vol. 10, pp. 810–816, Sept. 2015.
The goal of this model is to generate realistic looking liquids/fluids in blender. Water has high transparency and a higher refractive index (n=~1.33) than air (n~1), which is responsible for refraction effects (bending of light rays at the fluid/air interface). This is one the characteristics one associates with liquids, but also with transparent materials such as glass and ice.
The issue is that a perfectly smooth volume of water is essentially visually indistinguishable from that same volume made out of glass with the same index of refraction. Which means that if one simply draws an ideal geometric object such as a sphere or cylinder, and gives it the optical attributes of water (transparency, index of refraction, …) it will, because of its ideal shape, tend to look more like glass than water.
In order to get a convincing water feel, we need to add features which are unique to liquids, such as ripples, waves and splashing.
Creating the turbulent surface of water in motion can be tedious, and difficult to create accurately. Fortunately, Blender comes with a powerful built-in fluid physics engine, which allows us to easily obtain realistic looking water surfaces, as described below.
Step by step instructions:
Upon opening the file, only a rectangular box is visible. This is the fluid simulation domain (to be detailed in the following). Elements inside the simulation domain can be viewed and selected by restricting the box’s ‘viewport visibility’ (as shown below).
Viewport visibility on
Viewport visibility off
The simulation domain represents the volume inside which the fluid physics simulation will be run. Three elements are present inside the simulation domain: the disk and its pedestal, and a droplet of water to be dropped on the disk in order to generate a ‘splash’ effect. These four elements (simulation domain, disk, pedestal and droplet) must have the appropriate fluid physics settings selected before running the simulation as shown in the screenshots below. Select the water droplet, go under the ‘physics’ tab, add the ‘Fluid’ physics modifier, and select the type ‘Fluid’, and ‘Volume’ under ‘Volume initialization’. (This means the sphere will be considered as a filled volume of fluid –by opposition to a hollow sphere with the ‘Shell’ setting). Similarly, both the disk and the pedestal must be set as ‘Obstacles’ in the fluid simulation, in order for the fluid to flow around these and not freely through them. Finally, the simulation domain is where the physics for the simulation is set. After selecting ‘Fluid’ physics, set the type as ‘Domain’. The ‘Resolution’ setting defines how densely the simulation domain is subdivided along X, Y and Z for the physics simulation. Higher values correspond to a finer mesh, providing more realistic results at the cost of longer computation times and increased memory requirements. (Note how increasing the resolution increase the required memory displayed on the “Bake” button). The simulation time is also set here; Start and End values selected here mean here that the simulation will cover 4 seconds of real time. Note that all these settings are already in place in the file, such that starting the simulation can be done immediately, as described below.
Clicking the ‘Bake’ button in the simulation domain (as shown in the screenshot) will start the physics simulation. Progress can be monitored in the progress bar on top of the screen (see below). Simulation times are typically a few minutes with the current settings, but can get significantly longer with higher resolution. While the simulation is running, already computed frames can be displayed through the frame selector at the bottom of the window (see screenshots below).
Frame selection 1
Frame selection 2
Frame selection 3
When one has found a satisfactory looking result by sifting through the frames, it can be rendered as a regular scene by hitting F12. If one wants to save a certain calculated frame, and edit the liquid geometry directly in ‘edit mode’ (Tab), the Fluidsim modifier has to be applied under the modifier tab, as shown below. Note that once this has been done, all other calculated frames are no longer accessible through the frame selector.
Alternatively, one can also make a video of the liquid simulation, instead of rendering a single frame. This is done with the ‘animation’ button, as shown below. This will render all frames from the ‘Start frame’ to the ‘End Frame’ and concatenate these in a e.g AVI video file. Note that in order for the animation to not appear choppy, it needs to have a large frame rate, e.g. close to a 24 fps (frame per second) video rate. This means a 4 second video requires 96 individual frames, which quickly takes long to render !
Note that currently the frame rendering range is set from 1 to 26 (which means that the 4 second long fluid simulation is subdivided into 26 discrete steps approximately 15 milliseconds apart (4/26). Changing the frame range by changing the ‘End’ frame number, as shown below, keeps the total simulation time constant (4 s) but changes the time increment between each frame.
Modifier application and frame number selection
This same approach also works with the ‘cycles’ rendering engine, a more accurate ray-tracing rendering engine built in Blender (more info). File for cycles render available below.
Download link for cycles render file: link (1.3 MB)
Keywords: Cavity optomechanics, GaAs optomechanical resonator, WGM resonator, fluids, optomechanics in liquids, optomechanics in water, biological sensing, rheology, nanofluidics, GHz resonators in liquids, viscous damping, acoustic damping, rendering liquids in Blender, Blender fluid simulation.
I would highly recommend some Fluid tutorial to start with.
Mainly to understand how domain works.
Q: Does my part have to be modeled in Blender to be able to apply physics to it?
Sure, it doesn't. For Inflow / Outlow also a Cirle object or IsoSphere with much simpler topo will works as well. Just for a 2D objects like a circle or plane enable "is Planar".
Q: The model blinks as it's running the clip, but I don't see any fluid simulated.
- Blinking - your object has more than 2 km. In perspective mode I wasn't even able to move vertices, shading was blinking, face normals drived crazy. It's happening only in Perspective mode, workes fine in Orthogonal. I don't think it should work like that, its more like a bug.
- Invisible simulation - your Domain dimension is more than 7.5 km with Resolution 32, so as you can see on screen - one division (represented as a cube in domain corner) is in width of your Effector - that is why no fluid is generated.
Just for a test - If you scale down the Domain and run Play (with Cache type Replay so you can see result without baking) tube is going to be filled by liquid.
I guess the object's real dimension is in centimiters (or milimetres) so I would start with scaling all down with Scale 0.0001 to get like 20 cm and Apply Scale +.
Adjust Domain dimension into a rectangle necessary to cover liquid space and adjust Fluid > Settings > Resolution Division like 1024 to get enough details and let liquid get through thinner parts. Nicely summarised basics - https://blender.stackexchange.com/a/50869/2214
Note: Resolution Divisions number is a value dividing the longest edge of domain.
Test from FlipFluid - Resolution 64
Note: If you would like to keep the huge dimension of objects you would have to adjust Fluid - Settings - Time Scale from 1 to 10. Like now you operate in kilometers so your liquid moves slowly as giant waterfall.
League - Im not sure how exactly luquid should to flow inside the object, but you can see liquid league (penetrates) through some parts of the object. And all tricks I know to solve it failed for me for this Resolution. For Mantaflow you can try to enable Remove Air Bubles or increase Subframes. There is possible it is because of bad topology in some parts of the mesh.
Increased resolution (tested 128) solved the issue, but liquid seems to me too much detailed for that scale and calculation is too slow even for this segment.
Surface - blender's original fluid solver did not handle obtacles well Mantaflow has a feature Delete in Obstacle that erases all parts that goes through Collider, but surface is not following a surface yet. So I used Flip Fluid addon, that is still faster and with a three options how to solve surface arround obtacles. Check this tweet https://twitter.com/FlipFluids/status/1113907615271145480
You will also be interested:
- Joann fabrics spring decor
- Double waterfall braids
- Road conditions bristol tn
- 2002 subaru outback
- French door curtain company
- Tuf vs rog motherboard
- 6l80e length
- Anniversary photo collage ideas
Blender 3D: Noob to Pro/Understanding the Fluid Simulator
Understanding the Fluid Simulator[edit | edit source]
When I first encountered the Fluid Simulator I had a hard time understanding its behavior, especially the Start time and End time didn't seem to make any sense at all. Going on a Google spree revealed that many people have problems figuring out the secrets behind fluid simulation, and I didn't find any truly helpful guides. In this little guide I'll try to explain it in a newbie friendly way. It may not be entirely correct, although it might help newbies understanding how it works.
First of all[edit | edit source]
Start time and End timeare in seconds. Don't forget this. Even if your simulation seems to go insanely fast when you set Start time to 0 and End time to 10 and having 250 frames in your animation with 25 frames per second, there is a good reason for this. For now, just remember this, don't let your mind wander and believe that the values are in milliseconds or that you have to do some wicked math dividing/multiplying with frames and so on.
Also notice that the domain is the bounding box for the whole fluid calculation. EVERYTHING is done inside this box. It acts as the floor, ceiling and walls for all of the fluid. This is very important, as the number 1 reason why I couldn't get a good fluid simulation going. If I have time, I will do a section on Fluid > Control, but for now, I will say that it adds a LOT of calculation time. Running on an I7, ATI Radeon 8970 Video, Asus P6X58D Premium, 64-bit Windows 7 and 64-bit Blender, I crashed my computer with the lowest quality settings. So just remember that the domain MUST surround the area in which you do calculations. Also note that after you set up your simulation, the domain becomes the actual liquid, so give it proper material and try not to bake until you're pretty sure of your simulation.
Setting up the scene[edit | edit source]
We'll learn how the fluid works the practical way. plane
- Start with the default box, this simulation will be very simple.
- Let's work in wireframe mode, press the ZKEY to turn off solid mode.
- Go in to camera view by pressing Numpad0.
- With the box selected, scale it up to two times by pressing SKEY, then 2, then ENTER. This fits the camera fairly well.
- Press Numpad7 for a top view.
- With the box selected, press Shift-D (don't move the mouse or else the duplicated box will move) then press ENTER to confirm the duplicated box's location. If you do move the box, just press Escape then the new box will be kept but the move cancelled.
- While the new box is selected (and in exactly the same spot as the other box), press SKEY, then .5, then ENTER to scale it to half size.
- Stay away from the mouse, accuracy is important here and I'll explain why later.
- Now we want to move the new box into one of the upper corners. Press the GKEY, then press the XKEY, type in -1, press ENTER and the box should move to the left wall of our larger box.
- We want the box in a corner, so press GKEY Y 1 Enter, the box should now be in the top left corner from our current view.
- However, we're in 3 dimensions, not 2 so click Numpad1 for a side view. This time we'll move the box up along the Z-axis: G Z 1 Enter.
- Excellent, our setup is done.
Setting up the simulation[edit | edit source]
- Make sure you're in Object Mode, and that you followed the above steps precisely.
- Select the smaller box and click F7 twice. You should get a panel where the rightmost pane says "Fluid Simulation". Click Enable.
- Our small box will be the fluid, so just click the Fluid button. That's all there is to do with the small box.
- Now select the large box. The Physics panel should still be visible, click Enable in the Fluid Simulation pane and then select Domain.
- By default your animation should have 250 frames. Rendering should also be set to 25 frames per second by default, this tutorial assumes this setup.
- Since we got 250 frames and 25 frames per second that means our animation is 10 seconds long. So here comes the tricky part, which actually isn't that tricky at all:
- Start time is by default set to 0 seconds. This means that on the very first frame the simulation has just begun. You could increase this value to say, 1 second and that would mean that on the first frame the fluid simulation has already run for 1 second. We don't want to do this, so keep it at 0 seconds.
- End time is by default set to 0.3 seconds. What does this mean? This means that on the 250th frame the simulation has run for 0.3 seconds. However, by default our animation is 250 frames long with 25 frames per second, making those 0.3 seconds stretched over 10 seconds. Basically this means that we're watching the show in slow motion, or slightly less than 1/33 the realtime speed. So now you may think "it looks quite realtime to me!", and yes, it does, but why does it do that? Well, that's hard to explain. Consider this: In a world without friction, how far would a drop of water fall after 1 second? The answer is about 4.9 meters. So, if a drop of water falls from 4.9 meters it will take 1 second before it reach the ground. How long would it take the waterdrop to reach the ground if it falls from 3 centimeters? About 0.078 seconds. So why do i mention 3 centimeters? Because by default the size of our domain is 3x3x3 centimeters, or really small. If you're like me, you were probably thinking that the fluid was flowing around in a bathtub or a barrel, not in the wrapping of a cupcake. Set End time to 10 seconds.
- Since our imagination likes big things, let's crank up that cupcake to say, a swimming pool. Make sure the big box is selected in Object Mode In and look at the Fluid Simulation pane. Just to the left of the "BAKE" button there should be 3 other buttons, possibly named "St", "A", "B". Click A for advanced options.
- Some new boxes should appear, Gravity (should be -9.81 for the Z-axis, nothing else), Water and the option we're looking for, "Realworld-size". Also Gridlevels and Compressibility, but let's not care about those now.
- The "Realworld-size" value says how large our domain is in meters, and as you can see it's 0.03 meters by default, or 3 centimeters. We want it huge, so crank it up to 10, which is the limit for Blender 2.45. Now our swimming pool is 10x10x10 meters (don't drown!), remember this because scale matters with fluid. Do not think we're playing with cupcakes again :)
- Now click BAKE, and read on while your computer is chewing zeroes and ones.
- Remember how I told you to be very accurate about placing that second box? And how I began talking about gravity, falling waterdrops and stuff? Well, now you're going to see why.
- As stated, our "swimming pool" is 10x10x10 meters. The smaller box we added is exactly half the size (well, in terms of length/width/height, not volume), or 5x5x5 meters. Remember that a drop of water would fall 4.9 meters in 1 second? And that our animation got 25 frames per second? This means that the bottommost part of our blob of water will be exactly 5 meters above the "ground", and that after 25 frames our water should be very close to the ground.
- If you got a fast computer, Blender should be done baking by now. Go to frame 25, for example by using the arrow keys (up/down goes 10 frames forwards/backwards, right/left goes 1 frame forward/backward). Take a close look at the blob, then go forward 1 frame. Notice how the blob hits the ground? Rings a bell, doesn't it? :)
- Although, we're not done! We gotta render our swimming pool. It's easy, but takes time, hit Ctrl-F12 and go make dinner.
- When the rendering is done, press Ctrl-F11, and think of a 10x10 meter large pool. You might want to keep an eye on your kids if your local swimming pool acts this way, though.
Final notes[edit | edit source]
Scale matters. It's really difficult to understand fluid dynamics on a very small scale, especially when you don't even know what scale is used. The "Realworld-size" value seems to be left out in many guides, I would recommend you set it to something you can relate to, or you'll end up with simulations that look really slow/fast or having an End time value that seemingly makes no sense. Further I'm not a mathematical genius, for all I know I could be way off with my explanation, although this way the values makes sense to me, and I'm able to make fluid simulations without "guessing" on values for End time.
[edit | edit source]
This YouTube tutorial on fluids might also help: Link and this Realistic Water Texture