• Confluence is currently running with all non-system plugins disabled, some functionality may be missing
Skip to end of metadata
Go to start of metadata

Hybrido is RealFlow's technology for the simulation of large-scale fluids. When you perform Hybrido simulations you have to differentiate between the so-called core fluid and secondary elements. The core fluid represents the main body of water including larger waves, e.g. rolling or breaking waves, but also the fluid's main splashes.

But in most cases, the core fluid's structures are not detailed enough for a believable representation of an ocean surface or a river. In order to enhance the simulation's quality and level of detail, smaller splashes, foam, bubbles, and mist are added using dedicated emitters – the secondary elements. Smaller wave structures and ripples are added with the Hybrido's “Ocean Statistical Spectrum” feature.

The core fluid is normally meshed with the “Hybrido Mesh” engine, while the secondaries are rendered as particles. The fluid's displacement can be added either as a displacement map or baked to the Hybrido mesh directly.


RealFlow's "Particle Mesh" supports interactive meshing. For more information, please click here.

Splash vs. Splash

When we talk about splashes in conjunction with Hybrido fluids then we do not mean the secondary structures created by the “Splash” or “Splash & Foam” emitter. In this case we are talking about parts of the core fluid which behave like splashes – you can see them when the core fluid is interacting with objects, or when waves are breaking. In the image below you can see a Hybrido core fluid simulation with splash-like structures:


Splash and Core Fluid Attributes

Every mesh vertex carries a so-called “Splashity” value. This channel tells the mesh and render engines whether a vertex is has full core fluid attributes, or if it behaves more like a splash. “Splashity” ranges between 0 (no splash, full core fluid attributes) and 1 (full splash, no core fluid attribute). The “Splashity” channel is used by the “Splash Thinning” filter to create splashes with thin and spiky ends.

For core fluid vertices there is a similar attribute: a value of 0 means that a vertex has no core fluid attributes, and it can be considered a splash. 1 tells the mesh engine that the vertex has full core fluid attributes. The criterion is used by the “Core Smoothing” filter in order to remove unwanted ripples and create a smoother surface.

Splash and Core Fluid Filters

One of the most sophisticated elements of the Hybrido is the filter set. There, you can find the “Splash Thinning” and “Core Smoothing” filters mentioned above. Both filters provide a threshold parameter telling the mesh engine which vertices will be affected by the thinning and smoothing filters. The filters are applied gradually:

  • With a “@ splash threshold” value of 0.4, for example, vertices with a “Splashity” of 0.4 receive the lowest amount of filtering, while vertices with 1.0 get the maximum. Vertices with values smaller than 0.4 are not filtered at all.

  • For core fluid vertices it is pretty much the same: With a “@ core threshold” of 0.6 the filter is applied gradually to all vertices with a core fluid attribute between 0.6 (minimum) and 1.0 (maximum). Again, vertices with values smaller than 0.6 do not receive any filtering.

Try to avoid very high values with “@ splash threshold”, because you might see intersecting polygons.

Displacement (AKA “Ocean Statistical Spectrum”)

Both terms have exactly the same meaning: they describe an additional “layer” on top of a Hybrido simulation in order to create smaller structures and cresting waves. This layer can be either exported to a series of TIFF files, or baked to the Hybrido mesh directly. In the latter case, you can make use of the Hybrido mesh engine's “Displacement” parameter set.

Please bear in mind that the displacement/ocean statistical spectrum is a feature of the Hybrido domain, and not activated by default.

The displacement is applied to the mesh's top and bottom. This leads to a large number of surplus polygons which are normally not needed when you render the fluid. In order to remove these parts, the “Open Boundary” option should be enabled. In conjunction with the Hybrido domain's → projection plane you can define a clipping plane, where all polygons outside this area will be removed.


There is one term you will come across very often in conjunction with the mesh's displacement feature is “attenuation”. There are circumstances where the displacement waves are simply not wanted: Imagine a thin splash with surface ripples, or fast moving parts of the fluid with cresting waves. The mesh engine's attenuation settings allow you to fade and finally remove the small waves based on four properties: speed, vorticity, height, and splashity. With these parameters you have full control where the statistical waves will finally appear and how fast they will be vanishing.

The Meshing Process

Meshing speed mainly depends on four factors: number of Hybrido particles, “@ polygon size”, “@ particle radius”, and displacement quality. The number of particles is crucial in order to get a decent amount of details, so you should try to use as much particles as possible for the fluid simulation. The quality of the displacement is also very important: the higher the displacement's quality, the more polygons the mesh will finally have.

Polygon size is a measure for the number of polygons as well. With small polygons you will be able to get more details, but meshing time will increase as well. Particle radius, on the other hand, determines whether your mesh has a muddy appearance with rounded borders, or if it looks torn.

The meshing process will be very fast if both, “@ polygon size” and “@ particle radius”, are the same. There is also a rule of thumb for adjusting these parameters:

@ polygon size = Hybrido domain's “Cell size” * 0.5

@ particle radius = @ polygon size * 1.7

We also recommend setting “Weight normalization” to “Yes” to get a better representation of the underlying particles.

Related content:
Error formatting macro: contentbylabel: com.atlassian.confluence.api.service.exceptions.BadRequestException: Could not parse cql : null