Skip to content

Repository files navigation


✦ Editor ThreeJS

Editor 3D experimental & Construtor visual de sites 3D interativos

Next.js · React Three Fiber · Electron · Rapier3D · NVIDIA NIM


TutorialDownload DesktopDemo Online


ModelagemSculptPhysicsIAExport

Editor de cena e modelagem 3D com viewport interativo, primitivas, import/export GLB/GLTF, materiais PBR com texturas, modelagem poligonal (Draw Polygon, Knife, Edge Loop/Ring, Bridge, Fill, Inset), edit mode (vertices/arestas/faces), sculpt com 10 modos e fallback de pressao para mouse, fisica Rapier3D, timeline com keyframes, behaviors procedurais, efeitos de particulas, fluid, scripts JavaScript por objeto, geracao de malhas via IA (NVIDIA NIM), layers, imagens de referencia, asset browser (Poly Haven), atalhos de produtividade e app desktop Windows.

Construtor visual de sites 3D interativos com Page Builder drag-and-drop, Modo Dados (System Builder), Interaction Engine, Preview com metricas reais e Export Engine (Next/React/Vite/HTML standalone com Three.js CDN).


Destaques

3D EditorConstrutor Web 3D
Viewport interativo com orbitaPage Builder drag-and-drop
Modelagem poligonal completaSystem Builder visual (dados)
Sculpt com 10 modosInteraction Engine (triggers + actions)
Fisica Rapier3D em tempo realPreview com metricas reais (FPS, draw calls, heap)
Timeline com keyframes exportaveisExport: Next / React / Vite / HTML standalone
Materiais PBR + texturasMulti-pagina com rotas editaveis
IA gera malhas via prompt (NVIDIA NIM)ZIP com assets reais organizados
Scripts JS por objetoBreakpoints responsivos (base/tablet/mobile)

Badges

VersionStatusNext.jsReactThree.jsTypeScriptTailwindElectronRapierZustandLicensePRs


Sumario


Recursos

Cena e Interface

  • Projeto inicia em branco, sem objetos pre-carregados
  • Viewport 3D com @react-three/fiber, @react-three/drei e controles de orbita
  • Scene Graph para selecionar, ocultar, bloquear e remover objetos
  • Painel de propriedades com nome, tipo, visibilidade, posicao, rotacao e escala
  • Context menu no Scene Graph para acoes rapidas
  • Layout responsivo para desktop, tablet e mobile
  • Tutorial integrado com spotlight guiado
  • Modos de viewport: texturizado, solido, wireframe, vertices, poligonos e primitiva
  • Layers com visibilidade, bloqueio e cor
  • Imagens de referencia para modelagem

Objetos e Ferramentas

  • Ferramentas: Select, Mover, Girar, Escalar, Editar, Sculpt, Draw Polygon e Knife
  • Gizmo com TransformControls para transforms e selecoes de malha
  • Primitivas: cubo, esfera, cilindro, cone, toro e plano
  • Texto 3D com depth e bevel
  • Importacao de SVG com extrusao
  • Modelagem de primitivas com dimensoes e segmentos configuraveis
  • Conversao de primitivas e modelos importados para malha editavel
  • Importacao de modelos .glb e .gltf
  • Exportacao da cena editada em .glb
  • Asset Browser integrado (Poly Haven)
  • Undo/Redo por snapshots
  • Copiar, colar, duplicar e apagar objetos por atalhos

Materiais

  • Editor de material com cor, emissive, metalness, roughness e opacidade
  • Textura difusa, normal map, roughness map e displacement map
  • Texturas carregadas no viewport e preservadas no export GLB
  • Repeticao, offset e rotacao de textura
  • Multi-materiais por face

Edit Mode

  • Selecao e movimento de vertices, arestas e faces (multipla para vertices/faces)
  • Modos de selecao: Click, Box (caixa arrastavel) e Lasso (laco livre), com preview visual em tela
  • Hover preview de vertices, arestas e faces antes de clicar
  • Operacoes: extrudar face, subdividir face, apagar face, soldar vertices, bevel de aresta, loop cut, booleanos (union/subtract/intersect), bridge edges, fill face, inset face, flip normals, recalculate outward normals, smooth/flat shading, merge by distance, edge loop select e edge ring select
  • Snap to vertex/edge/face durante transform de sub-elemento
  • Multi-materiais por face em lote (selecao multi-face + atribuicao)
  • Estrutura interna PolygonMesh com vertices/edges/faces explicitos (IDs + adjacencia) para operacoes topologicas
  • Conversao bidirecional entre PolygonMesh e EditableMesh (Three.js BufferGeometry)

Sculpt

  • Pincel para amassar, puxar, agarrar, inflar, suavizar, clay, crease, flatten, pinch e mask.
  • Falloff suave, esferico, afiado e linear.
  • Controles de raio e forca.
  • Fallback de pressao para mouse baseado em velocidade do cursor (mouse rapido = menos forca, mouse lento = mais forca).
  • Smoothing default 0.35 para estabilizar strokes de mouse.
  • Simetria X, front faces only, accumulate, spacing e estabilizador de caneta configuraveis.

Fisica

  • Integracao com @dimforge/rapier3d-compat.
  • Corpos dinamico, estatico e cinematico.
  • Colliders: box, sphere, capsule, cylinder, mesh e convex hull.
  • Massa, friccao, restituicao e damping.
  • Triggers e lock de eixos.

Animacao

  • Timeline com keyframes de transform.
  • Interpolacao: hold, linear e ease.
  • FPS, start/end frame e playhead configuraveis.

Behaviors

  • Pular, andar, acelerar, rolar, gravidade, bolha e deformar massa.
  • Parametros por behavior.

Efeitos

  • Fogos, fogo, fumaca, brilho, luz e superficie liquida (fluid).
  • Cor, intensidade, tamanho e count por efeito.

Scripts

  • Motor de scripts JavaScript por objeto.
  • API com THREE, position, rotation, scale, delta e elapsed.
  • Logs no console com prefixo [Script].

IA

  • Agente NVIDIA NIM para gerar malhas 3D (vertices + faces) via prompt.
  • Decomposicao automatica em varias partes com hierarquia via parentName.
  • Retry automatico quando a cena fica simples demais.
  • Compactacao de layout para manter a composicao centralizada.
  • Subdivisao e suavizacao procedural das malhas geradas.

Virada para Construtor Web 3D

O produto deixou de ser somente um editor de cena/modelagem 3D e passou a ter uma primeira arquitetura de construtor visual de sites 3D interativos. O Modo Cena continua sendo o nucleo 3D. A nova camada usa essa cena dentro de paginas, heroes, secoes, backgrounds WebGL e componentes web exportaveis.

O que foi implementado

  • Navegacao principal por modos:
    • Cena: mantem o editor 3D existente, sem recriar ou remover funcionalidades.
    • Pagina: monta uma pagina visual usando elementos web e a cena 3D atual, com drag-and-drop e reparenting.
    • Dados: inicia o System Builder com modelo de dados visual para colecoes, campos, validacoes e queries.
    • Interacoes: conecta elementos HTML da pagina com objetos/luzes/camera da cena.
    • Preview: executa a experiencia como site, com desktop/tablet/mobile e metricas reais (FPS, draw calls, triangulos, resolucao de texturas, heap JS, tamanho de assets).
    • Exportar: gera arquivos reais para projetos web, com ZIP incluindo assets organizados.
  • Novo estado central em src/store/experienceStore.ts.
  • Persistencia de projeto em JSON versionado:
    • schema ProjectExperience v1
    • arquivo .web3d.json
    • snapshot de pagina, cena, materiais, layers, imagens de referencia, timeline, interacoes e schema de dados
    • catalogo de assets referenciados por cena, materiais, pagina e referencias
    • autosave em localStorage (debounce 4s) + historico de versoes (ate 24 entradas)
    • migracoes de schema entre versoes
  • Botoes de Salvar, Carregar e Historico (restaurar autosave/versao) no toolbar dos modos web.
  • Reordenacao manual de elementos no Project Tree com mover para cima/baixo entre irmaos.
  • Drag-and-drop com reparenting na arvore de pagina (indicadores before/after/inside).
  • Drag-and-drop corrigido para elementos aninhados, respeitando pai e indice real do alvo.
  • Edição direta no canvas do Modo Pagina:
    • textos
    • labels de botoes
    • titulo/body de cards
    • marca da navbar
    • texto do footer
  • Guias e handles no canvas do Modo Pagina:
    • alca para mover o elemento selecionado
    • handles para redimensionar largura, altura e canto inferior direito
    • snapping de 8px em movimento/redimensionamento
    • linhas-guia de centro e leitura visual de largura x altura
  • Atalhos no canvas de pagina:
    • Delete / Backspace remove o elemento selecionado
    • Ctrl+D duplica ao lado do elemento original
    • setas movem o elemento selecionado via top/left
    • Shift + setas move em passos maiores
  • Logica de multiplas paginas/rotas:
    • ProjectExperience agora preserva pages[] e activePageId
    • cada pagina tem path, title, description e flag protected
    • Project Tree permite criar, selecionar, duplicar, remover e editar metadados de paginas
    • a pagina ativa alimenta canvas, propriedades, preview e export
    • o Preview intercepta links internos para rotas cadastradas e troca a pagina ativa sem recarregar o editor
  • Painel de propriedades web expandido com edição por breakpoint (base, tablet, mobile) e controles de position, top/left/right/bottom, flex/grid, transform, background image, border, overflow, object fit, opacity e transition.
  • Novos modelos de dados para:
    • ProjectExperience
    • PageDocument
    • PageNode
    • InteractionDocument
    • ProjectSettings
    • DataSchema
    • DataCollection
    • DataField
    • SavedQuery
  • Nova arquitetura em camadas:
    • src/lib/page-builder/
    • src/lib/data-model/
    • src/lib/interaction-engine/
    • src/lib/preview-runtime/ via componentes runtime do editor
    • src/lib/export-engine/
    • src/lib/template-engine/
    • src/lib/scene-engine/
  • Modo Pagina com elementos iniciais:
    • navbar
    • sections
    • containers
    • textos
    • botoes
    • cards
    • imagens
    • videos
    • footer
    • sceneCanvas vinculado a cena atual
  • Arvore de projeto hibrida:
    • Page: elementos web.
    • Scene: objetos 3D existentes.
  • Painel de propriedades contextual:
    • Elemento web: nome, conteudo, layout, estilo visual, responsividade.
    • Interacao: evento, origem, alvo, acao, parametros, duracao e easing.
    • Objeto 3D selecionado: reaproveita o painel 3D existente.
  • Modo Interacoes com estrutura baseada em:
    • trigger
    • source
    • action
    • target
    • params
    • duration/easing
  • Acoes de runtime ja conectadas no preview:
    • mover objeto 3D
    • rotacionar objeto 3D
    • escalar objeto 3D
    • alterar cor/material
    • alterar opacidade
    • ligar/desligar luz
    • mover camera por scroll
    • mostrar/esconder elemento HTML
    • trocar texto
    • abrir modal simples
    • navegar para link
  • Triggers ja previstos no modelo:
    • page load
    • click
    • hover
    • mouse move
    • scroll
    • section enter
    • section leave
    • double click
    • focus
    • blur
  • Modo Preview:
    • desktop/tablet/mobile
    • scroll real
    • hover/click/focus basicos
    • metricas reais em tempo real: FPS, draw calls, triangulos, geometrias, texturas GL, vertices, objetos, luzes, tamanho real de assets (fetch), resolucao de texturas (largura x altura), heap JS usado/total
    • alertas de budget/performance baseados em medicoes reais (draw calls > 120, textura > 2048px, assets > 20MB, FPS < 30)
  • Export Engine:
    • Next.js
    • React
    • Vite
    • HTML/CSS/JS puro (runtime standalone com Three.js via CDN, sem build)
    • JSON
    • ZIP com assets reais organizados em public/models, public/textures, public/images, public/videos (remapeamento automatico de URLs no JSON exportado)
  • Runtime de animacao: keyframes da Timeline sao exportados e reproduzidos no runtime (Next/React/Vite e standalone HTML) com interpolacao hold/linear/ease
  • Estruturas exportadas:
    • scene-data.json
    • page-data.json
    • pages-data.json
    • interactions-data.json
    • data-schema.json quando o projeto tem schema de dados
    • schema.prisma ou database-schema.ts quando o ORM alvo e Prisma/Drizzle
    • componentes SceneCanvas (com AnimationPlayer), PageExperience, Hero3D e sections
    • main.js standalone com Three.js + OrbitControls + GLTFLoader via CDN
  • Autosave e historico de versoes do ProjectExperience em localStorage (ate 24 entradas, com restauracao via toolbar)
  • Drag-and-drop e reparenting no Page Builder (com indicadores visuais de posicao before/after/inside)
  • System Builder / Fase 1:
    • tipos centrais em src/lib/data-model/types.ts
    • defaults e clonagem de schema em src/lib/data-model/defaults.ts
    • store Zustand em src/store/dataModelStore.ts
    • Modo Dados no editor
    • editor visual de colecoes, campos, validacoes, relacoes e queries salvas
    • persistencia do dataSchema no .web3d.json, autosave e historico
    • exportacao do schema em JSON e geracao inicial para Prisma/Drizzle em src/lib/export-engine/generateSchema.ts
  • Tutorial guiado expandido para o construtor web:
    • spotlight especifico para Modo Pagina, paginas/rotas, Project Tree, canvas, handles, propriedades e breakpoints
    • guia dedicado para Modo Dados com colecoes, campos, variaveis, queries e impacto nos componentes conectados
    • passos que mudam automaticamente entre Pagina, Dados, Interacoes e Preview
  • Templates iniciais:
    • Hero 3D texto/modelo
    • Hero background WebGL
    • Landing produto 3D
    • Portfolio 3D
    • Institucional tech
    • Educacional interativa
    • Showcase GLB
    • Card 3D interativo
    • Background particulas
    • Background superficie liquida
    • Pagina jogo indie

Correcoes feitas apos os primeiros testes

O primeiro runtime do Modo Pagina estava simples demais e nao respeitava a cena como o Modo Cena. Depois disso, o ExperienceSceneCanvas foi corrigido para renderizar melhor a cena real:

  • Primitivas respeitam dimensoes/segmentos de geometry.
  • editableMesh agora renderiza no Modo Pagina/Preview.
  • Materiais PBR usam:
    • cor
    • emissive
    • metalness
    • roughness
    • opacidade
    • textura difusa
    • normal map
    • roughness map
    • displacement map
    • repeat/offset/rotation de textura
  • Modelos GLB/GLTF importados por hierarquia usam submalhas reais, em vez de caixas fallback.
  • Subnos GLTF preservam material original quando nao ha override.
  • Overrides de material/textura do editor sao aplicados no runtime web.
  • Texto 3D usa TextGeometry, depth e bevel.
  • SVG extrudado tambem entra no runtime web.
  • Luzes da cena passaram a ser respeitadas:
    • point
    • spot
    • directional
    • ambient
    • cor
    • intensidade
    • distance/decay
    • angle/penumbra
    • shadow bias/radius
  • Luzes padrao do preview so aparecem se a cena nao tiver nenhuma luz visivel.
  • Interacoes de cor tambem atingem luzes.
  • toggleLight agora altera luzes no runtime.

Validacoes feitas

  • npx eslint focado nos arquivos novos/alterados.
  • npx tsc --noEmit.
  • npm run build.
  • Teste visual via Chrome headless/CDP em /editor.
  • Pixel check WebGL no canvas de Pagina/Preview.
  • Checagem mobile do Preview para evitar colisao entre texto, CTA e canvas.
  • Validacao incremental apos save/load, metricas e reordenacao:
    • npx eslint src\components\Editor3D\ExperienceToolbar.tsx src\components\Editor3D\ExperienceProperties.tsx src\components\Editor3D\ProjectTree.tsx src\lib\project-experience\persistence.ts src\lib\preview-runtime\metrics.ts src\lib\page-builder\tree.ts src\store\experienceStore.ts src\store\timelineStore.ts
    • npx tsc --noEmit

O que ainda falta fazer

System Builder

  • Fase 1: Data Model Designer com DataSchema, colecoes, campos, validacoes, relacoes e queries salvas.
  • Persistir dataSchema em save/load, autosave/historico e exportar data-schema.json.
  • Gerar schema inicial para Prisma e Drizzle.
  • Fase 2: componentes de pagina conectados a dados (dataTable, dataForm, dataList, dataChart, dataStat, pageRoute).
  • Fase 2: sistema de variaveis e binding {{var}} no runtime da pagina.
  • Fase 2: acoes de interacao para createRecord, updateRecord, deleteRecord, loadCollection, runQuery, setVariable, incrementVariable, toggleVariable, showToast, setLoading e setError.
  • Fase 2: geracao inicial de API routes por colecao (generateApiRoutes.ts) com handlers CRUD para Next.
  • Fase 2 pendente: persistencia real em banco nos componentes de dados do editor/preview; hoje o preview usa registros em memoria e dados de exemplo.
  • Fase 2 pendente: ligar dataForm exportado aos API routes gerados fora do preview standalone.
  • Fase 2 pendente: resolver {{record.campo}} em todos os contextos de lista/tabela/export com a mesma engine do editor.
  • Fase 3: Workflow Engine com triggers, actions, condicoes, delay, email/webhook/script e execucao visual.
  • Fase 3: Formula Engine para expressoes calculadas e binding de dados.
  • Fase 3: validacao server-side com Zod gerada a partir do DataSchema.
  • Fase 4: Auth visual com roles, permissions, paginas publicas/protegidas e guards reais.
  • Fase 4 parcial: multipage no editor com pages[], activePageId, rotas, metadados e navegacao interna no Preview.
  • Fase 4 pendente: parametros dinamicos de rota, SEO completo por pagina, historico/back do navegador sincronizado com o store e guards de autenticacao reais.
  • Fase 5: export full-stack com package.json, Prisma/Drizzle completo, migrations, seed, .env.example, Docker opcional e instrucoes por target.
  • Fase 5: deploy adapters para Vercel/Netlify/Node self-hosted.

Fidelidade total entre Modo Cena e Modo Pagina

  • Reaproveitar mais codigo do renderer do Canvas3D sem carregar ferramentas de edicao.
  • Garantir paridade visual 1:1 para todos os tipos de objeto (effects, behaviors, flat shading, multi-materiais).
  • Renderizar efeitos no runtime web:
    • fireworks
    • fire
    • smoke
    • sparkle
    • light glow
    • fluid
  • Rodar behaviors no Preview/Pagina quando fizer sentido.
  • Rodar scripts customizados exportaveis com sandbox/API clara.
  • Suportar physics runtime no Preview como experiencia final, nao como ferramenta de edicao.
  • Preservar imagens de referencia quando forem usadas como elementos de experiencia.
  • Testar GLB/GLTF com multi-material complexo, skins, animations e morph targets.
  • Resolver edge cases de texturas remotas com CORS, object URLs e assets temporarios.

Interacoes

  • Implementar Condition de verdade.
  • Implementar section enter e section leave com IntersectionObserver.
  • Separar actions de HTML, camera, luz, material, textura e script em handlers modulares.
  • Melhorar toggleLight para suportar toggle real, restore por hover e intensidade animada.
  • Adicionar easing real por action.
  • Adicionar timeline/animation mixer para iniciar, pausar e resetar animacoes GLTF.
  • Suportar troca de textura por interacao.
  • Suportar scripts customizados exportaveis sem depender do editor.
  • Criar debug visual das interacoes.

Page Builder

  • Drag-and-drop para montar e reordenar elementos.
  • Reparenting na arvore (com indicadores visuais before/after/inside).
  • Selecao direta mais precisa no canvas de pagina.
  • Guias, snapping e handles para layout web.
  • Editor de breakpoints mais completo: criar, renomear, remover breakpoints e ajustar largura via slider no painel de propriedades.
  • Gerenciamento de multiplas paginas/rotas no Project Tree.
  • Tutorial guiado com spotlight para Page Builder, rotas, propriedades, Dados, campos e queries.
  • Estados hover/active/focus para elementos web.
  • Sistema de componentes reutilizaveis.
  • Formularios, modais reais e menus.
  • Camadas/z-index com visualizacao clara.
  • Autosave e historico de versoes do ProjectExperience.
  • Diff visual do documento de pagina.

Preview

  • Simular device frames sem depender do tamanho real da janela.
  • Mostrar tamanho real de assets (fetch + content-length).
  • Alertar modelos pesados por contagem de vertices/triangulos.
  • Alertar texturas grandes por resolucao real.
  • Medir draw calls, memoria e FPS com mais precisao (via gl.info e performance.memory).
  • Navegar entre paginas cadastradas quando botoes/menu items apontam para uma rota interna.
  • Sincronizar botao voltar/avancar do navegador com activePageId.
  • Testar preload/loading da cena.
  • Adicionar overlay de erros de runtime.

Exportacao

  • Gerar ZIP real do projeto exportado (formato .zip valido, sem dependencias externas).
  • Copiar e organizar assets reais em:
    • public/models
    • public/textures
    • public/images
  • Resolver assets importados via blob: antes da exportacao.
  • Gerar package.json, tsconfig, configs e instrucoes por target.
  • Exportar React/Next/Vite com runtime Three.js completo e player de animacao.
  • Exportar HTML/CSS/JS com carregamento Three.js funcional (standalone via CDN).
  • Exportar pages-data.json junto do page-data.json ativo.
  • Gerar rotas reais por pagina nos targets Next/React/Vite/HTML, em vez de exportar somente a pagina ativa como entrada principal.
  • Gerar componentes Tailwind quando settings.tailwind = true.
  • Preservar scripts customizados em arquivos separados.
  • Exportar interacoes como engine standalone (no main.js do HTML exportado).
  • Exportar animacoes (keyframes) e cameras com dados completos.

Templates

  • Transformar templates em presets editaveis com thumbs.
  • Melhorar copy/layout de cada template.
  • Criar cenas iniciais especificas por template.
  • Adicionar interacoes especificas por template.
  • Validar responsividade de todos os templates.

Testes e Qualidade

  • Testes unitarios para page-builder, interaction-engine, export-engine e template-engine.
  • Testes de regressao visual do Preview.
  • Testes com GLB real, textura real, luz real e malha editada.
  • Testes de exportacao abrindo o projeto gerado fora do editor.
  • Separar artefatos release/ e .next/ do lint global.

Analise para Editor Profissional

O editor possui uma base solida para manipulacao 3D, mas para atingir o nivel de editores profissionais (Blender, Unity, Unreal, Maya), as seguintes areas precisam de desenvolvimento:

Prioridade Alta (Core)

FuncionalidadeDescricaoImpacto
Save/Load de ProjetoFormato .e3d com compressao e versionamentoEssencial para fluxo de trabalho real
Export multi-formatoFBX, OBJ, USD, STL, DAECompatibilidade com outros softwares
Import multi-formatoFBX, OBJ, USD, 3DSImportar assets de diversas fontes
Node Editor (Materiais)Sistema de nos para shaders PBR e customCriacao de materiais complexos
Editor de UVsUnwrapping, painting, alinhamentoTexturizacao profissional
Rigging/SkinningBones, IK/FK, weight paintingAnimacao de personagens

Prioridade Media (Avancado)

FuncionalidadeDescricaoImpacto
ModifiersMirror, Array, Solidify, Subdivision, DecimateModelagem nao-destrutiva
ConstraintsLook At, Copy Transform, Limit DistanceAnimacao e controle procedural
Particle SystemEditor visual com curvas, colisao, sub-emittersEfeitos visuais complexos
Post-ProcessingBloom, SSAO, DOF, Motion Blur, TonemapQualidade visual final
Lightmap BakingBaking de luz estaticaPerformance em cenas grandes
Terrain EditorHeightmap, sculpting, texturizacaoCriacao de mundos

Prioridade Baixa (Especializado)

FuncionalidadeDescricaoImpacto
Fluid SimulationLiquidos, gases, SPH/FLIPEfeitos especiais
Cloth SimulationTecidos, bandeiras, roupasRealismo fisico
Hair/Fur SystemCabelos, pelos, gramaPersonagens realistas
NavMesh/PathfindingNavegacao para IAGames e simulacoes
Plugin SystemAPI para extensoesExtensibilidade
Multi-user EditingEdicao colaborativaTrabalho em equipe

Comparativo com Editores Profissionais

RecursoEste EditorBlenderUnityUnreal
Modelagem poligonal
Sculpt
Node Materials
Rigging/AnimationBasico
UV Editor
Physics
Particle SystemBasico
Terrain
Post-Processing
Scripting
VR/AR
Web Builder 3D
Export HTML Standalone

Stack

StackTecnologia
FrameworkNext.js 16
UIReact 19 · Tailwind CSS 4
LinguagemTypeScript 5
3DThree.js r184 · React Three Fiber · Drei
FisicaRapier3D (@dimforge/rapier3d-compat)
EstadoZustand
IconesLucide React
Performancethree-mesh-bvh
DesktopElectron 35 · electron-builder
IANVIDIA NIM (nemotron-70b · llama-3.1-8b)

Como Rodar

Instale as dependencias:

npm install

Inicie o servidor de desenvolvimento:

npm run dev

Abra no navegador:

http://localhost:3000

Desktop

O editor tambem roda como app desktop Windows via Electron.

Configurar build desktop

Gere o instalador Windows:

npm run dist

Para Windows, macOS e Linux:

npm run dist:all

Os instaladores sao gerados em release/.

Servir instalador pelo app

Defina no .env:

# Opcao 1: URL externa (GitHub Releases, S3, Google Drive)INSTALLER_URL=https://github.com/DinDja/Editor-ThreeJS/releases/download/App/Editor.3D-1.0.0-setup.exe# Opcao 2: arquivo local (self-hosted)INSTALLER_DIR=./releaseINSTALLER_NAME=Editor.3D-1.0.0-setup.exe

O botao Desktop na toolbar dispara o download pela rota /api/download/desktop.


Scripts

ComandoDescricao
npm run devInicia o app em modo desenvolvimento
npm run buildGera a build de producao
npm run startServe a build de producao
npm run lintExecuta o ESLint
npm run iconsGera icones do app
npm run electronAbre o app no Electron (requer build)
npm run electron:devNext dev na porta 3456 para Electron
npm run distBuild + instalador Windows x64
npm run dist:allBuild + instaladores Win/Mac/Linux

Estrutura

Ver arvore de arquivos
src/
app/
layout.tsx
page.tsx
globals.css
api/
ai/generate/route.ts
assets/polyhaven/
assets/proxy/
download/desktop/route.ts
models/route.ts
components/
Editor3D/
AiPromptModal.tsx
AssetBrowserModal.tsx
Canvas3D.tsx
CollapsibleSection.tsx
ContextMenu.tsx
DrawPolygonOverlay.tsx
EditorModeBar.tsx
EditorShortcuts.tsx
ExperienceProperties.tsx
ExperienceSceneCanvas.tsx
ExperienceToolbar.tsx
ExportWorkspace.tsx
index.tsx
InteractionsWorkspace.tsx
KnifeOverlay.tsx
MaterialEditor.tsx
MeshEditOverlay.tsx
ModelingTools.tsx
PageBuilderWorkspace.tsx
PageExperience.tsx
PhysicsRuntime.tsx
PreviewWorkspace.tsx
Properties.tsx
ProjectTree.tsx
SceneGraph.tsx
Timeline.tsx
Toolbar.tsx
TransformGizmo.tsx
TutorialSpotlight.tsx
ModelViewer.tsx
lib/
aiMeshEnhancer.ts
animation.ts
behaviors.tsx
effects.tsx
export-engine/
exportExperience.ts
types.ts
zip.ts
fileOps.ts
fluid.tsx
geometryOps.ts
gltfImport.ts
interaction-engine/
meshOps.ts
nvidiaNim.ts
page-builder/
physics.ts
polygonMesh.ts
preview-runtime/
metrics.ts
project-experience/
persistence.ts
projectHistory.ts
useProjectAutosave.ts
scene-engine/
scriptEngine.tsx
template-engine/
store/
contextMenuStore.ts
editorStore.ts
experienceStore.ts
historyStore.ts
initialScene.ts
materialStore.ts
physicsStore.ts
polygonMeshStore.ts
previewStatsStore.ts
sceneStore.ts
sceneTree.ts
timelineStore.ts
types.ts

Fluxo de Uso

Fluxo Cena 3D

 Add / Import GLB / Gerar IA
│
▼
Selecionar objeto (viewport ou Scene Graph)
│
▼
Transformar ── Mover · Girar · Escalar
│
▼
Editar Properties (transforms, material, modelagem)
│
├──▶ Edit Mode (vertices / arestas / faces)
├──▶ Draw Polygon (desenhar poligonos do zero)
├──▶ Knife (cortar faces interativamente)
├──▶ Sculpt (pincel)
├──▶ Fisica / Behaviors / Scripts / Efeitos
└──▶ Animar (Timeline + keyframes)
│
▼
Exportar cena → .glb
  1. Use Add para inserir uma primitiva, Importar para carregar .glb/.gltf, ou Gerar IA para criar malhas via prompt.
  2. Selecione um objeto no Scene Graph ou diretamente no viewport.
  3. Use Mover, Girar e Escalar para transformar o objeto.
  4. Edite transforms, modelagem e material no painel Properties.
  5. Use Editar para selecionar vertices, arestas ou faces e mover a selecao com o gizmo.
  6. Use Draw Polygon para desenhar poligonos clicando no viewport e fechando faces.
  7. Use Knife para cortar faces interativamente com preview de linha.
  8. Use Sculpt para deformar a malha com pincel.
  9. Aplique fisica, behaviors, efeitos ou scripts conforme necessario.
  10. Crie keyframes na Timeline para animar objetos.
  11. Use Exportar para baixar a cena atual como .glb.

Fluxo Site 3D Interativo

 Modo Cena
│
▼
Criar/importar cena 3D
│
▼
Modo Pagina
│
▼
Criar hero · sections · cards · textos · botoes
│
▼
Inserir Scene Canvas na pagina
│
▼
Modo Interacoes
│
▼
Conectar HTML → objeto / luz / camera 3D
│
▼
Modo Preview
│
▼
Testar desktop · tablet · mobile
│
▼
Modo Exportar
│
▼
Gerar React / Next / Vite / HTML + JSON
  1. Monte a cena no Modo Cena.
  2. Va para Modo Pagina.
  3. Escolha um template ou adicione secoes manualmente.
  4. Insira 3D Scene Canvas dentro de uma section/hero.
  5. Adicione textos, botoes, cards, imagens, videos, navbar e footer.
  6. Va para Modo Interacoes.
  7. Crie triggers como hover, click, mouse move ou scroll.
  8. Escolha um alvo: elemento HTML, objeto 3D, luz, camera ou cena atual.
  9. Teste no Modo Preview.
  10. Ajuste responsividade e performance.
  11. Gere os arquivos no Modo Exportar.

Modelagem

Edit Mode

O modo Editar converte primitivas e modelos importados para uma malha editavel. Em modelos importados, a geometria e achatada em uma malha unica para permitir edicao direta.

No painel Modelagem:

  • Vertices: seleciona pontos individuais; use Shift para selecao multipla.
  • Edges: seleciona arestas (atalho 2); use Shift para selecao multipla.
  • Faces: seleciona triangulos da malha; use Shift para selecao multipla.
  • Extrudar: cria volume a partir da face selecionada.
  • Subdividir: divide uma face selecionada em triangulos menores.
  • Soldar: junta vertices selecionados no centro da selecao.
  • Bevel Edge: chanfra uma aresta selecionada criando novos vertices e faces.
  • Loop Cut: corta todas as arestas paralelas a selecionada inserindo midpoints.
  • Boolean: union, subtract e intersect com outro objeto da cena.
  • Bridge Edges: une duas arestas selecionadas com faces.
  • Fill Face: preenche uma face a partir de vertices selecionados.
  • Inset Face: cria inset de uma face selecionada.
  • Flip Normals: inverte a ordem dos vertices de faces selecionadas.
  • Merge by Distance: funde vertices proximos por threshold.
  • Delete Vertex/Edge/Face: remove o subelemento selecionado.
Modelagem de primitivas
  • Duplicar o objeto.
  • Criar arrays.
  • Espelhar nos eixos X, Y ou Z.
  • Aplicar escala na geometria.
  • Aumentar ou reduzir segmentos.
  • Alterar largura, altura, profundidade, raio e segmentos.

Mais segmentos deixam a malha melhor para edicao e sculpt.


Modelagem Poligonal

Alem do Edit Mode classico, o editor tem ferramentas dedicadas para modelagem poligonal manual, inspiradas no Edit Mode do Blender.

Draw Polygon

Desenhe poligonos do zero clicando no viewport.

  1. Ative a ferramenta com P ou botao Draw Polygon (icone caneta) na toolbar.
  2. Clique no grid XZ para criar vertices. Uma linha amarela conecta os pontos.
  3. Ao aproximar do 1º vertice (esfera fica verde) e clicar, a face se fecha.
  4. Alternativamente, pressione Enter ou clique com o botao direito para fechar.
  5. Esc cancela o desenho.

Se houver um objeto de malha selecionado, a nova face e adicionada a ele. Caso contrario, um novo objeto Mesh e criado.

Knife Tool

Corte faces interativamente com preview de linha.

  1. Ative com K ou botao Knife (icone tesoura) na toolbar.
  2. Clique na superficie da malha para definir pontos de corte. Uma linha vermelha mostra o caminho.
  3. Pressione Enter ou clique com o botao direito para aplicar o corte.
  4. Esc cancela.

O corte cria novos vertices nos pontos de intersecao e divide as faces atravessadas em duas.

Edge Loop / Edge Ring Select

  • Edge Loop: seleciona um loop continuo de arestas a partir de uma aresta. Disponivel no polygonMeshStore.
  • Edge Ring: seleciona um ring de arestas paralelas. Disponivel no polygonMeshStore.

Estrutura PolygonMesh

A estrutura interna PolygonMesh mantem vertices, edges e faces com IDs explicitos e adjacencia:

typePolygonMesh={vertices: Map<VertexId,{id,position}>;edges: Map<EdgeId,{id,a,b,faces[]}>;faces: Map<FaceId,{id,vertices[],edges[]}>;};

Conversao bidirecional com EditableMesh (triangulado) permite renderizar via Three.js e exportar GLB.


Sculpt

O modo Sculpt deforma a malha com um pincel:

ModoAcao
Amassar (push)Empurra a superficie para dentro
Puxar (pull)Puxa a superficie para fora
Agarrar (grab)Arrasta a regiao sob o pincel
Inflar (inflate)Expande a regiao ao redor do ponto
Suavizar (smooth)Aproxima vertices dos vizinhos
ClayAdiciona volume em camadas
CreaseCria vincos na superficie
FlattenAchatar a superficie
PinchPinca vertices para o centro do pincel
MaskProtege regioes da edicao

Falloff: suave, esferico, afiado e linear.

Use os controles Raio e Forca no painel Modelagem para ajustar o pincel.

Suporte a mouse e caneta
RecursoComportamento
Pressao (caneta)Usa pressao real do tablet quando Pressao na Forca ou Pressao no Raio estao ativos
Pressao (mouse)Fallback por velocidade do cursor: mouse rapido = menos forca (35-100%)
SmoothingEstabilizador de stroke, default 0.35 para suavizar tremores de mouse
SpacingDistancia minima entre stamps do pincel
Symmetry XEspelha o stroke no eixo X
Front Faces OnlyAfeta apenas faces voltadas para a camera
AccumulatePermite acumular deformacao no mesmo vertice durante um stroke

O dispositivo ativo (mouse/caneta/toque) e detectado automaticamente.


Fisica

Integracao com Rapier3D para simulacao em tempo real.

Tipos de corpo
TipoDescricao
DinamicoResponde a forcas e colisoes
EstaticoNao se move, serve de obstaculo
CinematicoMovido manualmente, empurra outros
Colliders
  • Box
  • Sphere
  • Capsule
  • Cylinder
  • Mesh (geometria exata)
  • Convex hull
Propriedades
  • Massa
  • Friccao
  • Restituicao (bounce)
  • Linear damping
  • Angular damping
  • Gravity scale
  • Is trigger
  • Lock de translacao/rotacao por eixo

Animacao

Timeline com keyframes de transform por objeto.

Detalhes
  • FPS configuravel (padrao 30).
  • Start/end frame e duracao.
  • Playhead arrastavel.
  • Keyframes de posicao, rotacao e escala.
  • Interpolacao:
    • hold — mantem o valor ate o proximo keyframe.
    • linear — interpolacao linear.
    • ease — suaviza entrada e saida.

Behaviors

Animacoes procedurais aplicadas por objeto, sem precisar de keyframes.

BehaviorDescricao
PularSalto periodico com cooldown
AndarOscilacao vertical + deslocamento
AcelerarVelocidade crescente ate maximo
RolarRotacao continua no eixo X ou Z
GravidadeCai ate um groundY
BolhaOscilacao suave tipo flutuacao
Massa (Deformar)Squash and stretch

Efeitos

Efeitos de particulas e shaders aplicaveis a qualquer objeto.

EfeitoDescricao
FogosExplosao de particulas coloridas
FogoChamas com flicker
FumacaParticulas opacas ascendentes
BrilhoSparkles pontuais
LuzGlow esferico
Superficie LiquidaSimulacao de fluido com shaders

Cada efeito tem cor, intensidade, tamanho e count configuraveis.


Scripts por Objeto

Cada objeto pode ter scripts JavaScript proprioss executados a cada frame.

API disponivel
typeScriptContext={object: SceneObject;group: THREE.Group;delta: number;elapsed: number;THREE: typeofTHREE;position: THREE.Vector3;rotation: THREE.Euler;scale: THREE.Vector3;console: Pick<Console,'log'|'warn'|'error'>;};

Exemplo:

// Rotacao continuaapi.update=({ group, delta })=>{group.rotation.y+=delta*1.5;};

Logs aparecem no console do navegador com prefixo [Script].


Iluminacao

Tipos de luz suportados:

LuzProps
Spotangulo, penumbra, target, sombra
Pointdistancia, decay, sombra
Directionaldirecao, sombra
Ambientintensidade global

Props comuns: cor, intensidade, castShadow, shadowBias, shadowRadius


Atalhos

AtalhoAcao
Ctrl+ZDesfazer
Ctrl+YRefazer
Ctrl+Shift+ZRefazer
Ctrl+CCopiar objeto selecionado
Ctrl+VColar objeto copiado
Ctrl+DDuplicar objeto selecionado
Delete / BackspaceApagar objeto ou face selecionada
GMover
RGirar
SEscalar
EEntrar em Edit Mode ou extrudar face selecionada
VSelecao de vertices
2Selecao de arestas
FSelecao de faces
BSculpt
PDraw Polygon (ou toggle pressao se estiver em Sculpt)
KKnife Tool
XInverte modo do sculpt (push<->pull, inflate<->pinch)
Shift+FCicla falloff do sculpt
Arrow UpAumenta forca do sculpt
Arrow DownDiminui forca do sculpt
EscLimpar selecao e voltar para Select
[Diminuir raio do pincel
]Aumentar raio do pincel
;Aumentar smoothing do pen
'Diminuir smoothing do pen

Os atalhos nao disparam enquanto voce esta digitando em inputs, selects ou textareas.


Modelos

Modelos colocados em public/ podem ser servidos diretamente pelo app. A rota src/app/api/models/route.ts lista arquivos .glb e .gltf encontrados nessa pasta.


Agente IA (NVIDIA NIM)

O editor tem um agente para gerar malhas 3D (vertices + faces) via NVIDIA NIM. Usa o modelo nvidia/llama-3.1-nemotron-70b-instruct como primario e meta/llama-3.1-8b-instruct como fallback.

A IA retorna objetos com geometria real (arrays de vertices e faces trianguladas), decompostos em varias partes com hierarquia via parentName. As malhas passam por subdivisao e suavizacao procedural antes de entrar na cena.

Variaveis de ambiente

Crie o arquivo .env (ou use .env.local) com:

NVIDIA_NIM_API_KEY=your_nvidia_nim_api_keyNVIDIA_NIM_MODEL_PRIMARY=nvidia/llama-3.1-nemotron-70b-instructNVIDIA_NIM_MODEL_FALLBACK=meta/llama-3.1-8b-instructNVIDIA_NIM_BASE_URL=https://integrate.api.nvidia.com/v1

No Vercel, configure as mesmas variaveis no projeto e faca redeploy para aplicar.

Endpoint

POST /api/ai/generate

Body:

{
"prompt": "robo futurista com base metalica, luzes neon e pedestal"
}

Resposta:

{
"objects": [
{
"name": "Torre Central",
"vertices": [[-0.5,-0.5,-0.5],[0.5,-0.5,-0.5],...],
"faces": [[0,1,2],[0,2,3],...],
"position": [0, 1.5, 0],
"rotation": [0, 0, 0],
"scale": [1, 1, 1],
"parentName": "Base",
"material": {
"color": "#9fb3ff",
"metalness": 0.45,
"roughness": 0.3,
"emissive": "#101a4d",
"emissiveIntensity": 0.25,
"opacity": 1
}
}
]
}

Cada objeto tem 20-60 vertices e 40-120 faces em media, formando superficies solidas reconhaveis.

Retry automatico

Se a primeira geracao ficar simples demais (<40 vertices totais ou <3 objetos), o agente refaca com um prompt reforcado pedindo mais decomposicao e detalhes. Um segundo retry acontece se ainda estiver simples.

Na toolbar, use o botao Gerar IA (icone sparkles fucsia), descreva a cena e o app cria automaticamente as malhas com materiais.


FAQ

Preciso de placa de video dedicada?

Nao. O editor usa WebGL via Three.js, que roda em qualquer GPU com suporte a WebGL 2.0 (integrada ou dedicada).

Funciona no celular?

Sim, o layout e responsivo. O Preview tem modos desktop, tablet e mobile para testar a experiencia exportada.

Preciso de conta NVIDIA para usar a IA?

Sim. Voce precisa de uma API key do NVIDIA NIM. Configure NVIDIA_NIM_API_KEY no .env.

Posso exportar sem backend?

Sim. O Export gera HTML/CSS/JS standalone com Three.js via CDN, sem necessidade de servidor.

Qual a diferenca entre Modo Cena e Modo Pagina?

O Modo Cena e o editor 3D puro (modelagem, sculpt, materiais). O Modo Pagina monta a experiencia web usand a cena 3D dentro de elementos HTML (heroes, sections, cards).


Troubleshooting

A textura deixou o viewport escuro

As texturas sao carregadas pelo cache do React Three Fiber e aplicadas em uma copia configurada para o material. Se o navegador ainda mostrar estado antigo, faca um hard refresh:

Ctrl + Shift + R
Modelos grandes demoram para aparecer

Arquivos GLB grandes podem levar alguns segundos para carregar, especialmente em desenvolvimento. Enquanto isso, o viewport continua ativo e mostra o grid.

Exportacao nao baixa arquivo

Confira se existe algum objeto na cena e tente novamente em um navegador moderno com suporte a WebGL e downloads por Blob.


Roadmap

Concluído

  • Cena, materiais, import/export, atalhos
  • Edicao de malha (vertices/arestas/faces) e sculpt
  • Fisica com Rapier3D
  • Timeline com keyframes
  • Behaviors procedurais
  • Efeitos de particulas e fluid
  • Scripts por objeto
  • Layers e imagens de referencia
  • Desktop Electron
  • Agente IA (NVIDIA NIM) gerando malhas com vertices/faces
  • Operacoes de aresta (bevel, loop cut)
  • Booleanos entre malhas
  • Modelagem poligonal: Draw Polygon, Knife, Edge Loop/Ring, Bridge, Fill, Inset
  • Sculpt com fallback de pressao para mouse
  • Navegacao por modos: Cena, Pagina, Interacoes, Preview e Exportar
  • Primeira versao do Page Builder
  • Arvore de projeto hibrida Page + Scene
  • Interaction Engine inicial
  • Preview Runtime inicial para experiencias web 3D
  • Export Engine inicial para Next/React/Vite/HTML/JSON
  • Template Engine inicial
  • Runtime web renderizando primitivas, editableMesh, GLTF, texturas, texto 3D, SVG e luzes da cena
  • Save/Load inicial de ProjectExperience em .web3d.json versionado
  • Reordenacao manual de elementos de pagina no Project Tree
  • Metricas conhecidas de Preview sem estimativa falsa de MB
  • Box / Lasso select de sub-elementos no Edit Mode (com preview visual em tela)
  • Hover preview de vertices, arestas e faces antes de clicar
  • Flip / Recalculate Normals e Smooth / Flat Shading na UI
  • Timeline com keyframes reais exportaveis (player de animacao no runtime React/Next/Vite e standalone HTML)
  • Multi-materiais por face avancado (selecao multi-face + atribuicao em lote + render no Modo Cena e Pagina/Preview)
  • Snap to vertex / edge / face durante transform de sub-elemento
  • Paridade total entre renderer do Modo Cena e renderer web do Modo Pagina/Preview (effects, behaviors, flat shading, multi-materiais)
  • Drag-and-drop, reparenting e indicadores de drop no Page Builder
  • Edição inline no canvas do Page Builder para textos, botoes, cards, navbar e footer
  • Atalhos de produtividade no canvas de pagina: duplicar, remover e mover com setas
  • Painel web com edição por breakpoint e controles CSS avançados
  • Guias, snapping e handles de mover/redimensionar no canvas do Page Builder
  • Template Background Superficie Liquida com efeito WebGL liquidSurface
  • Autosave, historico de versoes e migracoes do ProjectExperience (localStorage com ate 24 entradas)
  • ZIP exportavel com assets reais organizados em public/models, public/textures, public/images
  • Runtime exportado standalone com Three.js via CDN e todas as interacoes (HTML/CSS/JS puro, sem build)
  • Preview com tamanho real de arquivos, resolucao de texturas, draw calls, geometries, triangulos, memoria JS heap e FPS preciso
  • Selecao direta mais precisa no canvas de pagina (hover preview com tooltip, Alt+Click para selecionar pai, breadcrumb de ancestrais, hit areas ampliadas para texto/botao)
  • Editor de breakpoints completo: criar, renomear e remover breakpoints customizados com largura ajustavel via slider, preview dinamico no toolbar e edicao de estilos por breakpoint no painel de propriedades
  • Estados hover/active/focus para elementos web: edicao de pseudo-estilos no painel de propriedades com preview no canvas via CSS real e indicacao visual
  • Sistema de componentes reutilizaveis: criar componentes da selecao de elementos, biblioteca no painel arvore com lista de componentes salvos, instancias vinculadas com badge visual, sincronizar todas as instancias ao editar o mestre, desvincular (detach) e persistencia no arquivo de projeto
  • Formularios, modais reais e menus: novos tipos de node (form, input, select, textarea, label, modal, menu, menuitem) com renderizacao no canvas, editores de propriedades no painel e exportacao para runtime React/Vite/HTML
  • Camadas/z-index com visualizacao clara: painel de camadas no arvore listando elementos da pagina ordenados por z-index, barra de profundidade visual e botoes para aumentar/diminuir z-index de cada elemento
  • Diff visual do documento de pagina: modal de comparacao entre versoes salvas no historico, exibindo arvore de nos com status (adicionado/removido/modificado) e detalhes das alteracoes de estilos e propriedades
  • System Builder Fase 1: Modo Dados, DataSchema, colecoes/campos/validacoes/relacoes/queries salvas, store Zustand, persistencia no .web3d.json, autosave/historico e schema exportado em JSON/Prisma/Drizzle
  • System Builder Fase 2 inicial: componentes dataTable, dataForm, dataList, dataChart, dataStat, pageRoute, variaveis/bindings {{var}}, actions de dados/variaveis/toast/loading/error e API routes CRUD geradas para Next
  • Logica inicial de paginas e navegacao: pages[], activePageId, rotas editaveis, criar/duplicar/remover paginas, navegacao interna no Preview e pages-data.json exportado
  • Tutorial com spotlight guiado para Page Builder, rotas, canvas, propriedades, Modo Dados, campos, queries, Interacoes e Preview

Em Progresso / Planejado

System Builder

  • Data components - dataTable, dataForm, dataList, dataChart, dataStat e pageRoute
  • Bindings e variaveis - sintaxe {{var}}, variaveis editaveis no Modo Dados e persistencia no projeto
  • Data actions iniciais - CRUD em memoria no preview, queries, set/increment/toggle variable, loading/error/toast
  • API Routes geradas - CRUD inicial por colecao para Next via generateApiRoutes.ts
  • Data runtime persistente - conectar preview/export a banco real ou adapter local persistente
  • Data forms exportados - dataForm chamando API gerada em Next/React/Vite/HTML
  • Bindings avancados - {{record.campo}}, filtros, transformacoes e expressoes em todos os componentes/export targets
  • Workflow Engine - automacoes com triggers, conditions, actions, delay, webhook/email/script
  • Formula Engine - expressoes calculadas para bindings, campos derivados e interacoes
  • Auth e permissoes - roles, guards, paginas protegidas, perfil do usuario e regras por colecao
  • Multipage avancado - parametros dinamicos, SEO completo por pagina, layout compartilhado, browser back/forward, guards e rotas reais geradas no export
  • Export full-stack - Prisma/Drizzle completo, migrations, seed, .env.example, configs e deploy adapters

Core

  • Save/Load avancado de Projeto - Formato .e3d/binario com compressao, diff e empacotamento de assets
  • Exportacao multi-formato - FBX, OBJ, USD, STL, DAE
  • Importacao multi-formato - FBX, OBJ, USD, 3DS, DAE
  • Sistema de Preferences - Configuracoes do usuario, temas, atalhos customizaveis
  • Sistema de Templates/Presets - Templates de cena, materiais, iluminacao

Modelagem Avancada

  • Node Editor (Geometry Nodes) - Geometria procedural visual
  • Modifiers nao-destrutivos - Mirror, Array, Solidify, Subdivision, Decimate, Weld
  • Editor de UVs - Unwrapping, painting, alinhamento
  • Sistema de Constraints - Look At, Copy Transform, Limit Distance, Clamp To, Path Follow
  • Curvas e Splines - Bezier, NURBS, extrusao ao longo de curva
  • Voxel Sculpting - Sculpting volumetrico com Dyntopo

Animacao e Rigging

  • Sistema de Ossos (Armature) - Bones, joints, IK/FK
  • Skinning/Weight Painting - Vertex weights, influence
  • Shape Keys/Morph Targets - Blend shapes para expressoes
  • Graph Editor - Curvas de animacao editaveis
  • Motion Capture - Import BVH, retargeting
  • Constraint Animation - Animar constraints

Materiais e Shaders

  • Node-Based Material Editor - Sistema de nos para shaders (PBR, custom)
  • Shader Generator - GLSL/HLSL customizado
  • Texture Painting - Pintura direta no modelo 3D
  • Procedural Textures - Noise, gradients, patterns
  • Material Layers/Blending - Mascara, mistura de materiais

Iluminacao e Render

  • Lightmap Baking - Baking de luz estatica
  • Global Illumination - GI em tempo real ou baked
  • Post-Processing Stack - Bloom, SSAO, DOF, Motion Blur, Tonemap, LUT
  • Raytracing/Pathtracing - Render offline de alta qualidade
  • HDRI Environment - Iluminacao por imagem HDR
  • Area Lights - Luzes retangulares, discos, esferas

Efeitos e Simulacao

  • Particle System avancado - Editor visual com curvas, emissao, colisao, sub-emitters
  • Fluid Simulation - Liquidos, gases, SPH/FLIP
  • Cloth Simulation - Tecidos, bandeiras, roupas
  • Hair/Fur System - Cabelos, pelos, grama
  • Destruction/Fracture - Destruicao procedural
  • Soft Body - Corpos moles, gelatina

Cena e Mundo

  • Terrain Editor - Heightmap, sculpting, texturizacao de terreno
  • Foliage/Scatter System - Pintura de vegetacao, rocks, detalhes
  • Water System - Oceanos, rios, lagos com shaders
  • Sky/Atmosphere - Ceus procedurais, nuvens, neblina volumetrica
  • Volumetric Lighting - God rays, fog volumetrico

Audio e Interatividade

  • Audio Spatial - Audio 3D posicional, HRTF
  • Audio Triggers - Sons por evento, zonas
  • Dialogue System - Sistema de dialogo/in-game UI
  • Input System - Mapeamento de controles, gamepads

Performance e Debug

  • Profiling Tools - Draw calls, triangulos, FPS, memory, GPU stats
  • LOD System - Level of Detail automatico
  • Occlusion Culling - PVS, portais
  • Shader Debugger - Visualizar normals, UVs, lightmaps, overdraw
  • Physics Debugger - Visualizar colliders, contacts, rays

IA e Automacao

  • NavMesh/Pathfinding - Navegacao para personagens
  • Behavior Trees - IA para NPCs
  • Scripting avancado - TypeScript/JavaScript com API completa
  • Plugin System - API para extensoes, marketplace

Colaboracao

  • Version Control - Git-like para cenas, merge/diff visual
  • Multi-user Editing - Edicao colaborativa em tempo real
  • Cloud Sync - Salvamento na nuvem, compartilhamento
  • Asset Library - Biblioteca compartilhada de assets

Contribuindo

Contribuicoes sao bem-vindas! Siga o fluxo:

  1. Fork o repositorio
  2. Branch: git checkout -b feat/minha-feature
  3. Commit: git commit -m "feat: minha feature"
  4. Push: git push origin feat/minha-feature
  5. Pull Request com descricao clara

Para bugs, abra uma Issue.


Status

Em desenvolvimento ativo.

ModuloStatus
Cena 3D + Modelagem + SculptFuncional
Fisica Rapier3DFuncional
Timeline + KeyframesFuncional
IA (NVIDIA NIM)Funcional
Page BuilderFuncional
Interaction EngineFuncional
System Builder (Dados)Fase 2 parcial
Preview com metricasFuncional
Export EngineFuncional (Next/React/Vite/HTML)
Desktop ElectronFuncional (Windows)

A camada de construtor visual de sites 3D interativos conta com paridade total com o renderer do Modo Cena, exportacao ZIP com assets reais organizados, runtime standalone em HTML/CSS/JS puro via Three.js CDN, autosave com historico de versoes, drag-and-drop e reparenting no Page Builder, alem de metricas reais de preview (draw calls, triangulos, resolucao de texturas, heap JS e FPS preciso). O Edit Mode possui Box/Lasso select, hover preview, Flip/Recalculate Normals, Smooth/Flat Shading, multi-materiais por face em lote e snap de sub-elementos. A timeline exporta keyframes reais que rodam no runtime exportado.

O System Builder esta na Fase 2 inicial: modelo de dados visual com colecoes, campos, validacoes, relacoes e queries salvas, persistido no .web3d.json. A pagina tem componentes conectados a dados, variaveis com binding {{var}}, actions de dados/variaveis/toast/loading/error, geracao inicial de API routes CRUD para Next, multipage com rotas editaveis e navegacao interna no Preview.


GitHub issuesGitHub starsGitHub forksGitHub last commit


Feito com Three.js e muito café ☕

About

Editor de cena e modelagem 3D com viewport interativo, primitivas, import/export GLB/GLTF, materiais PBR com texturas, modelagem poligonal (Draw Polygon, Knife, Edge Loop/Ring, Bridge, Fill, Inset), edit mode (vertices/arestas/faces), sculpt com 10 modos e fallback de pressao para mouse, fisica Rapier3D, timeline com keyframes.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages