4
$\begingroup$

I'm working on a geometry nodes setup, there is one node which input doesn't change, but this node takes a long time to calculate, and I'm constantly changing things that aren't affecting this node, is there a way I can skip its calculations? Kinda like the freeze icon in Houdini. I guess the answer is no, since I couldn't find anything, but maybe someone knows something cool.

$\endgroup$
0

2 Answers 2

4
$\begingroup$

This answer is for Blender versions lower than 3.6, if you are using 3.6+ you can find the solution in the other answer.

No, unfortunately this is definitely not possible in Blender with Geometry Nodes.

...even if I would like to have exactly this possibility as much as you!

Either the nodes are active and create a geometry, or they are not.

A temporary caching of a certain part of a node tree, as it is possible for example in Houdini, is unfortunately not achievable in Blender.

The only alternative you would have would be:

Create the computationally expensive part as a separate node tree, and create a permanent geometry from it each time by applying the modifier. However, this process would then have to be performed again after each modification.

$\endgroup$
4
$\begingroup$

It is no longer true that Blender cannot cache the result of a node in Geometry Nodes.

From Blender 3.6 and onwards, Blender Foundation have added the Simulation Zone nodes to Blender, which can encapsulate a portion of your nodes.

Once you have successfully encapsulated the nodes you wish to cache, move over to the Physics tab within the Properties editor and find the Simulation Nodes section. Note that while this was placed in the physics section, it will cache anything that comes out of the zone, not just physics.

If it is not expanded, expand it. Now you can select the Cache checkbox, and then choose either the Calculate to frame or Bake options to cache the data which you need.

Once this is enabled, you need to delete the data with the little trash can button next to bake to remove the data or click bake again (or both) when you do something that might update the results of the nodes within the simulation zone.

Also note that for versions 4.0+ Blender has another zone type called Repeat Zone, which is distinct, and at the time of writing this does not allow caching for that zone type (unless perhaps if encapsulated in a simulation zone, but I have not tested this to see if it works).

I am hopeful that they will add some smarter built-in caching and detection of which changes in data flow would require updating of caches automatically, but Simulation Zones are what we have for now.

$\endgroup$
2
  • $\begingroup$ Sadly, at its current state it's a little bit of a "out of a frying pan, into the fire" situation - sure, sometimes you have a complex process generating a light geometry, but if your geometry is complex (basically a lot of vertices), a simulation zone will quickly flood the cache. $\endgroup$ Commented Sep 9, 2023 at 14:25
  • $\begingroup$ For something complex, what I did was limit the number of frames in the timeline editor. That way, you can see the results without the complexity getting out of hand as the frame number increases, since it will start over after just a few frames. It's a workaround. It still isn't ideal, since it would be better to be able to cache the results of Repeat Zones in Blender 4.0+. Repeat Zones let you determine the number of iterations to perform all at once. You could store the results for each iteration by having a separate output for each iteration increment, but that kind-of battles the purpose. $\endgroup$
    – unicodePug
    Commented Sep 17, 2023 at 19:25

You must log in to answer this question.

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