Creator How-To (Image-to-Video & Control) ·
Image‑to‑Video “Wrong Parts Move”: The 7‑Step Motion‑Mask Prompt Workflow for Veo3Gen (Borrowed From Luma Creator Pain) (as of 2026‑06‑11)
Fix image-to-video “wrong parts move” with a 7-step motion-mask prompt workflow for Veo3Gen: anchor, allowlist, physicality, budget, camera, region priority, it
On this page
- Image‑to‑Video “Wrong Parts Move”: The 7‑Step Motion‑Mask Prompt Workflow for Veo3Gen (Borrowed From Luma Creator Pain)
- Why “the wrong parts move” happens in image‑to‑video (and why it’s not just a bad prompt)
- Subject motion vs camera motion (the confusion that makes everything worse)
- Step 1: Write an Anchor Statement (what must stay identical to the input image)
- Step 2: Define a Motion Allowlist (3–5 items that may move) + a Motion Denylist (written positively)
- Motion Allowlist
- Motion Denylist (positive-only rewrite)
- Step 3: Add a Physicality Clause (what forces cause the motion, what stays rigid)
- Step 4: Set a Motion Budget (micro / medium / big) so the model doesn’t invent drama
- Step 5: Camera Discipline: lock the camera before you tune motion
- Step 6: The “Region Priority” sentence (foreground vs background vs accessories)
- Explicit example: make the car/environment move while the person stays stable
- Step 7: Iterate with 3 targeted rewrites (don’t rewrite the whole scene)
- Copy‑paste prompt templates (3 scenarios)
- Template 1: Person-in-car (environment moves, person stable)
- Template 2: Product-on-table (product stable, small lifestyle motion)
- Template 3: Building-street scene (architecture rigid, city life moves)
- Quick checklist: diagnose in 60 seconds
- FAQ
- What does “positive-only” actually mean for motion control?
- Why not just add a big negative prompt like “no warping, no distortion”?
- How many moving elements should I allow?
- My subject is stable, but the shot still feels “alive.” What should I tweak?
- Related reading
- CTA: Put this workflow into production with Veo3Gen
- Sources
Image‑to‑Video “Wrong Parts Move”: The 7‑Step Motion‑Mask Prompt Workflow for Veo3Gen (Borrowed From Luma Creator Pain)
If you’ve tried image‑to‑video and got the exact opposite of what you wanted—the face/hair “wiggles” while the car, product, or building stays frozen—you’re not alone. This is a common creator pain point across tools, and it’s rarely solved by “just add more words.”
Instead, you need a motion-mask mindset: declare what is the anchor, explicitly allow a small set of motion, and describe motion as something caused by physics—all while keeping your phrasing positive.
This workflow is inspired by Luma’s own guidance that positive-only prompting is recommended for optimal results (https://lumaai-help.freshdesk.com/support/solutions/articles/151000219614-understanding-prompting-for-dream-machine-positive-vs-negative) and that negative prompting can backfire by increasing the chance of unwanted elements (https://lumaai-help.freshdesk.com/support/solutions/articles/151000219614-understanding-prompting-for-dream-machine-positive-vs-negative). We’ll apply that same idea to Veo3Gen image‑to‑video prompts.
Why “the wrong parts move” happens in image‑to‑video (and why it’s not just a bad prompt)
Image‑to‑video models are trying to “explain” your still image as a moving world. When motion intent is unclear, the model often chooses the easiest place to invent movement:
- Faces, hair, fabric: lots of texture and small shapes—easy to animate without breaking the scene.
- Large rigid objects (cars, buildings, products): harder to move convincingly without changing geometry.
There’s a second trap that looks like subject motion but isn’t:
Subject motion vs camera motion (the confusion that makes everything worse)
A small camera move (push‑in, pan, handheld shake) can make it look like the subject is warping—especially faces—because the model is juggling perspective, identity, and motion at once.
So when you’re debugging “wrong parts move,” treat camera motion as a separate variable. Lock it first, then tune subject motion.
Step 1: Write an Anchor Statement (what must stay identical to the input image)
Your anchor statement is a single sentence that tells Veo3Gen what should remain stable—identity, geometry, and key details.
Anchor examples (positive-only):
- “The person’s face remains stable and unchanged, with the same identity and proportions as the input image.”
- “The car body stays rigid with fixed shape and consistent paint reflections.”
- “The building facade remains rigid and straight; windows and edges stay aligned.”
Keep it declarative. No drama. The job is to reduce degrees of freedom.
Step 2: Define a Motion Allowlist (3–5 items that may move) + a Motion Denylist (written positively)
You want motion, just in the right places. Make that explicit.
Motion Allowlist
Pick 3–5 motion items. More than that and the model may “spread” motion into the wrong regions.
Examples:
- “Allowed motion: wheels rotate; road scenery moves past; light flickers on dashboard; subtle suspension bounce.”
- “Allowed motion: background crowd walks; flags flutter; gentle rain falls.”
Motion Denylist (positive-only rewrite)
Luma defines negative prompting as telling the AI what to exclude (https://lumaai-help.freshdesk.com/support/solutions/articles/151000219614-understanding-prompting-for-dream-machine-positive-vs-negative), and also warns it can be counterproductive because the model may introduce elements and then attempt to remove them (https://lumaai-help.freshdesk.com/support/solutions/articles/151000219614-understanding-prompting-for-dream-machine-positive-vs-negative). That’s why we avoid “don’t.”
Instead of: “Don’t warp the face.”
Use: “Face remains stable and unchanged; no expression change; no feature drift.”
This mirrors Luma’s own “negative → positive” translation style (e.g., describing an empty room rather than “do not add people”) (https://lumaai-help.freshdesk.com/support/solutions/articles/151000219614-understanding-prompting-for-dream-machine-positive-vs-negative).
Step 3: Add a Physicality Clause (what forces cause the motion, what stays rigid)
When motion reads “AI-ish,” it’s often because nothing is causing it. Add a short clause that explains why movement happens.
- “Motion is caused by the car accelerating smoothly; rigid parts stay rigid; flexible parts respond naturally to airflow.”
- “Motion is caused by a light breeze; only loose hair tips and fabric edges flutter slightly; the head remains steady.”
This is also aligned with the general advice to describe what you want in natural, detailed language (https://lumalabs.ai/learning-hub/best-practices).
Step 4: Set a Motion Budget (micro / medium / big) so the model doesn’t invent drama
A motion budget is a simple throttle. It prevents the model from “helping” too much.
- Micro: near-still; tiny secondary motion only.
- Medium: clear motion; still controlled.
- Big: dramatic motion; high risk of warping.
Add a line like:
- “Motion budget: micro (subtle movement only; no dramatic changes).”
Step 5: Camera Discipline: lock the camera before you tune motion
Before you tweak anything else, remove camera ambiguity.
Start with:
- “Camera: locked-off tripod shot.”
Later, if you want movement, reintroduce it carefully:
- “Camera: slow dolly forward, stable; no handheld shake.”
Remember: camera motion can masquerade as “wrong parts moving,” so isolate it early.
Step 6: The “Region Priority” sentence (foreground vs background vs accessories)
This is the closest thing to a “motion mask” you can do in pure text: a priority order.
Use one sentence:
- “Region priority: (1) face and torso remain stable; (2) car body remains rigid; (3) wheels and road motion are primary; (4) background parallax is secondary.”
This is especially powerful when your goal is animate environment, keep subject stable.
Explicit example: make the car/environment move while the person stays stable
If your input image is a person sitting in a car and you want driving motion without face wobble:
- Anchor: “Driver’s face remains stable and unchanged; no expression change.”
- Allowlist: “Wheels rotate; scenery moves past; dashboard lights subtly flicker.”
- Physicality: “Car moves forward smoothly; mild suspension bounce only.”
- Budget: “Micro-to-medium.”
- Region priority: “Face stability first; vehicle rigidity second; environment motion third.”
Step 7: Iterate with 3 targeted rewrites (don’t rewrite the whole scene)
When a generation fails, don’t nuke the prompt. Change one variable at a time.
Here are three micro-iterations you can paste as your next attempt (each changes only one lever):
- Tighten anchor: “Anchor: the subject’s face remains perfectly stable and unchanged across all frames; identical identity and proportions.”
- Reduce budget: “Motion budget: micro. Minimal movement only; calm, near-still shot.”
- Shift region priority: “Region priority: background motion is primary; subject is fully stable; accessories are secondary.”
This style of controlled iteration matches the idea of being specific and adding clear descriptors for more tailored results (https://lumalabs.ai/learning-hub/best-practices).
Copy‑paste prompt templates (3 scenarios)
Each template uses the reusable block: Anchor / Allowlist / Physicality / Budget / Camera / Region Priority.
Template 1: Person-in-car (environment moves, person stable)
Prompt block:
- Anchor: “Driver’s face remains stable and unchanged; no expression change; no feature drift. Head and torso stay steady.”
- Allowlist: “Wheels rotate; road scenery moves past the windows; subtle dashboard light flicker; gentle reflections slide across the windshield.”
- Physicality: “Motion is caused by smooth forward driving; rigid car body stays rigid; subtle suspension bounce only.”
- Budget: “Motion budget: medium (controlled, realistic).”
- Camera: “Camera locked to the car interior; stable; no handheld shake.”
- Region Priority: “1) face stability, 2) torso stability, 3) car body rigidity, 4) environment parallax through windows.”
Template 2: Product-on-table (product stable, small lifestyle motion)
- Anchor: “Product shape, logo, and label remain stable and unchanged; edges stay crisp; proportions fixed.”
- Allowlist: “Soft light shift across the surface; faint steam curl (if relevant); subtle hand enters briefly and gently adjusts the product.”
- Physicality: “Motion is caused by a gentle hand touch and ambient airflow; rigid packaging stays rigid.”
- Budget: “Motion budget: micro.”
- Camera: “Locked-off tabletop shot; no zoom; no pan.”
- Region Priority: “1) product stability, 2) label readability, 3) small secondary motion in background.”
Template 3: Building-street scene (architecture rigid, city life moves)
- Anchor: “Building geometry remains rigid and straight; windows, edges, and signage stay aligned and consistent.”
- Allowlist: “Cars pass in the street; pedestrians walk; tree leaves flutter slightly; light reflections move on windows.”
- Physicality: “Motion is caused by normal street traffic and a light breeze; rigid structures stay rigid.”
- Budget: “Motion budget: medium.”
- Camera: “Tripod shot from sidewalk; stable; no handheld shake.”
- Region Priority: “1) building rigidity, 2) street traffic motion, 3) pedestrians, 4) foliage.”
Quick checklist: diagnose in 60 seconds
- Frozen main subject: Did you forget an allowlist for what should move?
- Drifting identity: Is your anchor statement explicit about “stable and unchanged” identity?
- Rubber faces: Is camera motion locked, and is face region priority #1?
- Background warp: Did you state “building geometry remains rigid and straight” (or equivalent)?
- Too much chaos: Did you set a motion budget (micro/medium/big)?
FAQ
What does “positive-only” actually mean for motion control?
It means you describe the desired outcome (stable face, rigid geometry, calm motion) rather than telling the model what to avoid. Luma explicitly recommends positive-only prompting for optimal results (https://lumaai-help.freshdesk.com/support/solutions/articles/151000219614-understanding-prompting-for-dream-machine-positive-vs-negative).
Why not just add a big negative prompt like “no warping, no distortion”?
Negative prompting is defined as instructing the AI to exclude elements (https://lumaai-help.freshdesk.com/support/solutions/articles/151000219614-understanding-prompting-for-dream-machine-positive-vs-negative), and Luma notes it can be counterproductive and increase the likelihood of unwanted elements (https://lumaai-help.freshdesk.com/support/solutions/articles/151000219614-understanding-prompting-for-dream-machine-positive-vs-negative). The safer pattern is to rewrite exclusions as positive constraints.
How many moving elements should I allow?
Usually 3–5. A small allowlist helps concentrate motion where you actually want it.
My subject is stable, but the shot still feels “alive.” What should I tweak?
Increase motion in the environment (parallax outside windows, subtle lighting shifts) while keeping the motion budget micro-to-medium and the camera locked.
Related reading
CTA: Put this workflow into production with Veo3Gen
If you’re ready to operationalize these prompt blocks (and iterate quickly), explore the Veo3Gen API docs at /api and compare plans at /pricing. Use the workflow above as your default template, then adjust only one lever per iteration to improve your odds—without turning your prompt into a novel.
Sources
- https://www.reddit.com/r/lumalabsai/comments/1djv03d/how_to_convince_luma_dream_machine_to_use_an
- https://lumaai-help.freshdesk.com/support/solutions/articles/151000219614-understanding-prompting-for-dream-machine-positive-vs-negative
- https://lumalabs.ai/learning-hub/best-practices
- https://www.lummi.ai/blog/luma-labs-dream-machine
Try Veo 3 & Veo 3 API for Free
Experience cinematic AI video generation at the industry's lowest price point. No credit card required to start.