Título Portal Wireframe
Letras extrusadas em wireframe são construídas a partir da fonte Geist fornecida, usando um carregador TTF e offset de polígonos, e então reveladas através de uma explosão de portal cujo caos é uma variável. Um segundo movimento troca as letras por uma frase substituta com quebra automática de palavras e tamanho de fonte ajustável, escalonada com uma curva de easing ajustável e um glitch de estabilização, com névoa de profundidade opcional.
Id da composição: wireframe-portal-title. Duração 8 s a 30 fps, 1920×1080.
Arquivos
wireframe-portal-title.html(63 KB)assets/fonts/Geist-Bold.ttf(65 KB)assets/fonts/Geist-Regular.ttf(65 KB)assets/fonts/Geist-SemiBold.ttf(65 KB)assets/fonts/Geist-OFL.txt(4 KB)
Instalação
Instale com npx hyperframes add wireframe-portal-title; por padrão, os arquivos acima são colocados em compositions/wireframe-portal-title/. Em seguida, monte o bloco a partir do index.html do host:
<div
data-composition-id="wireframe-portal-title"
data-composition-src="compositions/wireframe-portal-title/wireframe-portal-title.html"
data-start="0"
data-duration="8"
data-track-index="1"
data-width="1920"
data-height="1080"
></div>
Renderize com valores personalizados apontando diretamente para o arquivo de composição:
npx --yes [email protected] render 'compositions/wireframe-portal-title/wireframe-portal-title.html' --variables '{"title":"BREAKTHROUGH","replacementPhrase":"Lets do this sir!"}'
Variáveis
Lidas em tempo de execução via window.__hyperframes.getVariables(); declaradas na raiz da composição como data-composition-variables (atributo com aspas simples, JSON simples).
| id | tipo | padrão | rótulo / intervalo |
|---|---|---|---|
title | string | "BREAKTHROUGH" | Título máx. 18 caracteres |
replacementPhrase | string | "Lets do this sir!" | Frase substituta 3D (layout automático) |
phraseDuration | number | 1.85 | Duração da transição da frase (s) 0.65–2.9 passo 0.05 |
phraseEasing | number | 8 | Easing da transição (1 suave – 8 brusco) 1–8 passo 0.25 |
settleGlitch | number | 0.2 | Intensidade do glitch de estabilização 0–4 passo 0.05 |
depthFog | boolean | true | Névoa de profundidade (fade inicial sempre ativo) |
subtitle | string | "HYPERFRAMES PORTAL TITLE" | Subtítulo máx. 48 caracteres |
accent | color | "#F5C518" | Cor de destaque |
burstChaos | number | 1 | Caos da explosão (0-2) 0–2 passo 0.01 |
Contrato de execução
- Uma timeline GSAP pausada registrada como
window.__timelines["wireframe-portal-title"]. - Ressincroniza no CustomEvent
hf-seek; cada quadro é uma função fechada do tempo (apenas PRNG com semente, sem loops rAF, sem Date.now). - Renderizador: three.js 0.181.2, GSAP 3.14.2, Canvas 2D, shaders GLSL, pós-processamento, PRNG com semente, Clipper. Orçamento aproximado de 350 MB por instância ativa; execute uma por vez.
- Dependências externas de execução:
https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js,https://cdn.jsdelivr.net/npm/[email protected]/clipper.js,https://cdn.jsdelivr.net/npm/[email protected]/build/three.module.js,https://cdn.jsdelivr.net/npm/[email protected]/examples/jsm/. - Fontes locais: assets/fonts/Geist-Regular.ttf, assets/fonts/Geist-SemiBold.ttf, assets/fonts/Geist-Bold.ttf.
Regras de edição (do projeto de origem)
- Mantenha
data-composition-variablescomo um atributo com aspas simples e JSON com". Nunca salve através do painel de Design do Studio. - Não coloque
<canvas>no markup estático; crie-o em tempo de execução. - Mantenha cada estado visual como uma função de t; a segurança de busca é o que torna o bloco renderizável.