Generating Smoke with Fusion's Particle System

  • In Blackmagic Fusion, smoke is usually simulated by means of a particle system and the FastNoise tool, used as a texture for the sprites.
  • The basic setup requires a pEmitter tool defining the start parameters of the simulation and a pRender, which coutputs the result. The pRender offers two modes: 3D (default) and 2D.
    In first case, the pRender outputs a 3D scene, which provides an easier overview and adjustments of the simulation as well as extended capabilities of interaction with other 3D objects. The 3D mode requires an extra Render3D node, which converts the 3D scene into an image.
  • The 2D mode is a legacy from versions of Fusion 4.x and earlier, before the 3D space was introduced. However, it can be useful for quick and easy setups with minimum of the nodes. The particles in this mode are still in 3D space internally, but the pRender outputs an image directly, so you don't need a Render3D node. A Camera3D node is not necessary, because the camera is defined right in the pRender. You can connect an external one to the pRender optionally, if you need.
  • To turn your particles from points to textured puffs of smoke, you need to drop down the Style menu in the Style tab of pEmitter and select Bitmap. The pEmitter node will expose a new yellow input and in the controls a new empty field Style Bitmap will appear. You can either drag and drop a FastNoise node to this empty field in controls or connect the output of the node to this new yellow input of pEmitter.
  • The default mode in FastNoise is good for thick factory-like smoke, but if you want to generate more thin and dissolving smoke or steam, you should activate both Discontinuous and Inverted checkboxes. The Discontinuous alone can be used for a really large-scaled smoke though.
  • To overcome straight lines in the Discontinuous mode, you may want to apply a Displace tool using another FastNoise as a displacement map.
  • The same smoke can use an animated mix between default noise at the beginning and discontinuous inverted at the end where it's thin and dissolving.
  • You can also mix fast noises of the same type but different seethes to keep the smoke flow consistent with the time. Rotate the additional textures to conceal this 45 degrees pattern features.
  • Another approach which also helps avoid repetitions is to make an instance of your pEmitter and FastNoise, change their seeds and connect to the system via a pMerge. In this case you should decrease the pEmitter's Number accordingly.
  • To fade out the noise texture you can subtract a blurred Ellipse mask or a radial gradient from it using the ChannelBoolean. The subtraction operation creates more curly edges. In this case you need to apply a BrightnessContrast with the Clip Black turned on.
  • Smoke will look more detailed if you decrease the gamma of the sprite texture with a BrightnessContrast. It'll increase contrast of details and make fading edges smoother.
  • Note, that even insignificant shift of the Seethe value may make the smoke look completely different.
  • To make smoke more alive, set some Seethe Rate in the FastNoise. In the pEmitter set Style › Animate to Particle Age; add some value to Spin Variance, Number Variance, Lifespan Variance, Color Variance.
  • Setting the Rotation Variance = 360 will help you avoid apparent repetitiveness of the sprites.
  • If the smoke is emitted from a visible source, add a pFriction so that the smoke was faster at the emission point and then slowed down. All the nodes representing particle forces are inserted between the pEmitter and pRender in any order. The position of a node in the branch doesn't affect the result.
  • To simulate dissolution of the smoke, edit the Size over Life graph (the size should be increasing with the age) and adjust the Fade In/Out together with the Color over Life correspondingly (the bigger the particle the more transparent it should be).
  • Animate the FastNoise's Scale from small to large to have a correct proportion of details at the beginning of the smoke, near the source where the sprites are small to the tail where the sprites are large. The animation spline should have deceleration in a quadratic manner.
  • As the speed of the emitted particles decreases with time, the speed of FastNoise texture change should also decrease. But if you decrease the Seethe Rate with time, the animation of the texture may go backwards and forward depending on the current value of the parameter and its change speed.
    So, set the Seethe Rate = 0 and animate the Seethe instead. Its animation speed should decelerate with time in a quadratic manner.
  • You should find a proportion between particles speed, spin and FastNoise's Seethe change to avoid noticeable separate sprites in the final animated result.
  • Steam evolves much more with time than smoke, so it should have a greater Seethe Rate (or faster Seethe animation) and Spin parameters.
  • To slow down your smoke, decrease the pEmitter's Number, Velocity, Spin and their variations; decrease FastNoise's Seethe Rate; decrease all the forces' magnitude. Increase the Lifespan. You should use the same multiplier for all the values. You can also use the Time3D fuse for smooth retiming of the whole particle system, but keep in mind that the animated sprite texture snaps to the frames and will not be slowed down smoothly.
  • To add some fluid-like motion to your smoke, make an instance of your particle system, significantly decrease its pEmitter's Number, increase the speed a bit and use this copy as a displacement map for a Displace tool applied to the main smoke 2D output. This will simulate the usual faster core motion and slower peripheral motion of the smoke.

The techniques described above were extensively used in the following film projects:

© 07.09.2010 - 23.01.2015 Gregory Chalenko