Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

UI Text Box
typeinfo

This Advanced Level tutorial shows you how to create an underwater ballistic missile launch using Phoenix. Note that creating a production quality shot may require some tweaks to It's recommended that you to have at least basic knowleage of lighting, materials, and /or the Phoenix simulation.

Section
Column
width45%

The final shot we aim at involves not just water, but also Fire and Smoke. A particle flow (PFlow) system is used as a source for the missile smoke trail. The smoke is simulated using Phoenix Fire/Smoke simulator.

For the liquid, we add three Liquid sources to achieve the final effect. One is linked to the missile, one to a Geosphere, and the third one to a Cone geometry that emits splash particles. The liquid and the particles are simulated with a Phoenix Liquid Simulator. Together all these compose a convincing submarine-launched ballistic missile effect.

This simulation requires Phoenix 4.41 Nightly Build from 08 July 2021 and V-Ray 5 Official Release for 3ds Max 2018 at least. You can download nightlies from https://nightlies.chaos.com or get the latest official Phoenix and V-Ray from https://download.chaos.com. If you notice a major difference between the results shown here and the behavior of your setup, please reach us using the Support Form.

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

UI Button
sizelarge
icondownload
titleDownload Project Files
urlhttps://drive.google.com/uc?export=download&id=1JVtMlXkYdQsxhRY6GCHOfNkn0-Cbdzm9

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/66LN1qtE2XU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

 


Units Setup

...

Section
Column
width45%

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.

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

 
Column
width5%


Column
width50%

 


Scene Layout

...

Section
Column
width45%

The final scene contains the following elements:

  1. Ship object for creating a sense of scale in the scene;
  2. Missile geometry;
  3. Three Liquid sources, each using the Missile, GeoSphere and Cone as emitters, respectively;
  4. Phoenix Fire / Smoke source for smoke trail;
  5. Phoenix Plain Force as a wind force in the scene;
  6. Phoenix Fire/Smoke Simulator;
  7. Phoenix Liquid Simulator;
  8. V-Ray Physical Camera (VRayCam) for rendering;
  9. V-Ray Sun & Sky setup for lighting.
Column
width5%

 


Column
width50%

 

 


...


Section
Column
width45%

A close-up for the final scene contains the following elements:

  1. Cone geometry as a liquid source;
  2. GeoSphere geometry as another liquid source;
  3. Missile object;
  4. Particle Flow node: PF Source that is linked to the moving missile object.
 
Column
width5%


Column
width50%

...


Scene Setup

...

Section
Column
width45%

Set the Time Configuration Animation Length to 120 so that the Time Slider goes from 0 to 120.

 
Column
width5%


Column
width50%

 

 


...


UI Text Box
typetip

This tutorial involves both Fire, Smoke and Liquid simulations, and the steps are rather complicated. Here we focus on the Phoenix-related steps only. Feel free to use the camera and light settings in the provided sample scene.
For reference, below you can find the camera and light settings. 


Expand
titleClick here to see the Camera and Light Settings...


Camera Settings


Section
Column
width45%

From Create Panel → CamerasV-Ray select VRayPhysicalCamera andadd it to the scene.

The exact position of the Camera is XYZ: [ 3147.05, -134.6, 7.95 ].

The exact position of the Camera Target is XYZ: [ 3.35, 52.5, 39.5 ].

Sensor & Lens Field of view is enabled and set it to 5.0.

Sensor & Lens Film gate is set to 36.0.

ApertureFilm speed is set to 100.0.

Aperture → F-Number is set to 10.0.

Aperture → Shutter Speed is set to 100.

Both Depth of field and Motion Blur are Enabled.

Color & Exposure → White Balance is set to Neutral.

UI Text Box
typeinfo

We set this camera as a super telephoto lens giving it a sense of distance from the missile launch.

 
Column
width5%


Column
width50%


Lighting


Section
Column
width45%

From Create Panel  LightsV-RayVRaySun, create a VRaySun in the scene.

The exact position of the VRaySun is XYZ: [ 87.3, 462.5, 226.5 ].

The exact position of the VRaySun Target is XYZ: [0.0, 0.0, 0.0 ].

Decrease the Intensity multiplier to 0.45.

Increase the Size multiplier to 100.0.

 
Column
width5%


Column
width50%


Anatomy of the SLBM

...

Section
Column
width45%

The missile shot has few key features:

  • The first one is, when the rocket launches from underwater, the smoke trail drifts from left to right because of the wind. The direction of the ocean wave matches the Plain Force orientation in the scene.
  • Secondly, once the missile launches, a large number of splashes comes out of the sea. The smoke trail is bright white with a bluish tint. We can see a reflection of the hot smoke on the ocean surface, even though the rocket is flying out of the camera. This means that the Fire/Smoke simulator must be tall enough for an out of camera frustum.

Though the smoke and liquid are simulated independently, parts of the splash/mist /foam overlap with the smoke, making the shot visually more convincing.

 
Column
width5%


Column
width50%

 


Timeline of the SLBM animation

...

Section
Column
width45%

Here are the general stages of the SLBM shot:

  1. The missile launches at frame 5 and it gradually loses speed because of gravity.
  2. At frame 50, the missile starts to ignite. You can see hot white smoke coming out of the missile nozzle while it is changing its trajectory.
  3. At frame 59, the missile ignition fire reaches the ocean surface, creating lots of water splashes.
  4. At frame 65, the missile enters the acceleration stage, rushing to the sky at full speed.
Column
width55%

...


Particle Flow Settings

...

Section
Column
width45%

The Particle Flow settings here are provided only as a starting point for the Phoenix Simulation. Feel free to tweak and adjust them according to your scene.

Here is a preview animation of the particle simulation. This particle system is pretty straightforward - there is only one event in the system. It is linked to the keyframed missile object.

Particles are shown in dark yellow color.

 
Column
width5%

Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/1d5l-6OeeCk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

...

 


...


Section
Column
width45%

Here you can see the Particle View of the particle systems. For the Birth operator, the Emit Start is set to 50 as the missile is ignited at frame 50.

The Speed for the particles is set to 125.0 m with variation set to 20.0 m.

The particle age is controlled by the Delete operator, with a Life span set to 1, so the particles don't last long.

UI Text Box
typenote

The Divergence in the Speed operator affects the shape of the smoke trail. If the value is higher, it sprays particles wider, making a wider smoke trail.

Column
width5%

 


Column
width50%


Fire/Smoke Simulation

...

Section
Column
width45%

Let's create a simulator now. Go to Create Panel → Create → Geometry → PhoenixFD → FireSmokeSim.

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

Open the Grid rollout and set the following values:

Fancy Bullets
typecircle
  • Cell Size: 0.244 m
  • Size XYZ: [ 32, 32, 48 ] - keep the Simulator size small to roughly cover the PFlow particles
  • Container Walls: Open to X and Y, but Jammed(-) to Z.
  • Adaptive Grid: Smoke - the Adaptive Grid algorithm allows the bounding box of the simulation to dynamically expand on-demand. With a Threshold of 0.001, the Simulator expands when the Cells near the corners of the simulation bounding box reach a Smoke value of 0.001 or greater. Extra Margin is set to 25.
  • Enable Expand and Don't Shrink - this way the Adaptive grid does not contract back when there is very thin smoke at the borders of the grid
  • Enable Max Expansion: X: (261, 261), Y: (261, 261), Z: (0, 1448) - saves memory and simulation time by limiting the Maximum Size of the simulation grid
UI Text Box
typenote

The Fire/Smoke Simulator is positioned on the Z-axis, according to the Liquid Simulator (that we create later) and its ocean level. The container walls are set to Jam to Z (-), so when we simulate the liquid, the missile trail smoke appears colliding with the ocean surface.

UI Text Box
typenote

The Max Expansion of the Z-axis is set to an extremely high value. This is to make sure that the reflection of the smoke trail is long enough to reflect on the ocean surface. Otherwise, the look is unrealistic when the smoke trail disappears, while the missile flies out of camera view.

 
Column
width5%


Column
width50%

 

 


...


Section
Column
width45%

Select the SimulatorOutput rollout and enable the output of Temperature, Smoke, and Velocity Grid Channel

UI Text Box
typetip

If you'd like to perform a Resimulation using Wavelet Turbulence for increasing the simulation detail, enable the Wavelet Grid Channel output.

UI Text Box
typetip

Any channel that you intend to use after the simulation is complete needs to be cached to disk. For example:

Fancy Bullets
typecircle
  • Velocity is required at render time for Motion Blur;
  • Temperature is usually used at render time to generate Fire;
  • Wavelet is used for Wavelet turbulence when performing a Resimulation.
Column
width5%

 


Column
width50%

...


Adding Missile Fire/Smoke Source

...

Section
Column
width45%

Now, let's create a Phoenix Fire/Smoke Source in the scene. Go to Create Panel → Create → Helpers → PhoenixFD → PHXSource. Rename it to PHXSource-Missile-Smoke.

Press the Add button to choose which geometry to emit and select the PF Source entry in the Scene Explorer.

Column
width5%

 


Column
width50%

 

 


...


Section
Column
width45%

When you pick the PF Source node, the Available Events dialog pops out. Choose both the "PF Source 001→PF Source 001" and "PF Source 001→Event 001".

Column
width5%

 


Column
width50%

 

 


...


Section
Column
width45%

For the PHXSource-Missile-Smoke:

Fancy Bullets
typecircle
  • Set the Emit Mode to Surface Force and animate its value
  • Animate the value of the Temperature
  • Set the Smoke to 1.0
  • Set Motion Vel. to 1.0
  • Set the Prt Shape option to Sphere, 1 voxel
 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Now, let's go to Graph Editors/Track View → Curve Editor and set keys to the curve of PHXSource-Missile-Smoke's Outgoing Velocity. Set keyframes to Outgoing Velocity, so it can change over time.

Each frame and value are shown in the screenshots.

Column
width5%

 


Column
width50%

 

 


...


Section
Column
width45%

Here is a table with keyframes for the PHXSource-Missile-Smoke's Outgoing Velocity

 
Column
width5%


Column
width50%

Frame

Value

Tangent type

0

0.0

Stepped

50

0.0

Slow

55

40.0

Fast

...


...


Section

 

Section
Column
width45%

Go to Graph Editors/Track View → Curve Editor and set keys to the curve of PHXSource-Missile-Smoke's Temperature. We set some keyframes to Temperature parameter, so it can change over time.

Each frame and value used in this tutorial are shown in the screenshots.

UI Text Box
typetip

We animate the Temperature value, making the fiery smoke heat up gradually. This makes the ignition process more realistic.

Column
width5%

 


Column
width50%

 

...


...


Section
Column
width45%

Here is a table with keyframes for the PHXSource-Missile-Smoke's Temperature you can use. 

Column
width5%

 


Column
width50%

Frame

Value

Tangent type

0

0.0

Stepped

50

0.0

Slow

55

3500.0

Fast

 

 


...


Section
Column
width45%

Select the Simulation rollout of the Phoenix Fire/Smoke Simulator. Since the smoke animation starts at frame 50, set the Start Frame to 49. You don't have to simulate the full length of the animation. Only a sample is enough, so set Stop Frame to 90.

Press the Start button to simulate.

 
Column
width5%


Column
width50%

 

 


...


Section
Column
width45%

Here is a preview of the simulation up to this step.

To improve the fluid simulation, we switch the conservation method to PCG Symmetric in the next step.

UI Text Box
typetip

To enable the GPU Preview, select the SimulatorPreview rolloutGPU PreviewEnable in Viewport.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/XcDsbkF86oU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

...


Switch to PCG Solver

...

Section
Column
width45%

Select the Phoenix Fire/Smoke Simulator and change the Conservation Method to PCG Symmetric, with a Quality of 80.

The PCG Symmetric option is the best method to use for smoke or explosions in general, preserving both detail and symmetry. The high Conservation Quality allows the smoke to swirl better. For more in-depth information, check the Conservation documentation.

Column
width5%

 


Column
width50%

...

 


...


Section
Column
width45%

Here is a preview animation of the simulation with the PCG Symmetric option switched on.

Column
width5%

 


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/f-L83cxSE-M" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

 


Cooling

...

Section
Column
width45%

Now the smoke swirls better, but it stays hot for too long. To tackle that, select the Phoenix Fire/Smoke Simulator and go to the Dynamics rollout. Increase the Cooling to 3.

With the new dynamics settings, run the simulation again.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Now the hot smoke cools faster. The short tail of the hot smoke combined with the long streak of the cool smoke makes it look more convincing.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/biNuhnyiR1U" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

 


Adjusting Smoke Buoyancy

...

Section
Column
width45%

To make the smoke float up faster, select the Fire/Smoke Simulator, go to the Dynamics rollout and set the Smoke Buoyancy to 20.0. With the new Dynamics settings, run the simulation again.

Column
width5%

 


Column
width50%

 

...


...


Section
Column
width45%

This example shows the scene after adjusting Buoyancy.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/hakmXDb8Tfk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

...


Adding Plain Force

...

Section
Column
width45%

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

Go to Create Panel → the Helpers tab → Phoenix and add a Phoenix Plain Force. This is a simple directional force.

The exact Position of the Plain Force in the scene is XYZ: [23.0, -69.0, 19.0].

Rotate it so that it points to the minus X direction and set the Strength to 5.0 m. Set the Drag to 0.1. Enable the Apply Force Behind Icon option.

The exact Rotation of the Plain Force in the scene is XYZ: [-90.0, 0.0, 0.0].

Remove Liquid from the Affect list, because later that causes it to blow on the ocean surface. The ocean liquid is controlled purely by displacement.

UI Text Box
typewarning

When enabling the Apply Force Behind Icon option, the force is applied behind the helper icon. If disabled, the fluid behind the icon is not affected by Plain Force.

Column
width5%

 


Column
width50%

...


Up-res grid resolution

...

Section
Column
width45%

In order to get a more detailed result we also increase the Grid Resolution by lowering the Cell Size for the final simulation.

Open the Grid rollout and set the following values:

Fancy Bullets
typecircle
  • Cell Size0.156 m
  • Size XYZ: [ 50, 50, 75]
 


Press the Start button to run the simulation.

 
Column
width5%


Column
width50%

 

 


...


Section
Column
width45%

As seen in the example, the smoke is slowly drifting to the right.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/34fXk7Yk5JM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

 


Adding noise to the Missile Fire/Smoke source

...

Section
Column
width45%

Let's give the PHXSource_Missile_Smoke some randomness. Set its Noise to 0.05.

Run the simulation again.

Column
width5%

 


Column
width50%

 

 


...


Section
Column
width45%

Here's how it looks like.

Column
width5%

 


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/Ft4UxT2DGPk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

 


Randomize the Dynamics

...

Section
Column
width45%

The Randomize options add random fluctuations in the fluid's velocity for each grid voxel. It reduces the smoke's trail volume, producing interesting effects.

With the Fire/Smoke Simulator selected, go to the Dynamics rollout. Set the Randomize Amount to 0.15.

 
Column
width5%


Column
width50%

 

 


...


Section
Column
width45%

To simulate the full length of the animation, go to the Simulation rollout and enable the Timeline option for the Stop Frame. Press the Start button to simulate.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Here is a preview of the sim animation so far.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/zD4vlGf5Lao" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

 

 


...


Section
Column
width45%

The smoke looks thin and dark.

UI Text Box
typeinfo

In this case, the render shows the 86th frame. You can render any frame(s) you like.

Column
width5%

 


Column
width50%

...


Volumetric Shading

...

Section
Column
width45%

Go to the Fire/Smoke SimulatorRendering rollout and click on the Volumetric Options. Adjust the color gradient and the curve as shown in the image.

UI Text Box
typeinfo

The color gradient is set to black-red-orange-yellow representing fire color at different temperatures, from coolest to hottest. Note that the green region highlighted in blueish-green shows the temperature data range for the current timeline frame. When you scrub the timeline, this area changes as the grid content changes. In this case we have fire temperatures ranging from 0 to around 2250 Kelvins. When you set the color ramp and curve, make sure they are within the range of the green area because this is the data that is actually rendered for this frame.

UI Text Box
typetip

Use an S-shaped curve. From left to right, the curve begins with the highest value of Y, then goes down at the highest temperature. By doing so, Phoenix retains most of the details for the higher temperatures, avoiding color washout.

Column
width5%

 


Column
width50%

 

 


...


Section
Column
width45%

In the Smoke Color rollout, set the Constant Color to pure white (RGB: 255, 255, 255). Then, increase the Master Multiplier to 2.0. Set the Simple Smoke Opacity to 0.99.

UI Text Box
typeinfo

Even though we set the smoke color to pure white, it might look gray when rendering. So, let's adjust the Master Multiplier of the Smoke Color to a higher value ensuring enough whiteness.

Column
width5%

 


Column
width50%

 

 


...


Section
Column
width45%

Alternatively, you can load up a Rendering Preset from the SLBM_rendering_preset.tpr file that is provided in the sample scene.

 
Column
width5%


Column
width50%

 

 


...


Section
Column
width45%

Here's a render of the current step of this scene.

 
Column
width5%


Column
width50%

...


Smoke Absorption color

...

Section
Column
width45%

To further enhance the realism of the smoke trail, select the Phoenix Fire/Smoke Simulator, go to Rendering rollout → Volumetric Options. In the Smoke Opacity rollout, set the Absorption Constant Color to RGB (96, 96, 117).

UI Text Box
typeinfo

In this tutorial, the Absorption Constant Color is set to sky blue, but you can choose other colors that match your environmental lighting.

 
Column
width5%


Column
width50%

...

 


...


Section
Column
width45%

Now we have a white smoke trail with a subtle bluish tint. The ratio of the hot afterburn to the cold smoke trail looks convincing.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

The Fire/Smoke Simulation is completed. Now let's move on to the liquid part of this tutorial. In the Scene Explorer, click on the Eye Icon on the left of PhoenixFDFire node entry to hide the Phoenix FD Fire/Smoke Simulator.

 
Column
width5%


Column
width50%

...


Liquid Simulation

...

Section
Column
width45%

Let's now take care of the liquid simulation. Go to Create PanelCreate GeometryPhoenixFD PhoenixFDLiquid.

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

Open the Grid rollout and set the following values:

Fancy Bullets
typecircle
  • Cell Size: 0.21 m
  • Size XYZ: [130, 130, 154]
  • Container Walls: Open to X, Y and Z
UI Text Box
typetip

The Simulator size roughly covers the splashes of the missile launch. This optimizes the simulation and avoids cropping the particles at the simulator's boundaries.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Select the Output rollout of the PhoenixFDLiquid. Leave everything at their default values.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Select the PhoenixFDLiquidScene Interaction rollout. Press Add and choose PF Source in the Scene Explorer.

Column
width5%

 


Column
width50%

...


...


Section
Column
width45%

Let's prompt the Available Events window. Choose both the "PF Source 001→PF Source 001" and "PF Source 001→Event 001" options and press OK. Now all PFlow particles are excluded from the liquid simulation.

UI Text Box
typewarning

If PF Source is not added in the Scene Interaction exclude list, the particles push the liquid during simulation and create undesired effects.

 
Column
width5%


Column
width50%

...


List of Liquid Sources and their Settings

...

Section
Column
width45%

Here are the three Liquid Sources that we use in this tutorial:

Fancy Bullets
typecircle
  • The Missile is the first geometry used for a liquid source
  • Geosphere is added as a liquid source to enhance the splashes
  • Cone geometry is added to generate a large number of splashes after the Missile smoke hits the ocean surface
 
Column
width5%


Column
width50%

Liquid Sourcre

Emit From

Emit Mode

Outgoing Velocity

Emitting Particles

Motion Velocity

LiquidSrc-Missile

Missile

Surface Force

Frame 19 – 2

4 -> 0

-

1

LiquidSrc-GeoSphere

GeoSphere

Surface Force

Frame 18 – 19

40 -> 0

-

-

LiquidSrc-Cone

Cone

Surface Force

Frame 59 – 61

70 -> 0

Splashes

-

...

Section
Column
width45%

Create a Phoenix Liquid Source in the scene by going to Create PanelCreateHelpersPhoenixFDPHXSource. Rename it to LiquidSrc-Missile.

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

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

For the LiquidSrc-Missile:

Fancy Bullets
typecircle
  • Set the Emit Mode to Surface Force and animate the Outgoing Velocity value
  • Enable Emit Liquid
  • Set Motion Vel. to 1.0
 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Go to Graph Editors/Track ViewCurve Editor and set keys to the curve of the Liquid-Missile's Outgoing Velocity. We set keyframes for the Outgoing Velocity, so it can change over time. The frames and values are shown in the screenshots.

UI Text Box
typeinfo

The Curve corresponds to the Missile launch from underwater which gradually loses its speed.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Here is a table with keyframes of the Liquid-Missile's Outgoing Velocity

 
Column
width5%


Column
width50%

Frame

Value

Tangent type

17

0.0

Stepped

19

4.0

Linear

21

2.35

Linear

22

0.0

Linear

...

Section
Column
width45%

Go to the Dynamics rollout of the PhoenixFDLiquid. Set the Initial Fill Up % to 10.0. Enable both Foam and Splash/Mist option. Leave everything else here at their defaults.

In the Rendering rollout, set the Mode to Cap Mesh. Set the Ocean Level % to 10.0. It's the same value as the Initial Fill Up.

UI Text Box
typenote

The desired effect is the missile launch to generate Splash/Foam/Mist particles. Waves and liquid particles are not so important. Therefore, we minimize the Initial Fill Up to 10% to save us some simulation time.

UI Text Box
typetip

During the development stage, set the rendering mode to Cap Mesh, since it is lighter in the viewport.

 
Column
width5%


Column
width50%


Setting Particle Shaders

...

Section
Column
width45%

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

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Now there are two Particle Shaders in the scene. Rename them to ParticleShader-Foam and ParticleShader-Splash respectively.

Set the Mode of the ParticleShader-Foam to Points. Leave the other settings at their defaults for now.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

As for the Mist particle, you have to create a new Particle Shader for it manually.

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

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

With the PhoenixFDLiquid Simulator selected, simulate one frame. This step allows Phoenix to generate a Foam/Splash/Mist particles list in the scene.

 
Column
width5%


Column
width50%

 

 


...


Section
Column
width45%

With the ParticleShader-Mist selected, go to the Modifier Panel. Press the Add button to choose the PhoenixFDLiquid entry in the Scene Explorer, then press OK.

Column
width5%

 


Column
width50%

...

 


...


Section
Column
width45%

Prompt the Available Events window and choose the Particle[Mist]of[PhoenixFDLiquid001]. Press OK.

UI Text Box
typewarning

If Phoenix has not ran the Liquid Simulation before, you will not see any particles in the list of Available Events.

Column
width5%

 


Column
width50%

 

...


...


Section
Column
width45%

Set the ParticleShader-Mist's mode to Fog. Disable the Volume Light Cache option.

Now all three Particle Shaders for the Foam/Splash/Mist particles are set.

UI Text Box
typewarning

The Volume Light Cache for the ParticleShader-Mist needs to be disabled, otherwise there is some obvious GI flickering in the final rendering where the mist particles are distributed. This is due to the special case we have with the Fire/Smoke Simulator in the scene.

 
Column
width5%


Column
width50%

...

 


...


Section
Column
width45%

You can see splashes coming out of the water when the missile is launched. But there are not enough splashes and the distribution of the particle formation is not optimal.

UI Text Box
typenote

The Plain Force created in the previous step also blows away the particles simulated from the Liquid Simulator.

Column
width5%

 


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/71PC8Ky7Jiw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

...


Change Preview Color

...

Section
Column
width45%

To see which particles are which more clearly, let's change the color swatches for the different particle types. Select the PhoenixFDLiquid in the scene and go to its Preview rollout. Set the Splash, Mist, and Foam to Blue (RGB: 0, 0, 255), Red (RGB: 255, 0, 0), and Green (RGB: 0, 255, 0) color respectively.

Disable the Liquid Preview by unchecking its Show option, so we can track the distribution of the Splash/Mist/Foam particles by their color.

Set Scale Color By to No Scaling for all particle types.

UI Text Box
typenote

The exact RGB color for the particle preview is not critical. You can choose other colors as long as they are distinguishable.

 
Column
width5%

Column
width50%

 

...


...


Section
Column
width45%

Here is a preview of the simulation.

UI Text Box
typenote

The Mist particles outnumber the Splashones and they are also overlapping. This makes the blue Splash Particles barely visible in the preview.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/5FfTooSCjWI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

...



Adjusting the Foam amount

...

Section
Column
width45%

In the Foam rollout, increase the Foam Amount to 10.0. Lower the Birth Threshold to 1.0m.

Run the simulation with the new settings.

 
Column
width5%

Column
width50%

 

...


...


Section
Column
width45%

More Foam particles are generated after the Missile launch. However, the Foam rises too fast and is cropped by the Simulator.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/4H9vzXOfQ6Q" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

 


Increase Foam Max Outside Age

...

Section
Column
width45%

Select the Foam rollout. Set the Max Outsize Age to 4.0 and B2B Interaction to 0. Decrease the Rising Speed to 3.0m. and the Falling Speed to 30.0m.

Run the simulation with the new dynamics settings.

UI Text Box
typenote

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 Foam. The unit for age is Seconds. Since the scene's FPS is set to 30, the Foam particles last for 4 X 30 = 120 frames. Enough time for the Foam particles to display throughout the whole animation.

UI Text Box
typeinfo

The B2B Interaction controls the internal interaction between Bubbles (bubble-to-bubble interaction). This option is used when the Foam particles 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. In this case, the interactions are not so critical, so we set it to zero.

Column
width5%
 

Column
width50%

 

...


...


Section
Column
width45%

Now we have Foam particles shooting up and they continue flying even outside of the Liquid Simulator's boundaries.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/4BXjhFEa28M" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

...


Adjust Splash/Mist

...

Section
Column
width45%

Select the Splash/Mist rollout. Reduce the Splash to Mist to 0.05 and increase the Mist Amount to 300.0. Set the Max Outsize Age to 4.0.

Run the simulation again with the adjusted settings.

UI Text Box
typeinfo

Not much Mist is needed here, so reduce the Splash to Mist to 0.05.

 
Column
width5%

Column
width50%

 

...


...


Section
Column
width45%

Let's check the simulation.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/iN6TuqJrGtE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

...



Adding Geosphere Liquid Source

...

Section
Column
width45%

The shape of the Splash from the Missile is currently not what we are after. Also, the amount of Splashis not enough.

Let's create another Liquid Source in the scene by going to Create PanelCreateHelpersPhoenixFDPHXSource. Rename it toLiquidSrc-Geosphere.

Press Add to choose which geometry to emit. Click on the GeoSphere entry in the Scene Explorer.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

For the LiquidSrc-Geosphere:

Fancy Bullets
typecircle
  • Set the Emit Mode to Surface Force and animate the Outgoing Velocity value
  • Enable Emit Liquid
 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Go to Graph Editors/Track ViewCurve Editor and set keys to the curve of LiquidSrc-Geosphere'Outgoing Velocity.

Set keyframes for the Outgoing Velocity, so it can change gradually. The frames and values are shown in the screenshots.

Set keyframes for Tangents to Stepped, too.

Run the simulation again.

UI Text Box
typeinfo

In Frame 18 the missile emerges from the ocean. If you change the animation of the missile, you need to adjust the animation curve for the Outgoing Velocity of LiquidSrc-Geosphere accordingly.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

Now the splashes coming out of the sea are stronger.

 
Column
width5%


Column
width50%
Column
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/p6DL8bDqxjs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

...



Adding Cone Liquid Source

...

Section
Column
width45%

Now let's create a Phoenix Liquid Source in the scene (Create PanelCreateHelpersPhoenixFD PHXSource). Rename it to LiquidSrc-Cone.

Press the Add button to choose which geometry to emit. Click on the Cone entry in the Scene Explorer.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

For the LiquidSrc-Cone:

Fancy Bullets
typecircle
  • Set the Emit Mode to Surface Force and animate the Outgoing Velocity value
  • Enable Emit Liquid
  • Enable Particles. Set the Type to Splashes with a value of 40.0.
 
Column
width5%


Column
width50%

...

 


...


Section
Column
width45%

Go to Graph Editors/Track ViewCurve Editor and set keys on the curve of LiquidSrc-Cone's Outgoing Velocity.

Set the keyframes for Outgoing Velocity, so it can change over time. The frames and values are shown in the screenshots.

All keyframes are set to Tangents to Stepped.

Run the simulation again.

UI Text Box
typeinfo

Frame 59 shows when the Missile Smoke Burst hits the ocean surface. Increase the Outgoing Velocity at Frame 59.

 
Column
width5%


Column
width50%

...

 


...


Section
Column
width45%

You can see a large number of splashes coming out of the ocean when the missile smoke hits the ocean surface.

UI Text Box
typeinfo

The slope of the Cone gives the desired shape to the splashes in this tutorial. You can customize your splashes with a different geometry.

UI Text Box
typeinfo

In this example, the interaction between Smoke/Fire Simulation and the Liquid simulation is mocked.

Column
width5%

 


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/2etIBmNiI-w" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

 


Set up Ocean Texture for displacement

...

Section
Column
width45%

With the PhoenixFDLiquid selected, go to the Rendering rollout and switch the Mode to Ocean Mesh. Set the Off-Screen Margin to 15.0.

UI Text Box
typewarning

The Off-Screen Margin allows you to extend the ocean further from the borders of the camera view. If we leave it at 0 in this case we get an unwanted pop-up of the ocean surface when the displacement is applied between Frame 99 and Frame 100 at the edge of the ocean.

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

Click and drag it to the Material Editor (as the Copy option creates a copy of this Map - you want to use the same texture for both sources, instead of being forced to deal with 2 separate PhoenixFDOceanTex). Rename the texture to OceanTex.

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

Fancy Bullets
typecircle
  • Control by Wind Speed to 5.0m
  • Level of Detail to 12
  • Sharpness to 0.9
  • Velocity Coherence to 0.1
  • Wave Crest to 0.5
 


Set Coordinates Z Angle to 90.0, so that the direction of the ocean waves aligns with the direction of the PlainForce in the scene. If you change the orientation of the PlainForce, adjust the Coordinates of the Ocean Texture Map accordingly.

345344 is the default value for the PhoenixFDOceanTex's seed. Leave it at its default value.

UI Text Box
typetip

The value of the Wind Speed set for the PhoenixFDOceanTex is the same as the PlainForce set for the Missile smoke trail in the previous step. These coordinated settings make the shot visually more convincing.

UI Text Box
typeinfo

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 might in the open seas.

Column
width5%

 


Column
width50%

 


Water Material

...

Section
Column
width45%

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.

Set Max depth to 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.85.

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

Instead, let's set the Fog color to RGB : [53, 146, 125] and set the Depth to 300.0. This produces the type of shading expected in a large body of water containing all sorts of particulates that interfere with the light rays.

 
Column
width5%


Column
width50%

...

 


...


Section
Column
width45%

In the Scene Explorer, click on the Eye Icon on the left of PhoenixFDFire node entry to unhide the Phoenix FD Fire/Smoke Simulator. Now we are ready to render both the Liquid and the Fire/Smoke effects in the scene.

 
Column
width5%


Column
width50%

 

 


...


Section
Column
width45%

The Mist looks too thin in the shot.

Column
width5%

 


Column
width50%

 

...


...


Section
Column
width45%
UI Text Box
typenote
Because the Mist particles are in Fog mode, we can skip rendering the Fog with Motion Blur. When we run a test render, a warning message appears. Select "Do not show this message again" and press OK.
 
Column
width5%


Column
width50%


Adjusting the Particle Shaders

...

Section
Column
width45%

With the ParticleShader-Mist selected, set the Color swatch to Gray (RGB: 155, 159, 148). Increase the Fog Density to 0.4.

 
Column
width5%

Column
width50%

 

 


...


Section
Column
width45%

Now the Mist appears thicker. However, the Foam appears too grainy. Both Foam and Splash look overexposed. Let's see how to adjust these.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

With the ParticleShader-Foam selected, set the Color swatch to a Bluish-White color (RGB: 180, 198, 198). Decrease the Point Radius to 0.5.

UI Text Box
typenote

The Point Radius controls particle size in pixels. Therefore, the apparent radius in a final rendered image is affected by the image output resolution. You can find an example here.

 
Column
width5%


Column
width50%

 

...


...


Section
Column
width45%

With the ParticleShader-Splash selected, set the Color swatch to a Bluish-White color (RGB: 180, 198, 198).

 
Column
width5%


Column
width50%

...

 


...


Section
Column
width45%

The Foam looks thinner now. But you can still see black artifacts on the ocean surface, especially the far side of the ocean.

Column
width5%

 


Column
width50%

...


Alleviate the Ocean mesh artifact

...

Section
Column
width45%

With the PhoenixFDLiquid selected, go to the Rendering rollout and increase the Ocean Subdivs to 3.0.

UI Text Box
typewarning

When generating the far areas of the surface, the Ocean Subdivs determines how many vertices are generated for each pixel of the image. Like with V-Ray subdivisions, the square of the parameter value is used. For example, if you increase the number of subdivisions twice, the number of vertices grows four times. Do not to set the value too high.

Column
width5%

 


Column
width50%

 

 


...


Section
Column
width45%

As you can see, increasing the Ocean Subdivs alleviates the black artifacts on the ocean surface.

 
Column
width5%


Column
width50%

 


V-Ray Frame Buffer

...

Section
Column
width45%

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

Column
width5%

 


Column
width50%

...

 


...


Section
Column
width45%

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

Filmic Tonemap:

Fancy Bullets
typecircle
  • Type - Hable;
  • Shoulder strength: 0.160;
  • Linear strength: 0.280;
  • Linear angle: 0.300;
  • Toe strength: 0.620;
  • White point: 1.500.

 


White Balance:

Fancy Bullets
typecircle
  • Temperature: 5641.5.
 


Exposure:

Fancy Bullets
typecircle
  • Exposure: 0.094;
  • Highlight Burn: 1.0;
  • Contrast: 0.230.
 


Lens Effects:

Fancy Bullets
typecircle
  • Opacity: 0.690;
  • Size: 26.140;
  • Intensity:1.080;
  • Bloom: 0.400;
UI Text Box
typeinfo

The Filmic Tonemap allows to simulate film's response to light with VFB.

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

 
Column
width5%


Column
width50%

...

 


...


Section
Column
width45%

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

Column
width5%

 


Column
width50%

 

 


...


Section
Column
width45%

And here is the final rendered result.

 
Column
width5%


Column
width50%
HTML
<iframe width="640" height="405" src="https://www.youtube.com/embed/66LN1qtE2XU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>