Versions Compared

Key

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

...

Section
Column
width40%

Requires Phoenix FD 3.14.00 Official Release and V-Ray NEXT Official Release for Maya 2015 or newer. 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 instructions on this page guide you through the process of creating a Burning Aroma Stick simulation using Phoenix and Maya. At its core, this is a particle simulation driven by the Velocity channel of the Phoenix Simulator. You may know this process as Advection.

The Phoenix Source is capable of emitting not only Smoke, Fuel or Temperature but also particles. We emit Drag particles for this effect - drag particles are, as the name implies, dragged by the Velocity of the simulation. The Drag particles are then rendered with the Phoenix Particle Shader in Point mode, with very low Point Alpha - the combination of a large amount of particles and a high transparency produces the illusion of smoke.

Finally, the simulation is slowed down using the controls in the Input rollout of the Phoenix Simulator.

 

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

Column
width60%

Videoautoplayloop
0aromaStickInVase.mp4
1100%
2100%
3true
5true

 

Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/8EkumvePHiM?version=3&loop=1&playlist=8EkumvePHiM" 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 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 30fps. We do this to ensure result parity with 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.

Column
width60%

...

Section
Column
width40%

Start by opening the .ma file.

The provided file contains the Vase and the Aroma Stick geometries.

The material for the vase is completely refractive so the geometry may not be immediately visible in the Viewport in case Shaded Display (hotkey 5) is enabled.

Column
width60%

Image Modified

 

...

 

Section
Column
width40%

Add a Phoenix Simulator and place it at XYZ: [ 0.7, 20, 1.4 ] such that the tip of the stick is inside the simulator's bounds.

The Simulator → Grid parameters are tweaked as follows:

The Scene Scale is set to 1 ( the Vase and Aroma Stick are provided in real-world scale so the Scene Scale multiplier should be 1).

The Cell Size is set to 0.1 - this may seem inappropriate at first - the total number of voxels is 15 625 which is very low for a fluid simulation. However, as mentioned in the Overview, this simulation relies on the drag particles being carried by the Velocity channel of the simulator. The higher the resolution of the simulation becomes (the more voxels there are), the more detailed the Velocity channel will be - we want to avoid this - cigarette smoke, and the type of smoke produced by aroma candles, is very smooth and moves gently - a detailed Velocity channel will disturb the motion of the particles too much to produce a convincing effect.

The X/Y/Z Size of the Simulator is set to 25/25/25 as a starting point. In the next step, Adaptive Grid is enabled to allow the simulation's bounds to scale on-demand.

Lastly, the Container Wall (Y) is set to Jammed(-). Jammed (closed) walls are treated as solid obstacles by the simulated content. Also, The Adaptive Grid algorithm will not re-size the simulation's bounds in the direction of the jammed wall.

Column
width60%

Image Modified

 

...

 

Section
Column
width40%

Again under the Simulator → Grid rollout:

Set Adaptive Grid to Speed. The Adaptive Grid algorithm updates the size of the simulation's bounding box to accommodate the movement of the simulated contents (e.g. Smoke rising up).

Set the Threshold to 20 - the Threshold value specifies the minimum value a Cell near the outer edges of the box must be for the Adaptive Grid algorithm to kick in and resize the Simulator. When the Adaptive Grid is set to Speed, with a Threshold of 20, the Velocity channel of the simulation near the outer edges should be of magnitude of at least 20.

Set the Extra Margin to 1 - by default, the Adaptive Grid algorithm tries to expand the simulator to accommodate the movement of the contents inside. However, if the content is moving very quickly (e.g. an explosion, hot smoke, etc.), the simulator may not expand enough and clipping may occur. The Extra Margin option can be used to force an additional number of voxels around the walls to give the fluid a bit more room if the Adaptive Grid can't keep up with the simulation.

Under Grid→ Manual Adaptation Limits, select Enable Limits and set the maximum size of the simulator to [ 20, 20, 120, 0, 20, 20 ].

Column
width60%

Image Modified

UI Text Box
typeinfo

The Speed channel is automatically computed from the Velocity channel. Velocity is a vector showing the direction of movement. Speed is a float value calculated as the length of the Velocity vector for each Cell of the Simulator.

...

Section
Column
width40%

Add a Phoenix Fire Source and place the aromaStick_01 geometry into its Object Set.

The Object Set of the Source is used to specify the geometry in the scene that will be used to emit contents into the simulator.

Column
width60%

Image Modified

 

...

 

Section
Column
width40%

To the right is a Playblast of the simulation in its current state.

UI Text Box
typetip

To enable GPU Preview as seen on the Playblast to the right, go to Simulator → Preview → GPU Shade Preview → Enable GPU Preview.

Column
width60%
videoautoplayloop
Align
0001_addSim_addSrc.mp4
1100%
2100%
3true
5true

 

 

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

 

...

 

Section
Column
width40%

Open the Simulator →

Section
Column
width40%

Open the Simulator → Output rollout and disable both Smoke and Temperature. As mentioned earlier, the entire effect is based on the advection of drag particles using the Velocity grid channel. Storing the Smoke and Temperature grid channels will increase the size of the cache files on disk.

Enable Velocity - for regular Fire/Smoke/Liquid simulations, the Velocity grid channel is used for motion blur. In this example, it is used to move the Drag particles.

Column
width60%

...

Section
Column
width40%

To the right is a Playblast of the simulation in its current state.

As you can see, the movement of the Drag particles closely resembles the movement of the Smoke from the previous Playblast. Here is a simple explanation for this - both the Smoke and the Drag particles are carried by the exact same Velocity channel. You could achieve the exact same 'thin smoke' effect with Smoke instead of Drag particles – this would require a much higher grid resolution, and consequently would take much longer to simulate.

The chaotic movement is caused by the default Vorticity settings - those work great for regular smoke simulations but in this cause, the additional randomness is working against the effect we are trying to achieve.

UI Text Box
typewarning

If you can't see any particles in the Viewport, make sure Preview → GPU Shade Preview → Enable GPU Preview is disabled.

Column
width60%
videoautoplayloop
Align
0002_enableDragParticles.mp4
1100%
2100%
3true
5true

 

 

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

 

...

 

Section
Section
Column
width40%

Select the Phoenix Simulator and go to the Dynamics rollout.

Under Vorticity, disable Massive Vorticity and set Classic Vorticity to 0.

For in-depth information on the Vorticity types, please check the Vorticity documentation.

Column
width60%

...

Section
Column
width40%

To the right is a Playblast of the simulation in its current state.

Disabling the Vorticity slightly reduced the amount of randomness in the simulation. However, the simulation is still too turbulent for the type of effect we're trying to create.

Column
width60%
 
Align
videoautoplayloop
align
0003_disableVorticity.mp4
1100%
2100%
3true
5true

 

 

center
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/RWbg7__DkLc?version=3&loop=1&playlist=RWbg7__DkLc" frameborder="0" allowfullscreen></iframe>

 

...

 

Section
Column
width40%

Under the Phoenix

Section
Column
width40%

Under the Phoenix Simulator → Dynamics rollout, set the Conservation Method to PCG.

Set the Conservation Quality to 50.

For in-depth information and examples of the Conservation parameters, please check the Conservation documentation.

Column
width60%

...

Section
Column
width40%

To the right is a Playblast of the simulation in its current state.

Increasing the Conservation Quality, and setting the Method to PCG further simplified the movement of the particles. At this point, it might be a good idea to try reducing the discharge - recall that the particles are carried by the Velocity field - in our simulation, the only thing affecting the Velocity is the Temperature emitted by the Smoke. Even though we disabled the output of Temperature, the Source is still emitting it on every single frame.

Temperature affects the Velocity directly - hot air rises upwards, therefore the higher the amount of Temperature the Source pumps into the simulation is, the faster and more violent the simulation will be.

Column
width60%
Align
align
 
videoautoplayloop
center
0004_conservationPCG.mp4
1100%
2100%
3true
5true

 

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

 

...

 

Section
Column
width40%

Select the Phoenix Source and reduce the Discharge to 1. This will scale down the Smoke and Temperature pumped into the simulation.

Column
width60%

...

Section
Column
width40%

To the right is a Playblast of the simulation in its current state.

Reducing the Discharge reduced the Temperature, and as a consequence, the upwards velocity is lower, which in turn means the Drag particles will take more time to rise up.

You could further modify this simulation by reducing the Temperature value itself - in this example, we leave it at its default value of 2000 to keep things less complex.

We now need the particles to clump together to create the effect of thin smoke slowly rising up. To achieve this, we can increase the Steps Per Frame.

Column
width60%
 
Align
videoautoplayloop
align
0005_reduceDischarge.mp4
1100%
2100%
3true
5true

 

 

center
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/eXwHreaG5-4?version=3&loop=1&playlist=eXwHreaG5-4" frameborder="0" allowfullscreen></iframe>

 

...

 

Section
Column
width40%

Under the Phoenix

Section
Column
width40%

Under the Phoenix Simulator → Dynamics rollout, set the Steps Per Frame to 5.

The SPF parameter has the 'side effect' of calming fluid simulations - more steps generally produces smoother movement. If you are creating an explosion, it would be best to keep this value as low as possible. For smooth, slow-moving simulations, higher values will yield better results.

Column
width60%

...

Section
Column
width40%

To the right is a Playblast of the simulation in its current state.

Increasing the SPF gives the Drag particles a much smoother Velocity field to travel on, and as a consequence - they've started nicely clumping up.

You could experiment by increasing the SPF even higher - for this example, we keep the SPF at 5.

Column
width60%
Align
align
 
videoautoplayloop
center
0006_increaseSPF.mp4
1100%
2100%
3true
5true

 

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

 

...

 

Section
Column
width40%

Aroma Sticks (and also cigarettes, in case you're going for a cigarette smoke simulation) do not emit smoke from their entire surface. An easy way to limit the emission of particles to a subset of faces on the emission geometry is to use an Emit material.

Select the second row of faces starting from the top of the aromaStick_01 geometry and use the Right Mouse Button → Assign New Material option to give them a new Lambert material.

Rename the new material to mtl_emit_01 and specify it under the Phoenix Source's Emit Material parameter.

Column
width60%

Image Modified

 

...

 

Section
Column
width40%

Select the aromaStick_01 geometry and open the Attribute Editor. Under the aromaStick_Shape1 node → Extra Phoenix FD Attributes, set the Voxel Mode Override to Inscirbed.

This option overrides the Simulator → Scene Interaction → Object Voxels parameter. It controls the way the geometry is represented inside the Phoenix simulation. You can think of this as the thickness of the walls of the aroma stick.

We reduce this value to make sure the particles are emitted as close to the surface of the geometry as possible.

Column
width60%

Image Modified

 

...

 

Section
Column
width40%

To the right is a Playblast of the simulation in its current state.

The simulation is now starting to take shape. We add a Phoenix Turbulence node to break things up for a more interesting motion.

Also, the vertical movement of the Drag particles is still too quick which we can remedy by using the Phoenix Simulator's Input rollout Time Scale parameter to slow things down.

Column
width60%
videoautoplayloop
Align
0007_emitMaterial.mp4
1100%
2100%
3true
5true

 

 

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

 

...

 

Section
Column
width40%

Go to the Phoenix

Section
Column
width40%

Go to the Phoenix Menu → Create → Turbulence.

Set the Strength to 1, with a Size of 15 and Rate of Change of 0. Those settings are purely an artistic choice - feel free to experiment with them to find a look you enjoy.

Column
width60%

...

true
Section
Column
width40%

Hit Simulation → Start to cache the simulation to disk.

UI Text Box
typewarning

Note that the Simulation rollout → Custom Stop Frame is set to 100.

The entire Timeline Range in this example is set to 200 frames. When we slow down the simulation, those 100 frames will stretch over the entire Timeline.

Column
width60%
 
Align
videoautoplayloop
aligncenter
0008_addTurbulence.mp4
1100%
2100%
3true
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/y9pNJG9R8-Y?version=3&loop=1&playlist=y9pNJG9R8-Y" frameborder="0" allowfullscreen></iframe>
5

 

...

 

Section
Column
width40%

Under the Phoenix Simulator → Input rollout , set the Play Speed to 0.5 to slow the simulation down to half its speed.

If you encounter any errors, or the particles do not seem to blend smoothly from frame to frame, make sure that the Export Drag Particle IDs on the Phoenix Source is Enabled.

UI Text Box
typeinfo

The settings under the Input rollout essentially work as a post-processing operation over the cached files. It is not required to run a new simulation after changing any of them.

Column
width60%

...

Section
Column
width40%

To the right is a Playblast of the final simulation.

In the next section, we create the Phoenix Particle Shader used to render the Drag particles.

true
Column
width60%60%
Align
aligncenter
HTML
<iframe width="800" height="450" src="https://www.youtube.com/embed/PJrwdC0pJZg?version=3&loop=1&playlist=PJrwdC0pJZg" frameborder="0" allowfullscreen></iframe>
 
Videoautoplayloop
0009_slowDown.mp4
1100%
2100%
3true
5

 

Rendering

...

Section
Column
width40%

Phoenix ships with a custom Particle Shader which can be used to quickly render any particle system placed into its Particle Set.

To create one, go to Phoenix FD Menu → Create → Particle Shader. Note that a new set has appeared in the Outliner – phxParticle_set. This set is automatically generated for each Phoenix Particle Shader in the scene, and used to tell the shader which particle systems in the scene are to be rendered.

Open the Windows → Relationship Editors → Sets and select phxParticle_set1 on the left, and PG_PhoenixFDSimulator1_* on the right. The nodes prefixed with PG are Phoenix Particle Groups - those nodes reference the particle systems generated by the Phoenix simulation. By adding it to the Particle Shader's Particle Systems set, we tell Phoenix to render the Drag particles. This works exactly the same for Foam, Splash and Mist particles when rendering Liquid simulations.

Column
width60%

...

Section
Column
width40%

To the right is a rendered image of the current setup. As you can see, the particles appear too thick.

Column
width60%

Image Modified

 

...

 

Section
Column
width40%

Select the Particle Shader and set the Color to RGB: [ 204, 204, 204 ].

Open the Point rollout and set the Point Alpha to 0.001, the Point Size to 0.700 and the Shadow Strength to 0.01.

Those values are purely an artistic choice - feel free to modify them as you see fit.

Column
width60%

...

Section
Column
width40%

To the right is a static image of the final render.

Column
width60%

Image Modified

Viewtracker
hidetrue
renderusernamesfalse