9
$\begingroup$

I have an 8GB smoke sim cache directory for 250 frames.

I only want the sim results for frame 15 - 13mb.

How can I just retain this single frame across the 250 frames of the file? I guess a kind of bake of a bake. Or converting this frame smoke to an object making it a static element?

$\endgroup$
0
9
+300
$\begingroup$

Blender 2.81 (not mantaflow)

This solution works but was probably never designed to work like this, therefore I can't guarantee that it's a stable workflow. It was stable enough when I tested it anyway.

Unfortunately, you should have already baked your smoke simulation using "External", otherwise you'll need to bake it again. Choose a directory for your bake to go to (e.g. //cache)

enter image description here

After you've baked, in //cache you will have several files called _<frame>_00.bphys. Copy the file corresponding to your selected frame, and paste it into a new directory //cache2, changing its name to _000001_00.bphys.

Note down the dimensions of your smoke domain, and create a new cube with exactly the same dimensions. You can now remove your original smoke domain.

In the newly created object, enable Smoke, set its type to Domain. Under Cache check External and use //cache2 as its Path. Simulation "End" gets automatically reduced to 1.

enter image description here

The object now holds the smoke information from only the selected frame and, as far as I've seen, it doesn't try to overwrite your cache or to add new frames to it.

The original //cache folder, containing all your bake and the unnecessary frames, can now be removed (but I'd keep it as a backup, at least the first N frames, where N is the frame you've picked)

$\endgroup$
2
$\begingroup$

Blender 2.82 (Mantaflow)

For Blender 2.82 and Mantaflow this is fairly straight forward. Simply delete the files from the simulation cache which have the frame number in their name that you would like to remove.

Simulation cache directory

The cache directory will contain two subdirectories config and data which contain the per frame simulation files.

The config directory will contain files with the prefix config_, followed by the frame number and the file extension depending on the Data File Format you've chosen (.uni, .vdb or .raw).

The data directory contains the simulation data for various physical properties. Like the config files they have a prefix, followed by the frame number and the file extension from the Data File Format. The prefixes are:

  • density_
  • densityIn_
  • emissionIn_
  • flags_
  • heat_
  • heatIn_
  • phiIn_
  • phiOut_
  • shadow_
  • vel_

Make sure to consistently delete all files for a frame that you want to remove.

In order to render the smoke, you will have to set the current frame in the timeline to one of the frame numbers you haven't deleted.

The cached smoke simulation can be transferred to other objects as well, you only need to configure them as fluid domain, apply the same material and select the cache directory.

$\endgroup$
1
  • 2
    $\begingroup$ This answer is meant as an addition to Nicola's answer. Please keep in mind that the Mantaflow integration has some rough edges at the time of writing. $\endgroup$ – Robert Gützkow Jan 8 '20 at 23:59
1
$\begingroup$

You can insert keyframes for simulation visibility. Toggle the visibility button for the smoke sim to be off at frame 14 then insert keyframe. Then at frame 15 toggle visibility on then insert keyframe. Finally at frame 16, turn it off again and insert keyframe. It should not keep any of the cached data except for that single frame. FYI it will not show up on any other frames, just that one.

$\endgroup$
3
  • $\begingroup$ I don't think you can maintain the single frame across the entire animation, but this is an easy way to keep one frame. $\endgroup$ – Nate_Sycro27 Jan 6 '20 at 15:17
  • $\begingroup$ But you can mimic it by manually toggling the visibility on and off at each frame. It should stay the same. $\endgroup$ – Nate_Sycro27 Jan 6 '20 at 15:50
  • $\begingroup$ Very interesting idea. Will try this as I know I'm going to eventually need more than one sim in any particular scene. $\endgroup$ – Jammer Jan 6 '20 at 19:10
-2
$\begingroup$

This is actually extremely easy to do: once your smoke simulation is at the frame you want to keep, select the smoke flow object, and apply the smoke modifier. This will keep all of the smoke data for that one frame, but will not save any data for the other frames. I also noticed that if you move the frames, the smoke will gradually disappear. You may want to do this once your scene is almost complete.

$\endgroup$
4
  • $\begingroup$ Make sure that it IS the smoke flow object, because if you apply the smoke modifier to the domain, everything smoke-related in your scene will lose it's smoke data. $\endgroup$ – Nate_Sycro27 Jan 5 '20 at 2:48
  • 2
    $\begingroup$ While this may look like it's working, it's not, or at least is very unstable! It just removes the flow object from the Smoke world. The domain will keep trying to simulate the smoke (with no flow object) as soon as you play the animation again in the right circumstances (that's why it "gradually disappears"). Also, the moment you move or manipulate the domain object in any way, everything is lost! $\endgroup$ – Nicola Sap Jan 5 '20 at 10:28
  • 2
    $\begingroup$ Actually, if you save the file and open it again, your smoke will be gone $\endgroup$ – Nicola Sap Jan 5 '20 at 10:30
  • $\begingroup$ Which is why I said to do this when your scene is almost done. $\endgroup$ – Nate_Sycro27 Jan 5 '20 at 13:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.