{"course":{"slug":"ai-video","title":"Video with AI","url":"https://addaly.com/learn/ai-video","level":"intermediate","track":"create"},"lesson":{"slug":"depth-parallax-and-fake-moves","title":"A camera move with no video model at all","url":"https://addaly.com/learn/ai-video/depth-parallax-and-fake-moves","position":17,"of":66,"minutes":9,"answer":"A depth map plus a 2.5D projection gives a camera move on a still image with perfect consistency and zero generation cost, which beats a generated clip outright whenever the subject must stay exactly itself.","keyIdea":"A depth map plus a 2.5D projection gives a camera move on a still image with perfect consistency and zero generation cost, which beats a generated clip outright whenever the subject must stay exactly itself."},"body":{"format":"markdown","text":"## The technique nobody mentions\n\nYou can move a camera through a photograph without generating any video.\n\nEstimate a depth map for the image, project the pixels onto that depth as a surface, then move a virtual camera. Near things shift more than far things, which is parallax, and parallax is most of what reads as a camera move.\n\n> Figure: A camera move with no video model in it. Steps: 1. Estimate depth (Depth Anything, MiDaS or Marigold, free in a browser through a Hugging Face Space. What comes back is a greyscale image: bright is near and dark is far, or the reverse. Check which.); 2. Project onto the depth (The photograph becomes a surface in three dimensions. Blender, Resolve's Fusion page, or four hand-cut layers in Photopea all do this, in descending order of effort and quality.); 3. Move a virtual camera (Near things shift more than far things, and that parallax is most of what an audience reads as a camera move. The subject cannot change, because nothing about it is being re-sampled.); 4. Watch the disoccluded edges (Behind a shoulder the photograph recorded nothing, so the nearest pixels stretch across the gap. A push-in of ten to twenty per cent is invisible; much beyond that is visibly rubbery.). Deterministic, free, and strictly better than generation whenever the subject has to stay exactly itself, because it is the original pixels. What it cannot do is move the world: for a person walking or cloth blowing you still need a generation.\n\nThis has been standard in documentary and motion graphics for years. It is not a compromise or a poor substitute. For a large class of shots it is strictly better than generation, because:\n\n- **The subject cannot change.** It is the original pixels. A face stays exactly that face, a logo stays exactly that logo, a product stays exactly that product. No drift, no morph, no re-sampling.\n- **It costs nothing.** No per-second meter.\n- **It is deterministic.** Same input, same output, every time.\n- **It works on archival material.** A photograph from 1950 cannot be re-shot and should not be re-generated. It can be moved through.\n\n## How to get the depth map\n\nMonocular depth estimation (guessing depth from a single image) got very good very quickly. The models to know:\n\n- **Depth Anything** (v2 and later) is the current practical default: fast, free, strong on ordinary photographs.\n- **MiDaS** is older, still fine, and runs on almost anything.\n- **Marigold** is slower and more precise on fine structure.\n\nAll are available as Hugging Face Spaces: upload an image in a browser, download a depth map, no install, works on a phone. They are also ComfyUI nodes if you run things locally.\n\nWhat comes back is a greyscale image: bright is near, dark is far, or the reverse depending on convention. Check which.\n\n## Building the move\n\nThree routes, all free.\n\n**Blender.** Import the image as a plane, subdivide it heavily, apply the depth map as a displacement, and animate a camera. Full 3D control, the best-looking result, and the steepest learning curve. Blender is free and open and runs on modest hardware for this kind of work.\n\n**A node compositor.** DaVinci Resolve's Fusion page, free tier, has 3D nodes: an image plane, a camera, and a displacement driven by the depth map. If you already have Resolve for editing, this costs no new software.\n\n**Layered cards, the crude version.** Cut the image into three or four depth layers by hand in Photopea or GIMP (foreground, subject, mid, background) paint in what is behind each layer, then animate them at different speeds in any editor that allows keyframed position and scale. Kdenlive and Shotcut do this. It is how the effect was done before depth models existed and it still works.\n\n## Where it breaks, and why\n\nOne honest limitation and it is fundamental.\n\nWhen the camera moves, previously hidden areas come into view: **disocclusion**. Behind a person's shoulder there is nothing, because the photograph never recorded it. The projection stretches the nearest pixels across the gap, which produces a smeared, rubbery edge around foreground objects.\n\nThis sets the technique's range: small moves look perfect, large moves fall apart. As a rough guide, a push-in of ten to twenty per cent or a lateral drift of a few per cent of frame width is invisible. Beyond that the stretching shows.\n\nTwo mitigations. Paint behind the foreground object in the editor before projecting, so the gap has content to reveal: this is exactly what the layered-cards method does and why it looks better than a naive depth projection. Or use an inpainting pass to fill the hidden regions, which is the same idea automated.\n\n## When to choose this over generation\n\nA decision rule you can apply on a shot list:\n\n- **Use parallax** when the subject is specific and must not change, when the move is small, when the source is a photograph you cannot reshoot, or when there is no budget.\n- **Use generation** when things need to move (a person walking, water flowing, cloth blowing, a crowd) because parallax moves the camera, not the world.\n\nMany finished pieces mix both, and nobody watching can tell which shots were which. A title sequence of six archival photographs with slow parallax, cut against two generated establishing shots, is a completely normal and completely honest way to work.\n\n---\n\nToday: run one photograph through a Depth Anything Space, then build a five per cent push-in from it in whatever tool you already have. Compare the result against a generated clip of the same image."},"check":{"question":"A depth-projected push-in on a portrait looks clean at ten per cent but develops a rubbery smear around the subject's shoulder at forty per cent. What is happening?","options":[{"text":"The depth map's precision falls off in the mid-tones, so larger moves expose quantisation steps in the estimated distances.","correct":false,"tempting":"Names a real depth-map weakness that produces banding and terracing rather than the directional stretching described."},{"text":"The camera has moved far enough to reveal regions the photograph never recorded, so the projection stretches nearby pixels across the gap.","correct":true},{"text":"The subdivision of the projection surface is too coarse for displacements of that size, and increasing the mesh density would remove the artefact entirely.","correct":false,"tempting":"Mesh density affects smoothness of the surface but cannot supply pixels for an area that was never photographed."},{"text":"Monocular depth estimation is relative rather than metric, so a large camera translation applies an incorrect scale to the near-field displacement.","correct":false,"tempting":"True about relative depth and irrelevant here; rescaling the displacement changes the amount of parallax, not the missing information behind the shoulder."}]},"prev":{"slug":"start-and-end-frames","title":"Deciding where the shot lands","url":"https://addaly.com/learn/ai-video/start-and-end-frames"},"next":{"slug":"reading-a-still-for-failure","title":"Predicting which second will break","url":"https://addaly.com/learn/ai-video/reading-a-still-for-failure"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'A camera move with no video model at all', in Video with AI. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/ai-video/depth-parallax-and-fake-moves (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"A camera move with no video model at all","courseTitle":"Video with AI","module":{"index":2,"slug":"the-first-frame","title":"The first frame, and everything decided in it"},"answer":null,"keyIdea":"A depth map plus a 2.5D projection gives a camera move on a still image with perfect consistency and zero generation cost, which beats a generated clip outright whenever the subject must stay exactly itself.","hero":{"kind":"figure","figure":{"t":"figure","label":"Figure","figure":{"type":"flow","steps":[{"label":"Estimate depth","detail":"Depth Anything, MiDaS or Marigold, free in a browser through a Hugging Face Space. What comes back is a greyscale image: bright is near and dark is far, or the reverse. Check which."},{"label":"Project onto the depth","detail":"The photograph becomes a surface in three dimensions. Blender, Resolve’s Fusion page, or four hand-cut layers in Photopea all do this, in descending order of effort and quality."},{"label":"Move a virtual camera","detail":"Near things shift more than far things, and that parallax is most of what an audience reads as a camera move. The subject cannot change, because nothing about it is being re-sampled."},{"label":"Watch the disoccluded edges","detail":"Behind a shoulder the photograph recorded nothing, so the nearest pixels stretch across the gap. A push-in of ten to twenty per cent is invisible; much beyond that is visibly rubbery."}],"title":"A camera move with no video model in it","caption":"Deterministic, free, and strictly better than generation whenever the subject has to stay exactly itself, because it is the original pixels. What it cannot do is move the world: for a person walking or cloth blowing you still need a generation."},"alt":"Figure: A camera move with no video model in it. Steps: 1. Estimate depth (Depth Anything, MiDaS or Marigold, free in a browser through a Hugging Face Space. What comes back is a greyscale image: bright is near and dark is far, or the reverse. Check which.); 2. Project onto the depth (The photograph becomes a surface in three dimensions. Blender, Resolve’s Fusion page, or four hand-cut layers in Photopea all do this, in descending order of effort and quality.); 3. Move a virtual camera (Near things shift more than far things, and that parallax is most of what an audience reads as a camera move. The subject cannot change, because nothing about it is being re-sampled.); 4. Watch the disoccluded edges (Behind a shoulder the photograph recorded nothing, so the nearest pixels stretch across the gap. A push-in of ten to twenty per cent is invisible; much beyond that is visibly rubbery.). Deterministic, free, and strictly better than generation whenever the subject has to stay exactly itself, because it is the original pixels. What it cannot do is move the world: for a person walking or cloth blowing you still need a generation."}},"blocks":[{"t":"h2","id":"the-technique-nobody-mentions","runs":[{"text":"The technique nobody mentions"}]},{"t":"p","runs":[{"text":"You can move a camera through a photograph without generating any video."}]},{"t":"p","runs":[{"text":"Estimate a depth map for the image, project the pixels onto that depth as a surface, then move a virtual camera. Near things shift more than far things, which is parallax, and parallax is most of what reads as a camera move."}]},{"t":"p","runs":[{"text":"This has been standard in documentary and motion graphics for years. It is not a compromise or a poor substitute. For a large class of shots it is strictly better than generation, because:"}]},{"t":"ul","items":[[{"text":"The subject cannot change.","b":true},{"text":" It is the original pixels. A face stays exactly that face, a logo stays exactly that logo, a product stays exactly that product. No drift, no morph, no re-sampling."}],[{"text":"It costs nothing.","b":true},{"text":" No per-second meter."}],[{"text":"It is deterministic.","b":true},{"text":" Same input, same output, every time."}],[{"text":"It works on archival material.","b":true},{"text":" A photograph from 1950 cannot be re-shot and should not be re-generated. It can be moved through."}]]},{"t":"h2","id":"how-to-get-the-depth-map","runs":[{"text":"How to get the depth map"}]},{"t":"p","runs":[{"text":"Monocular depth estimation (guessing depth from a single image) got very good very quickly. The models to know:"}]},{"t":"ul","items":[[{"text":"Depth Anything","b":true},{"text":" (v2 and later) is the current practical default: fast, free, strong on ordinary photographs."}],[{"text":"MiDaS","b":true},{"text":" is older, still fine, and runs on almost anything."}],[{"text":"Marigold","b":true},{"text":" is slower and more precise on fine structure."}]]},{"t":"p","runs":[{"text":"All are available as Hugging Face Spaces: upload an image in a browser, download a depth map, no install, works on a phone. They are also ComfyUI nodes if you run things locally."}]},{"t":"p","runs":[{"text":"What comes back is a greyscale image: bright is near, dark is far, or the reverse depending on convention. Check which."}]},{"t":"h2","id":"building-the-move","runs":[{"text":"Building the move"}]},{"t":"p","runs":[{"text":"Three routes, all free."}]},{"t":"p","runs":[{"text":"Blender.","b":true},{"text":" Import the image as a plane, subdivide it heavily, apply the depth map as a displacement, and animate a camera. Full 3D control, the best-looking result, and the steepest learning curve. Blender is free and open and runs on modest hardware for this kind of work."}]},{"t":"p","runs":[{"text":"A node compositor.","b":true},{"text":" DaVinci Resolve’s Fusion page, free tier, has 3D nodes: an image plane, a camera, and a displacement driven by the depth map. If you already have Resolve for editing, this costs no new software."}]},{"t":"p","runs":[{"text":"Layered cards, the crude version.","b":true},{"text":" Cut the image into three or four depth layers by hand in Photopea or GIMP (foreground, subject, mid, background) paint in what is behind each layer, then animate them at different speeds in any editor that allows keyframed position and scale. Kdenlive and Shotcut do this. It is how the effect was done before depth models existed and it still works."}]},{"t":"h2","id":"where-it-breaks-and-why","runs":[{"text":"Where it breaks, and why"}]},{"t":"p","runs":[{"text":"One honest limitation and it is fundamental."}]},{"t":"p","runs":[{"text":"When the camera moves, previously hidden areas come into view: "},{"text":"disocclusion","b":true},{"text":". Behind a person’s shoulder there is nothing, because the photograph never recorded it. The projection stretches the nearest pixels across the gap, which produces a smeared, rubbery edge around foreground objects."}]},{"t":"p","runs":[{"text":"This sets the technique’s range: small moves look perfect, large moves fall apart. As a rough guide, a push-in of ten to twenty per cent or a lateral drift of a few per cent of frame width is invisible. Beyond that the stretching shows."}]},{"t":"p","runs":[{"text":"Two mitigations. Paint behind the foreground object in the editor before projecting, so the gap has content to reveal: this is exactly what the layered-cards method does and why it looks better than a naive depth projection. Or use an inpainting pass to fill the hidden regions, which is the same idea automated."}]},{"t":"h2","id":"when-to-choose-this-over-generation","runs":[{"text":"When to choose this over generation"}]},{"t":"p","runs":[{"text":"A decision rule you can apply on a shot list:"}]},{"t":"ul","items":[[{"text":"Use parallax","b":true},{"text":" when the subject is specific and must not change, when the move is small, when the source is a photograph you cannot reshoot, or when there is no budget."}],[{"text":"Use generation","b":true},{"text":" when things need to move (a person walking, water flowing, cloth blowing, a crowd) because parallax moves the camera, not the world."}]]},{"t":"p","runs":[{"text":"Many finished pieces mix both, and nobody watching can tell which shots were which. A title sequence of six archival photographs with slow parallax, cut against two generated establishing shots, is a completely normal and completely honest way to work."}]},{"t":"rule"},{"t":"p","runs":[{"text":"Today: run one photograph through a Depth Anything Space, then build a five per cent push-in from it in whatever tool you already have. Compare the result against a generated clip of the same image."}]}],"check":{"question":[{"text":"A depth-projected push-in on a portrait looks clean at ten per cent but develops a rubbery smear around the subject’s shoulder at forty per cent. What is happening?"}],"options":[{"text":[{"text":"The depth map’s precision falls off in the mid-tones, so larger moves expose quantisation steps in the estimated distances."}],"correct":false,"tempting":[{"text":"Names a real depth-map weakness that produces banding and terracing rather than the directional stretching described."}]},{"text":[{"text":"The camera has moved far enough to reveal regions the photograph never recorded, so the projection stretches nearby pixels across the gap."}],"correct":true,"tempting":null},{"text":[{"text":"The subdivision of the projection surface is too coarse for displacements of that size, and increasing the mesh density would remove the artefact entirely."}],"correct":false,"tempting":[{"text":"Mesh density affects smoothness of the surface but cannot supply pixels for an area that was never photographed."}]},{"text":[{"text":"Monocular depth estimation is relative rather than metric, so a large camera translation applies an incorrect scale to the near-field displacement."}],"correct":false,"tempting":[{"text":"True about relative depth and irrelevant here; rescaling the displacement changes the amount of parallax, not the missing information behind the shoulder."}]}],"order":[3,1,2,0],"why":null},"prev":{"slug":"start-and-end-frames","title":"Deciding where the shot lands","minutes":9},"next":{"slug":"reading-a-still-for-failure","title":"Predicting which second will break","minutes":9}}}