Without daemons, all fluids are only affected by internal forces between the particles. These forces determine the look of the fluid without any external influence. The motion that can be observed with fluids is the result of an emitter’s parameters and properties, such as speed, internal and external pressure or viscosity. Rigid bodies do not show any behaviour at all, as long as there is no force acting on them. The question is where do external forces come from? External forces can either be originated in daemons or the kinetic energy of particles, or other bodies. Even RealWave meshes can be affected by forces, for example by impacting objects or particles. The objects can create waves on a RealWave mesh as a consequence of the appearing hit forces, but waves cannot be influenced by daemons.
So, many daemons are used to introduce forces, but what is the nature of a force? Briefly put, a force can accelerate other objects. Introducing external forces may be the most important feature of daemons, though there are more types to explore. As you can see from the list of daemons (available under Edit > Add > Daemons) there is also a group of nodes with a “k” prefix. This prefix stands for “kill”. With this kind of daemon you can determine certain conditions for where or when particles are deleted and removed from the scene.
The third and final group neither introduces forces nor deletes particles. The two available daemons are called “Texture gizmo” and “Color plane”. “Texture gizmo” is used to map a texture on top of a fluid surface reading the UVW coordinates of each particle. “Color plane” provides access to a powerful visualization tool within RealFlow. This daemon is capable of showing the local physical fields (velocity, pressure, density etc.) of a fluid on a rectangular plane.
RealFlow currently offers a total of 30 daemons for every imaginable purpose and even if you are working on a project, where all the existing daemons are not enough, you can still use scripted daemons. This type provides predefined functions which can be extended with Python code to write your very own source of forces; C++ is another possibility to create custom daemons and load them as plugins into RealFlow.
Fluids, driven by forces. Image courtesy of Lumiere Studios.
The number of daemons within a scene is not limited and you can introduce as many as necessary, combine them with "k" daemons and make them exclusive to selected nodes. This flexibility gives you the freedom to establish any global or exclusive connection between daemons and affected objects. With simple drag and drop actions you can add new daemons to your project or control exclusive links. As with other RealFlow nodes, daemons can be activated or deactivated temporarily to examine the influence of a particular force or function. Except from “Color Plane” it is not possible to export a daemon’s features or animation data: during rendering in a 3D application, daemons have no influence on imported objects, and therefore there is no need to export them.
Daemons and Scale
A really nice feature in RealFlow is the possibility to adjust daemon forces separately for particle fluids, grid fluids and objects – independent from the current geometry scale. This workflow has a range of benefits, especially when you have to work with more daemons. By setting the force scales you can change the strength and influence of all daemons simultaneously without having to adjust each node individually. Also when your scene contains very large or very small objects you can compensate forces by simply altering force scales. Force scales can be accessed from the "Preferences" panel to adjust them globally. A local setting for each scene can be found under:
Simulation Tools > Scale options
Plugins are external modules to enhance the functional spectrum of a software. RealFlow gives you the possibility to either create your own plugins or purchase them from 3rd party companies or vendors – if available. When you intend to write your own plugins, you have to be proficient in a programming language – preferably C++. Then you will be able to read the Software Development Kit (SDK), which provides the interfaces and data structures for most of RealFlow’s functions. They help you to directly access certain parts of the software and modify them to your needs. If you already have experience with RealFlow’s Python scripting interface, then you should become familiar with the C++ SDK quickly.
Once you have installed a plugin it appears in a list and you can select it like any other daemon. For this purpose, either go to the "Icon Bar" choosing the daemon’s symbol or visit
Menu Bar > Edit > Add > Daemon > Plugins
RealFlow comes with two plugin daemons: "Morph" and "CrowdFlow". You can also find some complete examples available under RealFlow's SDK folder. There you can go through some C++ programs, which give you detailed instructions on how to create your own plugins.