Camera control for AI video
Video models will happily give you a low angle. They will not give you the same low angle twice. Here is why the prompt keeps drifting, and what to do about it.
The part nobody warns you about
A prompt describes a camera in words, and words have no units. "Low angle, close on her face, slow push in" is four decisions with no numbers attached: how low, how close, what focal length, how far the push travels. The model picks values you never specified, and it picks different ones on the next run.
That is fine for a single hero shot. It falls apart the moment you need two shots to belong to the same scene. Cut between two takes that each invented their own lens and eyeline and the geometry does not agree — the room changes shape across the cut, and the audience feels it even when they cannot name it.
The usual response is to write a longer prompt. More adjectives, a reference image, a list of shot-type vocabulary. It narrows the spread. It does not close it, because the thing being specified was never language in the first place.
What the models actually take
The current generation of video models accepts camera intent through some mix of three channels, and it is worth knowing which one you are using:
Words
Shot-type vocabulary in the prompt — wide, medium, close, dolly, crane, 35mm. Universally supported, and the loosest. The model interprets; you do not specify.
A first frame
An image the generation starts from. This pins composition hard, because framing, lens compression and eyeline are already baked into the pixels. It is the highest leverage input most people underuse.
A path or reference clip
Some models take an explicit camera path, or a video whose motion is transferred onto a new scene. Strongest control, narrowest support, and it needs the move to exist somewhere before you can hand it over.
Block the shot, then generate
Film production solved this before any of these models existed, and the answer was previs: build the scene rough in 3D, put a camera in it, and settle the shot while it is still cheap to change. The blocking is the specification. Everything downstream inherits it.
The same move works here. Put the geometry somewhere real first — a boxed-out set, a character on a path, a camera with an actual position and an actual focal length — and the questions the prompt was leaving open are already answered. You are no longer asking for a low angle. You have one, and you can hand over the frame it produces.
Three things change once the camera lives in a scene instead of a sentence:
Shots agree with each other
Two angles on one blocked set share a floor plan, so a cut between them holds. Two prompts do not share anything.
The move is reproducible
A dolly you drew is the same dolly tomorrow. Regenerate, change the subject, keep the camera. Nothing about that survives a reroll of a text prompt.
You fail cheaply
Finding out the angle was wrong costs a drag in a viewport, not a paid generation and the wait attached to it.
Doing it in the browser
CozyClay is the previs half of that loop, built to be opened rather than installed. Block a set out of primitives, drop a character and draw the path they walk, place the camera and set its lens, cut between shots on a timeline, and scrub until the timing is right. Then take those frames and those camera moves to whichever model you are generating with.
Left of the wipe is the generated result. Right of it is the blocking that produced the camera.
Free and open source. Runs locally with npx cozyclay.
FAQ
Why does my camera angle change between takes?
Because the prompt never fixed it. Words like "low angle" or "close up" carry no height, distance or focal length, so the model fills those in and fills them in differently on each run. Pinning composition needs something with numbers behind it — a starting frame, or a camera that exists in a scene.
Do camera movement prompts work at all?
They work as a nudge. "Slow dolly in" reliably gets you a push rather than a pan. What it will not do is get you the same push twice, or a push that matches the one in the shot you are cutting to. Use the vocabulary, but do not expect it to carry continuity.
What is the highest-leverage thing I can control?
The first frame. Composition, lens compression and eyeline are all decided the moment that image exists, and the generation inherits them instead of guessing. This is exactly what blocking a shot in 3D gives you.
Do I need Blender or Unreal to block a shot?
No. Both will do it, and both ask you to learn a full DCC to move one camera. CozyClay does the blocking part in a browser tab with Unity-style controls — see what it does.