I am putting together a preset pack of different types of smoke simulations (explosions, candle flame, after burner, exhaust etc... )

I would like the user to be able to append any of the smoke scenes to their scene. The only problem is if their scene is not to scale, when they resize the smoke sim to fit their scene it will drastically change what it looks like.

Is there some sort of Simulation scale feature they can use?

Or can anyone think of a creative way to help the user be able to scale the smoke sim and have it look the same at any scale?

Here are some examples:

Let's say this is the original sim that I always want it to look like. enter image description here

This is a brand new blend file with the smoke scene appended, with the smoke sim copy and pasted to the new scene and scaled down (or up doesn't matter), the scaling has NOT been applied. enter image description here

This image is the same but WITH the scaling applied.

enter image description here

In these examples there is not much of a difference between the NON-applied and applied samples (but even between these there are differences, especially with some of my other sims).

I understand that the scale affects how the smoke looks. The solution I am looking for is to have my original smoke sim to look the same no matter what scale the user uses.

I am using openVBD.

  • 1
    $\begingroup$ "drastically change what it looks like": can you include pictures? Is the smoke a 3D texture or openVDB? $\endgroup$ Commented Jul 13, 2018 at 18:08

1 Answer 1


You need to adjust the density for how much you scale the smoke. If the original scale was 1.0, the new density is: $$ density' = density / scale $$ If you want exactly same render result (from scaled camera closer/further from smoke), you will also need to adjust the Volume Sampling Step Size under Properties > Render Tab > Geometry: $$ stepsize' = stepsize * scale $$

The density can be adjusted by a driver from the material node tree. I added extra node, so the user still has the option to manually adjust:

enter image description here

The driver looks like this, I chose the Z axis as input:

enter image description here

The others can be locked from user input and their value copied from Z axis with drivers:

enter image description here

  • $\begingroup$ Can confirm that this works with no real difference. $\endgroup$
    – Omar Emara
    Commented Jul 13, 2018 at 20:01
  • $\begingroup$ Awesome I think this is what I needed, I am a complete noob at Python, but would you suggest I create a simple button that the user clicks after scaling and positioning the smoke sim to there scene, so it automatically applies those formulas above? is this doable for a complete Python beginner? Thanks Omar for confirming. $\endgroup$
    – icYou520
    Commented Jul 13, 2018 at 20:14
  • $\begingroup$ @icYou520 You can add driver to the node value, use scripted type and drive the node value with the scale (choose some axis). You should then lock the other scale axis and drive them also, so the object is forced to scale uniformly. Is this something you are comfortable doing or would you like me to include it in answer in more detail? I would leave the Step Size for each user to set, because that setting depends on the HW they are rendering on. You can notify the users this setting does influence the render quality of the smoke and the render time. $\endgroup$ Commented Jul 13, 2018 at 21:50
  • $\begingroup$ That sounds like a much better solution. If you don't mind showing me how you would do it with a driver and scripted type I will be very thankful. If you are ever in Southern California I owe you a beer. I will make sure to award the bonus too. Its making me wait right now. $\endgroup$
    – icYou520
    Commented Jul 13, 2018 at 22:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .