This page guides you through the process of simulating a fishing trawler sailing in a stormy sea, using WaveForce and an Active Body Thruster.


This is an Advanced Level tutorial. The workflow for setting up the shot, and the Phoenix settings involved in the simulation are explained in detail. However, creating a production quality shot of a similar nature may require some tweaks to the lighting, materials and/or the Phoenix simulation.

This tutorial explores how to create a stormy sea (with waves around 1.5 meters tall) and simulate a ship sailing at sea as Active Bodies. The ship is powered by an Active Body Thruster, no manual keyframing is needed for the ship animation.

This simulation requires 5.01.00, Build ID: 20220706 and V-Ray 6 for 3ds Max 2018 at the least. You can download official Phoenix and V-Ray from If you notice a major difference between the results shown here and the behavior of your setup, please contact us using the Support Form.

The Download button below provides you with an archive containing the scene files.


Download Project Files




Units Setup

Scale is crucial for the behavior of any simulation. The real-world size of the Simulator in units is important for the simulation dynamics.

Large-scale simulations appear to move slower, while mid-to-small scale simulations have lots of vigorous movements.

When you create your Simulator, check the Grid rollout where the real-world sizes of the Simulator are shown. If the size of the Simulator in the scene cannot be changed, you can trick the solver into working as if the scale is larger or smaller by changing the Scene Scale option in the Grid rollout.

The Phoenix solver is not affected by how you choose to view the Display Unit Scale — it is just a matter of convenience. Setting the units to Meters is a reasonable choice for this setup.

Go to Customize → Units Setup and set Display Unit Scale to Metric Meters. Also, set the System Units so that 1 Unit equals 1 Meter.


Scene Layout

The final scene consists of the following elements:

  1. A Ship geometry and its active bodies clone;
  2. A Phoenix Liquid Source;
  3. Three Particle Shaders for the Foam, Splash and Mist particles respectively;
  4. A Box geometry used in the Liquid Source for the foam emission;
  5. A V-Ray Plane used as an infinite ground surface - sometimes the V-Ray Plane might cause flickering at the ocean border, so consider using a very large regular plane geometry placed below the liquid simulator instead;

  6. A Wave Force to drive waves from water;
  7. An Active Bodies helper for Active Bodies simulation.
  8. An Active Body Thruster helper to move Active Bodies (the Ship) with an engine force.



9. A Phoenix Liquid Simulator;

10. A Phoenix Fire / Smoke Simulator for rendering the fog;

11. A Plain Force as a wind force in the scene to blow the Splash/Mist;

12. A V-Ray Physical camera (VRayCam_RnD) for look development;

13. A V-Ray Physical camera (VRayCam_Final) for the final animation;

14. V-Ray Light Dome for lighting;




Ship Geometry and Material

Here we have prepared a fishing trawler geometry for the simulation. It is a solid, single-mesh, water-tight model. If you apply a STL Check Modifier to the model, no errors appear.

The pivot position of the ship model is fine-tuned, and if we enable the Override Center of Mass option of its Phoenix node properties, the Active Bodies helper creates the Center of Mass helper based on the pivot of the ship automatically. So the ship can maintain balance in still water.

The ship is around 14.5 meters in length, 3.9 meters in width and 8.5 meters in height.

The polygon faces of the ship are assigned with different face IDs, and applied with a MultiSub-Object material to them. Each face ID is with different diffuse color and material.

We assign two different VRayLight materials to ID 7 and ID 9.

When you prepare your custom ship model, be sure to make your model a solid one.

Practically, if you can't merge every part of your ship model into a single solid mesh, at least do it for the ship hull and other big features that have to interact with the liquid. The ship geometry itself is actually one of the most important steps for simulation realism. The more details you include in the ship geometry, the more secondary fluid effect (local swirling, water streams running through the drainage holes when waves impact on the ship), and the more realistic stormy sea effect you can get. So pay attention to details when creating your ship model. Because we are going to simulate the waves together with the powered ship, the underwater part of the ship geometry is also critical. Just like a ship in real life, the streamlined design of your digital ship plays an important role in the simulation results.

Phoenix takes the position of the ship geometry's pivot point to create a Center of Mass helper. If you use a custom ship object, you can adjust the position of your ship's pivot point before you add it to the Active Bodies list. If you don't, you can still adjust the position of the center of the mass helper afterwards. Check the Active Bodies Guide for more details.




On top of the MultiSub-Object material (Ship_mat), let's add a VRayBlend material (rename it to Ship_old_mat) to blend with a rust material (Rust_mat). The Blend amount is mapped by using a VRayDirt texture. This way we can have a rusty fishing trawler.

You can decrease the blend amount if you want a less rust showing. In this case, we give it a value of 50.0.


Scene Setup

Set the Animation Length parameter appearing in the Time Configuration window to 230, so that the Time Slider goes from 0 to 230.




This tutorial consists of many steps to follow. To keep it concise, let's focus only on the Phoenix related steps and feel free to use the camera and light settings in the provided sample scene.

For your reference, below you can find the light and camera settings.



Camera Setting for VRayCam_Final


Add a V-Ray camera from VRayPhysicalCamera from Command Panel > Cameras > V-Ray. The exact position of the Camera is XYZ: [ 24.9, -24.0, 5.9 ].

The Focus Distance is set to 30.48.

The exact position of the Camera Target is XYZ: [ 6.7, 1.5, 8.4 ].

From Aperture, the Film speed parameter is set to 25.0. F-Number is set to 12.0. Shutter Speed is set to 25.0.

From Color & Exposure, set the White Balance option to Daylight.

Enable both the Depth of field and Motion blur.

In the Bokeh effects tab, the Blades option is enabled and set to 7, with a Rotation of 15. Center bias is set to 1.0.

To follow the moving ship, between frame 140 to frame 230, we animated both the camera and camera target. The camera animation makes the shot more appealing to watch.

The other two cameras: VRayCam_RnD are only for scene development, not for rendering. So we don't show their settings in detail here.




Press on the Cosmos icon in the V-Ray toolbar. In the HDRIs section  → Day, choose Day 035. Press the green arrow to Import the HDR map. Chaos Cosmos generates a VRayLight in the scene with the HDR map plugged in the Texture slot.

The exact position of the V-Ray Light is XYZ: [0.0, 0.0, 0.0].

Set the VRayBitmap map's Horiz. rotation parameter to 117.0.

Decrease both Overall multiplier and Render multiplier to 0.6.

Starting with V-Ray 5, the VRayHDRI map is renamed to VRayBitmap.


Anatomy of Stormy Sea

The image here is the final render in this tutorial. The wave can reach up to 1.5 meters in height. The image shows the typical features of a ship sailing in a stormy sea.

When the ship sails against the wind in the sea, it drifts up and down while creating lots of splash and mist. You can see foam patterns forming in the sea.

  • The wind blows from right to left

  • The overall tone of the shot is gloomy and foggy

  • The waves can reach up to 1.5 meters, but no tube or barrel is formed as you usually see in plunging waves. The waves here are more of the spilling kind rather than plunging ones

  • You can see foam patterns formed on the sea surface

  • As the ship drifts up and down, you can see a lot of splash and mist coming out, and getting blown away by the wind force

Let's go through the steps and see how to build these features.


Phoenix Liquid Simulation

Let's create a Liquid Simulator. Go to Create Panel > Create > Geometry > PhoenixFD > PhoenixFDLiquid. Create a liquid simulator in the scene.

The exact position of the Simulator in this example scene is XYZ: [7.33, 0.0, 0.0].

Open the Grid rollout and set the following values:

  • Cell Size: 0.086 m
  • Size XYZ: [580, 162, 109]
  • Container Walls: Open to X, Y and Z

Notice throughout this tutorial, we never change the Scene Scale in the simulator's grid. The principle is to try and keep everything in the real world scale, as well as the ship size. So we try to keep the Scene Scale to the default value as much as we can. Because any changes to the parameter also change the behavior of the simulation and the Active Bodies.




Select the Dynamics rollout of the PhoenixFDLiquid. Enable the Initial Fill Up %. Set the value to 50.0.

This way the simulator is filled with liquid at the start of the simulation.




Select the Output rollout of the PhoenixFDLiquid.

Enable the Particle Age channel for the Splashes and the Foam particle systems.




Select the Preview rollout of the PhoenixFDLiquid simulator. Enable the Show Mesh option. Disable the Particle Preview option.

As for the Rendering rollout, switch the Mode to Cap Mesh.

This way only the top part of the liquid surface will be shown and allow for easier iteration.



Position the Ship

The ship is provided with the Stormy_sea_max2020_start scene.

The exact position of the ship is XYZ: [ -1.64, 0.0, 4.36].

Again, If you use your custom geometry, please make sure it is a solid, water-tight model. You can add an STL Check modifier to see if there are any errors in the model.






From Create Panel > PhoenixFD > Active Bodies, create an ActiveBodies helper in the scene.

Add the Ship geometry to the Active Bodies list.

Adding the ship to the Active Bodies list creates a center of mass gizmo in the scene. The gizmo's position is computed by the solver automatically.

The Active Body Solver computes the Center of Mass of an object by looking at its volume. To simplify things, an assumption is made that all parts of the object have an equal weight.

Most of the time this assumption is not true, since usually a ship is made of different density materials (metal, wood, plastic...etc). Let's correct the position of the Center of Mass in a later step.






With the Ship geometry selected, right-click and open the Chaos Phoenix Properties. Use the Closest preset - Ship Hull to set the ship density to 500.0 kg/m3.

Choose the Ship Hull preset because it is a reasonable choice for a start-up. We can fine-tune the density later.




Enable the Active Bodies option in the Dynamics rollout of the simulator. Link the Active Body Solver to the Phoenix Liquid Simulator.




Initial Simulation

Select the Simulation rollout of the Phoenix Liquid Simulator. You don't have to simulate the full length of the animation. Only a sample is enough, so set Stop Frame to 100.

Press the Start button to simulate.




The ship is tilting at sea, almost capsizing.




As you can see, the position of the automatically generated COM is too high, high above the waterline. The improper position of the COM makes the ship hard to maintain balance.




With the Ship geometry selected, right-click and open the Chaos Phoenix Properties. Set the Specify Density parameter to 300.0 kg/m3.

Enable the option Override Center of Mass.

With the new density and COM, let's run the simulation again.

When the Override Center of Mass option is enabled, the Active Bodies helper creates the Center of Mass helper based on the pivot of the ship automatically.




Now the ship doesn't sink, and it can stabilize on the sea surface. The ship is ready to face the wave force.


Set up a Wave Force

Go to Create Panel > Create > Helpers > PhoenixFD. Create a WaveForce in the scene.

Enable the Massive Wave Force option.

Increase the Fluid Freedom to 1.0.

Create a PhoenixFDOceanTex into the Ocean map slot of the WaveForce. Rename the texture to OceanTex_WaveForce.

Here are the values for the OceanTex_WaveForce parameters set for the tutorial:

  • Control by Wind Speed to 5.0m
  • Level of Detail to 1
  • Sharpness to 1.0
  • Velocity Coherence to 0.3
  • Wave Crest to 1.0
  • Seed to 345443

Fluid Freedom balances between the strictness of the Wave Force and the free movement of the liquid. When set to 0 the Wave Force strictly follows the used ocean texture as close as possible. Setting it to 1 allows the liquid to roughly follow the ocean texture while maintaining free liquid behavior.

We set the Level of Detail to 1 in order to get simpler, non-overlapping waves. But we set the Velocity Coherence to 0.3 - so the waves can retain some degree of chaos in terms of wave direction. If you want to create a more rough sea, you can increase the Level of Detail, but keep in mind, the results of active bodies simulation might become less manageable.

If you want the waves coming from the side of the ship instead of from the front, you can adjust the Z angle in the Coordinates of the OceanTex_for_waveforce. Give it a value of 45.0 or 90.0 for example.




Now we want to simulate the WaveForce in the scene, so we enable the Timeline option for both Start Frame and Stop Frame, to simulate the full length of the animation.

Run the simulation again.






Here is a preview animation of the simulation from Camera-RnD. We see the ship floating in the sea, while the waves come to flap on it. In the later frames, we even see the collapsing wave forming a tube or barrel. So those waves are a plunging type of breaking waves.

In the real world, there are basically three types of breaking waves: spilling, plunging and surging waves.

How these waves are formed depends on the shoreline profile. When the ocean floor has a gradual slope, it tends to get spilling waves, while surging waves occur on very steep beaches.

As for computer simulation, the tutorial waves rely purely on the Wave Force. There is no shore geometry in the scene at all. In this case, we are going to influence the formation of breaking waves by tweaking the Fluid Freedom of the wave force.




With the Liquid Simulator selected, go to the Preview rollout. Enable the Velocity Streamlines option.

By doing so, we can visualize the velocity changes due to the WaveForce acting on the liquid particles. When the depth of the simulator is deep enough, we can see underwater cycles spinning passing through.

Depending on the strength of the wave force, we have to adjust the grid height (z) accordingly to allow the force to take full effect on the liquid body. In this case, we see full circles spinning off of the streamlines, meaning the grid depth is high enough.




Here is the preview from the Front view with Velocity Streamlines preview option.




We are trying to create a ship sailing in the middle of the sea, not near the shore. So let's adjust the WaveForce for forming more spilling waves than plunging ones. With the WaveForce selected, reduce the Fluid Freedom to 0.96.

Run the simulation again.

Feel free to try other values for the Fluid Freedom, if you are aiming for different looking waves.

The Rate of Change of the ocean texture also affects the behavior of waves. Find the example in the Epic Ocean Waves tutorial.




This table shows the characteristics of two extreme conditions in this tutorial. Choosing other in-between values for the Fluid Freedom to meet your project requirement is also an option.



Fluid Freedom = 1.0

Fluid Freedom = 0.95

Breaking Wave type

Plunging waves

Spilling waves


More splash/mist in the waves

Less splash/mist in the waves



Now the waves look more like spilling waves. We don't see a barrel in the waves.




Let's give power to our fishing trawler.

Go to Create Panel > Create > Helpers > PhoenixFD. Press the ABThruster button and create an Active Bodies Thruster in the scene.

The exact position of the thruster is XYZ: [ -7.33, 0.0, 3.97 ].

Note that the Active Bodies Thruster helper's X direction is aligned with the ship sailing direction. Make sure you put this helper position right on the ship's Y-axis, otherwise your ship doesn't go in a straight line. In the worst scenario, it might cause the ship to capsize.


Propel the Ship with a Thruster

With the ABThruster selected, press the None button and choose the ship in the scene. The ship is now powered by the ABThruster.

Reduce its Magnitude to 1.0m. Check both the option for No Rotation and Attached to body.

Run the simulation again.

When enabled with the Attached to body option, the Thruster force acts as attached to the body - the application point and direction of the force move and rotate with the body during the simulation.

The No Rotation option prevents the affected body from rotating due the Thruster force.




Here is the preview animation for VRay_Cam_Final. Now we start to see the ship sailing through the waves.

However, the liquid splashes look too strong. The ship's movement is also too dramatic. We can see some liquid mesh being cropped at the top.




With the ship geometry selected, right-click and select Chaos Phoenix Properties. Reduce the Motion Velocity Effect to 0.25.

Run the simulation again.




Now the liquid splash became more gentle. And the ship's movement appears more convincing.


Simulate Splash and Mist particles

With the liquid simulator selected, go to the Splash/Mist rollout.

Enable the Splash/Mist option. When asked if you'd like a Phoenix Particle Shader generated for the Splash particles, select Yes. This automatically sets up the link between the Splash particles group, the Particle Shader, and the Liquid Simulator.

Rename the new particle shader to ParticleShader-Splash. 




With the simulator selected, in the Dynamics rollout, decrease Time Scale to 0.9 , this will slow down the liquid a bit for aesthetics purposes.

In the Splash/Mist rollout, increase Splash Amount to 800.0 and decrease the Mist Amount to 1.0.

In the Properties section, increase the Max Outside Age to 10.0.

With those new settings, run the simulation again.

To prevent any cropping at the Simulator's boundaries, instead of increasing the height (z) of the Simulator, we increase the Max Outsize Age of the Splash.

The unit for age is Seconds. Since the scene's FPS is set to 30, the Splash particles last for 10 X 30 = 300 frames. Enough time for the Splash particles to display throughout the whole animation.


Change Preview Color

To easily spot which particles are which, let's change the color swatches for the different particle types.

Select the PhoenixFDLiquid in the scene and go to its Preview rollout. Disable the Liquid particle preview. Set the SplashMist, and Foam to Blue (RGB: 0, 0, 255), Red (RGB: 255, 0, 0), and Green (RGB: 0, 255, 0) color respectively.

The exact RGB color for the particle preview is not critical. Choosing other colors as long as they are distinguishable is optional.




Now we start to see splash particles in the simulation.

For clarity, we didn't show the Mist particle in the preview animation. You can turn it back on anytime.




To make the splashes blend better with the liquid mass, with the simulator selected, in the Properties section of the Splash/Mist rollout, increase the Liquid-Like value to 5.0.

Run the simulation again.

Liquid-Like controls the ability of the splash particles to stick to each other, forming different strings and tentacles, so the splash behaves more like liquid and blends better with the behavior of the liquid mass. The higher this value, the larger the acceleration needed to break the connection. Note that larger values increase the calculation time.

See the comparison images for the effect of the Liquid-like parameter here.




Now we see the splashes blend better with the liquid mesh. As the parameter's name implies, the splashes now became a bit more "liquid-like".


Adding Plain Force

For additional realism of the simulation, we use Phoenix Plain Force, a simple directional force, to simulate the effect of wind.

Go to Create Panel > the Helpers tab > Phenix and add a Phoenix Plain Force.

  • The exact Position of the Plain Force in the scene is: XYZ[38.85, 0.0, 5.0]

  • Rotate the Plain Force to XYZ[-90.0, 0.0, 90.0]. Set its Strength to 12.0m

  • Set the Drag to 0.1

  • Enable the Apply Force Behind Icon option

  • Affect Splash and Mist only, remove other particles in the list

With the Plain Force in the scene, run the simulation again.




Now the Splash / Mist particles are blown away by the plain force, as the ship sails against the wind.


Simulate Air Effects

With the simulator selected, go to the Dynamics rollout. Enable the Simulate Air Effects option.

Run the simulation again.

Simulate Air Effects is an option that turns on the built-in air simulator for the areas in the simulation grid which are not full of liquid. The air velocity is affected by the liquid movement, by Sources, or by fast-moving obstacles inside the Simulator. In turn, the air velocity affects and carries splash, mist and foam particles. The air simulation can dramatically increase the quality of splash and mist effects.




Although the benefit of enabling the Simulate Air Effects option is very subtle in this case, we see the splash/mist is now blown away by the plain force more easily.




Let's see a front preview of the simulation with the Velocity Streamlines option enabled. We see clearly the Simulated Air Effects indeed act on the area where the grid has no liquid.


Disperse the Splash/Mist Particle Mass

To alleviate the chunky looks of the splash/mist particle mass, let's increase the Initial Vel. Rand in the Properties session of the Splash/Mist rollout. Give it a value of 0.3.

When increasing the Initial Vel. Rand, the particles might travel way too far. To compensate that, we also increase Splash Air Drag to 2.0, and Mist Air Drag 3.0.

With those new settings, run the simulation again.

Mist Air Drag controls the air friction of the mist. This value determines not only how fast the speed decreases, but also the influence of the wind. The larger this value, the larger the wind's influence is.




Now the particles are more dispersed, we see less chunky or blobby looking in the splash / mist.


Enable Foam

Select the Foam rollout of the Phoenix Liquid Simulator and enable it. A pop out window prompts us to create a Particle Shader for the foam, so select Yes.

Rename the new Particle Shader to ParticleShader-Foam.




With the simulator selected, go to Foam rollout. Set the Foam Amount to 0.05. Set the Birth Threshold to 0.2 m. Decrease the Size to 0.006 m.

Run the simulation again.




Now we start to see foam particles being generated in the scene, but they are shooting upward in an unrealistic way.

For clarity, we only display foam particles in the preview animation.


Improve Foam Dynamics

With the Simulator selected, go to the Foam rollout. In the Dynamics section, set the Foam Volume to 0. Reduce the Rising Speed to 0.35. Decrease the Falling Speed to 10.0.

Increase the Surface Lock to 1.0.

Formerly known as B2B, the Foam Volume controls the internal interaction between bubbles (bubble-to-bubble interaction). This option is used when the foam should have a volume. It forces a proper distance between the bubbles and keeps them stuck together. This parameter controls the number of interactions per second. Higher values result in better preservation of the foam's volume.




Now the foam movement looks much more convincing.


Expand the Sim Grid

Since we have finished the essential settings of the active bodies, splash, mist and foam, let's expand the grid to a larger region.

With the simulator selected, go to Grid rollout. Set Grid size to XYZ: [580, 580, 109].


Adding Pre-existing Foam to the Sea

To add an extra layer of realism to the shot, we like to add foam that exists before the WaveForce kicks in.

From Create Panel > Standard Primitives, create a Box in the scene.

Set the Box's Length to 52.0, Width to 52.0 and Height to 0.1.

Set the segments for Length, Width and Height to 1.

The exact position of the Box is XYZ: [ 7.33, 0.0, 4.67 ].

Create a thin box that is placed at the water level of the simulator (based on the value of Initial Fill Up %). Let it be with just enough thickness to brush out Foam particles from it.




Right-click on the Box in the viewport and select Object Properties.

  • Enable the Display as Box option
  • Disable the Renderable option




Create a Phoenix Liquid Source in the scene by going to Create Panel > Create > Helpers > PhoenixFD > PHXSource.

Set the Emit Mode to Volume Brush. This mode will gradually fill the volume of the emitter with particles.

Press the Add button to choose which geometry to emit and add the Box entry to the Scene Explorer.





When you add the Box to the LiquidSrc Emitter Nodes, a Chaos Phoenix window pops out. Choose the Make Non-Solid button to disable the Solid Object option in the Phoenix properties of the box.

Solid objects act as an obstacle for the fluid and will block the liquid flow. In this case we want the emitter only to create particles and not to interact with the liquid.




With the LiquidSrc selected, go to Graph Editors/Track View > Curve Editor and set keys to the curve of the source's Brush Effects %.

We set keyframes for this parameter, so that the source brushes out foam particles only in the very first frame. The frames and values are shown in the screenshot.





Here is a table with keyframes for the LiquidSrc's Brush Effects %




Tangent type









For the LiquidSrc:

    • Disable the Emit Liquid option. In this case we don't want to emit any liquid, but only foam.
    • Enable the Particles option, set the number to 800000.0. Set the particles Type to Foam.


In order to add some variation to the foam distribution we use a texture map as a mask.

Set the Mask type to Texmap. Plug a VRayCompTex in the slot. Rename it to Mask_for_foam.

    • Plug a Noise texture into the Source A slot. Rename it to Noise_small. Set its X Tiling to 0.5. Set its Size to 6.0; High to 1.0; Low to 0.25; Noise Type to Turbulence. Levels to 5.0
    • Plug another Noise texture into the Source B slot. Rename it to Noise_Big. Set its X Tiling to 0.3. Set its Size to 15.0; High to 1.0; Low to 0.45; Noise Type to Turbulence. Levels to 5.0

Set the Operator to Add(A+B).

We make the X-tiling smaller, so the texture can form a longer stripe. This is because we usually observe long foam stripes over the surface of the surfing waves.

To make the shot even more convincing, let's generate foam around the ship. We use the Mask_for_foam_A texture map created in the previous step.

Let's add another VRayCompTex on top of that. Rename the texture to Mask_for_foam_B.

    • The Source A slot is for the Mask_for_foam_A map
    • Plug a VRayDistanceTex into the Source B slot
    • Set the Operator to Add(A+B)


For the VRayDistanceTex:

    • Set the Distance to 2.0
    • Set the Far Color to black
    • Set the Near Color to white
    • Add the ship geometry in the VRayDistanceTex Objects list

The Distance parameter determines how wide the foam is scattered around the ship. Increase this value if you want more foam around the ship.

Switch your renderer from the default Scanline Renderer to V-Ray in order to see the VRayDistanceTex and the VRayCompTex in the Material Editor.




Here's the shading network in the Slate Material. You can see the connections here.

Everything is all set, let's run the simulation.

If the setup for this Mask_for_foam looks too complicated, you can find the map in the Material Editor of the Stormy_sea_max2020_start scene, ready to use.




With the simulator selected, go to Foam rollout. Increase Half Life to 15.0. Set the Max Outside Age to 10.0. In the Patterns section, set the Formation Speed to 0.05. Set Radius to 1.2m.

With those foam settings, run the simulation again.




Now we start to see foam particles distributed over the ocean surface. We are ready for the next phase.


Set up Particle Shader for Mist

We have a Particle Shader for splashes and foam already. For the Mist particles, we have to create a new Particle Shader manually.

Go to Create Panel > PhoenixFD and press the PHXFoam button to create a new Particle Shader in the scene. Rename it to ParticleShader-Mist.




Press the Add button and pick the Liquid Simulator, then select the Mist particle group. When doing so, a pop out window prompts you to add PhoenixFDLiquid to the Liquid Simulator slot to the shader, press Yes.

Set the ParticleShader-Mist mode to Fog.


Set up Ocean Texture for Displacement

With the PhoenixFDLiquid simulator selected, go to the Rendering rollout and switch the Mode to Ocean Mesh.

Increase the Smoothness of the Mesh Smoothing to 2.0.

To add details to the ocean surface, enable the Displacement option. Plug a PhoenixFDOceanTex in the Map slot.

Drag and drop it into the Material Editor as an Instance. (the Copy option creates a copy of this Map - you want to use the same texture in the simulator and in the material editor instead of being forced to deal with 2 separate PhoenixFDOceanTex, so make sure to choose the Instance option). Rename the texture to OceanTex_for_displacement.

Enable the Vert. Fade Level, and set it to 50.0.

Here are the values for the OceanTex_for_displacement parameters that we use in this tutorial:

    • Control by Wind Speed to 6.0m
    • Level of Detail to 20
    • Sharpness to 0.9
    • Velocity Coherence to 0.5
    • Wave Crest to 0.7
    • Seed: 345443

Velocity Coherence controls the degree of variation in the Wave Direction. When this value is set to 1, all waves move in the same direction, as they do in coastal areas. When set to 0, all waves move in random directions, as they do in the open seas.

The OceanTex_for_displacement and the other ocean texture we used for the WaveForce are two different ocean textures.

The one for the WaveFoce is designed for simple, pure waves that move in one direction, while the displacement texture is for adding small details to the ocean surface.

Vertical Fade Level controls how high above the Ocean Level the displacement stops having effect. This option is needed for ocean simulations where we have liquid flying or splashing high above the ocean surface, so that the ocean displacement affects only the calm ocean surface, but does not displace the liquid flying high above the ocean, or we would be able to see small pieces of liquid move up and down as they fly due to the ocean waves displacement. Above the Vertical Fade Level there is no displacement at all, and below it the displacement is strongest near the Ocean Level and is gradually reduced moving up from the ocean surface. 




In the Rendering rollout of the simulator, switch Mode from Cap Mesh to Ocean Mesh. Phoenix prompts the Chaos Phoenix Warning window. Click on Yes to use static default geometry.


Water Material

Let's take a look at the water material now.

Create a V-Ray Material and assign it to the PhoenixFDLiquid Simulator. Set the Diffuse color to black.

Reflect and Refract colors are set to white - it produces a completely transparent material if the Index of Refraction is set to 1 (which is the IOR of clear air). But let's set the IOR to 1.333, which is the physically accurate Index of Refraction of water.

Keep the Max depth to its default value of 8 for both Reflection and Refraction.

To slightly blur the specular highlights produced by the sources of illumination in the scene, reduce the Reflection Glossiness to 0.95.

If we render now, we'd notice that the water is completely transparent and does not look like ocean water.

Instead, let's switch the Translucency to Volumetric. Set the Fog color to RGB : [46, 75, 102] and set the Depth to 150.0.

Set Scatter color to RGB : [44, 140, 119]. Set SSS amount to 0.5. This produces the type of shading expected in a large body of water containing all sorts of particles that interfere with the light rays.

Setting the Translucency to None saves some rendering time.




Run a test render for frame 177 for our current setup. See that the foam on the sea surface is too grainy. Some splash particles are way too big and some foam particles are offset from the ocean surface at the simulator's borders.

Temporarily turning off motion and depth of field of the camera helps to see the rendered particles more clearly.


Final Simulation

For the final simulation, increase the Grid Resolution by lowering the Cell Size.

Open the Grid rollout and set the following values:

    • Cell Size: 0.069 m
    • Size XYZ: [ 725, 725, 1137]

Go to the Splash/Mist rollout and increase the Splash Amount to 4000.0.

Users of previous versions should note an important difference about splash regarding particle size.

In version 2.2 the splash size was controlled directly, like the foam. While foam really needs direct size control, especially for the most popular usage of pouring a glass of beer or soda, the size and volume of a splash should be directly related to the amount of liquid being displaced rather than a user-specified value. In other words, in order to have a seamless transition between the splash and the liquid, the volume of the splash droplets must be equal to the volume of the liquid converted into splash. Phoenix 3.0 and newer simulates splashes according to this rule.

Therefore, instead of adjusting size in the Particle Shader of the Splashes, we increase Splash Amount in the Simulator. Since the larger values decrease the size of splash particles.




Here is the preview animation for the final simulation.




Run a test rendering. See the splashes appear smaller, but they are still slightly bigger than we want. And the offset foam at the border is still there.

Let's fix those issues by adjusting the Particle Shader's settings in the next step.


Final Adjustment to the Particle Shaders

Adjust the Particle Shaders for Foam, Splash and Mist.

For the ParticleShader-Foam:

    • Set Mode to Points
    • Size Multiplier to 0.5
    • Count Multiplier to 4.0
    • Enable the Flatten At Ocean Borders
    • Enable and set the Light Cache Speedup to 0.95

For the ParticleShader-Splash:

    • Set Mode to Splashes
    • Size Multiplier to 0.7
    • Count Multiplier to 3.0
    • Enable and set the Light Cache Speedup to 0.95

For the ParticleShader-Mist:

    • Set Mode to Fog
    • Count Multiplier to 1.0
    • Enable and set the Light Cache Speedup to 0.95
    • Increase Fog Density to 0.3

With the Flatten At Ocean Borders option enabled in Ocean Mesh mode, foam particle height fades towards the ocean level like the ocean vertices do.

To maintain the volume of the Splash (liquid), when decreasing particle size in the Particle Shader, we increase Count Multiplier to compensate for that. The formula is Count Multiplier = (1/Size Multiplier) ^ 3. In this case, we set the Size Multiplier to 0.7, therefore (1/0.7)^ 3 = 2.91545. Thus increasing Count Multiplier to 3.0 is a reasonable value.

Enabling the Volume Light Cache for the ParticleShader-Mist could speed up the rendering but might cause GI flickering in the mist particles rich area.

Generally, disabling the Scattering of the Mist particle shader helps enhancing the realism of the shot dramatically since it brings back the contrast in the mist-rich area.

But in this case, the environment light is not very strong, we won't see much difference whether we enable or disable this option. Find a better example in the Epic Ocean Waves tutorial.

Feel free to adjust the settings for those Particle Shaders, in terms of Size Multiplier and Count Multiplier to fit your artistic taste.




Run a test rendering. You can see now we have much refined foam particles, and enough details in the Splash/Mist area. Let's continue to the next step, turn the environment into a foggy sea.



Create a Fire/Smoke Simulator

In order to simulate the fog in the scene we can use a Fire/Smoke Simulator instead of a V-Ray Environment fog.
While you can still use V-Ray Environment fog to achieve a similar result, in order to get a proper blending of the Particle Shader nodes with the fog you will have to enable the Render as Geometry checkbox in the Particle Shader options, which in most cases is slower to render. This is why in this case we will use a Fire/Smoke Simulator to emulate the fog effect.

Let's create one now. Go to Create Panel > Create > Geometry > PhoenixFD > FireSmokeSim.

The exact position of the Phoenix Simulator in the scene is: XYZ: [ -22.0, 0.0, 0.0 ].

Open the Grid rollout and set the following values:

    • Cell Size: 1.56 m
    • Size:

X: 72

Y: 72

Z: 38




Select the Phoenix Fire/Smoke Simulator, and go to its Volumetric Render Settings.

    • Set the Fire Based on option to Disabled - we won't need any fire in this scene;
    • Change the Smoke Color to pure white of RGB (255, 255, 255);
    • Reduce the Light Cache Speedup to 0.1;
    • Set the Smoke Opacity Based on option to Smoke;
    • In the Opacity diagram, adjust the Y value of the first key point to 0.03. This way we can create a fog volume without actually running the simulation.


In the Rendering rollout, set the Sampler Type to Linear.

The higher Light Cache Speedup is set, the faster the rendering is, but it might cause flickering in the rendering or some render artifacts, that's why we reduce its value to 0.1. You can increase Light Cache Speedup depending on your scene, to speed up rendering.




With the Phoenix Fire/Smoke Simulator present in the scene, let's do a test rendering. 

As you can see, the ship sails in a foggy environment now. But at the same time, the image became underexposed.


Render Elements

In the Render Setup > Render Elements tab, add VRayLightMix render element. This is necessary for relighting the scene in the VFB.


V-Ray Frame Buffer

Open the V-Ray Frame Buffer and use the Create Layer icon to add layers for White Balance, Exposure and Lens Effects.

Re-enable both the Depth of field and Motion blur of the VRayCam_Final.




The final image is rendered using the V-Ray Frame Buffer with the color corrections and post effects set to:


    • Calculate Sharpen/Blur: Enabled
    • Sharpen Amount: 1.0
    • Sharpen radius:0.5
    • Blur radius: 1.5

Lens Effects:

    • Size: 92.0
    • Intensity:5.3
    • Bloom: 0.400
    • Threshold: 0.050


    • Exposure: 3.23

    • Highlight Burn: 1.000

    • Contrast: 0.23

White Balance:

    • Temperature: 9490.000

    • Magenta - Green tint: 0.220


    • Switch to LightMix mode

    • Set the Self Illumination Multiplier to 3.0


Feel free to use other values for the post effects depending on your preferences.

We make the lights on the ship brighter in post by increasing the multiplier of the self-illumination layer of the Light Mix. We don't increase the strength of the VRayLightMtl, because the latter method might generate unwanted fireflies in the image.




Alternatively, you can load a Rendering Preset from the Stormy_Sea.vfbl file that is provided in the sample scene.






And here is the final rendered result (from frame 140 to frame 230).