Table of Contents

 This page provides a tutorial on creating a Cloud simulation with Chaos Phoenix 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.

The instructions on this page guide you through the process of creating a volumetric static cloud effect using Phoenix and Maya. In this tutorial, the clouds will be simulated, so they would be more realistic than clouds created from a static geometry with volumetric displacement. Simulated clouds also can interact with geometries passing through them. Additionally, Phoenix offers a Cloud Timelapse Quick Setup toolbar preset which could be used to generate an animated sky system.

In this tutorial, we use a Phoenix Fire Source to emit smoke from a basic source geometry. The emission is modulated through a procedural texture used to control the discharge rate of the Fire Source. The shape of the cloud is controlled through the Vorticity and Noise parameters of the Phoenix Simulator. Finally, we go over the Rendering options for Smoke and explain the difference between the various Scattering options.

This tutorial is created using Phoenix 5.10.00 Official Release, and V-Ray 6, Hotfix 1 Official Release for Maya 2019. 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.

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

According to Wikipedia, the size of cumulus clouds is 1 to 5 km, so in this example, we set the Scene Scale to Metric Meters.

Go to Windows → Settings/Preferences → Preferences and then click on Settings. Underneath the Working Units, change the Linear dropdown to meter and click Save.

The Phoenix solver is not affected by how you choose to view the Maya Working Units - it is just a matter of convenience.

Set the Time to 29.97 fps. We do this to ensure the setup is identical to the Static Clouds 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.

 

Color Management Settings


We also want to make sure our Color Management preferences are set to work properly. If you're using a version of Maya 2019 or 2020, you can leave the Color Management settings at the default values, which should be in sRGB rendering space.

If you're using Maya 2022 or later, head to the next step below.

You can see the Color Management default settings on the right for Maya 2019, which will be the basis for the settings used in this tutorial.

 


 

If you're using Maya 2022, the Color Management settings have been changed to ACEScg by default.

We switch them to sRGB settings, so that the render results in this tutorial remain consistent with earlier versions of Maya as well.

In the Color Management section, change the Rendering Space to scene-linear Rec.709-sRGB.

Set the Display to sRGB.

Set the View to Raw.

Scene Layout


The final scene consists of the following elements:

  1. An extruded Poly Plane. The Plane is textured with a Ramp texture and used as an emission geometry in the Phoenix Source.
  2. Phoenix Simulator with some tweaks to the Dynamics and Rendering parameters and a Phoenix Fire/Smoke Source with animated Discharge.
  3. V-Ray Physical Camera with minor tweaks for final rendering.
  4. A V-Ray Sun Light.

 

Phoenix Source Setup


Add a Polygon Plane to the scene and set its Length/Width parameters to 1480/1190 meters.

With the plane selected, go to Edit Mesh → Extrude and give the Local Translate Z a value of 2.

The Extrude is applied to give the geometry thickness. This allows Phoenix to properly calculate the volume of the object that you're using for the emission.

We later limit the emission to only happen where the faces point in the +Y axis (in other words, the top of the extruded plane).

 


 

As we don't need this plane to be rendered in the final image - select the plane, go to Render Stats rollout and disable - Cast Shadows, Receive Shadows, Primary Visibility, Visible in Reflection and Refraction.

 


 

To save time, we start with the Large Scale Smoke preset on the Phoenix Toolbar.

Select the extruded poly plane and Left-Mouse-Button click the Large Scale Smoke preset. This will automatically generate a Phoenix Source and Simulator, and will set up some Smoke rendering parameters for you. We will review those later when we're finished with the simulation.

 


 

Select the Phoenix Source and disable Temperature.

Animate the Discharge such that it goes from [2000 at frame 0] to [0 at frame 20].

 


 

With the Phoenix Source still selected, click the map button to the right of the Discharge Mask parameter.

Select a Ramp texture as a mask. Set its Type to Circular Ramp - this produces a circular texture ideal for the base of the cloud. Set the Interpolation to Exponential Down.

The Ramp is tweaked such that:

  • the first point has Pos=0 and RGB (255, 255, 255);
  • the second point has Pos=0.65 and RGB (255, 255, 255);
  • the third point has Pos=1 and RGB (255, 255, 255).

Noise is set to 0.09.

Noise Freq is set to 0.5.

 


 

Select the first point in the Ramp texture. Add a Noise texture in the Map slot of the Selected Color.

Set the Noise Type to Perlin Noise.

Threshold to 0.086.

Amplitude to 2.167.

Ratio to 0.266.

Frequency Ratio to 4.713.

Depth Max to 4.

Time to 1.0.

Frequency to 2.600.

 

Color Balance → enable Alpha is Luminance.

Effects → Invert.

Changes to the Noise parameters will influence the cloud a lot so you may want to experiment with different settings once you've completed this tutorial.

 


 

With the Phoenix Source selected, go to the Discharge Modifiers tab. Discharge modifiers are a convenient way to control the strength of the emitter based on the position or orientation of your source object.

As mentioned earlier, only the top face of the extruded poly plane should be emitting smoke. Therefore, we set the Source to Normal Y, and the Space to World.

The Diagram is tweaked such that the left point is at [-0.9, 0] and the right point is at [1, 1].

This means that only the faces which are nearly horizontal will be used for emission. For more information on Discharge Modifiers, please check the Phoenix Discharge Modifiers documentation.

 


 

Select the plane and go to the Extra Phoenix Attributes rollout, and disable Solid Object.

Solid objects affect the calculation of velocity in the container by blocking the motion of fluids. In this case, the result would be better with the Solid option disabled.

 


 

To see the Ramp texture in the viewport → open the Hypershade window and create a V-Ray material and add the Ramp texture in its Diffuse slot.

Select the top face of the extruded poly plane and assign the V-Ray material to it.

You might want to adjust the position of the applied material by using the UV Editor.

With the top face still selected, open UV → UV Editor.

Then, Create → Planar option to position the Ramp texture in the middle of the poly plane.

 


 

Additionally, we flip the UV by using the UV Toolkit → Transform → Tools → Flip.

 

Phoenix Simulator Setup


At the moment, the simulator box is far too large for our needs. In this setup, calculating the excess voxels is unnecessary and will only slow things down. Note that for some fire/smoke simulations it's good to keep a buffer of empty space around the simulated effect because the velocity simulation which drives the fire/smoke needs some additional space to unfold in a realistic way close to how nature works.

We also want the Simulator to expand up in the +Y direction to accommodate the shape of the cloud.

Select the Phoenix Simulator and open the Grid rollout.

Set the Scene Scale to 0.004m. Clouds are extremely large (a few kilometers in size) and moving very slowly. It would take prohibitively long to try to mimic the way the real world works. Instead, we reduce the time span to a very short period of time (25 frames) and adjust the Scene Scale accordingly.

Reduce the Voxel Size to 4m. The Voxel Size is the main "quality" control for the simulation - the lower this value is, the more detailed the result and the longer the simulation time.

Reduce the X/Y/Z size such that the Simulator tightly encompasses the shelled poly plane - as shown in the image.

Enable Limit Maximum Expansion and give the Grid some extra voxels in all directions except for negative Y - we don't need the Grid expanding down as that may ruin the shape of the cloud.

 


 

 


 

From the Dynamics rollout, set the Smoke Dissipation to 0.05. This will allow some of the smoke forming the cloud to slowly disappear, leaving behind interesting, swirly detail. The difference between a value of 0 and 0.05 is hard to notice so set this parameter as you see fit.

The Smoke Buoyancy should be set to 1. Buoyancy makes the fluid move upward, as if its pushed by a force from underneath. If you set this parameter to a negative value, the smoke will travel downward.

Set the Randomize Amount to 0.4. The Randomize options add random fluctuations in the fluid's velocity for each grid voxel. This should chip away at the cloud's volume, producing interesting perturbations.

The Fluidity (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 smoke to produce swirling motion. For in-depth information, please check the Conservation documentation.

The Transfer (Advection) Method is set to Multi-Pass. This less dissipative method produces more fine details and keeps the smoke sharper compared to other methods. It is recommended for large scale explosions, veil-like smoke, pyroclastic flows and all other situations where sharpness is important.

Increase the Steps Per Frame to 9. In this case it helps to get a better shape for our cloud. For fast-moving simulations, you need to raise the Steps Per Frame so that you do not have a grainy appearance. As each simulated step removes details and also slows the simulation down, you shouldn't set the Steps Per Frame higher than you need to and should increase it only if you see the smoke or fire become grainy when moving fast. On the flip side, the contents of the advected channel are more accurately transferred throughout the grid with higher Steps Per Frame and the simulation moves more realistically.

 


 

 


 

 


 

 


 

 


 

 

If you would like to be able to re-time the simulation once it is complete, open the Output rollout and enable the export of the Velocity Grid Channel.

The Velocity channel is required by the more sophisticated Precise Tracing re-timing algorithm under the Input rollout. It is also required when rendering a simulation with Motion Blur.

 


 

We should now be ready with the simulation options.

At this stage, we don't have to simulate the full length of the animation. We only need the first 25 Frames, so set the Simulation rollout → Stop Frame to 25.

Press Start and let the simulation run for 25 Frames.

Phoenix provides a very high-quality viewport GPU Preview. Open the Preview rollout of the Simulator and select Enable GPU Preview under the GPU Shade Preview tab.

Set the Ambient Light color to RGB (13, 11, 27) to get the cloud tinted in blue in the Viewport. Note that this setting has no effect on the rendering.

 


 

Once the simulation is complete, you may re-time it from the Phoenix Simulator → Input rollout.

Set the Grid Blend method to Precise Tracing and tweak the Play Speed as needed.

In case you would prefer to render a single static frame of the simulation over an entire sequence, set the Mode option to Cache Index, and the Direct Cache Index parameter to the desired cache file number.

For this tutorial, we do not tweak any of the Input rollout settings.

 

Lighting and Camera


As this is an outdoor scene, a V-Ray Sun/Sky Setup should suffice.

Add a V-Ray Sun and V-Ray Sky Nodes.

Select the Sun and set the Intensity multiplier to 0.25 and the Horizon Offset to 40.

The exact position of the V-Ray Sun is [-2000, 1000, 2700] and of the Sun Target is [0, 215, 0].

 


 

A V-Ray Physical Camera is used for rendering.

The Film Speed (ISO) is set to 100.

F-Number is set to 8 and the Shutter Speed to 200.

 

Here are the Translation values for the camera, in case you'd like your scene to be 100% identical to the setup in the screenshots:

V-Ray Physical Camera position: [-315, 215, -2296];

V-Ray Physical Camera Target position: [0, 275, 0].

 

Volumetric Rendering Settings


As you may have noticed, the cloud looks rather sparse. The Rendering options set up by the Large Scale Smoke preset we used as a starting point are tuned in a way that looks dense when the simulation quickly grows several times larger than the initial grid. However, since our cloud simulation mainly remains inside the initial grid, we need to change the render settings so that the smoke appears denser.

First of all, change the Sampler Type to Spherical. The Sampler Type parameter controls how individual voxels in the grid are interpolated. For instance, the Box type displays the cells as cubes and there is no blending between neighboring voxels. The Spherical type uses special weight-based sampling for the smoothest looking fluid and allows you to zoom in close to the grid without worrying about grid lines and voxels appearing in the render.

 


 

Head over to the Rendering rollout of the Simulator and open the Smoke Opacity tab.

Set the Based on parameter to Simple Smoke. The cloud should now appear denser.

Increase the Simple Smoke Opacity to 0.5.

The difference between the Smoke and Simple Smoke options is that the former provides you with an Opacity curve that you can edit. The Opacity Diagram is used to remap the Smoke channel - the X-axis is the input values from the simulation, and the Y-axis is the opacity output. It allows you to assign different opacity to the different densities of the Smoke. For instance, if you wanted to hide all the smoke that has a density of less than 0.5, you would move the left point of the graph to position [0.5, 0]. Simple Smoke mode is a simplified version of the Smoke mode where the Opacity Diagram is hidden and all you need to do is to adjust the Simple Smoke Opacity value which makes the smoke render thicker or thinner.

Disable Scale Opacity by Scene Units. When enabled, the opacity per unit length will remain constant when changing the Grid Resolution. Therefore, the larger the unit scale is, the denser the smoke will appear in renders and vice versa.

 


 

 


 

Open the Smoke Color tab and make sure that the Based on parameter is set to Constant Color.

Set the Constant Color to RGB: (255, 255, 255).

Set the Scattering mode to Ray-traced (GI only). Ray-traced scattering can only be rendered with Global Illumination enabled so make sure to turn it on from the V-Ray Render settings (should be On by default). Ray-traced scattering tends to be slower than the Approximation methods which, as the name implies, try to speed up rendering by approximating with lower accuracy the appearance of light scattering in a volume. Ray-traced scattering, on the other hand, produces physically accurate scattering and the result tends to look better.

Keep the Volume Light Cache enabled and set the Light Cache Speedup to 0.5. The higher this option is set, the faster the rendering will be, but the lower the quality of the Volume Light Cache. You can increase this parameter and gain render speed as long as you don't start getting artifacts on the smoke.

To further enhance the realism of the clouds, let's adjust the Phase Function of the Simulator. Set the Phase Function to 0.3.

The Phase Function controls the direction in which the light scatters inside the volume. The default value of 0 means isotropic scattering where light is scattered in all directions. A positive value means forward scattering, while a negative value means backscattering.

For more information about the Phase Function option, visit the Render Smoke Opacity page.

Note that values very close to 1.0 or -1.0 produce very directional scattering that is invisible from most angles, so such values are not recommended. When rendering with a Phase Function different than 0 and Volume Light Cache is enabled, the rendered result is brighter. The Phase Function is ignored when the Scattering is set to Approximate or Approximate+Shadows.

 

Render Settings


In the VRay tab:

The Image sampler Type is set to Bucket.

The Max subdivs are set to 4.

The Render region division X is set to 16.

 

In the GI tab → Enable GI.

 

V-Ray Frame Buffer


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

 


 

The final image is rendered using the V-Ray Frame Buffer. In the current example, the color corrections and post effects are set to:

White Balance:

  • Temperature: 4555

Constant:

  • Multiplier: 1.150

Exposure:

  • Exposure: 1.200
  • Highlight Burn: 1.000
  • Contrast: 0.000

Denoiser:

  • Opacity: 1.000
  • Preset: Default

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

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

 


 

And here is the final rendered result.