Object Simulation Nodes Cache Calculate To Frame
Step a sim up to a specific frame
- BPY_OBJ
- BPY_OBJ
A simulation doesn't have one answer - it has an answer per frame, and the answer at frame 50 depends on everything that happened at frames 1 through 49. Object Simulation Nodes Cache Calculate To Frame wraps bpy.ops.object.simulation_nodes_cache_calculate_to_frame and steps a geometry-nodes simulation forward to the current frame, computing (and caching) the result so far.
Think of it as the "precompute up to here" button. Full bakes are for freezing everything; this is for making sure the current frame is computed and stable - useful when you want to grab a specific pose or mid-simulation state of a layer before the rest of the avatar pipeline runs.
How it works
Auto-generated wrapper, standard for the pack. Your incoming BPY_OBJ becomes the active object and the operator advances the simulation cache to the current frame. Because it caches as it goes, stepping here first means later frames cost less to compute.
The inputs that matter
BPY_OBJ- the object with the simulation.selected- boolean, default false.falsetargets the active object;truecalculates the cache for all selected objects in the shared scene. Same caution as the Bake sibling: tick it only when you actually want everything selected processed.
Output is one BPY_OBJ, unchanged.
Install
Standard Avatar Graph install - one repo for the whole pack. ComfyUI Manager: search Avatar Graph, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
The pack pins bpy==3.6.0, effectively requiring Python 3.10, and first launch downloads the ~2.5 GB SAM checkpoint plus MediaPipe landmarkers.
Common issues
The obvious confusion is with the Bake node. Calculate-to-frame is not a full bake - it only resolves up to the current frame, so anything beyond it stays uncomputed. If your exported avatar looks half-simulated, you stopped at the wrong frame.
And the stale-cache problem applies in miniature here: the node computes based on the scene's current frame, so set your frame before running it. In the shared scene, a previous run's frame position can leave you calculating the wrong frame without any obvious error - if the result looks "a frame behind," check the scene frame, not the node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| selectedopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |