Skip to content
Back to skills

Previs Anchor Keyframes

ASecurity

Generate photoreal anchor keyframes from CG previs for reference-guided video generation (Seedance-class models). Covers previs shading for AI readability, anchor frame selection, bootstrapping action-pose reference sets from a single reference, lighting-accurate prompt language, and validation. Use when converting previs/CG animation to photoreal video, preparing anchor/reference frames for a video model, or when generations ignore CG placement or pose. Triggers on "anchor keyframes", "ancho...

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 3, 2026
ai-agentsbash

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add sideshowroberto/vfx-agent-toolkit --skill previs-anchor-keyframes --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Previs Anchor Keyframes?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Previs Anchor Keyframes
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sideshowroberto-previs-anchor-keyframes/badge)](https://www.skillsdirectory.com/skills/sideshowroberto-previs-anchor-keyframes)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: previs-anchor-keyframes
description: Generate photoreal anchor keyframes from CG previs for reference-guided video generation (Seedance-class models). Covers previs shading for AI readability, anchor frame selection, bootstrapping action-pose reference sets from a single reference, lighting-accurate prompt language, and validation. Use when converting previs/CG animation to photoreal video, preparing anchor/reference frames for a video model, or when generations ignore CG placement or pose. Triggers on "anchor keyframes", "anchor frames", "previs to photoreal video", "reference frames for video gen", "generations not following the CG".
allowed-tools: Read,Write,Bash
---

# Previs Anchor Keyframes

Reference-guided video models (Seedance 2.0 and similar) stay dramatically
closer to a CG previs when you feed them photoreal ANCHOR KEYFRAMES: still
images generated from previs frames at key story beats, supplied as image
references alongside the driving video. This skill is the production recipe
for building anchors that actually match the CG.

The pipeline: previs render (driving video) -> image-model edits of selected
previs frames (anchors) -> video model in reference mode (driving video +
anchors + prompt).

---

## 1. Shade the previs for AI readability

Image and video models follow the CG far better when they can read its form:

- **Wireframe-over-clay shading** on the CG subjects beats flat silhouettes.
  A black or unlit subject only constrains outline - the model invents form,
  orientation and lighting. Wireframe lines communicate topology and pose.
- **Tint the subjects a flat saturated color** (e.g. red) when they risk
  blending into the environment (grey subjects on concrete). Then name that
  color in the prompt: "replace the red CG horse with..." - it gives the
  model an unambiguous edit target.
- Keep the environment photoreal if you have it (projected plate or stills);
  the contrast between "obviously CG subject" and "finished environment"
  focuses the edit.

## 2. Pick anchor frames at event beats

- Anchor at each subject's first CLEAN appearance (fully in frame), plus the
  moments the composition changes (second subject enters, action peaks).
- The shot's first frame works as a no-cost anchor if it is empty of
  subjects: use the raw plate/render directly - it pixel-locks the
  environment.
- **Never anchor on a frame where a subject is partially out of frame.**
  Image models refuse half-objects at frame edges and "complete" them into
  full subjects in the wrong place - repeatedly, regardless of prompt
  language. Slide to the nearest fully-entered frame instead.

## 3. Build an action-pose reference set

The single biggest cause of generations ignoring the CG pose: **reference
images whose pose or orientation contradicts the shot action**. One standing
reference will pull every generation toward standing, even over an obviously
mid-stride CG input.

Fix it by bootstrapping more references with the image model itself:

1. Crop the best correctly-oriented reference you have (e.g. the one
   rear-view image on a character sheet).
2. Generate a pose set from it: "this exact same [subject], photoreal, full
   body, mid-[action] pose seen from [the shot's viewing angle], plain
   neutral grey background, soft even lighting". Make several: direct rear,
   three-quarter rear, a different phase of the motion cycle.
3. Feed the winners (2-3) plus the original crop as references for the
   anchor generations.

Run one **reference-free control** generation early: it shows what the base
model does alone. Expect correct-ish pose but identity drift (generic
subject, wrong markings) - that is the evidence for keeping references.

## 4. Prompt structure for anchor edits

Template (adapt bracketed parts):

    The first image is a film plate of [scene] with [N] [color] wireframe
    low-poly CG [subjects] [doing action]. The other images are references
    of the exact same photoreal [subject] in [action] poses. Replace the
    [color] wireframe CG [subjects] with this photoreal [subject], seen from
    [angle] as they [action], matching each wireframe's exact placement,
    scale, silhouette and mid-[action] pose - do not move them, do not add
    or remove [subjects], do not turn them sideways. Lighting: [describe the
    ACTUAL plate lighting]. Keep everything else in the first image exactly
    unchanged. Photorealistic, seamless integration.

- State the subject COUNT explicitly and per-frame ("there are two...").
  Wrong counts are a common failure, and leftover multi-subject prompt text
  from a previous frame will happily conjure extra subjects.
- **Describe the lighting the plate actually has.** If the ground is in open
  shade lit by bounce, say so and ask for "soft, very diffuse contact
  shadows - no hard-edged cast shadow". Defaulting to "sunny day" language
  makes the model paint fake hard shadows that fight the plate.

## 5. Validate before spending on video

- Check pose, orientation, count, placement against the CG frame.
- Zoom the contact points: feet/wheels grounded, shadow direction sane.
- Expect the anchors' BACKGROUNDS to drift slightly per generation (signage
  text mutates) - anchors are identity/placement guides only; the driving
  video owns the environment. Never let comp reference anchor backgrounds.
- Model choice is empirical per shot: strict-silhouette models track the CG
  literally but may integrate worse; looser models integrate beautifully but
  hallucinate. Generate one benchmark frame on each candidate before
  committing the set.

## 6. Send to the video model

Reference mode: driving video (the previs render) + the anchor stills as
image references + a motion prompt that reuses the anchor language and adds:
"keep the camera motion and the environment exactly as the input video",
plus the subjects' entry order/timing. Run a cheap low-res pass first;
re-run at delivery res only after the look is approved.

Watch for: entry timing vs the CG schedule, footfall/contact sync (retime
tricks apply if the action floats), temporal stability of signage, popping
at frame edges.

## 7. Match the model's aspect ratio (applies to everything above)

Generation models output standard aspects only - 1:1, 3:4, 4:3, 16:9, 9:16.
If your plate/render aspect is non-standard (full-aperture formats often
are, e.g. ~1.46), the model resamples the input to its grid and the whole
background SHIFTS subtly in every output. It looks like model drift; it is
resampling.

- Pick the nearest standard aspect and reformat the INPUT to it before
  generating, fitting by the dimension whose framing must stay locked
  (usually width). In a 2D app, that means letterboxing and cropping the
  bars off afterward. When rendering from a 3D scene, skip the letterbox:
  enlarge the render canvas to the standard aspect with the camera set to
  horizontal sensor fit - horizontal framing stays identical and the extra
  rows are real scene content, which gives the model better context than
  black bars.
- Set the generation tool's aspect parameter to the SAME aspect so input
  and output grids agree.
- Record the crop-back fraction (extra rows / canvas height) at setup time;
  it applies at any generation resolution.

---

## Pitfalls quick list

| Symptom | Cause | Fix |
|---------|-------|-----|
| Subjects standing/static | Standing/wrong-pose references | Bootstrap action-pose ref set (sec. 3) |
| Subject faces wrong way | References face the wrong way | Only use refs matching the shot's viewing angle |
| Half-entered subject becomes full | Frame-edge completion behavior | Do not anchor partial-entry frames |
| Wrong subject count | Count not stated / stale prompt text | State count per frame, rewrite per anchor |
| Hard fake shadows | Generic sunny-day prompt language | Describe the plate's real light; ask for diffuse shadows |
| Generic-looking subject | No/weak identity references | Keep character refs; run ref-free control only as a test |
| Anchors disagree with each other | Independent generations drift | Expected; anchors guide subjects only |
| Background shifts subtly in every output | Input aspect is non-standard | Reformat to the nearest standard aspect first (sec. 7) |

---

## Version History

**v1.1.0** (2026-07-23)
- Added aspect-ratio matching section (sec. 7) + pitfalls row: non-standard
  input aspects cause background shift via resampling

**v1.0.0** (2026-07-23)
- Initial release: production-validated recipe (previs shading, anchor
  selection, reference bootstrapping, lighting-accurate prompting,
  validation, video-model handoff)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.