Communitygithub.com

Cuboid Carousel

Uma corrente de cuboides chanfrados sobre uma onda viajante formando um carrossel de conteúdo. Bloco HyperFrames, 1920×1080, 6.666666666666667s, 40 variáveis.

O que é Cuboid Carousel?

O Cuboid Carousel é um bloco de composição para HyperFrames que cria um carrossel de conteúdo 3D animado. Uma cadeia de cuboides chanfrados e arredondados voa da direita como um grupo rígido, navega com um escalonamento de rotação por cuboide, desacelera até uma pausa de destaque e, em seguida, sai pela esquerda. O espaçamento entre os cuboides é calculado automaticamente a partir de suas dimensões e do maior semi-eixo X alcançável, garantindo que nunca se sobreponham. A composição oferece 40 variáveis que seguem o esquema original do DialKit, permitindo controle total sobre geometria, materiais, iluminação, sombras, fundo, câmera e a duração e easing de cada segmento da animação. Os cartões de conteúdo podem vir de uma lista interna ou de uma variável JSON personalizada. A animação é reproduzida a 30 fps com duração de 6,666666666666667 segundos e dimensões de 1920×1080. É instalado via `npx hyperframes add cuboid-carousel` e renderizado com `npx hyperframes render`, respeitando um contrato de runtime que garante que todos os estados visuais sejam funções do tempo, tornando o bloco seguro para busca (seek-safe).

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/szeproka/hyperframes-registry/tree/HEAD/registry/blocks/cuboid-carousel

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Carrossel de Cuboides

Cuboides chanfrados e arredondados carregando conteúdo de cartão voam da direita como um grupo rígido, navegam com um escalonamento de rotação por cuboide, desaceleram até uma pausa de destaque e, em seguida, saem pela esquerda. O espaçamento é derivado das dimensões dos cuboides e do maior semi-eixo X alcançável, para que os cuboides nunca se sobreponham. Quarenta variáveis carregam o esquema original do DialKit: geometria, materiais, luzes, sombras, fundo, câmera e a duração e easing de cada segmento. Os cartões vêm de uma lista interna ou de uma variável JSON.

ID da composição: cuboid-carousel. Duração de 6.666666666666667 s a 30 fps, 1920×1080.

Arquivos

  • cuboid-carousel.html (38 KB)
  • assets/Three-LICENSE.txt (1 KB)
  • assets/addons/environments/RoomEnvironment.js (5 KB)
  • assets/addons/utils/BufferGeometryUtils.js (36 KB)
  • assets/cuboid-motion.js (593 KB)
  • assets/gsap-3.14.2.min.js (128 KB)
  • assets/GSAP-NOTICE.txt (1 KB)
  • assets/three.core.min.js (554 KB)
  • assets/three.module.min.js (468 KB)

Instalação

Instale com npx hyperframes add cuboid-carousel; por padrão, os arquivos acima são colocados em compositions/cuboid-carousel/. Em seguida, monte o bloco a partir do index.html do host:

<div
  data-composition-id="cuboid-carousel"
  data-composition-src="compositions/cuboid-carousel/cuboid-carousel.html"
  data-start="0"
  data-duration="6.666666666666667"
  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/cuboid-carousel/cuboid-carousel.html' --variables '{"cardsJson":"","heroCard":4}'

Variáveis

Lidas em tempo de execução via window.__hyperframes.getVariables(); declaradas na raiz da composição como data-composition-variables (atributo entre aspas simples, JSON puro).

idtipopadrãorótulo / faixa
cardsJsonstring""Conteúdo · Cards JSON (opcional, veja CARDS no código)
heroCardnúmero4Conteúdo · Cartão de destaque (base 1) 1–12 passo 1
countnúmero8Conteúdo · Contagem de cartões repetidos 1–12 passo 1
gapnúmero0.01Layout · Espaçamento extra entre cuboides 0–1.5 passo 0.005
cuboidWidthnúmero1.7Cuboide · Largura 0.3–5 passo 0.01
cuboidHeightnúmero2.4Cuboide · Altura 0.3–6 passo 0.01
cuboidDepthnúmero0.14Cuboide · Espessura (profundidade) 0.02–2 passo 0.01
cornerRadiusnúmero0.105Cuboide · Raio do canto 0–0.6 passo 0.005
bevelSizenúmero0.03Cuboide · Tamanho do chanfro (aresta) 0–0.3 passo 0.001
bevelThicknessnúmero0.04Cuboide · Espessura do chanfro 0–0.3 passo 0.001
smoothnessnúmero32Cuboide · Suavidade (segmentos) 1–32 passo 1
bodyColorcor"#242424"Cuboide · Cor do corpo
roughnessnúmero0.6Cuboide · Rugosidade 0–1 passo 0.01
metalnessnúmero0.4Cuboide · Metalicidade 0–1 passo 0.01
heroScalenúmero1Destaque · Escala isolada 1–1.6 passo 0.01
heroFillIntensitynúmero0.55Destaque · Intensidade da luz frontal 0–2 passo 0.05
heroExitXnúmero288Destaque · Graus de rotação X de saída -720–720 passo 1
heroExitYnúmero-234Destaque · Graus de rotação Y de saída -720–720 passo 1
heroExitZnúmero198Destaque · Graus de rotação Z de saída -720–720 passo 1
ambientIntensitynúmero0.35Luzes · Intensidade ambiente 0–4 passo 0.01
ambientColorcor"#ffffff"Luzes · Cor ambiente
topIntensitynúmero3.1Luzes · Intensidade do rig superior 0–12 passo 0.05
topColorcor"#ffffff"Luzes · Cor do rig superior
bottomIntensitynúmero2.15Luzes · Intensidade do rig inferior 0–12 passo 0.05
bottomColorcor"#ffcaad"Luzes · Cor do rig inferior
keyIntensitynúmero5Luzes · Intensidade do rig principal 0–12 passo 0.05
keyColorcor"#ffe9d6"Luzes · Cor do rig principal
shadowRadiusnúmero44.5Sombras · Suavidade no tamanho do mapa 2048 0–50 passo 0.5
shadowMapSizenúmero2048Sombras · Tamanho do mapa 512–4096 passo 256
backdropcor"#0b0d13"Fundo · Cor
cameraFovnúmero11Câmera · Campo de visão inicial 10–90 passo 0.5
cameraXnúmero-1.65Câmera · X inicial -20–20 passo 0.05
cameraYnúmero8.5Câmera · Y inicial -20–20 passo 0.05
cameraZnúmero-8.508708Câmera · Z inicial (distância) -20–50 passo 0.1
cameraSettleFramenúmero70Câmera · Quadro de estabilização (30 fps) 20–90 passo 1
handheldStrengthnúmero1Câmera · Intensidade do movimento portátil 0–1 passo 0.05
cameraTargetFovnúmero34Alvo da câmera · Campo de visão 10–90 passo 0.5
cameraTargetXnúmero-7.25Alvo da câmera · X -20–20 passo 0.05
cameraTargetYnúmero1.15Alvo da câmera · Y -20–20 passo 0.05
cameraTargetZnúmero6.2Alvo da câmera · Z 2–50 passo 0.1

Contrato de runtime

  • Uma timeline GSAP pausada registrada como window.__timelines["cuboid-carousel"].
  • Ressincroniza no CustomEvent hf-seek; cada quadro é uma função de forma fechada do tempo (apenas PRNG seedado, sem loops rAF, sem Date.now).
  • Renderizador: WebGL, GSAP, Canvas 2D, PMREM, mapas de sombra. Orçamento aproximado de 350 MB por instância ativa; execute uma de cada vez.
  • Dependências externas em runtime: ./assets/three.module.min.js, ./assets/addons/.
  • Fontes da web do Google Fonts: Inter.

Regras de edição (do projeto fonte)

  1. Mantenha data-composition-variables como um atributo entre aspas simples com JSON " puro. Nunca salve através do painel Design do Studio.
  2. Não coloque <canvas> na marcação estática; crie-o em tempo de execução.
  3. Mantenha todo estado visual como uma função de t; segurança de busca é o que torna o bloco renderizável.

Individual skills in this repo

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

Habilidades Relacionadas