Skip to content
Recluse Studio
← Field notes

The movement passed its check and failed in Blender

An accepted planning calculation exceeded the puppet's fastening limit during actual playback, changing what readiness had to prove.

A pixel puppeteer inspects a separated fastening on a rod puppet with a tiny eight-legged measuring instrument.
Post-specific field image / portrait

A puppet movement received a passing planning result, then pulled a fastening beyond its permitted gap when Blender performed it, exposing a difference between the intended and measured movement that changed the result. My film factory had a way to approve work that its own theatre could not execute.

Joseph and Yvette are shallow painted rod puppets. Physical rods support and move them; separate hands operate those rods, and the joints must remain within a three-millimetre separation limit. This construction had already been accepted. The problem concerned what happened when new production choices passed through the factory.

The first frame mattered

One reproduced fault came from the start of the simulation. Blender formed its rigid joints after the cache began. If the control rods had already moved at that moment, the joints could retain the resulting offset through the show. The pieces remained connected according to the simulation, but the connection had started from the wrong relationship.

The repair added one held frame before the show, during which the bake checked that the controls and motors did not command motion, before advancing through the performance. This corrected the demonstrated initialization fault while preserving the existing puppet and its movement keys in the matched comparison.

That success still did not establish that every movement accepted by the planning calculation would work. Codex constructed a nearby case that the calculation predicted at about 2.981 millimetres, inside the limit. Actual Blender playback measured 3.044 millimetres at frame five. Saving and reopening reproduced the failure.

The agent added a conservative margin to the operating calculation. The actual physical threshold stayed at three millimetres. A slower nearby case passed, and a generic pair of actor movements later passed the native check before saving and again after reopening. The evidence contained both a real refusal and a positive result under the unchanged rule.

Check the saved performance

I asked to replace the software coordinating the crew, combining their choices and deciding readiness. The prepared theatre and working recorder would stay. Independent owners would retain creative responsibility, and one technical process would bring their proposals into saved, versioned scenes.

The replacement’s native writer checks the performance before saving and again after opening the saved file. Its refusal at the second check is explicit:

        if reopened['status'] != 'passed':
            report['failures'] = [row for row in reopened['actions'] if row['status'] != 'passed']
            raise ValueError('Saved scene failed native playback after reopening; accepted head is unchanged.')

Public source excerpt. Repository snapshot, requiring repository access.

This implemented branch prevents a failed saved candidate from becoming the accepted scene version. Its existence alone proves no performance. The separate native boundary fixture supplied the behavioral evidence: the bad movement failed without advancing the version, while the positive pair advanced only after the saved and reopened scene passed.

The useful result was narrower than a ready factory. A check could now reject the specific kind of false pass that had been reproduced. The system still had to deliver the cause to the original owner quickly enough for that owner to choose a workable movement within the production clock.

I kept creative movement open-ended. A fixed catalogue of safe gestures would have changed the remit. The owner could choose timing, body movement and a reachable path suited to the script; the scene writer had to report what those choices actually did. Later failed commissions would test that combination of freedom, actual observation and finite time.

The physical counterexample changed the earlier explanation that the coordinator only needed to follow an already adequate workflow. There was now a demonstrated defect in the approval path itself. Fixing that defect was necessary, but the requested finish remained two different autonomous films followed by a repeat, with no bespoke repair between the successful runs.