← ClaudeAtlas

three-overlayslisted

Add a real 3D / WebGL (three.js) overlay — perspective captions (text laid on a ground plane, floating billboard text that moves with the camera) and simple animated 3D objects, composited over the layers beneath. Load this BEFORE calling `libi.add_overlay` with kind three. Use when a caption needs DEPTH/PERSPECTIVE that flat Canvas2D code overlays cannot express (text mapped onto a road/floor, 3D-positioned lyrics that play with the footage), or for a simple rotating/animated 3D object. NOT for flat animated text (typewriter, word reveal, kinetic 2D caption → animated-text-overlays); NOT for speech subtitles (→ speech-captions); NOT for character rigs, physics, or imported heavy 3D models.
Nagellabs/libi · ★ 2 · AI & Automation · score 75
Install: claude install-skill Nagellabs/libi
# 3D / WebGL Overlays (three.js) Use this when the user wants **real 3D** layered on a scene — an **arbitrary 3D scene** (a simple animated 3D object — a rotating ring/knot/box), **floating billboard text** that drifts in depth, or text mapped in **perspective onto the road/floor**. This is the path when the look needs a real WebGL camera / perspective / bespoke meshes that a flat Canvas2D `add_overlay({ kind: "code" })` can't express. > **STOP — gate before you build a `three` overlay.** If a `kind: "text"` > overlay + `place3d` (+ `threeD` extrusion) can express it, use THAT, NOT a > `three` overlay. A tilted, extruded, posed, or billboard CAPTION is text + > `place3d` — including anything phrased "real 3D" or "WebGL". A plain "3D > caption" is `add_overlay({ kind: "text" })` THEN `update_overlay({ place3d: > true, transform3d })` (+ `threeD` for thickness) — never a `three` overlay. > Reach for `kind: "three"` ONLY when the look is one of: > - an arbitrary 3D **object / scene** (not just text) — a rotating ring, a mesh, > a built scene; > - **text mapped onto moving 3D geometry that tracks the footage** (a road / > fly-through that recedes WITH the camera, beyond a static pose); > - a **camera fly-through**; > - **animated 3D beyond static pose + depth + extrusion** (something `threeD` + > `transform3d` on a text overlay genuinely can't capture). **For 3D TEXT, try `kind: "text"` + `place3d` / `threeD` FIRST.** A text overlay is now declarative for depth — set `pl