Learn about key Bifrost concepts.
- [Narrator] Before getting our proverbial feet wet in Mya, let's look at the concepts underlying Bifrost. Bifrost is a general procedural framework under development at Autodesk. It has its roots in a liquid simulation plugin that was called Naiad. In 2012 Autodesk acquired Naiad and hired its developers. The stated goal has always been to develop Bifrost beyond liquid simulation into a full-featured framework for procedural content generation reminiscent of Softimage Ice or 3ds Max MCG.
Bifrost is an English corruption of an old Norse word, Bifrost, which is the rainbow bridge between earth and Asgard, or heaven. The name was chosen for this technology because Bifrost is a computation server that runs inside of but independently of the host application, such as Mya. The proverbial rainbow bridge is the connection between the host app and the computation server. The first module that we see developed within the Bifrost framework is Bifrost Fluids, which is a so-called FLIP solver.
FLIP stands for fluid implicit particles. It's a hybrid solver that combines aspects of a volumetric and a particle-based solver. Specifically, the fluid properties, such as density and temperature, are carried in a cubic lattice or 3D grid of voxels. A voxel is a volume element, just as a pixel is a picture element. A voxel is the smallest cube that includes a certain property or attribute such as density.
The other part of a FLIP solver is particles. These are used for utilitarian purposes such as calculating collisions, but also for aesthetic purposes such as the look of the surface features of the fluid. In most cases we will generate a mesh object, and that mesh object is the actual surface of the liquid that we render. Last, let's look at a sample pipeline for a Bifrost project. Generally speaking, you will start by solving a primary fluid, set up all the initial conditions, such as emission, collision, and so on, run the simulation.
As that simulation's being calculated, it's also being stored onto disc. Once it's cached to disc, it doesn't need to be computed anymore. To render a liquid such as water, we need to convert the fluid data into a surface somehow. The Arnold renderer gives us great options for this. We can generate a mesh very quickly at render time. If we need compatibility with other renderers or applications, we have the option of caching a mesh to disc in the native BIF format or in the open-source Alembic format.
Additionally, we may want some secondary effects. For example, Bifrost foam particles can be spawned from the main fluid. Those secondary effects can be calculated at the same time as the primary fluid, but it's faster to do it after the primary fluid is cached. All of that calculation is just one part of the production process. The other part, of course, is making the surface look beautiful. We can apply materials at any point in the production process, either after or before caches and meshes have been saved out.
Bifrost channels provide fluid dynamic data such as velocity and vorticity. We can apply that data in a shading network to modify the look, such as making more active areas of the fluid render as whitewater. That's an overview of the concepts behind Bifrost Fluids.
- Bifröst basics
- Analyzing the node structure
- Emitting from a polygon mesh
- Colliding with a polygon mesh
- Adding velocity, friction, and drag with motion fields
- Optimizing space and time accuracy
- Caching simulations
- Meshing and exporting liquids
- Render-time meshing in Arnold
- Applying channel data to Arnold shaders
- Generating foam from a liquid
- Rendering and shading foam in Arnold