Versions Compared

Key

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

...

Section
Column
width45%

In this tutorial we show how Phoenix works together with tyFlow.

We generate particles using tyFlow. When bombs hit the ground, bounced particles are procedurally created.

tyFlow's particles contain velocity data and Phoenix can use this data as a source for fire and smoke to produce realistic explosion plumes.

The structure of this tutorial is very similar to another tutorial - Artillery Explosion. However, in this article, we put more attention on the pyro shader and add more details to the fire components. The explosion and rising dust are set to different RGB colors. Together with the color gradient in the volumetric shading, we get colorful and rich result in the final shading.

We take advantage of the Time Base - Particle Age, a powerful feature of the Fire/Smoke Source. It allows you to animate the emission of fluid based on the age of each individual particle.

This simulation requires tyFlow v0.16089 (Beta), Phoenix 4.10 Official Release and V-Ray Next Official Release for 3ds Max 2015 at least. If you notice a major difference between the results shown here and the behavior of your setup, please reach us using the Support Form.

 

Press the Download button below to get an archive with the start and end scenes.

This download package does not contain the HDRI maps used in the scene. However, you can download the HDRI maps (quarry_02, made by Sergej Majboroda) from the HDRIHeaven website.

 

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

Column
width55%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/pxnFMhTwnhs?version=3&loop=1&playlist=pxnFMhTwnhs" frameborder="0" allowfullscreen></iframe> 

 

Units Setup

...

Section
Column
width40%

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, you must check the Grid rollout where the real-world extents of the Simulator are shown. If the size of the Simulator in the scene cannot be changed, you can cheat 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.

As the focus of this tutorial is a large-scale simulation, setting the units to Meters is a reasonable choice.

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

Column
width60%

...

Section
Column
width40%

Here is a preview animation of the particle simulation in its current state.

 

The bomb particles are generated from the emission plane. Once the bombs hit the collision plane, four different helper geometry instances are created at that spot: Cone_V_Dust, Cylinder-ground-fire, Sphere_core001, and Sphere_core002. This way our setup looks like this:

1. tyFlow-Bombs particles are generated from the surface of Plane-bomb-emitter;

2. Major_explo particles are generated from the surface of Sphere_core001;

3. V_dust particlesare generated from the surface of Cone_V_Dust;

4. Ground_fire particles are generated from the surface of Sphere_core002;

5. Falling_fire particles are generated from the surface of Cylinder-ground-fire.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/QpnAUa30IjA?version=3&loop=1&playlist=QpnAUa30IjA" frameborder="0" allowfullscreen></iframe>

 

...

 

Section
Column
width50%

Here is a list of tyFlow particle groups. It summarizes all the different particles and the geometry instances they are using. Every group is color-coded, so you can easily recognize it in the viewport.

UI Text Box
typeinfo

Which particles are emitted from which helper geometries determines the characteristic of an explosion. It could be a landmine explosion, missile or a traditional bomb. For example, if v_dust emits from Cone_V_Dust, the dust rises with 45 degrees and forms a V-shape. If the v_dust emits from the Cylinder-ground-fire, then the particles stream is more straight-up.

You can customize your explosion with different combinations. Here we give you one example per possibility. You can use the scene as a template.

Column
width50%

Particles

Emit From

Wireframe Color

Geometry Instance

Bomb

Plane_bomb_emitter

White

Bomb

major explo

Sphere_core001

Orange

-

V_dust

Cone_V_Dust

Green

-

Falling_fire

Sphere_core002

Purple

-

Ground_fire 

Cylinder-ground-fire

Blue

-

...

Section
Column
width40%

Here is a Preview Animation of the simulation up to this step.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/HCjkGE6xJdQ?version=3&loop=1&playlist=HCjkGE6xJdQ" frameborder="0" allowfullscreen></iframe>

 

Adding Major Explosion Fire/Smoke Source

...

Section
Column
width40%

Here is a preview animation of the simulation after the last step. Now we see the explosion and the burning fuel, but the smoke looks too thin.

Let's see how to enhance it.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/aAgYBE-xmtE?version=3&loop=1&playlist=aAgYBE-xmtE" frameborder="0" allowfullscreen></iframe>


...

 

Section
Column
width40%

The default render setting of the Smoke color is Constant Color for the entire smoke volume. Let's change it and get more variation.

Select the Phoenix Simulator → Rendering rollout and press the Volumetric Options button.

In the Volumetric Render Settings window set the Smoke Color to be Based on RGB. Set the Smoke Opacity to be based on Smoke and then adjust the curve as in the screenshot.

 

UI Text Box
typenote

Make sure to enable the RGB channel in the Simulator's Output rollout before you simulate, otherwise you get only black smoke when switching to Based on RGB in this step.

Column
width60%

...

Section
Column
width40%

Here's a preview of the simulation with the render settings changed.

Now we have thicker smoke appearance and the color variation of the smoke looks more convincing. However, V_dust appears too uniform. Let's tackle that.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/q7HRM26PmYU?version=3&loop=1&playlist=q7HRM26PmYU" frameborder="0" allowfullscreen></iframe>

 

Adding Smoke Noise to the V_dust

...

Section
Column
width40%

Run the simulation again.

Let's see a preview animation. Notice that V_dust now looks more organic. However, although many bombs hit the ground, we can only see one fiery explosion in the preview. In the next step, we are going to take care of that.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/RYTiLHhseLA?version=3&loop=1&playlist=RYTiLHhseLA" frameborder="0" allowfullscreen></iframe>

 

Time Base

...

Section
Column
width40%
UI Text Box
typewarning

In the previous steps we animated the Outgoing Velocity for each Fire/Smoke Source. The keyframe starts at frame 17 because that is when the first missile hits the ground. However, we have 13 more missiles in the scene. They explode at frames 17, 19, 22, 24, 27, 32, 34, 38, 41, 44, 47, 49, 51 and 54 respectively. Though we can manually set keyframes every time when a bomb explodes, if the particle animation changes, we have to move the keyframes accordingly and that can be very tedious.

Instead we can do something else...

Column
width60%

...

Section
Column
width40%

With the new position of the keyframes and the Time Base set to Particle Age, run the simulation again.

Now we start to see multiple explosions in the scene. To improve the fluid simulation, let's switch the conservation method to PCG Symmetric in the next step.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/hkgkoAy7sFA?version=3&loop=1&playlist=hkgkoAy7sFA" frameborder="0" allowfullscreen></iframe>

 

PCG Solver

...

Section
Column
width40%

Select the Phoenix Simulator and change the Conservation Method to PCG Symmetric, with a Quality of 40. 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 dust to swirl better. For in-depth information, check the Conservation documentation.

Column
width60%

...

Section
Column
width40%

With the new Conservation Method, run the simulation again. As you can see, our fluid simulation's movement is more realistic now.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/esuW5mM1u-U?version=3&loop=1&playlist=esuW5mM1u-U" frameborder="0" allowfullscreen></iframe>

 

Adding Ground_fire Fire/Smoke Source

...

Section
Column
width40%

Run the simulation again.

Here is a preview animation of the simulation after the last step. Although we have added the ground_fire source to the sim, we still can't see any ground fire in the preview and this is the next thing we will take care of.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/CdMByY2sfis?version=3&loop=1&playlist=CdMByY2sfis" frameborder="0" allowfullscreen></iframe>

 

Adding Smoke Noise to the Ground Fire

...

Section
Column
width40%

Run the simulation again.

Let's see a preview animation of this simulation run. Now we start to see ground fire in the preview. The fire grows gradually once the bombs hit the ground.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/uipPcwhxxpQ?version=3&loop=1&playlist=uipPcwhxxpQ" frameborder="0" allowfullscreen></iframe>

 

Adding Falling_fire Fire/Smoke Sources

...

Section
Column
width40%

Run the simulation again.

Here is a Preview Animation of the simulation up to this step.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/U4uDAc4ROGQ?version=3&loop=1&playlist=U4uDAc4ROGQ" frameborder="0" allowfullscreen></iframe>

 

...

 

Section
Column
width40%

As the viewport preview is just an approximation of the final rendering, let's run test renders for frame 50 and frame 90.

UI Text Box
typenote

We choose two representative frames (frame 50 and 90) for test rendering. However, you can render out other frames as you like.

Column
width60%

...

Section
Column
width40%

Run the simulation again.

Here is a Preview Animation of the simulation up to this step.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/eDLJTgNB9_w?version=3&loop=1&playlist=eDLJTgNB9_w" frameborder="0" allowfullscreen></iframe>

 

...

 

Section
Column
width40%

Test render for frame 50 and frame 90. Now the results became brighter with thinner smoke.

Column
width60%

 

...

Section
Column
width40%

Run the simulation again.

Here is a Preview Animation of the simulation up to this step.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/zvBL5zznpkU?version=3&loop=1&playlist=zvBL5zznpkU" frameborder="0" allowfullscreen></iframe> 

 

...

 

Section
Column
width40%

Test render for frame 50 and frame 90. You can see the explosion expands faster.

The default black body volumetric shading looks a bit dull, so let's make it more interesting in the following steps.

Column
width60%

 

Volumetric Shading Settings

...

Section
Column
width40%

With the Plain Force in the scene, simulate again.

Now the explosion shifts slightly to the right as the wind blows.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/aktf8LRNORo?version=3&loop=1&playlist=aktf8LRNORo" frameborder="0" allowfullscreen></iframe> 

 

Final Simulation

...

Section
Column
width40%

Since the whole explosion covers a large region, we have to expand the Simulator grid. In order to get a more detailed result we also increase the grid resolution by lowering the Cell Size for the final simulation.

Move the Phoenix Simulator to XYZ: [ 0.365, 0.25, 0.0 ].

Open the Grid rollout and set the following values:

Fancy Bullets
typecircle
  • Cell Size: 0.07 m;
  • Size XYZ: [ 640, 320, 108 ];
  • Adaptive Grid: Smoke - Threshold of 0.02;
  • Adjust the Max Expansion to: X: (436, 509), Y: (415, 360), Z: (0, 586).
Column
width60%

...

Section
Column
width40%

Here is a Preview Animation of the final simulation.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/IZuZ5ZQn_Is?version=3&loop=1&playlist=IZuZ5ZQn_Is" frameborder="0" allowfullscreen></iframe> 


V-Ray Frame Buffer

...

Section
Column
width40%

The final image is rendered using the V-Ray Frame Buffer with the Color Corrections set to:

Exposure:

  • Exposure: 2.69;
  • Highlight Burn: 0.69;
  • Contrast: 0.25.

White Balance:

  • Temperature: 7362.

Bloom/Glare Effect is enabled from the Lens Effects panel:

  • Size: 16.98;
  • Bloom: 0.29;
  • Intensity: 1.51.
Column
width60%

...

Section
Column
width40%

And here is the final rendered result.

UI Text Box
typetip

There are several parameters affecting the rendering speed of Phoenix volumetric data. You can find some useful tips for rendering optimization in this article: Volumetric Rendering In-Depth.

Column
width60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/pxnFMhTwnhs?version=3&loop=1&playlist=pxnFMhTwnhs" frameborder="0" allowfullscreen></iframe>