MILWEB®
MILWEB®
MW/004ATELIER VERTEXESTÚDIO

CONSTRUÍDONO SCROLL.

ATELIER VERTEX — tela inicial
ESTÚDIO
MILWEB
TIPO
EXPERIÊNCIA NO SCROLL
STATUS
NO AR

02 / A IDEIA

Rolar constrói o prédio. Voltar desconstrói.

Um escritório de arquitetura vende execução, não fotos. O site é um filme real de obra — do andaime à fachada — cujo tempo pertence 100% ao scroll, sem autoplay. No meio, o vídeo escurece e vira mesa de luz: a planta se desenha com cotas reais.

03 / EXPERIÊNCIA
  1. 01 / SCRUB

    Um ScrollTrigger por seção escreve (cena, progresso); um rAF lê isso a cada frame e persegue o currentTime do vídeo com damping. Pular de cena é um dolly de tempo, nunca um corte seco.

    ATELIER VERTEX — SCRUB
  2. 02 / PRANCHA

    O vídeo escurece até virar uma mesa de luz e a planta do pavimento tipo se desenha amarrada ao scroll: paredes, mobiliário, cotas e carimbo (ESC 1:75).

    ATELIER VERTEX — PRANCHA
  3. 03 / ENTREGUE

    Depois do filme, o site vira o arquivo do estúdio: obras, processo e contato, com trilho de progresso e cursor próprio.

    ATELIER VERTEX — ENTREGUE
Planta se desenhando sobre o vídeo escurecido

04 / POR BAIXO DO CAPÔ

SCROLL

ROLAR / VOLTAR

ScrollTrigger

progress = 0.000

world.ts

{ scene, progress }

rAF + damping

damped = 0.000

video.currentTime

DIA 000 / 132

  • MOTOR DE SCROLLEstado mutável compartilhado (world.ts), ScrollTrigger escreve, rAF lê e persegue o vídeo com damping. Roteiro em scenes.ts.+

    A arquitetura separa o vídeo do scroll do DOM por um estado mutável compartilhado (world.ts), a mesma base do AUREX MOTORS. Um ScrollTrigger por seção escreve (cena, progresso) e um rAF lê isso a cada frame pra perseguir o currentTime do vídeo com damping, então pular de cena vira um dolly de tempo, nunca um corte seco. O roteiro do filme vive num arquivo único (scenes.ts) mapeando cada cena a uma fração da duração do vídeo. O vídeo em si é codificado com GOP 1, ou seja, todo frame é keyframe, porque sem isso o seek durante o scrub engasga. O preço é um arquivo maior, pago conscientemente.

  • VIDEO SCRUBGOP 1 — todo frame é keyframe, senão o seek engasga. Arquivo maior, pago conscientemente.+

    A arquitetura separa o vídeo do scroll do DOM por um estado mutável compartilhado (world.ts), a mesma base do AUREX MOTORS. Um ScrollTrigger por seção escreve (cena, progresso) e um rAF lê isso a cada frame pra perseguir o currentTime do vídeo com damping, então pular de cena vira um dolly de tempo, nunca um corte seco. O roteiro do filme vive num arquivo único (scenes.ts) mapeando cada cena a uma fração da duração do vídeo. O vídeo em si é codificado com GOP 1, ou seja, todo frame é keyframe, porque sem isso o seek durante o scrub engasga. O preço é um arquivo maior, pago conscientemente.

  • PLANTAPlanta com pathLength=1; fronteiras das cenas calibradas extraindo frames a cada 0,5 s (transformação real entre 40% e 70%).+

    A cena mais autoral é a 'Prancha': o vídeo escurece até virar uma mesa de luz e a planta do pavimento tipo se desenha amarrada ao scroll, com paredes, mobiliário, linhas de cota com medidas reais e um carimbo de prancha, usando a mesma técnica de pathLength=1 de um projeto anterior da família. As fronteiras do roteiro não foram chute. Extraí frames do vídeo-fonte a cada 0,5s pra achar onde a transformação visual acontece de verdade, que ficou concentrada entre 40% e 70% da duração, e recalibrei as cenas pra que 'Vedação' e 'Fachada' realmente parecessem etapas diferentes. Antes disso, duas das três cenas mostravam praticamente o mesmo andaime parado.

  • AUDITORIA DE DESIGNAuto-auditoria 0–10 contra o build real: header ilegível e menu mobile quebrado por backdrop-filter — corrigidos.+

    Como no projeto anterior de estádios, o site passou por uma auto-auditoria crítica de design (hero, storytelling, UX, UI, responsividade, nota 0-10 por eixo), rodada contra o próprio build de produção e não contra a intenção. O achado mais grave foi o header fixo, que não tinha fundo opaco de verdade: qualquer título claro passando por baixo dele durante o scroll virava texto sobre texto ilegível. A correção revelou um gotcha sutil de CSS. Um 'backdrop-filter' no header vira containing block pra 'position: fixed', então o menu mobile em tela cheia estava sendo calculado relativo à altura do próprio header, não do viewport, até o painel ser movido pra fora do elemento. Depois da auditoria entraram navegação mobile com hambúrguer de verdade, CTAs diferenciados (um fecha o filme, só o outro converte), trilho de progresso do filme e um cursor customizado.

CONSTRUÍDO COMNext.js · TypeScript · GSAP · ScrollTrigger · Lenis · Tailwind · FFmpegCÓDIGO

05 / DETALHES

  • 100%

    DO VÍDEO NO SCROLL

  • GOP 1

    TODO FRAME É KEYFRAME

  • 0,5s

    ENTRE FRAMES ANALISADOS

  • 1:75

    ESCALA DA PRANCHA

06 / RESULTADO

Projeto autoral, no ar

VÍDEO REAL DE OBRA, 100% SCROLL-DRIVEN

[ QUERO ALGO PARECIDO ]

07 / TELAS SELECIONADAS
Cena final: prédio entregue
TELA 01Cena final: prédio entregue
Abertura: do andaime à fachada
TELA 02Abertura: do andaime à fachada
Prancha — planta e cotas
TELA 03Prancha — planta e cotas
PRÓXIMA EXPERIÊNCIA04 / AUREX TIMEPIECES

O TEMPO,DESMONTADO.

AUREX TIMEPIECES

TODOS OS PROJETOS

TODOS OS PROJETOS