Versions Compared

Key

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

...

Section
Column
width45%

In this tutorial, we are going to show you how to create a nebula with Phoenix. Since a nebula is a giant cloud of dust and gas in space, we will simulate it as smoke and then we will add lights to give it the appearance of a nebula. After simulating with a single Simulator, we will duplicate it into six instances. For better rendering performance we will render the scene using V-Ray GPU.

The simulation requires Phoenix 4.0030 Official Release and V-Ray Next 5 Official Release for 3ds Max 20152017 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 send an email to support@chaosgroup.com.reach us using the Support Form.

 

The Download button below provides you with an archive containing the start and end scenes.

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

Column
width55%
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/WYdGd4hKX50?version=3&loop=1&playlist=WYdGd4hKX50SbsNSpQql1w" 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 so that 1 Unit equals 1 Meter.

Column
width60%

...

Section
Column
width40%
UI Text Box
typeinfo

In this tutorial, we will create a single simulation for the initial setup and then duplicate it six times as an instance for the final setup.

Initial The initial scene setup consists of the following elements:

  1. Torus Knot geometry used for the smoke source.
  2. Phoenix Fire/Smoke Simulator (PhoenixFDFire001).
  3. Phoenix Fire/Smoke Source emitting Smoke from the Torus Knot geometry.
  4. Omni 001 light for lighting.
  5. V-Ray Camera 001 for look-development rendering.
  6. PHXTurbulence for adding variation to the Smoke's motion.
Column
width60%

...

Section
Column
width40%

The final scene setup consists of the following elements:

  1. Five instances of Phoenix Fire/Smoke Simulator (PhoenixFDFire002 ~ 006).
  2. Two more Omni lights (Omni 002 and Omni 003) for lighting.
  3. Circle shape.
  4. V-Ray Camera 002 for final rendering, the camera is path constrained to the Circle shape.
  5. PCloud particle system used as stars.
UI Text Box
typenote

The Omni002 and Omni003 lights are turned off, and the PCloud is hidden in the "nebula_max2015max2017_start.max" scene.

Column
width60%

...

UI Text Box
typetip

In this tutorial we have many steps to follow. To keep it concise, let's focus only on the Phoenix related steps, feel free to use the camera and light settings in the provided sample scene.

For your reference, below you can find the light, camera and environment particle settings.

 

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


Lights Settings


Section
Column
width40%

Details for the three Omni lights.

Column
width60%

 

Position

Multiplier

RGB Color

Decay Type

Start

Omni001

2.5, 0.0, 12.0

2.0

146, 168, 239

Inverse Square

1.0

Omni002

-30.0, 1.0, 33.0

3.0

23, 81, 230

Inverse Square

0.3

Omni003

-32.5, -7.0, 8.5

0.4

47, 89, 224

Inverse Square

1.0

 


 

Section
Column
width40%

For every Omni light, we enable the Atmosphere Shadows option in the Shadow Parameters rollout.

UI Text Box
typewarning

Make sure Atmosphere Shadows is enabled when using native 3ds Max lights in the scene. Otherwise, the volumetric effects won't cast shadows.

Column
width60%

 

Environment Particle Settings


Section
Column
width40%

A PCloud particle system is used for the stars. To mimic stars, a VRayLight Material is applied to it. The color is set to RGB (255, 180, 107) and the Multiplier to 0.5.

Column
width60%

 

Camera Settings


Section
Column
width40%

We have two cameras in the scene. VRayCam001 is static and VRayCam002 is moving along the Circle shape. Both cameras are set to:

Film speed is set to 800.0.

F-Number is set to 1.4.

Shutter speed is set to 50.0.

 

The exact position of the VRayCam001 is XYZ: [ 3.0, 105.0, 8.0 ].

The exact position of the VRayCam001.Target is XYZ: [ 2.0, -2.5, 12.8 ].


The exact position of the VRayCam002 is XYZ: [ 2.302, 106.991, 12.0 ].

The exact position of the VRayCam002.Target is XYZ: [ 0.5, -2.0, 23.0 ].

Column
width60%

 


 

Section
Column
width40%

VRayCam 002 is path constrained to the Circle shape.

From frame 0 to frame 60, the %AlongPath is keyframed and animated from 21.0 to 25.0.

 

The exact position of the Circle shape is XYZ: [ 0, -3, 12.0 ].

Its orientation is set to XYZ: [ 0, 0, 13.2 ].

Column
width60%

...

Section
Column
width40%

Go to Modify Panel → Create → Geometry → PhoenixFD → FireSmokeSim.

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

Open the Grid rollout and set the following values:

Fancy Bullets
typecircle
  • Scene Scale: 1.0.
  • Cell Size: 0.086 m.
  • Size XYZ: [ 363, 371, 261 ] - we keep the Simulator size small enough to cover only the emission geometry.
  • Adaptive Grid: Smoke - the Adaptive Grid algorithm allows the bounding box of the simulation to dynamically expand on-demand. With a Threshold of 0.02, the Simulator expands when the Cells near the corners of the simulation bounding box reach a Smoke value of 0.02 or greater;
  • Extra Margin: 5.
    The Extra Margin option is useful when the Adaptive Grid algorithm is unable to expand fast enough to accommodate quick movement in the simulation (e.g. an explosion). The Extra Margin attempts to remedy this by expanding the grid preemptively with the specified number of voxels on each side.
  • Enable Expand and Don't Shrink - this way the Adaptive grid will not contract back when there is very thin smoke at the borders of the grid.
  • Enable Max Expansion: X: (500, 500), Y: (500, 500), Z: (500, 500) - to save memory and simulation time by limiting the Maximum Size of the simulation grid.
UI Text Box
typenote

Later in the tutorial we are going to duplicate the Simulator a few times and scatter the copies in the scene.

As we don't want to see any seams where the Simulators overlap, using the Adaptive Grid with the Max Expansion option, prevents us from creating a cropped volume at the Simulator's boundary.

Column
width60%

Image RemovedImage Added

 

...

 

Section
Column
width40%

Select the Phoenix Simulator → Output rollout and enable the output of Smoke, Wavelet, and Velocity Grid Channel

UI Text Box
typeinfo

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
width60%

Image RemovedImage Added

 

Adding

...

PCloud to the Exclude List

...

Section

Create a Phoenix Fire/Smoke Source in the scene: Modify Panel → Create → Helpers → PhoenixFD → PHXSource.

Pressthe Add button to choose which geometry to emit and select the Torus Knot entry in the Scene Explorer.
Column
width40%
Column
width60%

Image Removed

 

...

Select the Phoenix Simulator → Go to Scene Interaction rollout. Add the PCloud to the exclusion list. 

UI Text Box
typenote

Though every hidden object is excluded by default, in later steps, we will unhide the PCloud. However, there is a chance to forget to hide it again and it may affect our fluid simulation. Therefore, we added the PCloud to the exclude list as a precautionary step.

Column
width60%

Image Added

 

Adding Fire/Smoke Sources

...

Section
Column
width40%

Create a Phoenix Fire/Smoke Source in the scene: Modify Panel → Create → Helpers → PhoenixFD → PHXSource.

Pressthe Add button to choose which geometry to emit and select the Torus Knot entry in the Scene Explorer.

Column
width60%

Image Added

 

...

 

Section
Column
width40%

For PHXSource:

Set the Emit Mode to Surface Force, Outgoing Velocity to 1.0 and Smoke to 4.0. Disable the Temperature option.

UI Text Box
typeinfo

As we

For PHXSource:

Set the Emit Mode to Volume Inject, Inject Power to 25.0 and Smoke to 4.0. Disable the Temperature option.

UI Text Box
typeinfo

As we want our nebula to appear more opaque in its core, we give the smoke a higher amount.

Column
width60%

Image RemovedImage Added

 

...

 

Section
Column
width40%

Set the Simulator → Simulation rollout → Stop Frame to 3538.

UI Text Box
typetip

The Timeline checkbox needs to be disabled for the numerical field to become untemplated. By default, the Timeline checkbox specifies the Start Frame as the first frame on the Timeline.

Column
width60%

Image Removed

UI Text Box
typetip

The shape of the simulated smoke changes over time. You can use more or less frames for the simulation, to get the desired formation of the smoke (nebula). In this case, we choose to simulate to frame 38.

Column
width60%

Image Added

 

...

 

Section
Column
width40%

Here is a Preview Animation of the simulation up to this step. It looks a bit dull now. It isn't anything like a nebula at all. 

UI Text Box
typetip

To enable the GPU Preview as seen in the video, select the Phoenix Simulator → Preview rollout → GPU Preview → Enable in Viewport.

UI Text Box
typeinfo

At this step, the nebula appears blue because the color of the Omni 001 is set to a light blue color.

Column
width60%
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/DcCAdVA-uAM?version=3&loop=1&playlist=DcCAdVA-uAMWocHKdysaWM" title="YouTube video player" frameborder="0" allowfullscreen></iframe> 

 

Adding Phoenix Turbulence

...

Section
Column
width40%

Create Helpers Phoenix FD PHXTurbulence.

Position to XYZ: [ -2.5, 9.0, 14.0 ].

Set the Strength to 50350.0 and the Size to 30.0 m.

Reduce the Fractal Depth to 1.

Set the Decay type to Inv square.

Then go to the Fire/Smoke Simulator and run the simulation again.

UI Text Box
typewarning

The position of the Phoenix Turbulence does affect the result of the simulation. If you didn't set the exact position as mentioned above, you probably won't get the exact same results.

Column
width60%

Image RemovedImage Added

 

...

 

Section
Column
width40%

Here is a Viewport Preview showing the result of the simulation so far.

Column
width60%
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/fss_R4tU_sU?version=3&loop=1&playlist=fss_R4tU_sUdoOU_w7dJOk" title="YouTube video player" frameborder="0" allowfullscreen></iframe> 

 

Input

...

Section
Column
width40%

Once the simulation is complete, go to the Phoenix Simulator → Input rollout.

For this tutorial we need only a static nebula, switch the Time Bend Controls Mode to Cache Index. Set the Direct Cache Index to 3338.0.

UI Text Box
typetip

You can set the Direct Cache Index to any other frame you like. Different frames create different characteristics of a nebula. Later frames will have more dispersed smoky look due to the Turbulence force.

Column
width60%

Image RemovedImage Added

 

...

 

Section
Column
width45%
UI Text Box
typetip

Due to the sheer amount of the cache data, if your viewport become less responsive, you can select the Phoenix SimulatorGo to Preview rollout → Read Cache for Preview, and temporarily change it to Don't Preview the Caches. Just be sure to switch back to Always when you need to see the cache preview.

In the final scene "nebula_max2017_final.max", the simulators are set to Don't Preview Caches for the same reason.

Column
width55%

Image Added

 

Volumetric Shading Settings

...

Section
Column
width45%

Go to the Fire/Smoke SimulatorRendering rollout, click on Volumetric Options.

For the Fire rollout, set the Based on option to Disabled.

For the Smoke Color rollout, set the Based

Go to the Fire/Smoke SimulatorRendering rollout, click on Volumetric Options.

For the Fire rollout, set the Based on option to Disabled.

For the Smoke Color rollout, set the Based on option to Smoke. Adjust the color gradient as shown in the image.

For the Smoke Opacity rollout, set the Based on option to Smoke. Adjust the color gradient as shown in the image.

For the Smoke Opacity rollout, set the Based on option to Smoke. Adjust the curve as shown in the image.

UI Text Box
typeinfo

The Color gradient is set to blue-pink-red-purple-black, representing the smoke color at different smoke densities. From sparse to densest. Feel free to customize the color gradient according to your preference.

Column
width55%

Image RemovedImage Added

 

...


Section
Column
width45%

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

Column
width55%

...

Section
Column
width45%

Here is a test rendering up to this step. 

UI Text Box
typeinfo

For test rendering, we set the Time Limit to 10.0 for the V-Ray GPU renderer. You can adjust the time limit depending on your hardware.

Column
width55%

Image Removed

 

section
UI Text Box
typetip

The lights in the provided scene file are carefully positioned in the crevices of the smoke formation. If you didn't follow the exact steps of this tutorial (i.e: smoke is emitted from a different geometry), your render may be completely dark. You can nudge the lights to a sparse space so they won't be occluded by the smoke.

Column
width55%

Image Added

 

...


Section
Column
width45%
UI Text Box
typenote

If we move the Omini Omni 001 light a little behind or move it towards the camera, notice how the nebula dramatically changes, by just changing the light's position.
Comparison images from left to right, with different light positions: Behind (2.5, -12, 12), Center (2.5, 0, 12), Front (2.5, 12, 12).

Column
width55%

Image RemovedImage Added

 

Buffered Conservation

...

Section
Column
width40%

Select the Phoenix Simulator. Disable the Gravity since a nebula supposedly forms in outer space. Change the Conservation Method to Buffered, with a Quality of 40. Set the Steps Per Frame to 2. The Buffered method has the weakest conservation strength and shortest range, but produces nice details. For in-depth information, check the Conservation documentation.

UI Text Box
typeinfo

As we simulated without the Temperature channel, in this special specific case, there is no difference in the simulation results with or without gravity.

Column
width60%

 

...


Section
Column
width45%

Here is a test render up to this step. We can see a better pattern formation, compared to the results with default Dynamics settings.

Image Removed
Column
width55%

Image Added

 

Resimulation

...

Section
Column
width40%

Open the Phoenix Simulator → Resimulation rollout and enable Grid Resimulation.

Note that when you enable Resimulation, Phoenix will try to read the cache files for preview and rendering from the Resimulation Output Path, instead of the 'regular' Output. Don't worry if the Viewport goes blank and the preview disappears - you can always go back to the original cache files by disabling the Resimulation.

Set the Amp.Resolution to 0.2. This parameter is used to increase the resolution of the grid during the Resimulation process.

Set Amp. Method to Wavelet Nice and Wavelet Strength to 1.0.

Press Simulator → Simulation rollout → Start to begin the Resimulation.

UI Text Box
typeinfo

We set the Wavelet Strength to 1.0 instead of 3 (default value), because we want to add details to our base simulation, but without overdoing it.

UI Text Box
typenote

You can set the Amp.Resolution to an even higher value to get a more detailed result.

Column
width60%

Image RemovedImage Added

 

...

 

Section
Column
width40%

Here is a test render up to this step. As you can see, after the Resimulation, we got more details in the smoky cloud, while maintaining the overall pattern formation from the base simulation.

Column
width60%

Image RemovedImage Added

 

Simulator Duplication

...

Section
Column
width40%

With the Phoenix Simulator selected, hold down the Shift key and using the Move Tool drag the Simulator to the side. Then in the Clone Options set the object type to Instance. Number of Copies to 5. Press OK.

Now we have six Phoenix Simulators in the scene (PhoenixFDFire001~006).

UI Text Box
typetip

Alternatively you can use the Edit / Clone dropdown menu to duplicate the Simulator. The benefit of the Shift-Clone method we have mentioned above is that the Cloned Simulators won't be created in the same position. This way it will be easier for us to select them in the viewport.

Column
width60%
Image Added

 

...

 

Section
Column
width40%

Now move and rotate the Simulator instances in the scene, arrange them as the screenshot on the right.

Switch the render camera to V-Ray Camera 002. It is the camera that moves along the circle shape.

UI Text Box
typeinfo

As all the six Simulators are exactly the same, we will have to rotate them in order to avoid any obvious repetition patterns.

Column
width60%
Image Added

 

...

 

Section
Column
width40%
UI Text Box
typeinfo

The table on the right provides the exact location and rotation of each Simulator instance. You can customize the transformation of each Simulator according to your preference.

Column
width10%

 

Column
width50%

 

Position

Rotation

PhoenixFDFire001

-2, 0, -0.17

Column
width60%
Image Removed

 

 

0, 0, 0

PhoenixFDFire002

38.5, -11.5, 0

0, 0, 125

PhoenixFDFire003

-37, -3, 0

0, 0, -136

PhoenixFDFire004

-3, 0, 50.5

121.5, 0, 0

PhoenixFDFire005

-25, -3, 35.5

87.5, 0, -103.5

PhoenixFDFire006

41.5, 0, 54

156, 0, -58

Section
Column
width40%

Now move and rotate the Simulator instances in the scene, arrange them as the screenshot on the right.

Switch the render camera to V-Ray Camera 002. It is the camera that moves along the circle shape.

UI Text Box
typeinfo

As all the six Simulators are exactly the same, we will have to rotate them in order to avoid any obvious repetition patterns.

Column
width60%
Image Removed

 

...

 

Section
The table on the right provides the exact location and rotation of each Simulator instance. You can customize the transformation of each Simulator according to your preference

Here is a test render up to this step. With six Simulators in the scene, we can see the nebula now expanding to a larger region.

Column
width40%
UI Text Box
typeinfo
Column
10%
width60%
Image Added

 

...

 

Section
Column
width50%

 

Position

Rotation

PhoenixFDFire001

-2, 0, -0.17

0, 0, 0

PhoenixFDFire002

38.5, -11.5, 0

0, 0, 125

PhoenixFDFire003

-37, -3, 0

0, 0, -136

PhoenixFDFire004

-3, 0, 50.5

121.5, 0, 0

PhoenixFDFire005

-25, -3, 35.5

87.5, 0, -103.5

PhoenixFDFire006

41.5, 0, 54

156, 0, -58

 

 

40%

To make the image more interesting, turn on the other two Omni lights (Omni002 and Omni003) in the scene.

Column
width60%
Image Added

 

...

 

Section
Column
width40%

Here is a test render up to this step. Now both the lighting and volumetric simulation are ready for final rendering.


To render out the stars, unhide the PCloud in the scene, then proceed to the next step.

Column
width60%

Image Added

 

V-Ray Frame Buffer

...

Section
Column
width40%

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

UI Text Box
typetip

Using V-Ray 5 as a render engine gives us the advantage of Filmic tonemap directly in the new VFB. However, if you are using an older version of V-Ray or 3ds Max 2017 or lower, you can get a similar effect by using a proper LUT

Section
Column
width40%
Here is a test render up to this step. With six Simulators in the scene, we can see the nebula now expanding to a larger region

.

Column
width60%
Image Removed

Image Added

 

 

...


Section
Column
width40%45%

To make the image more interesting, turn on the other two Omni lights (Omni002 and Omni003) in the scene.

Column
width60%
Image Removed

 

 

...

width40%

Here is a test render up to this step. Now both the lighting and volumetric simulation are ready for final rendering.

...

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

Filmic tonemap:

  • Type - Hable;

  • Shoulder strength: 0.670;

  • Linear strength: 0.070;

  • Linear angle: 0.490;

  • Toe strength: 0.270;

  • White point: 7.880.

Color Balance:

  • Cyan-Red: -0.090;
  • Magenta-Green: -0.026;
  • Yellow-Blue: -0.082.

Curve: (as shown in the screenshot)

White Balance:

  • Temperature: 5429.100

Lens Effects:

  • Size: 11.110;

  • Intensity: 0.500;

  • Bloom: 0.500;

  • Threshold: 0.570.

UI Text Box
typeinfo

The Filmic tonemap allows you to simulate the film response to light within the VFB.

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

Column
width55%

Image Added

 

...

 

Section
Column
width45%

Alternatively you can simply load up a Rendering Preset from the nebula_VFB.vccglb file that is provided in the sample scene.

Column
width55%

Image Added

 

Smoke Color Absorption

...

Section
Column
width40%

To further enhance the realism of the nebula, select the Phoenix Simulator, go to Rendering rollout → Volumetric Options. In the Smoke Opacity rollout, set the Absorption Constant Color to RGB (91, 96, 55)

Column
width60%

Image Removed

 

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: 0;
  • Highlight Burn: 1.00;
  • Contrast: 0.00.

White Balance:

  • Temperature: 5429.

Color Balance:

  • Cyan-Red: -0.09;
  • Magenta-Green: -0.04;
  • Yellow-Blue: -0.08.

Levels: 0 ~ 1.19.

Curve: Adjust it to a S-shape curve as shown in the screenshot.

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

  • Size: 11.11;
  • Bloom: 0.50;
  • Intensity: 0.51;
  • Threshold: 0.57.

Blades: enabled

  • Sides: 4;
  • Rotation: 45.00;
  • Streak Blur: 0.20

    .

    UI Text Box
    typetipinfo

    The Curve plays the most important role to bring up the image details in in the renderabsorption color set here is basically complimentary to the purple color of the nebula. However, you can choose other color.

    Column
    width60%
    Image AddedImage Removed

     

    ...

     

    Section
    Column
    width45%40%

    Here is the final image. You can see additional details in the nebula color thanks to the smoke absorption color settingsAlternatively you can simply load up a Rendering Preset from the nebula_VFB.vccglb file that is provided in the sample scene.

    Column
    width55%60%

    Image RemovedImage Added

     

    ...

     

    Section
    Column
    width40%

    And here is the final rendered result.

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