Communitygithub.com

SJbuilds04/vybe-cinematic-3d

Three.js / WebGL determinista para vídeos HyperFrames: escenas 3D, sistemas de partículas, geometría procedural, giros de producto, modelos científicos, rigs de iluminación y cortes de cámara renderizados fotograma exacto desde el tiempo de HyperFrames.

¿Qué es vybe-cinematic-3d?

Este skill permite crear contenido 3D determinista para la plataforma HyperFrames, utilizando Three.js y WebGL. Toda la escena se renderiza como una función pura del tiempo, sin bucles de animación, relojes o valores aleatorios no seedeados. Es ideal cuando un storyboard VYBE requiere elementos 3D, profundidad, partículas, modelos científicos (como moléculas, planetas o agujeros negros) o un giro de producto. También es útil si una capa Three.js se renderiza negra, parpadea o varía entre renders. El skill proporciona un esqueleto HTML/JS completo, un contrato estricto para la integración con HyperFrames, y recetas detalladas para partículas, planetas, agujeros negros, esculturas de datos y más. Además, incluye pautas de iluminación, cámara y rendimiento para garantizar resultados predecibles y eficientes, especialmente en entornos headless como Chrome sin aceleración gráfica.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SJbuilds04/VYBE/tree/HEAD/skills/vybe-cinematic-3d

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

VYBE Cinematic 3D

El 3D en un vídeo de HyperFrames es un <canvas> cuyo cada fotograma es una función pura del tiempo. El adaptador three de HyperFrames publica el tiempo; tú lo renderizas. Autoridad: /hyperframes-animation → adapters/three.md cuando está instalado.

Contrato (no negociable)

  • Importación fija: import * as THREE from "https://cdn.jsdelivr.net/npm/[email protected]/+esm"; (o un importmap que fije la misma versión para addons).
  • Construye escena, cámara, renderizador y materiales sincrónicamente al cargar; carga cualquier modelo/textura antes de una búsqueda crítica para el render (el DefaultLoadingManager de Three se espera automáticamente). Para configuración pesada de CPU, registra window.__hf.buildReady["<nombre>"] = promise.
  • Renderiza solo a partir del tiempo: window.addEventListener("hf-seek", e => renderAt(e.detail.time)); renderAt(window.__hfThreeTime || 0);
  • No hay bucles requestAnimationFrame, relojes, deltas ni Math.random() sin semilla.
  • renderer.setPixelRatio(1); renderer.setSize(W, H, false) con W/H del data-width/height de la raíz. La raíz debe tener data-duration.
  • Marca el canvas a sangre completa con data-layout-allow-overflow.

Esqueleto

<canvas id="gl" width="1920" height="1080" data-layout-allow-overflow></canvas>
<script type="module">
  import * as THREE from "https://cdn.jsdelivr.net/npm/[email protected]/+esm";
  const root = document.getElementById("vybe-root");
  const W = +root.dataset.width, H = +root.dataset.height, D = +root.dataset.duration;
  const css = getComputedStyle(document.documentElement);
  const tok = (n, f) => css.getPropertyValue(n).trim() || f;             // lee tokens VYBE
  const renderer = new THREE.WebGLRenderer({ canvas: document.getElementById("gl"), antialias: true });
  renderer.setPixelRatio(1); renderer.setSize(W, H, false);
  renderer.setClearColor(new THREE.Color(tok("--vy-bg", "#000")), 1);
  const scene = new THREE.Scene();
  const camera = new THREE.PerspectiveCamera(W > H ? 40 : 60, W / H, 0.1, 200); // mayor FOV en vertical
  // … construir …
  function renderAt(t) { const p = t / D; /* cámara + objetos desde t */ renderer.render(scene, camera); }
  window.addEventListener("hf-seek", (e) => renderAt(e.detail.time));
  renderAt(window.__hfThreeTime || 0);
</script>

Coloca el canvas en el anfitrión (index.html) cuando el mundo 3D abarque escenas (arco de cámara a lo largo de la película); colócalo en un archivo de escena solo cuando viva en una escena. Superpone HTML encima; nunca renderices texto en WebGL cuando el texto del DOM sea suficiente.

Recetas

  • Partículas / polvo / estrellas: THREE.Points con un generador de números pseudoaleatorios (PRNG) con semilla para posiciones, colores de vértice desde la paleta, un sprite redondo (CanvasTexture gradiente radial como map) — los puntos por defecto son cuadrados — AdditiveBlending, depthWrite: false. Mantén cada partícula más allá del z más cercano de la cámara, o se hincha en un sprite gigante cuando la cámara la pasa (un defecto real de VYBE).
  • Orbe héroe / planeta: SphereGeometry(r, 96, 64) + MeshStandardMaterial (metalness/roughness) + halo emisivo anillo TorusGeometry; ilumínalo a lo largo del tiempo.
  • Agujero negro: esfera oscura + disco de acreción = RingGeometry con una textura de gradiente de canvas, inclinado 70–80°, rotando; anillo de lente = segundo toro fino mirando a la cámara; estrellas curvándose = escala una capa de puntos de fondo radialmente cerca del centro.
  • Molécula: esferas en posiciones de átomos (InstancedMesh para muchas), cilindros entre ellos (orienta con quaternion.setFromUnitVectors); cámara en órbita.
  • Giro de producto: GLTF mediante GLTFLoader (importmap), AnimationMixer.setTime(t) para clips animados; rig de luz de estudio debajo; órbita lenta 20–35° sobre la toma.
  • Escultura de datos: InstancedMesh de cajas cuyas alturas provienen de datos, crecidas con smoothstep a lo largo del tiempo.
  • Terreno/olas procedurales: desplaza un PlaneGeometry en JS desde t (recalcula posiciones por fotograma para ≤40k vértices) o en un ShaderMaterial con un uniforme uTime establecido en renderAt.

Iluminación

Carga references/lighting.md. Rig mínimo: clave (Point/Directional), contraluz/trasera en un tono contrastante, y un HemisphereLight de relleno — una malla iluminada con solo una luz se renderiza como un recorte negro en su lado oscuro. Conduce las intensidades de luz desde la misma función de tiempo con relaciones fijas.

Cámara

Deriva la posición a partir del progreso normalizado p = t / D con segmentos smoothstep por acto (ver el renderAt de la plantilla cinematográfica). Para cortes, declara const CUT_B = 23 una vez y úsalo tanto para el selector de toma de cámara como para la visibilidad de objetos; verifica los fotogramas justo antes y después (snapshot --at 22.9667,23).

Rendimiento (Chrome headless puede ser software GL)

  • ≤ 100k triángulos, ≤ 20k partículas, sin pases de postprocesado que necesiten historial de fotogramas. Bloom: simúlalo con sprites/halos aditivos.
  • Evita antialias + canvas enormes a 4K en máquinas con poca RAM; prueba un render borrador.
  • Si WebGL falla en el entorno de render, el canvas es negro: el control de calidad lo detecta como fotogramas negros; recurre a un canvas 2D o a una versión CSS-3D de la escena.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

SJbuilds04/vybe-audio-design

Sound design and music direction for VYBE / HyperFrames videos — choosing music by mood and arc, spotting sound effects to picture, voiceover direction and provider choice (HeyGen, ElevenLabs, Kokoro, Gemini), ducking, loudness targets, beat-synced editing and caption sync. Use when planning or fixing the audio of a video, when a video feels silent, cheap, cluttered or out of sync, or when choosing a voice or music provider.

SJbuilds04/vybe-image-to-motion

Animate a still image into video. Analyzes the image, plans the motion, and picks the right technique — programmatic 2.5D (camera moves, depth-map parallax, subject/background layer separation, particles, fog, light) or AI image-to-video (Runway Gen-4.5 / Veo 3.1 / Kling 3.0, Luma Ray 3.2, Gemini Omni Flash) for organic motion like walking, faces, water or hair — then composes the result in HyperFrames with music, SFX and text. Use when someone supplies an image and asks to animate it, bring it

SJbuilds04/vybe-motion-design

Motion design craft for VYBE / HyperFrames videos — animation principles, easing and timing, choreography and staggering, scene transitions, camera movement, and visual effects (blur, glow, masks, grain, light leaks), written as seek-safe GSAP recipes. Use when designing or fixing how things move in a video — entrances, exits, transitions between scenes, camera moves, rhythm, or when motion feels generic, floaty, stiff or repetitive.

SJbuilds04/vybe-typography

Typography for motion — type systems, font pairing with bundled OFL fonts, scale and readability rules for video, kinetic typography techniques, per-letter/word animation, captions design and safe zones, in HyperFrames compositions. Use when choosing fonts, sizing or animating text in a VYBE video, building kinetic type or lyric videos, styling captions, or when text overlaps, clips, is unreadable or looks generic.

Skills relacionados