Skip to content
Back to skills

Video 3d

ASecurity

Renders real 3D for any code-built video: three.js scenes inside HyperFrames, deterministic (every frame a pure function of t). Covers cameras (rails, ortho, dolly zoom, shake, cuts), extrusion, lathe, 3D text, lines, physical materials, HDRIs, baked AO, every EffectComposer pass (AO, DOF, AA, grain, LUT, glitch, SSR, motion blur), looks (ASCII, toon, halftone, dither, CRT, pixel art, ink), particles and GPU compute, baked physics and cloth, glTF models and animation, screens and image sequen...

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
content-marketingpythongoswiftshellnoderailsawsapibackend

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned November 11, 2026

npx -y skills add tymoshenko-dmytro/claude-marketing-skills --skill video-3d --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Video 3d?

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

Security grade badge for Video 3d
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tymoshenko-dmytro-video-3d/badge)](https://www.skillsdirectory.com/skills/tymoshenko-dmytro-video-3d)

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: video-3d
description: >-
  Renders real 3D for any code-built video: three.js scenes inside HyperFrames, deterministic
  (every frame a pure function of t). Covers cameras (rails, ortho, dolly zoom, shake, cuts),
  extrusion, lathe, 3D text, lines, physical materials, HDRIs, baked AO, every EffectComposer
  pass (AO, DOF, AA, grain, LUT, glitch, SSR, motion blur), looks (ASCII, toon, halftone,
  dither, CRT, pixel art, ink), particles and GPU compute, baked physics and cloth, glTF models
  and animation, screens and image sequences, data maps and graphs, audio-driven visuals,
  DOM/GSAP/alpha compositing and WebGPU, each with a tested status. An executor under
  video-studio. Use when a film needs volume, light, depth, element counts or a rendered look
  that CSS 3D cannot give. Triggers: "3D", "three.js", "WebGL", "WebGPU", "3D logo",
  "logo sting", "globe", "particles", "shader", "3D scene", "ASCII", "glTF".
---

# video-3d

The lane for films where flat cards in space (video-moves' CSS 3D) are not enough: solids, light,
real depth and occlusion, huge element counts, a rendered look. HyperFrames seeks frames out of order
in parallel workers, so every visual state is computed from t alone.

Proven by private test films (they do not ship; their numbers, traps and fixes are in the references).
Four finished looks: a logo film (extruded logo, PBR, lock-up landing), a globe film (15k dots, draw-on
arcs, labels), a particles film (64k particles from a voice morphing into words), an ASCII film (a scene
as glyphs, words resolving out of it). Seven capability reels (2026-10-14, one capability per section):
materials, post, styles, models, camera-text, data, WebGPU. The labels are explained in the legend of
`references/capabilities.md`.

video-studio orchestrates the film and its laws (`../video-studio/references/laws.md`, Picture: motion
has a cause, no frozen holds, every frame postable, readable text); video-moves owns camera grammar
(`../video-moves/scripts/camera-kit.js`); video-sound the sound; video-check the gates. Colours come from
the film being made - no brand or film content is baked into this skill.

**Input: the film's `brief.md`** (`../video-studio/references/brief.md`). It owns copy, claims, tone,
material, moments and private data; this skill owns the implementation. If the brief cannot be
met, say so to video-studio - never change it silently.

## Requirements

- HyperFrames CLI ≥ 0.8.156 (tested on 0.8.156; pin it in the film's `package.json`) and a GPU-capable
  browser for the render (`--browser-gpu`). WebGPU films need a hardware adapter. SwiftShader
  (`--no-browser-gpu`) renders WebGL only, ~6-10x slower.
- three.js 0.181.2 (r181), loaded from jsdelivr through an import map (`three`, `three/addons/`; WebGPU
  films also `three/webgpu`, `three/tsl`) - every recipe assumes this version. Other pins the recipes
  use: troika-three-text 0.52.4, d3-force 3.0.0, `@dimforge/rapier3d-compat` 0.19.3 (bakes in Node),
  world-atlas 2.0.2 (maps).
- Node 22+ for the Node tools (`build-map.mjs`, `seek-order-test.mjs`, your bakes). The seek-order test
  uses puppeteer-core and HyperFrames' cached chrome-headless-shell (it finds them in the npx cache).
- Python 3 with numpy and Pillow, plus ffmpeg, for the QA scripts.
- The upstream `hyperframes` skills (heygen-com/hyperframes) and the sibling video skills.

## When 3D, when CSS

| The film needs | Use |
|---|---|
| a card or a screenshot moving in space; parallax between flat layers | video-moves (CSS 3D, `camera-kit.js`) |
| an object with thickness, bevels, glass or metal, a shadow; a logo as an object | **object** / **materials** recipes |
| points, arcs, labels on a globe; bars, maps, graphs, terrain from data | **data in space** / **data maps** recipes |
| thousands to millions of moving elements, morphs, glow, shader grounds | **particles**; **WebGPU counts** above ~8M |
| a rendered look: glyphs, toon, print, dither, CRT, pixel art, ink | **ASCII** / **looks** recipes |
| grading, DOF, AO, grain, glitch, reflections, motion blur | **post chain** recipe |
| a character, a model, a fall, cloth, a flock | **models and baked sims** recipe |
| a device with a live screen, 3D text, footage plates, a 3D layer with alpha | **screens and compositing** recipe |

If flat layers can do it, prefer CSS: cheaper, `check` can see it, text stays DOM.

## What is proven

`references/capabilities.md` is the catalogue: every useful capability by area (17 areas), how to keep
it deterministic, traps, sketches, measured costs and a status - `proven (film)`, `proven, partial
(film): what` or `never` (not seek-safe as shipped, with the replacement). Only rendered capabilities are
listed; the legend names what was left out (Gaussian splats, fracture, fluids, lightmaps, cascaded
shadows, stencil portals, most WebGPU post). All proofs ran on the GPU path; SwiftShader was checked only
in part. Never: `GlitchPass`, `AfterimagePass`, TAA/TRAA accumulation, `VideoTexture`, physics stepping in
the page.

Anything not in the catalogue: render a 3-5 s probe and run the determinism protocol before promising it,
then add it to capabilities.md with the probe film as its status.

## Recipes and code

`references/recipes.md` - eleven proven kinds of scene with the pieces to lift. Reusable code, each
folder with a README: `assets/recipes/ascii/` (glyph pass), `looks/` (toon hull, Sobel ink, halftone,
dither, CRT, ink and paper, wipe), `post/` (seeded AO, grain hash, SMAA wait, sub-frame motion blur,
presenter, seeded glitch), `materials/` (lathe vessels, GPU AO baker), `models/` (seek-safe mixer, baked
rigid bodies and VAT cloth), `compositing/` (sub-composition time, alpha export), `data/` (map builder,
GPGPU replay/bake), `webgpu/` (film clock, node frame, atomic density splat), `qa/` (seek-order test,
per-section comparison, blank/frozen check, exact shimmer).

## Build

1. `references/contract.md` first - binding: the page (build hold, warm-up, visible failures,
   sub-compositions), time (everything from t, integer-frame decisions, seeded libraries, no frozen ends),
   picture (supersampling, culling, lines, text, colour, banding), post-processing, models and animation,
   render (determinism protocol, backends, bitrate), WebGPU.
2. Start from `assets/scene-skeleton/` (index.html + assets/scene.js): a seek-driven renderer with
   camera helpers and a try/catch `renderAt`; fill in `build()` and `renderAt(t)`.
3. Take the recipe and the capability entries the film needs; lift code from `assets/recipes/` first,
   and write the rest from the recipe and the capability entries.
4. Camera moves and story time from video-moves (the same math; copy what you need into the module).
5. Light for the medium: measure hero colours (PBR) or cell luminance (glyph and grid looks) on a
   rendered frame before judging.

## Check

`references/qa-3d.md`: `hyperframes check` is a lint only (it cannot see a canvas). Snapshots at every
state change; the determinism protocol (`--workers 4` vs `--workers 1` - auto is one worker for ≥ 900
frames - plus the in-page shuffled/reverse seek-order test, PNGs per section when checksums differ);
blank/magenta/frozen output; 1:1 crops; chunk seams; banding on the encoded file; hero colours;
shimmer tools for quantised looks. Pin `--browser-gpu` (or `--no-browser-gpu`) for a deliverable and
never mix the two. Then video-check's gates and its independent review.

## Adapt it

- Your palette and brand objects: set the `--film-*` tokens from each film's brief, keep your logo SVGs,
  product models and fonts in one folder that films copy in, and measure your brand colours once under
  the light and tone mapping you use (`capabilities.md` 3) - write the numbers down.
- Your GPU and backend per deliverable: choose `--browser-gpu` (WebGL or WebGPU) or `--no-browser-gpu`
  (WebGL only) for each deliverable, write it into the render command, and never mix chunks. The costs
  here were measured on an M1 Max; time one film on your machine before you plan a long render.
- Adding a capability: render a 3-5 s probe film, run the determinism protocol and the seek-order test
  (`qa-3d.md` step 3), then add an entry to `capabilities.md` with its status, traps and costs, under a
  label for your probe film in the legend.
- Your asset policy: which sources and licences you accept, and whether the agent may download free
  assets without asking (`capabilities.md` 16).
- Upgrading three.js or HyperFrames: re-render one film per recipe you use and re-check the private
  node-frame API (`contract.md`, WebGPU) before you move the pins.

Files in this skill

  • SKILL.md8.4 KB
  • assets/recipes/ascii/README.md4.9 KB
  • assets/recipes/ascii/ascii-pass.js21.4 KB
  • assets/recipes/ascii/ascii_shimmer.py4.1 KB
  • assets/recipes/compositing/README.md3.6 KB
  • assets/recipes/compositing/host-start.js875 B
  • assets/recipes/data/README.md4.8 KB
  • assets/recipes/data/build-map.mjs8.8 KB
  • assets/recipes/data/gpgpu.js5 KB
  • assets/recipes/looks/README.md5 KB
  • assets/recipes/looks/looks.js21.3 KB
  • assets/recipes/materials/README.md3.2 KB
  • assets/recipes/materials/ao-bake.js7.7 KB
  • assets/recipes/materials/lathe.js4.1 KB
  • assets/recipes/models/README.md3.7 KB
  • assets/recipes/models/baked-playback.js5.9 KB
  • assets/recipes/models/rig.js5.3 KB
  • assets/recipes/post/README.md4.6 KB
  • assets/recipes/post/post-kit.js9.6 KB
  • assets/recipes/qa/README.md1.8 KB

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.

View all in content-marketing →

Comments

Loading comments…

Newsletter

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