Baking Simulation Zone State in Blender Geometry Nodes for Reliable Renders
Learn how to bake Geometry Nodes Simulation Zone state in Blender so particle motions, custom physics, and procedural animations survive file saves and render farms.
22 Feb 2026, 23:19 UTC

Problem: Simulation zones reset on file reload
When you build a Geometry Nodes tree that includes a Simulation Zone, the solver runs each frame and stores its internal state only while the current Blender session is alive. Close the file, reopen it, or send the scene to a render farm and the simulation starts from frame 0 again. This makes any animation that depends on accumulated motion—like falling particles, growing vines, or custom physics—unreliable unless you take an extra step.
How simulation zones store state
A Simulation Zone behaves like a tiny time‑stepping loop inside the node graph. Each iteration writes to attributes that are marked as “simulation attributes” (for example, velocity or age). Those attributes live in the zone’s internal cache, not in the regular attribute domain of the mesh. Because the cache is not part of the .blend file, it disappears when the file is saved and reloaded.
Worked example: baking a falling‑particle system
We’ll create a simple particle emitter, let the particles fall under gravity inside a Simulation Zone, and then bake the zone so the motion persists across sessions.
- Add a UV Sphere, shift‑right‑click →
Add → Geometry Nodes Modifierand clickNewto create a node tree. - In the node editor, add a
Point Distributenode (domain = Point) to scatter 10 000 points over the sphere. - Add a
Simulation Zonenode. Connect theGeometryoutput of Point Distribute to the zone’sGeometryinput. - Inside the zone, add an
Attribute Statisticnode set toAverageon thepositionattribute to get the centre (optional). - Add a
Vector Mathnode (operation = Subtract) to computeposition - centre, then aVector Mathnode (operation = Scale) multiplying by a smalldelta timevalue to get velocity. - Add an
Attribute Storenode to write the resulting vector to a new attribute calledvelocity(domain = Point). - Add another
Vector Mathnode (operation = Add) to updatepositionwithvelocity * delta time, storing back toposition. - Add a
Float Mathnode (operation = Add) to increment anageattribute each frame. - Leave the Simulation Zone and connect its
Geometryoutput to aPoint Instancenode that installs a small ico‑sphere as the particle visual. - Connect the Point Instance output to the
Group Outputnode. - Play the animation; you should see particles drifting outward from the sphere.
- To bake, select the Geometry Nodes modifier, click the
Bakebutton that appears in the modifier panel when a Simulation Zone is present. Choose a cache folder, set the frame range (e.g., 1‑250), and clickBake Simulation. Blender will write binary cache files to disk. - Save the .blend file, close it, and reopen. The particles now follow the baked trajectories without recomputing the simulation each frame.
Trade‑off: bake time vs. reproducibility
Baking a Simulation Zone turns a cheap, on‑the‑fly evaluation into a pre‑computed cache. The upside is deterministic output that works identically on any machine or render farm. The downside is the extra disk space and the time required to run the bake before you can render. For quick look‑development you may keep the zone unbaked; for final assets or shots that must be reproducible, baking is the safer engineering choice.
Actionable checklist
- When a Geometry Nodes tree contains a Simulation Zone, always verify whether you need baked state.
- Use the modifier’s
Bakebutton (orbpy.ops.object.geometry_nodes_bakevia Python) to cache the simulation to disk. - Store the cache path relative to the blend file so the project stays portable.
- After baking, disable the Simulation Zone’s live evaluation (uncheck
Enable Simulation) to avoid double work. - Check the Statistics overlay (
Window → Toggle System Consoleor the overlay in the 3D View) to confirm that the triangle count matches the baked cache and not the live solver. - If you cannot bake (e.g., you need real‑time interaction), store critical simulation data as named attributes with the
Store Named Attributenode and read them back after the zone.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.