MilWebWhatsApp
Voltar aos projetos

Experiência cinematográfica · carro 3D em tempo real

AUREX MOTORS

Filme em 14 cenas · configurador 3DProjeto autoral · no ar
Screenshot do projeto AUREX MOTORS

Problema

Site de produto premium quase sempre vira catálogo estático: não transmite a sensação da marca nem dá vontade de explorar.

Solução

Um comercial de carro de luxo navegável: filme em 14 cenas dirigido pelo scroll (a câmera muda, o carro gira, as luzes acendem), closeups de design, números contando, galeria-showroom horizontal e configurador 3D. Pintura, rodas, luz de cabine e underglow mudam o carro em tempo real, com preço reativo.

Como foi construído

A arquitetura separa o mundo DOM do mundo 3D por um estado mutável compartilhado (world.ts). Um ScrollTrigger por seção escreve (cena, progresso) e o rig de câmera lê isso a cada frame dentro do canvas, então o scroll nunca re-renderiza React. O roteiro do filme vive num arquivo só (scenes.ts), com keyframes de posição, alvo e fov da câmera, rotação do carro e intensidade de cada luz por cena, interpolados com damping exponencial. É o damping que transforma cortes secos em movimentos de dolly. Por cima, parallax de mouse desloca câmera e key light, então os reflexos na lataria seguem o cursor.

O carro é o Ferrari 458 dos exemplos oficiais do three.js (GLB com Draco, decoder servido localmente, zero CDN), rebrandizado por nome de material em runtime: pintura vira MeshPhysicalMaterial configurável com clearcoat, acentos amarelos viram vermelho AUREX, faróis e lanternas viram emissivos ligados ao roteiro (acendem na cena certa), cromados viram satin escuro e o interior vira couro preto com friso vermelho. O configurador escreve direto no estado compartilhado e o carro faz lerp dos materiais por frame, então a troca de cor é líquida, sem nenhum re-render da árvore 3D. O estúdio é 100% procedural: Lightformers no lugar de HDRI, piso MeshReflectorMaterial e cones aditivos como luz volumétrica.

Performance e robustez: o PerformanceMonitor degrada o DPR automaticamente em GPU fraca, o canvas principal pausa (frameloop never) quando a galeria, que tem canvas próprio, cobre a tela, o Lenis desliga em touch e o prefers-reduced-motion troca todo damping por poses instantâneas. O debug rendeu gotchas documentados: o GSAP interpreta translateY(115%) inline como pixels (o certo é animar y, não yPercent), CSS fora de @layer vence qualquer utility no Tailwind v4, e o Chromium headless renderiza a ~1fps. Câmera com damping nunca converge em screenshot, e isso virou um modo ?snap de validação visual.

Roteiro de câmera em arquivo único

14 cenas com keyframes de câmera, rotação e luzes, dirigidas pelo scroll com damping exponencial.

Configurador sem re-render

Painel escreve num estado compartilhado; o carro faz lerp de materiais por frame.

Zero downloads externos

Modelo local, decoder Draco local e ambiente por Lightformers, sem HDRI nem CDN.

Mais telas

Configurador 3D com pintura, rodas e cabine em tempo realCena traseira do filme com a lanterna acesa

Stack

  • Next.js
  • TypeScript
  • React Three Fiber
  • Three.js
  • GSAP
  • Lenis
  • Tailwind

Pronto para transformar sua ideia em um produto digital?

Me conta o que você precisa. Respondo rápido e te passo um orçamento gratuito, sem compromisso.

  • Contrato de garantia
  • Suporte pós-entrega
  • O código é seu
  • Orçamento gratuito