4.8 KiB
Las Tres Líneas — nueva animación del hero
Fecha: 2026-08-21
Estado: aprobado por Erik (brainstorming con visual companion)
Reemplaza a: el "Astrolabio de Claridad" actual de components/primitives/EscenaClaridad.tsx
Contexto
La animación Three.js actual del hero (anillos-giroscopio que se alinean en túnel + barras doradas que se proyectan) fue rechazada por la dirección: "no tiene sentido, no existe coherencia, y está mal hecha". En brainstorming con visual companion se compararon tres conceptos animados que narraban literalmente CLARIDAD → DIRECCIÓN → CRECIMIENTO. Erik eligió el concepto A · «Las Tres Líneas» (clic registrado en el companion), con comportamiento final "una vez + reposo vivo".
Decisión previa que se mantiene: la animación sigue siendo Three.js
(three + @react-three/fiber ya en package.json).
Concepto
El símbolo de la marca cuenta la historia de los tres pilares. Tres barras doradas
—las tres líneas del ≡ de cre≡er— pasan de caos a ascenso:
| Fase | Tiempo | Qué pasa |
|---|---|---|
| Caos | 0–3 s | Las barras flotan enredadas: rotación libre, deriva sinusoidal desacoplada por línea, sin rumbo. |
| CLARIDAD | 3–5.2 s | Se asientan y forman el ≡: quietas, niveladas, exactas. |
| DIRECCIÓN | 5.2–7.2 s | En conjunto se inclinan ~9° y se escalonan: dejan de ser símbolo y se vuelven peldaños. |
| CRECIMIENTO | 7.2–9.6 s | Cada línea se prolonga hacia adelante (la superior más); brillo dorado (emissive) creciente. |
| Reposo vivo | ∞ | Pose final quieta + deriva mínima de cámara y pulso de brillo casi imperceptible. Viva, sin distraer del CTA. |
Paleta y materiales idénticos a los validados en el preview: dorado #C4942E
metálico (metalness 0.8, roughness 0.25, emissive dorado en crecimiento),
sobre fondo transparente (el blanco del hero).
Alcance
Solo se reescribe el interior de EscenaClaridad.tsx. Misma ruta, misma API
(className), mismo componente exportado.
Queda intacto (cero cambios):
ClaridadHero.tsx— dynamic import conssr: false, carga lazy por IntersectionObserver (rootMargin 300px), hueco reservado enHero.tsx.Hero.tsx— el contenedorh-64 lg:h-[28rem]que reserva el espacio.- Las 4 pruebas de
components/primitives/__tests__/EscenaClaridad.test.tsx(son de envoltorio: aria-hidden, tamaño por el caller, frameloop always/demand). Siguen pasando sin edits.
Dentro de EscenaClaridad.tsx:
- Se eliminan:
Anillos(giroscopio), el túnel, la proyección del ≡,Suelo+texturaSombra(textura canvas) y lapointLightazul claro de relleno. Se conservan ambient + directional + pointLight dorada (las tres luces del preview aprobado). - Queda: un único componente
TresLineascon las 3 barras (BoxGeometrytrasladada para que el origen quede en un extremo y así "crecer" al escalar en X), cámara frontal con deriva sutil,SiHayWebGL, IntersectionObserver para pausar fuera de vista. - Escena final: 3 meshes + 3 luces. De ~10 objetos a 6.
Comportamiento
- Relato una vez (~9.6 s de coreografía) + reposo vivo: tras la fase de crecimiento, la escena queda en pose de escalera con (a) deriva mínima de cámara (sin(t·0.25)·~0.5 en X, la misma del preview) y (b) pulso de emissive ~0.06–0.12 lento. Nada de saltos ni reinicios.
prefers-reduced-motion: se monta directo en la pose final de la escalera, estático (estatico→frameloop: demand). Mismo patrón que hoy.- Fuera de vista:
frameloop: demandvía IntersectionObserver existente. - El tiempo no avanza cuando
estatico(patróntime.currentactual), pero el reposo vivo sigue corriendo para lectores sin reduced-motion mientras la escena esté en vista.
Parámetros de la coreografía (del preview aprobado)
- easeOut cúbico (
1-(1-t)^3) ytramo(t, inicio, duración)como hoy. - Caos: posiciones
sin/cos(t·f_i + φ_i)con frecuencias desacopladas por línea; rotación euler libre por línea. - ≡: posiciones y = 0.7 / 0 / −0.7, x = 0, escala base 1; quaternions identidad.
- Dirección: inclinación grupal −0.16 rad (~9°); escalonado x = i·1.15−1.15, y = 0.35 + i·0.8.
- Crecimiento: escala X = 1 + 0.1·direccion + (0.35 + i·0.35)·crecimiento; emissiveIntensity = crecimiento·(0.1 + i·0.06), en reposo pulsa ±0.03 lento.
- Cámara: (0, 0.9, 8) mirando a (0, 0.7, 0); X += sin(t·0.25)·0.5.
Pruebas
- Las 4 existentes siguen igual (envoltorio). No se agregan pruebas nuevas: la coreografía es visual y el wrapper ya está blindado.
- Único cambio textual: actualizar el comentario de concepto del archivo ("El Astrolabio de Claridad" → "Las Tres Líneas").
Fuera de alcance
- Touch/click interactivity, scroll-driven states, variante por
variantdel hero (hormozi/editorial), cambios de copy, cambios en ClaridadHero.