technology· 9 min read

Do Prompt ao 3D: Como o VULK Gera Código Three.js

A arquitetura em três estágios que transforma um prompt em texto em Three.js/WebGL pronto para produção — o que o modelo acerta, o que ainda precisa de um especialista, e o loop de refinamento exato.

João CastroJoão Castro
Do Prompt ao 3D: Como o VULK Gera Código Three.js

Atualizado a 17 de julho de 2026 — refrescado com dados verificados da plataforma e o pipeline de geração atual.

Como é que o VULK transforma um prompt de texto em código Three.js?

A resposta curta e completa: o VULK corre um pipeline de três estágios. O Estágio 1 interpreta o teu prompt e constrói uma arquitetura de cena (geometria, iluminação, interações, restrições). O Estágio 2 gera o código Three.js propriamente dito — cena, câmara, renderer, materiais, loop de animação — como módulos reais e executáveis, não templates preenchidos. O Estágio 3 adapta esse código a uma web app viva: integração com o ciclo de vida do React, canvas responsivo, tratamento de ecrãs retina, estados de carregamento, TypeScript. O resultado renderiza numa pré-visualização ao vivo em segundos, e refinas por conversa ("abranda a rotação 50%", "adiciona um brilho bloom").

Isto colapsa a barreira tradicional. Aprender Three.js suficientemente bem para publicar uma cena interativa polida leva semanas a meses; descrever uma leva uma frase. Jogos e experiências interativas já são 5,4% de tudo o que é gerado na plataforma — a categoria #2 de apps a seguir a dashboards e painéis de administração (dados da plataforma VULK, julho de 2026, N = 10.994 projetos ativos). A geração 3D está disponível no 3D Studio nos planos Pro e superiores.


O que acontece em cada estágio do pipeline?

Estágio 1: Compreender o pedido

O primeiro modelo lê o teu prompt e constrói um modelo mental do que estás a descrever:

"Cria uma montra de produto interativa. Um cubo 3D rotativo com imagens do produto em cada face. Clicar para pausar/retomar a rotação. Amigável para mobile."

O modelo extrai:

  • Conceito central: montra de produto rotativa
  • Geometria-chave: cubo
  • Interação-chave: clique para pausar
  • Restrição-chave: amigável para mobile
  • Pistas de estilo: "interativa", "produto"

A partir disto, o modelo gera um plano de arquitetura detalhado:

Scene:
  - Camera (perspective, positioned to see cube)
  - Lighting (key light, fill light, back light)
  - Cube geometry with image textures on each face

Interaction:
  - Raycaster for mouse/touch input
  - Animation state machine (rotating/paused)
  - Toggle on click

Performance:
  - Texture compression
  - Simple geometry (don't overdraw)
  - No unnecessary effects

Esta arquitetura não é aleatória. Baseia-se em milhares de exemplos de código Three.js bem escrito.

Estágio 2: Gerar a estrutura do código

O segundo modelo pega nessa arquitetura e gera a implementação Three.js completa:

import * as THREE from 'three';
import { TextureLoader } from 'three';

export class ProductShowcase {
  constructor(container) {
    this.scene = new THREE.Scene();
    this.camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
    this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
    this.isRotating = true;
  }

  setupLighting() {
    const keyLight = new THREE.DirectionalLight(0xffffff, 1);
    keyLight.position.set(5, 5, 5);
    this.scene.add(keyLight);

    const fillLight = new THREE.DirectionalLight(0xffffff, 0.5);
    fillLight.position.set(-5, 3, 5);
    this.scene.add(fillLight);

    const backLight = new THREE.DirectionalLight(0xffffff, 0.3);
    backLight.position.set(0, 5, -5);
    this.scene.add(backLight);
  }

  setupCube() {
    const loader = new TextureLoader();
    const materials = [
      new THREE.MeshPhongMaterial({ map: loader.load('/faces/front.jpg') }),
      new THREE.MeshPhongMaterial({ map: loader.load('/faces/back.jpg') }),
      // ... rest of faces
    ];

    const geometry = new THREE.BoxGeometry(2, 2, 2);
    this.cube = new THREE.Mesh(geometry, materials);
    this.scene.add(this.cube);
  }

  setupInteraction() {
    document.addEventListener('click', (e) => {
      this.isRotating = !this.isRotating;
    });
  }

  animate() {
    requestAnimationFrame(() => this.animate());

    if (this.isRotating) {
      this.cube.rotation.x += 0.005;
      this.cube.rotation.y += 0.01;
    }

    this.renderer.render(this.scene, this.camera);
  }
}

Isto não é um template com espaços preenchidos. É código real e executável.

Repara no que o modelo faz corretamente:

  • Padrões Three.js corretos (Scene, Camera, Renderer, Mesh)
  • Setup de iluminação sensato com iluminação de três pontos
  • Materiais que funcionam com essas luzes (o MeshPhongMaterial responde a luzes direcionais)
  • Loop de animação correto com requestAnimationFrame
  • Interação amigável ao toque
  • Consideração pelo mobile (setup de câmara responsivo)

Um developer júnior levaria 4+ horas a escrever isto. O modelo gera-o em segundos — em toda a plataforma, o tempo mediano do registo à primeira app gerada é de 47 segundos (dados da plataforma VULK, julho de 2026).

Estágio 3: Adaptar à plataforma

O código não compila apenas em isolamento. Precisa de encaixar numa aplicação web em execução:

  • Ligá-lo ao ciclo de vida do React (useEffect, cleanup)
  • Adicionar redimensionamento responsivo do canvas
  • Tratar a densidade de píxeis em ecrãs retina
  • Fornecer estados de carregamento enquanto as texturas carregam
  • Exportar para TypeScript

Este último ponto não é cosmético: 65% de todos os ficheiros de código gerados no VULK são TypeScript (dados da plataforma VULK, julho de 2026, N = 124.755 ficheiros), e o output 3D segue a mesma convenção. O resultado é um componente completo e pronto a fazer deploy, que encaixa num projeto Vite + React e renderiza na pré-visualização ao vivo server-side com hot reload.


Porque é que a geração de prompt-para-3D funciona mesmo?

O Three.js tem padrões. Todas as cenas seguem a mesma estrutura básica:

  1. Configurar cena, câmara, renderer
  2. Adicionar geometria e materiais
  3. Adicionar iluminação
  4. Implementar o loop de render
  5. Tratar o input do utilizador

O modelo viu milhares de exemplos de cada padrão. Aprendeu não só a sintaxe, mas o raciocínio. Sabe porque se usa DirectionalLight para a luz principal, porque o MeshPhongMaterial responde à iluminação, porque é preciso o loop de render, porque se tratam os eventos de redimensionamento da janela.

O que é que o modelo acerta de forma fiável?

Área O que o código gerado cobre
Geometria BoxGeometry, SphereGeometry, PlaneGeometry, ConeGeometry; UVs corretos para mapeamento de texturas; normais de vértices para iluminação
Materiais MeshBasicMaterial (sem luz), MeshPhongMaterial (brilhante), MeshStandardMaterial (PBR), ShaderMaterial para efeitos personalizados
Iluminação Luzes Ambient, Directional, Point e Spot com posições e intensidades sensatas
Animação Animações lineares/com easing/em loop, position/rotation/scale com tween, condicionais orientadas por estado
Desempenho Evitar overdraw, frustum culling, dicas de compressão de texturas, estratégias de LOD
Mobile Input tátil, dimensionamento responsivo do canvas, compensação do device pixel ratio, orçamentos de GPU mobile

Como é que os prompts de seguimento refinam uma cena 3D?

A geração não pára no código. Podes refiná-lo:

"O cubo roda depressa demais. Abranda-o 50%."

O modelo percebe que isto se refere à velocidade de rotação e ajusta o incremento:

if (this.isRotating) {
  this.cube.rotation.x += 0.0025; // Changed from 0.005
  this.cube.rotation.y += 0.005;  // Changed from 0.01
}

"Adiciona um efeito de brilho à volta do cubo."

O modelo gera um pipeline de postprocessing usando o EffectComposer e o UnrealBloomPass do Three.js, adicionando os imports e o setup necessários.

"Faz o fundo um gradiente de azul para roxo."

O modelo substitui a cor de fundo lisa por um gradiente de canvas aplicado a uma esfera grande, ou renderiza para uma textura de canvas.

Cada seguimento é uma modificação de código genuína e cirúrgica que entende o contexto da cena. Isto corresponde à forma como as pessoas usam a plataforma em geral: a conversa mediana de construção tem só 4 mensagens, mas os 10% de projetos no topo passam das 25 mensagens — um prompt para obter a cena, depois um loop de iteração para a tornares tua (dados da plataforma VULK, julho de 2026).

O que ainda exige especialização em 3D?

O modelo não consegue:

  • Otimizar para 2 milhões de polígonos e manter 60fps (isso exige profiling)
  • Implementar física personalizada (continuas a precisar de Cannon ou Rapier)
  • Criar shaders à medida para efeitos proprietários
  • Integrar modelos 3D externos em formatos exóticos
  • Depurar problemas de desempenho específicos de GPU

Para a maioria dos casos de uso, estes são casos-limite. Para a grande maioria dos projetos web 3D — montras de produto, cenas hero, jogos de browser, visualizações de dados — o código gerado está pronto para produção.

O que significa isto para o desenvolvimento web 3D?

Isto é a consolidação das competências de gráficos web numa única interface. Não aprendes Three.js. Aprendes a descrever uma experiência 3D em linguagem natural. O modelo trata da tradução.

A barreira do 3D na web acabou de colapsar de "meses de aprendizagem" para "segundos de espera".


FAQ

Preciso de saber Three.js para gerar uma cena 3D com o VULK?

Não. Descreves a cena em linguagem simples — geometria, movimento, interação, estilo — e o pipeline produz o código Three.js/React Three Fiber. Conhecer o vocabulário 3D (materiais, bloom, orbit controls) ajuda-te a refinar mais depressa, mas não é necessário para obter uma cena funcional.

Posso editar o código Three.js gerado à mão?

Sim. O output é TypeScript standard num projeto Vite + React standard. Todos os ficheiros são visíveis e editáveis no editor, e podes exportar o código-fonte completo como ZIP ou enviá-lo para o GitHub (sincronização GitHub no Pro+). Não há runtime proprietário.

Que funcionalidades 3D posso pedir num prompt?

Primitivas de geometria e formas compostas, texturas, iluminação de três pontos, materiais PBR, controlos orbit/pointer-lock, interações com raycaster, postprocessing (bloom, profundidade de campo), skyboxes e loops de animação. Para física (gravidade, colisões), pede explicitamente a integração de Cannon.js ou Rapier.

A pré-visualização 3D corre no meu browser?

A app compila server-side na pré-visualização ao vivo do VULK e faz stream para o teu browser com hot reload; o rendering WebGL corre depois na tua GPU como em qualquer site Three.js. Funciona no Safari e em mobile porque a compilação não é feita no browser.

Que plano preciso para a geração 3D?

O acesso ao 3D Studio começa no plano Pro ($39.99/mês). O VULK é paid-only — não há free tier — mas todos os planos começam com um intro de 3 dias com acesso completo (o intro do Pro é $9.99, creditado no teu primeiro mês se continuares).

Posso fazer deploy de uma cena 3D gerada?

Sim — deploy com um clique para o Cloudflare Pages. Uma cena Three.js compila para assets estáticos, por isso vai para um CDN global com um URL público, e podes associar um domínio personalizado (Pro+).


Experimenta em vulk.dev/3d-studio. Faz prompt de qualquer ideia 3D e vê o código que gera. Isto não é autocomplete — é geração 3D genuína.

Publicado por João Castro · 9 min read

Continuar a ler

Todos os artigos
Suporte VULK

Online

Olá! Como posso te ajudar hoje?

Tópicos populares

Suporte de IA • support.vulk.dev

Do Prompt ao 3D: Como o VULK Gera Código Three.js — Blog | VULK