---
title: Recreating something you saw
description: "Transcribe motion, iterate with absolute targets, distill the constants — and know where the text-only ceiling is."
---

import { DocsVideo } from "/snippets/docs-video.jsx";

[Iterating](/prompting/iterating) covered the correction loop in general. This page is its hardest test: matching a specific reference you watched, rather than a look you're inventing.

From text alone, you can reach roughly 90% of a reference. That takes a specific workflow, and it takes knowing where the ceiling is. Both are below.

<Note>
The percentages on this page are observed results from this guide's own recreation builds, judged frame against frame. Treat them as the shape of the curve, not a guarantee.
</Note>

## Transcribe motion, not just composition

Watch the reference frame by frame. Write down:

- the exact duration
- the camera's path
- what each element does, with timestamps
- how entrances overlap
- which layers are blurred
- sampled colors

A prompt built this way one-shots about 75% of the target. Structure and the motion arc land. Rendering calibration doesn't.

## Iterate with absolute targets

Compare your render against the reference frame by frame. Then correct one axis at a time, freezing everything that already matches.

State each correction as an absolute value, not a relative nudge:

- ❌ `make dots 2x finer`
- ✅ `dot radius = 25% of row spacing`

Relative corrections pendulum — too big, then too small, then too big again. Expect a handful of rounds to converge.

## Distill the converged values back into the prompt

Iteration is a search. The constants it finds are reusable.

A prompt carrying them one-shots ~80–90% of the converged quality on a fresh build. The discrete facts transfer losslessly: timings, counts, hexes, ratios, camera arcs. Continuous qualities still vary by a calibration note or two, like glow prominence or how the framing feels.

The converged composition file itself is the pixel-exact artifact. Renders are deterministic, so re-rendering that file reproduces the result.

Here is a distilled spec that one-shots a broadcast-style animated globe:

<Accordion title="Worked example: the hologram globe (full distilled spec)">
  > 1.8-second 1920x1080 video, Three.js via the adapter (seek-driven, no rAF). One continuous shot. Every element is still moving on the final frame.
  >
  > **FIELD**
  >
  > - blue-violet background, linear #2a24a8 → #12105e top-to-bottom, with a soft radial lift at center
  > - faint blurred vertical cyan light-streaks (#5ee0e8 at ~10% opacity, ~340px spacing) drifting 70px left across the piece
  > - deep corner vignette
  > - soft-light film grain at ~6% (seeded noise)
  >
  > **GLOBE**
  >
  > - royal-blue sphere (#4348f2), lit from upper-left with a 0.58 ambient floor
  > - a broad subtle satin band (#6470ff, very wide falloff, ~30% mix) sweeping the upper curve
  > - a strong cyan rim-light line (#5ee8f0) tracing only the top edge
  > - continents in TWO layers:
  >   - (a) a heavily-blurred darker-blue silhouette (#3439c2, 80% opacity) just under the surface, reading as a soft shadow shape
  >   - (b) a dot-matrix just above the surface on an equal-area grid (0.9° latitude rows, longitude step widening with latitude)
  > - dot radius = 24–28% of row spacing — clear blue gaps between dots — growing slightly toward the equator, 85% dot opacity
  > - two color populations: cyan-aqua #5ee0e8 north, spring-green #7ce97a from latitude ~32° southward, with seeded ±30% per-dot brightness variance
  > - dots dimmed to 40% in the view-space lower-right shadow zone
  > - continents read as distinct dotted landmasses covering ~30–35% of the visible hemisphere, with royal-blue ocean dominating the rest
  >
  > **CAMERA**
  >
  > - open EXTREMELY close: the sphere's curve fills the entire frame, horizon exiting the upper corners
  > - then one continuous pull-back + crane (fov 52°→40°)
  > - end with the dome filling the lower half edge-to-edge, its silhouette touching both frame edges, horizon at ~45%
  > - ease power1.inOut computed over a 2.0s window while rendering 1.8s, so the move never settles on-screen
  > - the globe rotates 28° about its vertical axis, linear, continents drifting right-to-left, never stopping
  >
  > **ORBS** — 12 across three depth planes, world-anchored on the upper hemisphere so stems stay vertical
  >
  > - popping at staggered starts 0.45s→1.15s (0.06–0.13s apart)
  > - each rising 0.44–0.56s with back.out overshoot (vary 1.7–2.6 per orb), then bobbing ±8px on phase-offset sines forever
  > - **5 midground** (~90–110px at end framing): soft mint body #a7ecc4, a darker-green under-shade #3f9b5e at lower-left, a pale rim #d6ffe8 top-right, no white core
  >   - each wrapped in a soft additive bloom sprite ~3.5x its diameter, whose texture is HOLLOW-centered, peaking ~35% just outside the orb edge. A bright-cored additive glow over the opaque orb blows the mint to lime.
  >   - plus a thin soft halo ring ~4.2x radius at 60% opacity, always subtler than the orb itself, with a slow 5% scale pulse
  > - **4 background** — ~30px, sharp, tighter bloom
  > - **3 foreground near-lens bokeh** — ~160–190px, dense mint radial-gradient sprites riding the camera at center-left / lower-center / upper-right, ~70% opacity, drifting ±30px laterally, no stems
  > - **stems** — 2–3px additive cyan cylinders fading to transparent at the surface
  > - tag canvas-generated sprite textures sRGB, or the mints wash out pale
  >
  > **CAPTION** — "Across 82 Countries"
  >
  > - Inter 300, 34px, 0.06em tracking, white at 90%, top-center 12% from the top
  > - left-to-right per-letter fade starting t=1.0s, completing ~1.45s
  > - then a slow 6px upward drift, still easing at the final frame
  >
  > No audio.

    <DocsVideo
      title="HyperFrames video: Recreate Globe Oneshot"
      src="https://static.heygen.ai/hyperframes-oss/docs/images/prompting/recreate-globe-oneshot.mp4#t=0.1"
      loop
    />
    *The one-shot render produced by this exact spec on a fresh build — no iteration.*
  </Accordion>

## Know where the text-only ceiling is

Words carry discrete, countable things losslessly. They underdetermine continuous perceptual qualities: bloom falloff, material feel, optical color mixing.

That last 10% doesn't close from text. It oscillates instead. If pixel-exact matters, keep the composition file.

## Related

<CardGroup cols={2}>
  <Card title="Iterating" href="/prompting/iterating">The correction loop this page pushes to its limit</Card>
  <Card title="High-fidelity looks" href="/prompting/visual-specs">Writing the spec density a recreation needs</Card>
  <Card title="Runtimes and 3D" href="/prompting/runtimes-and-3d">The adapter the worked example uses</Card>
  <Card title="Capstone" href="/prompting/capstone">Every technique composed into one film</Card>
</CardGroup>

*Next: [Rendering and output](/prompting/rendering-and-output) — once the cut is locked, the words that pick the right export.*
