Forja — assets 3D interativos pra jogos, criados por IA com validação
Formato declarativo que compila pra glTF pronto pra Three.js, Godot e Unity — portas que abrem, luzes que acendem, colisores. Agentes de IA criam assets via MCP num loop medir → ver → corrigir

🚧 Em construção — o núcleo (formato, validação, render e export) já roda de ponta a ponta, com 20 templates paramétricos. Ainda não tem versão pública.
Fazer um asset 3D simples pra jogo — uma porta que abre, uma luminária que acende, uma cadeira com colisão — exige saber modelar, rigar, animar e exportar do jeito que cada engine espera. A Forja junta tudo isso num formato declarativo (.forja.json) que compila pra glTF pronto pra Three.js, Godot e Unity, com estados, animações, luz e colisores já embutidos.
Ela tem duas portas de entrada sobre o mesmo núcleo:
- Agentes de IA (Claude Code, Cursor…) conectam no MCP da Forja e criam assets validados: o agente gera, mede, vê o render e corrige em loop.
- Editor web pra quem está começando no 3D: escolher um template, ajustar, criar estados e exportar.
O insight que reorganizou o projeto
A primeira versão deixava a IA escrever o JSON do asset direto. Ao gerar o primeiro objeto complexo (um carro) sem ver o resultado, ficou claro o problema: modelar às cegas não produz asset bom — nem por IA, nem por humano. O que resolve não é caprichar no prompt, é fechar o loop ver → corrigir.
Isso virou a regra de ouro do fluxo:
- Medição antes da imagem. O render engana (ângulo, oclusão); a medição não.
measure_assetconfere dimensões, base no chão e valida peça por peça: peça solta, objeto separado do resto, junta que atravessa o corpo ao abrir e orçamento de triângulos — cada aviso diz a peça, a vizinha mais próxima e a distância. - Render headless. O servidor renderiza sem navegador aberto (WebGL headless), inclusive uma folha com iso/frente/lado/topo, a tira de transição de um estado e os quadros de um clipe de animação. É isso que deixa o agente "enxergar".
- Varredura de clipes quadro a quadro. Uma animação pode estar certa no começo e no fim e atravessar o corpo no meio; a validação percorre o clipe e aponta o instante, o grupo e a peça atingida.
O que um asset tem
| Forma | primitivas (incl. roundedBox), perfis (lathe, prism com bevel), CSG, subdivisão, arrays/espelho, texturas procedurais |
| Estilo | temas de cor (escritorio, medieval, neon, natureza) com papéis e acabamentos — mesmo tema, mundo coeso |
| Interatividade | juntas (dobradiça/trilho) com pivô na dobradiça física, estados (fechado/aberto, acesa/apagada), clipes de keyframes, luz real (KHR_lights_punctual), pontos de anexação e colisores |
| Export | presets por engine, LOD e manifest.json |
Tudo vira convenção glTF padrão: os demos de Three.js e Godot 4 carregam os .glb com estados, animações, luz e colisores funcionando sem código por asset.
Templates paramétricos
O pacote casa/escritório tem 20 templates (porta, janela, armário, geladeira, sofá, cama, luminária…), cada um com 4–6 parâmetros. A suíte de testes compila, mede e valida toda combinação de parâmetros — qualquer variação sai sem peça solta e com a porta abrindo no sentido certo. Pro agente, isso muda o jogo: em vez de modelar do zero, ele parte do template e ajusta.
Arquitetura
- Um núcleo, várias portas. O agente (via MCP) e o editor (via HTTP) usam o mesmo compilador e a mesma validação — o que passa num, passa no outro.
- Toda edição é uma operação (
apply_ops): gizmo, inspector e IA emitem as mesmas ops sobre IDs estáveis, base pra histórico, estados e animação. - CSG com manifold pra interiores ocos de verdade (gaveta que guarda, lixeira que recebe), em vez de só marcar um volume.
npx forja initprepara qualquer projeto: cria a pasta de assets, registra o MCP no.mcp.jsone deixa as instruções pro agente — ele lê o guia pelo próprio MCP, sem precisar do repositório.
Editor
O editor web é dividido em modos — Biblioteca, Customizar, Animar e Exportar — e cada um mostra só as ferramentas dele. Tem gizmo com atalhos estilo indústria, editor 2D de perfis (arrastar, inserir e remover pontos de lathe/prism), timeline com keyframes (K grava, espaço toca, scrub, curva por trecho), modo pose (clique no membro, limites de articulação respeitados, espelhar, biblioteca de poses) e exportação com validação antes de gerar o arquivo.
Próximos passos
- Formato nativo
.forjacom histórico persistente de operações (undo entre sessões) e snapshots nomeados. - Mais pacotes temáticos de templates, além de casa/escritório.
- Uma versão pública pra rodar em qualquer projeto com
npx forja.
TypeScript · Three.js · glTF · MCP · Fastify · React · manifold-3d
Código privado — o case detalha a arquitetura e as decisões técnicas.
Curtiu o projeto?
Se quiser conversar sobre esse projeto, arquitetura ou uma oportunidade de trabalho, é só me chamar.
