en2.ai
Production notes

How we made
The Invisible Burden

'The Invisible Burden' is an animated short about adolescent mental health. We produced it using generative image and video models, and then produced the same film three more times in different visual styles from the same source documents.

These notes describe the production method. They cover the stages we worked through, the limitations of the models we had to work around, and the techniques we used to keep one character consistent across multiple separately generated shots.

The pipelineSeven stages
01

Story document

Every shot written out with fixed durations, camera notes and prop states.

02

Master style frame

One image that sets the palette, line, texture and finish.

03

Character references

Every bird and every backpack state saved as a reusable image.

Human sign-off
04

Approved frames

Framing approved as a still for every shot, with a closing frame where needed.

Human sign-off
05

Motion generation

The video model generates the movement for each shot.

06

Continuity check

Each shot is checked against six written rules before acceptance.

QA gate
07

Assembly

Shots cut in order, graded, with a shorter version cut from the master.

Review

Nothing moves forward on the model's judgement alone. A person signs off the character sheet before any scene is generated, and signs off each framing before it is animated. Every finished shot is then checked against the written continuity rules before it is accepted, and shots that fail are generated again rather than corrected.

01

The film, and why we chose this story

A short summary of the content, and the technical reason it works as a test of the pipeline.

A bird sets out wearing a small backpack. It approaches four other birds in turn and is ignored or turned away each time. After each attempt the backpack gains a stitched patch and grows larger, until it is bigger than the bird and the bird can no longer fly. In the final shot a second bird sits down beside it, carrying a backpack of the same size.

We chose this story because its meaning depends entirely on one object changing size in a controlled way. That made it a test of whether we could control a generative pipeline closely enough to produce narrative work.

We also produced the film without dialogue, voiceover or text. The content we build is deployed across many languages and to audiences with low literacy, so we wanted a film that requires no translation or re-recording to move between them.

The finished film is bookended by Indian Sign Language, in the same way as our showreel. A signer greets the viewer with hello and welcome before the first shot, and closes with thank you and goodbye after the last one. They sit at the two ends of the film rather than in a corner of the frame, so they are the first and the last thing a viewer sees.

A frame from the film: the bird flying through open sky wearing a small backpack
At the start of the film the backpack is small enough to barely notice.
02

The pipeline, stage by stage

Each stage is listed with what we did and why. Highlighted fields are still to be filled in from the production log.

Stage 01

Story document

We wrote every shot first: what happens in each one, how long it runs, what the camera does, and what state the backpack is in. No images were generated until this was complete.

The document is written so that every constraint in it can be verified by looking at a frame. This matters because the same document is used as the reference for the continuity check at stage six.

The story was written first, by us. A language model was used as an editor rather than an author. We used it to pressure test the structure: whether the four rejections escalated in the right order, whether the ending resolved too neatly, whether the tightest shot fell at the right moment.

One change came directly out of that pass. The first version contained only the four rejection scenes and played as a list rather than a film, so we added an opening, a reaction beat and the closing two shots. That produced the structure every version has used since. The model was also used to assemble the technical prompt text. It was never used to invent the story or its beats.

Stage 02

Master style frame

We generated a single image that establishes the palette, line quality, texture, lighting and finish for the whole film. Every image made after this point uses that frame as a visual reference rather than starting from a written description of the style.

The style was not reached by prompting. We began from a look worked over by hand, generated a set of frames in that look using image referencing, and trained a LoRA on the resulting set. The master style frame is an output of a model we trained, not of a general purpose one.

Stage 03

Character references

We generated the lead bird and the five other birds from the master style frame, so they share one visual world, and saved each as a fixed reference image. The backpack was built separately as its own asset, with a defined state for every shot, because it changes throughout while the birds do not.

Once these exist, a request for a shot points at specific saved assets and a specific backpack state instead of describing them in words.

Before any scene was generated we produced a small character sheet: the same bird at the start of its journey and at the end, with the backpack at its smallest and at its largest. A person reviewed and approved those two images before anything else was made.

Every scene was then generated against that approved sheet, never against the scene before it, which is how characters usually drift. The character description was written once and pasted identically into every scene, and the backpack carried a fixed list of patches with set positions and a count that could only rise.

That turns "is this the same bird" from a judgement call into something that can be checked. One shot is deliberately framed close enough that the patches can be counted on screen.

Stage 04

Approved frames

The approved character images travel with every shot as the first reference, alongside the other birds in that scene. Each reference is given a defined job, so that one image controls a character's shape and colour and nothing else. That holds the character steady without repainting the rest of the frame.

Composition and camera are set separately, in the scene description. We build the framing as a still image, approve it, and only then animate it. The animation instruction covers movement alone, because the look is already fixed in the approved frame.

Where a shot has to land a specific change between its start and its end, a closing frame is made and approved the same way. For the close up in shot six, the two frames are a wide open eye and a narrowed one. For shot three, the opening frame has two birds on the branch and the closing frame has one, which is how the departure is guaranteed to happen inside the shot.

Stage 05

Motion generation

Motion was generated with Seedance 2.0, which returns five, ten and fifteen second clips natively. Every ten second shot is a single generation, with nothing stitched together or extended afterwards.

Three approaches were used, depending on what the shot demanded. Straightforward shots were generated from a single image. Shots needing a specific change between the start and the end were generated from an opening and a closing frame, so both states were fixed before generation began. The demanding camera moves were rigged in 3D first and passed to the model along with a style transferred environment and character, which is the method described in the next section.

Where the story allowed it, a shot opens on the frame the previous shot closed on. This keeps the sequence continuous across cuts.

We kept camera movement limited. The four rejection shots are near static, shot one is a tracking move with three separate depth planes, and shot eight uses a low camera at grass level. Complex camera moves are where these models produce the most visible errors, so the camera plan was written with that in mind.

Stage 06

Continuity check

Before a shot was accepted we checked six things: that the bird matches the earlier shots, that the backpack has only grown, that no patch has disappeared, that the branch is the same branch, that the four other birds stay visually distinct from the lead, and that the final backpack matches the lead's in size and patch density.

Shots that failed a check were generated again rather than corrected in the edit. Correcting a shot in compositing hides the error in that shot but leaves the underlying asset wrong for every later shot that uses it.

The check is a written list, applied in the same order to every shot.

Stage 07

Assembly

Approved shots were assembled in order, with the colour grade moving from warm to cool across shots four to six. The Indian Sign Language bookends were added at this stage, one before the first shot and one after the last. Sound was added at the end.

03

Building the camera move in 3D first

Camera movement is the least reliable thing to ask a video model for. For shots where the camera moves, we built the move first and used it to drive the generation.

A rough 3D animation was written in three.js using Claude Code. The terrain is untextured grey mesh and the character is a plain coloured capsule. None of it is meant to be seen. It exists to fix the camera path, the trajectory, the timing, the depth and the parallax.

One frame of that clip was then restyled into the target look with an image model, which became the environment reference. The character was generated separately against a white background.

The 3D clip and the two reference images went into Seedance 2.0 together, with an instruction to take only motion from the clip and all appearance from the images. The capsule is replaced by the character, the grey terrain is replaced by the styled environment, and occlusion is recalculated against the new scene so the character passes behind the right things.

The camera move in the finished shot is the one that was authored in code. The same 3D pass can drive any of the visual styles.

The 3D pass: untextured geometry with a simple shape standing in for the character
Input 01

The 3D pass

Untextured geometry with a simple shape standing in for the character. Carries the camera path, timing and depth, and nothing else.

The environment reference: sky and clouds in the finished visual style
Input 02

Environment reference

A single frame of the 3D pass restyled into the target look. This defines how the whole world will appear.

The character reference, drawn on a plain white background
Input 03

Character reference

The character generated on a white background so it can be substituted for the capsule.

The finished shot, with the character and environment fully replaced
Output

The finished shot

Same camera move, same timing, same depth ordering, with every visible element replaced.

04

What each shot required from the model

The shots were chosen partly for what they demand technically. Listed below is what each one required, rather than what happens in it.

Animated excerpt from shot: arrival
S15 sec

A tracking move with three depth planes

The camera tracks alongside the bird while clouds, bird and treeline all move at different rates. This requires a sustained wing cycle and clear separation between the three planes. Models often flatten the planes into a single move.

Animated excerpt from shot: cold shoulder
S210 sec

One character moving, one completely still

The lead bird speaks and then stops. The orange bird does not move at all for the full ten seconds. Holding one character motionless while another animates is harder to achieve than animating both.

Animated excerpt from shot: offering
S310 sec

A character leaves and the frame stays empty

The lilac bird exits at the midpoint and the remaining seconds hold on the empty branch. The model has to produce the exit at the right moment and then leave the vacated space alone for the rest of the shot.

Animated excerpt from shot: group leaves
S410 sec

Six characters in frame, then a group exit

Five birds lift off together while the lead stays in position. This shot has the highest character count in the film. The two risks are the five birds blending into each other and the lead being carried into the group movement.

Animated excerpt from shot: empty branch
S55 sec

Almost no movement, with a colour temperature change

A bare branch, a hunched bird, one feather and one leaf falling. Five seconds have to be carried by two small moving elements without the model adding any others.

Animated excerpt from shot: it lands
S65 sec

A readable expression change in close up

The eye starts wide and ends narrowed, with the brow lowered and the head turned away. This is the clearest test of first frame to last frame control, and it depends on the visual style holding a legible expression at close range.

Animated excerpt from shot: turned back
S710 sec

A character whose face is never shown

The dark bird keeps its back to camera for the full ten seconds. Models tend to turn faces toward the camera, so the constraint had to be set in both keyframes and checked in the output.

Animated excerpt from shot: grounded
S810 sec

A prop larger than the character

The backpack is now bigger than the bird, which drags it across the ground. The posture has to show effort. Without it the backpack appears to travel alongside the bird rather than be pulled by it.

Animated excerpt from shot: someone sits down
S910 sec

A reveal with no cut and no camera move

A second bird sits down and its backpack becomes visible within the same static frame. Both backpacks have to match in size and patch density, which makes this the strictest continuity check in the film.

05

Producing the same film three more times

The same story and the same structure, produced in four different visual styles.

Reused without change: the story document, the shot durations, the beat structure, the camera notes, the backpack specification and the six continuity rules.

Produced again for each film: the master style frame, the character references derived from it, the keyframes and the motion generations.

Each film was generated from scratch rather than restyled. Every variant begins from its own style references and from those we generate a new master style frame, a new character sheet and a new set of keyframes. No image was carried from one film into another, and nothing was passed through a filter or a look up table.

A restyle pass leaves the original film's lighting and drawing underneath, and it shows. Generating fresh means each register is lit and composed on its own terms. What carries across between the films is the written layer, not the pixels.

The first film took about 45 minutes from character sheet to finished cut. The second and third took roughly 80 minutes each including review pauses, so the later films were not materially faster. The saving sits upstream: the story, the shot structure and the continuity rules were written once and never revisited, and that is usually the slowest part of the work. Once that layer is settled, a new visual treatment of the same film is a one to two hour production.

Storybook line and wash style, frame oneStorybook line and wash style, frame two
Film 01, reference cut, 75 sec

Storybook line and wash

Hand drawn ink outlines over crayon and pencil texture, in a muted palette of midnight blue sky, violet clouds and olive green foliage. The pipeline was built against this version, and it carries the full structure end to end.

Wool felt stop-motion style, frame oneWool felt stop-motion style, frame two
Film 02, 72 sec

Wool felt stop-motion

Wool textures and stitched surfaces, made to look like needle felted models photographed one frame at a time. The backpack reads as a physical object with weight, which suits a story about something being carried.

'90s anime style, frame one'90s anime style, frame two
Film 03, 45 sec

'90s anime

Cel animation in the register of 1990s Japanese television animation, with a limited palette and hard shadow shapes.

Crayon style, frame oneCrayon style, frame two
Film 04, 65 sec

Crayon

Soft crayon and chalk textures over heavy paper grain, in a pale blue led palette with rounded, simplified shapes. Framed wider than the other three, so these two frames are cropped from a wider original.

A further style, three clips

Pixel Art

A fifth treatment was produced as three clips of five seconds each rather than a full film. They sit at the end of the piece, before the closing sign language segment.

Pixel art style, first clip Pixel art style, second clip Pixel art style, third clip
06

What the models cannot do on their own

Current video models produce individual clips well. Producing a sequence of clips that belong to the same film means working around three specific limitations.

Limitation 01

No memory between generations

Each shot is generated independently. The model holds no record of what it produced for the previous shot, so the character changes between shots. The colour shifts, the eye changes shape, the proportions move. Across a whole film this gives you a set of similar birds rather than one bird appearing in every shot.

How we worked around itWe generated every shot from fixed reference images rather than from written descriptions, so the character was supplied to the model as an input.
Limitation 02

Prompts do not control timing

A written instruction such as "the bird's expression falls over five seconds" produces a plausible result but not a specific one. Emotional beats in a film need to happen at a particular moment in a shot, and text prompts do not give that level of timing control.

How we worked around itFor the shots that needed it, we supplied the opening frame and the closing frame and had the model generate only the movement between them.
Limitation 03

Models add movement that was not asked for

These models are trained to produce movement and to fill the frame. A character that needs to stay still for ten seconds will usually be given small movements anyway, and an area of frame left deliberately empty will often be filled with something.

How we worked around itWe kept both keyframes nearly identical on the static shots, and rejected generations where the model introduced movement of its own.

Better prompt writing does not resolve any of these. The control comes from the fixed assets, the keyframes and the review step described in the next section.

07

The three techniques doing most of the work

These are the parts of the method that transfer to any content we produce this way.

Reference images in place of written descriptions

A written description of a character is interpreted again on every generation, which is why the character drifts between shots. A reference image is not reinterpreted in the same way. Once the cast exists as saved images, consistency becomes something we supply to the model rather than something we check for afterwards.

We applied the same approach to the backpack. Because it changes across the film, we versioned it state by state, so each change was authored by us rather than produced by the model.

First frame to last frame generation

This is the most useful capability in the current toolset for narrative work. Supplying both endpoints turns a direction into a fixed constraint. Rather than asking for an expression to change over five seconds, we supply the expression at the start of the shot and the expression at the end of it, and the model produces the transition.

It also allows shots to be chained, because the closing frame of one shot can be used as the opening frame of the next.

A written check rather than model judgement

The continuity check is six rules applied to every shot before it is accepted. It is done manually, and it asks only whether each rule is met, with no judgement about whether the shot looks good.

We use the same approach in our learning products, where scoring has to be deterministic and auditable. Define what a correct output looks like in advance, then check the output against that definition, rather than asking a model to assess its own work.

08

Why we work this way

We use the same pipeline for our production work.

en2 produces learning and communication material for public systems, across many languages and for audiences that are usually reached last. Video is expensive to produce and more expensive to localise, which is why most public programmes have very little of it.

Consistency across a full film

The methods described here keep a character, a setting and a prop consistent across multiple separately generated shots, which is what narrative work requires and what generative video does not provide by default.

Producing variants cheaply

One story document produced four finished films. The same method allows a single message to be produced for different regions, age groups or cultural contexts without writing it again from the start.

Output that can be checked

The continuity check is a written list applied identically to every shot, so the reason a shot was accepted or rejected is recorded. We take the same approach to scoring in our learning products.