Tutorial 07: Effectors


Effectors allow a user to control almost any parameter on a per - voxel basis. For example, by using Effectors it is possible to have localized gravity, or even Vorticity that depends on the voxel velocity. A Master Effector can directly control amount of smoke, fire, fuel, temperature and color in a voxel.

In this tutorial, we will teach you how to use Effectors.


In Maya, select File - >Open, and from your [MAYA]/FumeFX/Tutorials folder, select the file Tut_07_start.ma.


This is a simple scene and contains a FumeFX grid, one Simple Source, an Object Source and one Effector. We will use Effectors to create smoke based on the velocity in the grid.


Open FumeFX relationship manager and select Simple source and Object Source.



Select the ffxSimpleSource1 and disable Fuel and Smoke channel.


Create an FumeFX Effector and position it directly above  ffxSimpleSource1. Set effector shape to Sphere; its effect will now be localized only to voxels within the spherical shape. Set Diameter to 11 and Translate y coordinate to 30.


Each Effector has a Channel Name parameter which is used to select the FumeFX parameter(s) you want to control. Set the Effector's Channel name to "eff1".



Select the FumeFX Grid, open the relationship manager, and select ffxEffectorShape1.

Scroll down to Simulation - >Smoke rollout. You'll notice that Effectors can be applyed not only to FumeFX parameters, but to FumeFX channels as well. Since we want to create smoke based on the velocity in the grid, that's exactly what we need. Under the Smoke rollout, click on the Master Effector icon - Master Effectors are used to assign effectors to channels. The Effector Connect dialog will open. Type "eff1" into the field, which will assign the entered channel name to the selected parameter (in this case, the smoke channel) and press OK button to close the dialog.


Select ffxEffectorShape1 and under the Input rollout, change Type to Velocity. Our Effector's output will now be controlled by the Velocity field. Set Range Min. to 2.0 and Max. to 3.0. This means that velocities between 2.0 and 3.0 will be converted to 0.0 - 1.0 range. The resulting value is passed to the Output module.


For now we will have the Output Value curve disabled, but we will use it later to perform additional tweaks of the Output value (and even invert it).


Under Output rollout, set Output Operator to "Add" which means that the Effector will add to the Smoke channel.

As this Effector will be used to add smoke to the grid, the maximum amount that will be added is defined by the Scalar parameter; set it to 0.1. A higher value will add more smoke to the grid.


Let's analyse how our effector will be applied. With it's Input Type set to Velocity, channel name connected to the Smoke Master Effector and it's shape set to sphere, it will read velocity values from the voxels located inside the sphere and convert them (based on current Range Min/Max values) to 0.0 - 1.0 range. Finally, our scalar valueof 0.1 will adjust that 0.0 - 1.0 range to 0.0 - 0.1. This new range will be used to add to the smoke channel.


Now create another effector and position it above pSphere01. Open FumeFX attribute editor and from its relationship manager select ffxEfector2.

Select the ffxEffector2 node and set the Effector's Shape to Box and set it's Width/ Length/Heightto 22/15/44.X coordinate should be around 30. Set Channel name to "eff2", Input Type to Velocity, Output Type to Add and Scalar to 0.1, as before. Since Object Source is emitting only temperature, velocities will result only from buoyancy and will achieve much lower values. Set Range Min/Max to 0.3 - 1.0.



Go to the Simulation - >Smoke rollout as before. Open the Smoke Master Effector Connect dialog and click on the "..." button; all channels of all effectors added to the selected FumeFX Grid will be listed here. Click on "eff2"This will append ???eff2" to the list of channels that control this parameter.


Before you start simulating this scene, make sure to adjust your output paths.


Once you start simulation, you will notice that the Effectors are creating smoke based on the velocities in the grid. For our first effector, a smoke value of 0.1 will be added to voxels that have velocity of 3.0 and higher, while in the areas of velocity below 2.0 no smoke will be added.


But what if you want to add the smoke the other way around?

Fortunately, there is a quick and effective way to do that by using Output Value curve.


You need to keep in mind that input is on horizontal axis and output on vertical axis. To invert how smoke is added all we need to do is to enable the Use Output Value and invert the curve like on the image below.

You can read it in the following way. When input is 0.0, output will be maximum (0.1 in our case) and when input is 1.0, output will be 0.0.


When you run Simulation it will become obvious that most of the smoke is now added to areas with low velocity, the opposite of what we had in the first step.