How it works

Why generated clips drift, and what fixes it

A text-to-image call carries no memory. Ask for "a robotic arm" five times and you get five different arms — each internally plausible, none the same character. Longer prompts do not fix this, because prose cannot specify a face.

Two channels, every clip

Each generation is conditioned on written canon and real image parts.

# the request for clip N STYLE REFERENCE → take lighting, lens and grade only. Not the subject. IDENTITY REFERENCE → same character. Face, build, palette fixed. Pose free. PREVIOUS SHOT → match the world. Do not repeat the composition. WORLD CANON → overcast workshop, soft key camera-left, 35mm… CHARACTER CANON → stocky six-axis arm, matte safety-orange, cyclops lens… MUST NEVER BE → a humanoid robot the instruction for this clip, last

Every reference is role-tagged

This is the part that makes it work rather than produce mush. An untagged pile of reference images invites the model to average them. Naming each one's job — and what it may not contribute — keeps a style plate from leaking its subject into the shot, and keeps the previous frame from being copied wholesale.

The canon is locked

A generated frame never silently becomes the new reference. If clip 40 references clip 39, and 39 referenced 38, drift compounds invisibly until the character has quietly become someone else. References are set deliberately and then frozen.

Products come from photographs

A manufacturer does not want a plausible machine — they want theirs, correct down to the panel layout. Product entities are anchored on the operator's own photographs and marked authoritative: reproduce the geometry, do not redesign it, do not invent labels. This is the axis most tools cannot serve at all.

The pipeline is open source: github.com/hemangjoshi37a/object-talk-pipeline