Creating Realistic Water Tips and Tricks with Aleksandar Nadj

by CGAfrica in Tutorials,

on July 9th, 2017

This post is part of series called Creating Realistic Water

Aleksandar Nadj is a CG generalist, currently, working in a gaming company called Eipix Entertainment as lead 3D artist. Software and tools which I use in my workflow are Maya, Zbrush, Realflow, Quixel Suite, Substance painter, Photoshop, After Effects and Nuke, and I try to learn and implement Houdini. In this article, I will show you the workflows and techniques that I used in my latest project Lonely Beach. This is my first Bifrost Project:

Topics in this series

Start - Planning and References

References are one of the most important things in every aspect of CG. It is important to dedicate enough time to collect good references, so your life will be easier later in the production. It’s almost impossible to get realistic results without references.

Modeling Scene Setup

After collecting references, I created fast blockout of the scene to get rough look and scene scale. Scene scale is really important in simulations. If scene scale is wrong, simulation will not behave physically accurate and It’s much harder to get desired result. Bifrost units are always in meters regardless of unit setup from preferences, so if you create your scenes in cm downscale your scene 0.01. Good approach for beginners is to load scene samples from Bifrost library and use it as scale reference.

For modeling, I used Maya and Zbrush. After sculpting high-poly models in Zbrush, I decimated them for simulation purposes.

Bifrost Scene Setup

In the following text, I’ll show you my simulation scene setup. All models of rocks and terrain are combined in one mesh and assigned as colliders. I also made one container for my simulation. Models should be closed and have thickness.

One good optimization tip: The object that you want to use as emitter, in my case it’s a box, cut intersected parts of terrain from your emitter with a boolean operations. This way you avoid unnecessary particle emission and speed up your sim.

I used BOSS system to generate accelerator for my sim. I also used legacy accelerator instead of new motion field. By the way, accelerator doesn’t exist in options, so you have to create with mel command.


After all preparations you can create the Bifrost liquid, add colliders and accelerator, and start sim.

Simulation Settings

After a lot testing and rnd, these are my final settings.

Some good number for final particle count is 20-30 million, but of course depends from case to case. After core particles generation, I moved to foam creation. Bifrost has very nice foam that looks organic and realistic. After some testing and playing with Foam parameters, here are my final settings:

Mesh settings

After caching final particle sim, I start with meshing. These are settings which I used for my beach. Also, a good approach is to test your mesh on part of scene instead on whole scene using clipping option.

Also, a good approach is to test your mesh on part of scene instead on whole scene using clipping option.

When you get desired look of mesh on part of the scene, those settings will work on whole scene, with minor tweaking. When I got my mesh I exported it as an alembic with vertex color, so I can later use velocity and vorticity information written in the mesh.

Final Scene Setup

In this part I created a camera, create interesting composition and add few assets. I scattered small rocks and added an old tree and boat in the scene so it looks more interesting and to improve the sense of scale.


For lightning I used HDR map and one directional light which approximately oriented as the sun on HDR map.

Water Shading

As material for water I used alSurface shader.

Also to make the material looks better I used vorticity color sets with user data color and connected it in diffuse strength, with this gave the water a sense of movement below the surface.

Wet Map

I got a lot of questions how I created the wet map. Biforst doesn’t have some automatic wet generation, so you have to work around. First I created one camera above the mesh, almost top view. I assigned white surface material on mesh and black surface material on everything else, and rendered the whole sequence.

After that I used echo effect in After Effect to get delay of movement.

At the end, I used this rendered sequence as projection from camera I created before.

Render Setup

I render this with Arnold, and these are my settings.


Also another thing that I did is to add displacement on water surface, rendered that separately and used it in composit. As displacement map I used a cached map of the BOSS system which I used as accelerator. This way, I got extra details on the water surface.


Render is composite in NUKE, basically color corrections, add displacement and final corrections.

See the full breakdown here:

cgafrica cgafrica cgafrica cgafrica

Please login to submit your comment