Livro 3D
Um álbum que se folheia como papel.
Um motor em Three.js escrito para uma única tarefa: um livro de verdade em 3D. A folha é uma fita dobrável presa na lombada, com espessura, frente, verso e borda dourada, e o conteúdo é desenhado nela como textura: nunca há troca entre objeto 3D e página HTML. Por cima, um modo de edição com guias de alinhamento e um salvamento que não perde nada.
- Motor 3D, interação e sincronização
- 3D / WebGL · Interação · Projeto pessoal

Contexto
O que o livro tinha que fazer
- Abrir no celular, em pé ou deitado
- Virar a página como papel, não como porta
- Foto, vídeo e música na mesma folha
- Ser editado sem uma linha de código
Desafio
Álbum digital costuma ser uma galeria com seta.
A foto troca, e nada ali lembra um objeto. A ideia era o contrário: um livro que se segura com o dedo, vive no celular e pode ser editado por quem não programa.
Decisões
A folha como fita, não como retângulo
- Retângulo girando na lombada é o que denuncia um livro 3D amador: a página vira como porta.
- Cada folha é uma fita presa na lombada, com espessura, frente, verso e borda dourada, deformada a cada quadro por molas com peso.
- Física escrita para o objeto, não emprestada de biblioteca: o motor serve a essa tarefa e a mais nenhuma.
- A ponta atrasa, o meio acompanha, e a folha assenta como papel.
Parado, custa zero
- O livro tinha que viver no celular.
- Só renderiza quando algo se move e pausa com a aba oculta; só as folhas visíveis têm malha (o resto do bloco é um sólido único), e as texturas vêm sob demanda, com cache.
- Se o aparelho não acompanha, a resolução cai sozinha; e não há pós-processamento.
- A luz é da cena, não de filtro.
Um salvamento que não perde nada
- Quem edita não programa, e pode estar no celular e no computador ao mesmo tempo.
- Cada gravação é uma versão nova; a segunda gravação percebe a primeira, recebe a versão mais nova e junta as duas página por página.
- Sem conexão, a mudança espera no aparelho e só sobe na próxima abertura.
- Fechar a aba envia o que estava pendente na hora, e as últimas 300 versões ficam guardadas na nuvem.
O gesto decide, não o botão
- Com zoom, o mesmo dedo que move a vista poderia virar a página sem querer.
- Com zoom, um dedo move a vista; tocar numa foto enquadra a foto; desfazer a pinça volta ao enquadramento mais próximo.
- Com zoom, a virada por arraste fica suspensa.
- Regras pequenas, e são elas que fazem o livro parecer objeto em vez de aplicativo.
Demonstração
- BookEnginecena, loop, abrir e fechar
- sheeta folha como fita dobrável
- LeafDynamicsmolas com peso na virada
- CameraRigenquadramento, zoom e pan
- Gesturesarrastar, tocar, pinçar
O conteúdo nunca toca na geometria.
- PageRendererdesenha a página numa textura
- PageStoretextura sob demanda, com cache
- AudioManagermúsica por capítulo, com fade
- DocStoresalva, versiona e funde
Projeto pessoal. O título, as fotos, os textos e as músicas do livro são privados e não aparecem aqui. O que este case mostra é o motor.
Interações
- A capa abre a partir da lombada, numa tomada cinematográfica só.
- A folha puxa, arrasta no ar e assenta: a curvatura tem mola própria.
Implementação
- TypeScript sobre Three.js e GSAP, empacotado com Vite; Vercel Functions e Vercel Blob cuidam do salvamento.
- Desde 28/09, música por link (arquivo, Google Drive, Dropbox, YouTube ou Spotify), com o trecho escolhido e o nome da faixa puxado do próprio link.
O que foi construído
- Livro 3D que abre numa tomada cinematográfica
- Virada por arraste, toque ou estrela
- Zoom de pinça que enquadra a foto tocada
- Modo de edição com guias de alinhamento
- Salvamento em nuvem com fusão entre telas
- Música por link, com o trecho escolhido
Tecnologia
- TypeScript
- Three.js
- GSAP
- Vite
- Web Audio
- Vercel Functions
- Vercel Blob
Resultado
Projeto pessoal em uso, e ainda crescendo: a música por link entrou em 28/09. O conteúdo é privado; aqui aparece só o motor.
11,1 mil
linhas de TypeScript, entre motor, conteúdo e edição
17
tipos de elemento por página: texto, foto, vídeo, música, enfeite
300
últimas versões guardadas na nuvem: nenhuma gravação sobrescreve outra
7
famílias tipográficas no modo de edição
0
passes de pós-processamento: a luz é da cena
Aprendizados
- Um livro 3D amador se denuncia pela página que vira como porta; o que convence é a ponta que atrasa e assenta.
- Parado, tem que custar zero: renderizar só quando algo se move é o que deixa um livro 3D viver no celular.
- Regras pequenas de gesto fazem um livro parecer objeto em vez de aplicativo.


