This page provides a tutorial on creating a Ground Dust simulation with Voxel Tuner in 3ds Max.

Overview


This is an Intermediate Level tutorial. Even though no previous knowledge of Phoenix is required to follow along, re-purposing the setup shown here to another shot may require a deeper understanding of the host platform's tools, and some modifications of the simulation settings.

In this tutorial we explore how to create dust-like simulation using Chaos Phoenix smoke. We go through setting the right simulation units, appropriate geometry dimensions and scene setup suggestions. Most importantly, we guide you through how to make a realistic sand smoke coming up as the horses step on the ground using Voxel Tuner. We compare how different values of some crucial parameters change the whole simulation's look.

 

This simulation requires Phoenix 4.10 Official Release and V-Ray Next Official Release for 3ds Max 2017 at least. You can download 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.

 

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 more slowly, while mid-to-small scale simulations have lots of vigorous movement. 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.

The horse used in the simulation is modeled in centimeters and throughout the fluid simulation we keep using the same unit. If you want to simulate a massive scene, then you might consider using meters.

Go to Customize → Units Setup and set Display Unit Scale to Metric Centimeters.

Also, set the System Units such that 1 Unit equals 1 Centimeter.

 



The horse's geometry is modeled with the following dimensions - 196 cm in height, 244 cm in length and width of 60 cm.

 

Scene Layout


The final scene consists of the following elements:

  1. An animated horse exported to an alembic file provided with the single_horse_01.ABC file.
  2. A dust emitting ground is set by a 3ds Max Standard Plane with Shell modifier applied.
  3. A V-Ray Infinite Plane is used for easily setting the ground.
  4. Phoenix Fire/Smoke Simulator with some tweaks in the Grid, Dynamics, and Rendering rollouts.
  5. A Voxel Tuner is used for a realistic sand smoke coming up as the horse steps on the ground. 
  6. Standard Physical Camera with minor tweaks for final rendering.
  7. A V-Ray Sun Light.

 

Scene Setup


Create a 3ds Max Standard Plane. The exact dimensions of the plane are 6225 cm by 2793 cm.

Since Phoenix works best with closed geometry, add a Shell modifier to the created plane.

Set the Outer Amount to 1.0 cm. The actual value does not have weight in the final render, as the plane will not be visible at all there.

 

The exact Position of the plane in the scene is [ X:0cm, Y:-4320cm, Z:-20cm ].

 


 

Import the single_horse_01.ABC geometry by going to File → Import → Import...

This tutorial starts off with pre-built geometry to save time setting up the scene. Feel free to use your own personal models.

 

The exact start Position of the alembic mesh in the scene is [ X:0cm, Y:0cm, Z:0cm ].

 

You can control the interaction strength between the horse mesh and the ground plane by adjusting the Motion Velocity Effect, located in the Phoenix Per-Node PropertiesThe higher the value is, the stronger the fluid reaction to the body's movement is. For this tutorial, its value is set to 2.0.



 

Create a V-Ray Infinite Plane used during rendering.

 

The exact Position of the V-Ray plane in the scene is [ X:0cm, Y:0cm, Z:-15cm ].

 


 

Create a Fire Smoke Simulator.

 

The exact Position of the simulator in the scene is [ X:0cm, Y:-1500cm, Z:-20cm ].

 

 

Voxel Tuner


We are going to use a Voxel Tuner to emit Smoke where the horse model touches the ground. We will do it in such a way, that we don't even need a Phoenix Source.

In this case, the Voxel Tuner will go through all the voxels of the Simulator, and check if each voxel is close to the ground plane and simultaneously close to the horse mesh. If it passes this condition, then the Tuner will create Smoke in this voxel.

The Voxel Tuner expression is created as follows:

  • If a voxel's Distance to Plane001 is Less Than 1.7 voxels and If the Distance to horse mesh is Less Than 1.7 voxels.
  • Then the Smoke will be Set to 15.0.

We picked very low values for both distance conditions - if you lower them even more, less voxels will pass the condition and Smoke will be emitted in fewer places. On the contrary, if you increase the distances, Smoke will start getting created in the air around the contact points between the horse and the ground.

We also create very dense Smoke - usually we don't need smoke above 1.0, but in this case we emit 15 units of smoke, which would make the smoke render very dense with the default render settings. Below we will enable Smoke Dissipation so the smoke will be thick at first, but then will quickly fade out.


 

 


 

Run the simulation for a few frames and render out one frame with the running horse.

 

Notice how the Voxel Tuner generates smoke around the horse's hoof when it touches the ground.

 

Simulation


The Simulator → Grid parameters are tweaked as follows:

 

The Scene Scale is set to 5.0.

The Cell Size is set to 2.0cm.

The Size of the Simulator is set to [ X:150cm, Y:140cm, Z:70cm ] as a starting point.

The Adaptive Grid is set to Smoke. The Adaptive Grid allows the container to resize on-demand as the simulation progresses, saving you a lot of time. Instead of calculating a giant grid from the start, the specified channel is tracked (Smoke in this case) and the grid is automatically resized around it.

The Threshold is set to 0.002. The grid will expand when the content of a cell near one of the container walls crosses this value. In this case any Smoke value above 0.002 will cause the grid to expand.

The Extra Margin is set to 70. This is important, because if left at 0, the Adaptive Grid will not expand fast enough and the horse will be running without emitting dust.

The Expand and Don't Shrink is enabled

The Maximum Expansion is enabled. The limitations are set to [ -X/+X: 80/155, -Y/+Y: 950/30, -Z/+Z: 0/50 ].

 


 

The three images here compare the differences between Scene Scale values [set from top to bottom to 1, 5 and 10].

 

The higher the value of the Scene Scale, the slower the movement of the fluid would be. This will keep the smoke close to the ground.

 

The goal here is to make the smoke look like sand, so there is no need to be too diffused or raising high from the ground. At this tutorial the Scene Scale is set to 5, but feel free to experiment with other values as well.

 


 

In the Dynamics rollout menu, switch the Smoke Dissipation to 0.2 and the Smoke Buoyancy to 0.6.

The Randomize Amount is given a value of 1.0.

The Conservation Method is set to PCG Symmetric, with a Quality of 100. The PCG Symmetric method, in general, produces the most interesting smoke simulations, preserving both detail and symmetry. The high Conservation Quality will allow the dust to produce swirling motion. For in-depth information, please check the Conservation documentation.

The Material Transfer (Advection) Method is set to Multi-Pass.

The Steps per frame are set to 2.

 


 

Compare the difference in the Smoke Buoyancy values displayed in these three images.

The values are set as follows from top to bottom to [ 0, 0.6 and 1 ].


The Smoke Buoyancy could be even set to a negative value so the dust would subside with time.

 


 

The Smoke Dissipation parameter controls how fast the smoke will disappear. The maximum value of 1 will make the smoke disappear immediately after it was emitted.

The three images here compare the differences between Smoke Dissipation values [set from top to bottom to 0, 0.2 and 0.7].

 

You might notice that with values of 0.2 and 0.7 there is a lot less detail in the smoke simulation because as it becomes more transparent, sharp edges and sharp shadows are diminished.

 


 

The Randomize parameter is responsible for the random fluctuations of the fluid's velocity for each grid voxel.

Top image: value of 0 (default value).

Bottom image: value of 1.

 

The value of 1.0 is chosen for this parameter in order to break the natural fluid mushroom shapes and puffs and make the result look more chaotic.

 


 

Open the Output rollout menu, which holds the controls for the simulation result.

The Storage Quality is set to 20 to prevent artifacts in the simulation due to the cache compression.

Since the Temperature is not used in the scene, the Temperature Output Grid Channel is disabled.

The Smoke Output Channel is enabled.

 

Enable the Velocity Channel, if you'd like to render the simulation with Motion Blur or start a Resimulation.

 


 

Open the Rendering rollout menu to prepare the simulation for rendering.

 

The Sampler type parameter determines the blending method between adjacent grid cells. The sampler is set to Spherical.

 


 

In those two images are compared two different Sampler types - Spherical (top) and Linear (bottom).

 

With Linear Sampler Type the produced dust looks grainy, so for this tutorial the Spherical sampling is used instead. That effectively reduces this issue.

 


 

Open the Volumetric Render Settings found by pressing the Volumetric Options button in the Rendering rollout menu.

 

The Volumetric Render Settings are tweaked as follows:

 

The Fire's Based on is set to Disabled.

The Smoke Color is Based on Constant color. We aim at a sand-looking smoke, so we use RGB [ 225, 191, 163 ] for Constant color, but you can tweak it further.

The External Scatter Mult. is set to 0.3.

The Simple Smoke Opacity is set to 0.7.

The Minimum Visible Opacity is set to 0.0.

The Scale Opacity by Scene Units is disabled.

 

Materials


The main focus in this tutorial is on the simulation, so the materials used for the Infinite Plane (ground) and the Horse mesh are standard V-Ray Materials.

 

The Diffuse color of the "vray_plane_material" is RGB [ 197, 135, 93 ].

All other parameters are left with their default values.

 


 

The Diffuse color of the "horse_material" is RGB [ 128, 128, 128 ].

All other parameters are left with their default values.

 

Lighting and Camera


The source of illumination in the scene is a single V-Ray Sun.

To add one, go to Create → Lights → VRaySun.

Set the Intensity multiplier to 0.02.

 


 

For this setup a Standard Physical Camera is used.

 

The Film / Sensor Preset is set to 35mm (Full Frame).

The Film / Sensor Width is set to 36.0 mm.

The Focal Length is set to 40.0.

The Aperture is set to 5.0.

The Film Speed (ISO) is set to 100.

The Shutter Duration is set to 1000.0.

 

The exact position of the Camera is [ -1730cm, -3785cm, 907cm ]

and of the Camera Target is [ 179.267cm, -2317.455cm, 36.06cm ].

 

Render Settings


In the previous steps, when setting the dust/smoke simulation we used the shelled plane.

As we don't need this plane to be rendered in the final image - select the plane, right-click it and go to its Object Properties menu. Disable the Renderable and enable Display as Box options.

 


 

In the final render a Probabilistic Shading  is used. The option is located in Environment → Atmosphere → PhoenixFD Atmosphere Settings. When Use Probabilistic Shading is enabled, the volumetrics will select a only few samples (based on the smoke density) along each camera ray, and evaluate the volume lighting at those points. In some situations this will make the render time shorter.

The Use Probabilistic Shading is enabled.

All parameters are left with their default values.

 


 

In the Render Setup Tab:

 

The Image Sampler Type is set to Bucket.

The Min Subdivs are set to 1.

The Max Subdivs are set to 6.

The Bucket width is set to 24.0.

The Noise threshold is set to 0.005.

 


 

A V-Ray Denoiser Render Element is added to the final image. The Denoiser takes an existing render and applies a denoising operation to it after the image is completely rendered in order to remove the noise in the image.

For this tutorial the Custom preset is used.

The strength is set to 0.5.

The radius is set to 10.0.

 

Final Results


 

 

Table of Contents