Skip to content
Recluse Studio
← Field notes

The curtain kept the old show

A new cue book still produced an old curtain movement until the factory repaired how cloth frames were adopted and found by the filmed scene.

A pixel technician on a ladder fastens a pale curtain to its traveller while an eight-legged inspection machine handles a strip below.
Post-specific field image / portrait

The curtain was supposed to close at the end of the play. Instead, its cloth followed an earlier performance, beginning the wrong movement while the new show was still running. The cue book and the physical carriers could be correct while the fabric replayed stored frames from another scene.

My film factory uses an actual simulated theatre in Blender: curtains hang from travellers, scenery arrives on carts, painted rod puppets move through their controls, and physical projectors light the dialogue screens. Reusing that equipment requires the saved performance to contain the right simulation data, as well as the right instructions.

The compiler route had reduced the planning to one book. Its first films now exposed the details needed to make that book govern the scene the cameras actually saw.

The new file carried old frames

The prepared example theatre included baked cloth frames in memory, and the new production calculated its own curtain movement in separate processes before adopting those results into the stage scene for recording. A bake stores the calculated movement so it can play back without calculating the physics again.

That adoption could overwrite the fresh disk frames with the example’s in-memory data. The resulting curtain followed the example’s closure, roughly 127–174 seconds, while the new play required closure at 173–179 seconds. The retained worklog records the curtains’ measured extents matching the example frame for frame.

Another attempted repair changed the frame range of a cache before marking it baked, which cleared its fresh data. Saving the fog-bound scene under a new name introduced a further fault: Blender looked for a cache directory named after that new scene. Data available beside the earlier filename could be absent when the recorder opened the later one.

The runner now makes the naming relationship explicit:

cache_dir = production / 'scene/blendcache_stage'
renamed = production / 'scene/blendcache_stage-fog'

Exact source and provenance. Retained source file.

The repair adopts fresh disk frames without resetting them, checks the cache state, and measures the curtain against its carrier. It also retains the cloth folder expected by the filmed scene’s filename. A report that the carriers had reached their positions would have missed the original failure: the fabric itself had to follow them.

Movement limits came from actual failures

The same build also gave the planner a usable movement vocabulary. An earlier approach had asked agents to invent long sequences of rod positions for each show. The new actions needed measured limits, because a plausible path could still pull a fastening beyond the unchanged three-millimetre threshold.

After a recorded carried-walk probe measured approximately 3.74 millimetres of separation at a peak speed of 1.43 metres per second, the adopted movement used one-second starting and stopping ramps and a peak no greater than 0.8 metres per second. These limits belong to these puppets and their controls.

Combining a carried walk with an arresting arm gesture produced another fastening error, around 3.38 millimetres. The checker now separates arm changes from carried movement. It also prevents turning or inclining the body while the hand holds a touch, and requires a brief hold before release. The model still chooses the staged movement and its timing within the script; the software refuses unsupported combinations before a full scene build.

A touch also depends on the figure’s turn and inclination at arrival. The solver now includes both. The approach takes a route around the cart-deck corner, and the shallow painted fingertip meets its scenery target in the picture plane with the depth gap recorded. It does not acquire an imaginary solid hand to make the test pass.

Check the view and the sound separately

The hand-held camera initially looked through its own operator. Corrections put the operator on the deck, facing the aim, and kept the intended framing distance when its position reached the deck’s front boundary. The equipment catalogue also gained a useful description of the catwalk camera: screens fill much of its view, so it is a poor choice for some lines and gestures.

The Kintsugi music tool returned one render around +10 LUFS, far above the intended mixes. LUFS measures loudness across the audio. The sound route checks the actual signal and regenerates an unsuitable result before mixing the acts. Its records still say that no listening occurred. Measured loudness, successful decoding and an agent hearing the music are different kinds of evidence.

The first films included interruptions, repairs and manual recovery. Their completed files established that the corrected machinery could perform the plays. The next test therefore began fresh, preserving those first versions and asking the same method to make both scripts again.