Tarjeta Órbita
Una tarjeta de característica centrada con un recorte circular que enmarca una esfera de puntos. La tarjeta entra desde la derecha (0.25–1.80 s), se mantiene con un sutil balanceo y deriva de profundidad, orbita una vuelta completa alrededor del centro de la esfera (smoothstep entre 4.97 y 5.97 s) y sale por la izquierda (7.35–8.55 s). La trayectoria de la cámara y las curvas F de la tarjeta se exportan desde el rig de Blender aprobado a 30 fps y se interpolan; la esfera mantiene su propia traslación y un giro constante. Título, descripción, acento y el ángulo de órbita son variables; 180° y 720° funcionan sin tocar claves.
Id de composición: orbit-card. Duración 10 s a 30 fps, 1920×1080.
Archivos
orbit-card.html(3 KB)assets/Archivo-LICENSE.txt(4 KB)assets/Three-LICENSE.txt(1 KB)assets/archivo-regular.ttf(108 KB)assets/archivo-semibold.ttf(109 KB)assets/gsap-3.14.2.min.js(128 KB)assets/GSAP-NOTICE.txt(1 KB)assets/orbit-motion.js(59 KB)assets/orbit-scene.js(8 KB)assets/three.core.min.js(554 KB)assets/three.module.min.js(468 KB)
Instalación
Instala con npx hyperframes add orbit-card; por defecto los archivos anteriores se colocan en compositions/orbit-card/. Luego monta el bloque desde el index.html anfitrión:
<div
data-composition-id="orbit-card"
data-composition-src="compositions/orbit-card/orbit-card.html"
data-start="0"
data-duration="10"
data-track-index="1"
data-width="1920"
data-height="1080"
></div>
Renderiza con valores personalizados apuntando directamente al archivo de composición:
npx --yes [email protected] render 'compositions/orbit-card/orbit-card.html' --variables '{"feature1Title":"Siempre sincronizado","feature1Desc":"Los cambios llegan a cada pantalla en el momento en que ocurren."}'
Variables
Se leen en tiempo de ejecución mediante window.__hyperframes.getVariables(); se declaran en la raíz de la composición como data-composition-variables (atributo entre comillas simples, JSON simple).
| id | tipo | defecto | etiqueta / rango |
|---|---|---|---|
feature1Title | string | "Siempre sincronizado" | Título de tarjeta máx. 28 caracteres |
feature1Desc | string | "Los cambios llegan a cada pantalla en el momento en que ocurren." | Descripción de tarjeta máx. 110 caracteres |
feature1Accent | color | "#4cc9ff" | Acento de tarjeta |
cardOrbitDegrees | número | 360 | Grados de órbita de tarjeta -36000–36000 paso 1 |
Contrato de ejecución
- Una línea de tiempo GSAP pausada registrada como
window.__timelines["orbit-card"]. - Se resincroniza con el evento personalizado
hf-seek; cada fotograma es una función cerrada del tiempo (PRNG con semilla solamente, sin bucles rAF, sin Date.now). - Renderizador: GSAP.
- Dependencias de ejecución externas: ninguna (servidas localmente).
- Fuentes locales: assets/archivo-regular.ttf, assets/archivo-semibold.ttf.
Reglas de edición (del proyecto fuente)
- Mantén
data-composition-variablescomo un atributo entre comillas simples con JSON en"simple. Nunca lo guardes a través del panel de diseño de Studio. - No pongas
<canvas>en el marcado estático; créalo en tiempo de ejecución. - Mantén cada estado visual como una función de t; la seguridad de búsqueda es lo que hace que el bloque sea renderizable.