Table of Contents

This page provides a tutorial on creating a Procedural Ground Dust simulation in Maya.

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 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 FD 4 Official Release and V-Ray Next Official Release for Maya 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.

Go to Windows → Settings and Preferences → Preferences → Settings and set the Working Units to centimeters.

Set the Time to 29.97 fps. We do this to ensure the setup is identical to the Procedural Ground Dust tutorial for 3ds Max. You may skip this step if you find it unnecessary. Keep in mind the final result of your simulation may turn out slightly different.

 

 

Scene Layout


The final scene consists of the following elements:

  1. An Alembic file containing the baked horse animation.
  2. A Poly Plane extruded to give it some thickness. The plane is used as emission geometry for the Phoenix Source.
  3. V-Ray Infinite Plane is used for easily setting the ground.
  4. A Phoenix Simulator with some tweaks to the Dynamics and Rendering parameters.
  5. Voxel Tuner used for a realistic sand smoke coming up as the horse step on the ground. 
  6. V-Ray Physical Camera with minor tweaks for final rendering.
  7. A V-Ray Dome Light.

 

 

Scene Setup


Let's start by importing the single_horse_01.abc file.

Go to Cache -> Alembic Cache -> Import Alembic... and select the file. Hit F to frame it in the Viewport.

The file will come with a parent group called All_trans. You may safely unparent the deer_trans node (using Shift + P), rename it to single_horse and delete the empty groups.

 

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 polygon plane by adjusting the Motion Velocity Effect, located in the Phoenix FD Node Properties. The 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.

 


 

Add a Polygon Plane to the scene and set it's Width/Height to 2800/6200. The plane is used to emit smoke into the simulation.

Possition the plane to [ X:0cm, Y:-20cm, Z:4320cm ].

Rename it to ground_emit_geo.

 


 

With the plane selected, go to Edit Mesh → Extrude and give the Thickness a value of 1.

Using open geometry or geometry with no thickness (such as the plane in this example) can give you unpredictable simulation results. Making sure that your geometry is clean is crucial for a smooth workflow. Phoenix (and many simulation packages in general) use a volumetric representation of the emission geometry for the simulation. The process of creating this volumetric representation is called voxelization. The algorithms responsible for voxelizing the geometry can fail when using open (with holes) or planar (no thickness) geometry.

The Extrusion is applied here to turn the plane into what is essentially a very thin box. This is enough to sort out any possible problems with the voxelization at simulation time.

 


 

Create a V-Ray Infinite Plane used during rendering.

 

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

 


 

Create a new Phoenix Simulator and draw it such that it envelops the horse geometry.

 

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

 

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.0.

The Size of the Simulator is set to [ X:150cm, Y:70cm, Z:140cm ] 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. Since the Smoke is emitting Smoke 1.0, this means that the grid will be quite sensitive to smoke coming near the grid walls.

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: 155/80, +Y/-Y: 50/0, +Z/-Z: 950/30 ].

 


 

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 diffuse 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 avoid appearing artifacts in the simulation.

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 is used the Spherical sampling, that effectively reduces this issue.

 


 

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 "mat_render_ground" is RGB [ 197, 135, 93 ].

All other parameters are left with their default values.

 


 

The Diffuse color of the "mat_horse" 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 Dome Light.

To add one, go to Create → Lights → V-Ray Dome Light.

Set the Multiplier to 1.0.

 

You can also use V-Ray Sky and Sun system. Remember to set your camera exposure to be suitable for outdoor lighting.

 


 

For this setup a VRayPhysicalCamera is used.

To add Physical Camera parameters, select the Maya camera used for rendering.

Under its Shape node in the Attribute editor go to Attributes → V-Ray → Physical Camera.

 

The Film Gate is set to 36.0.

The F-Number is set to 2.0.

The Shutter Speed is set to 200.

The Film Speed (ISO) is set to 100.


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

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

 

Render Settings


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 Threshold is set to 0.005.

The Render Region Division is set to 24.0.

 


 

In the final render a Volumetrics Overrides is used. The option is located in Render Setup -> Overrides -> Volumetrics. When Use Probabilistic Volumetrics 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 Probabilistic volumetrics is enabled.

All parameters are left with their default values.

 


 

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