Phase 08 - Lesson 12
Geração 3D
O 3D é a modalidade onde a alavancagem de 2D para 3D é mais forte. O avanço de 2023 foi o 3D Gaussian Splatting. O impulso generativo de 2024-2026 adiciona camadas de difusão multi-view + reconstrução 3D no topo para produzir objetos e cenas a partir de um único prompt ou foto.
Tipo: Aprender Linguagens: Python Pré-requisitos: Fase 4 (Visão), Fase 8 · 07 (Difusão Latente) Tempo: ~45 minutos
O Problema
O conteúdo 3D é doloroso:
- Representação. Malhas (meshes), nuvens de pontos, grades de voxels, campos de distância assinados (SDFs), campos de radiância neural (NeRFs), Gaussianas 3D. Cada um tem suas desvantagens.
- Escassez de dados. O ImageNet possui 14 milhões de imagens. O maior conjunto de dados 3D limpo (Objaverse-XL, 2023) tem cerca de 10 milhões de objetos, a maioria de baixa qualidade.
- Memória. Uma grade de voxels de 512³ equivale a 128 milhões de voxels; um NeRF de cena útil precisa de 1 milhão de amostras por raio. A geração é mais difícil do que a reconstrução.
- Supervisão. Para uma imagem 2D, você tem os pixels. Para 3D, você geralmente tem um punhado de vistas 2D e precisa elevá-las para 3D.
A stack de 2026 separa os dois problemas. Primeiro, gere imagens multi-view 2D com um modelo de difusão. Segundo, ajuste uma representação 3D (geralmente Gaussian splatting) a essas imagens.
O Conceito
Representação: 3D Gaussian Splatting (Kerbl et al., 2023)
Represente uma cena como uma nuvem de cerca de 1 milhão de Gaussianas 3D. Cada uma possui 59 parâmetros: posição (3), covariância (6, ou quatérnio 4 + escala 3), opacidade (1), cor em harmônicos esféricos (48 no grau 3, 3 no grau 0).
Renderização = projeção + alpha-compositing. Rápida (~100 fps em 1080p em uma 4090). Diferenciável. Ajustada por gradiente descendente contra fotos de referência (ground-truth). Uma cena é ajustada em 5 a 30 minutos em uma GPU de consumidor.
Duas inovações de 2023-2024 no topo:
- Gaussian splats generativos. Modelos como LGM, LRM e InstantMesh preveem uma nuvem Gaussiana diretamente a partir de uma ou poucas imagens.
- 4D Gaussian Splatting. Gaussianas com offsets por frame para cenas dinâmicas.
Difusão multi-view
Ajuste fino (fine-tune) de um modelo de difusão de imagem pré-treinado para gerar múltiplas vistas consistentes do mesmo objeto a partir de um prompt de texto ou de uma única imagem. Zero123 (Liu et al., 2023), MVDream (Shi et al., 2023), SV3D (Stability, 2024), CAT3D (Google, 2024). Geralmente geram de 4 a 16 vistas ao redor do objeto, elevadas para 3D via Gaussian splatting ou NeRF.
Pipelines de Texto para 3D
| Modelo | Entrada | Saída | Tempo |
|---|---|---|---|
| DreamFusion (2022) | texto | NeRF via SDS | ~1 hora por ativo |
| Magic3D | texto | malha + textura | ~40 min |
| Shap-E (OpenAI, 2023) | texto | 3D implícito | ~1 min |
| SJC / ProlificDreamer | texto | NeRF / malha | ~30 min |
| LRM (Meta, 2023) | imagem | triplano | ~5 s |
| InstantMesh (2024) | imagem | malha | ~10 s |
| SV3D (Stability, 2024) | imagem | novas vistas | ~2 min |
| CAT3D (Google, 2024) | 1-64 imagens | NeRF 3D | ~1 min |
| TripoSR (2024) | imagem | malha | ~1 s |
| Meshy 4 (2025) | texto + imagem | malha PBR | ~30 s |
| Rodin Gen-1.5 (2025) | texto + imagem | malha PBR | ~60 s |
| Tencent Hunyuan3D 2.0 (2025) | imagem | malha | ~30 s |
Direção para 2025-2026: modelos diretos de texto para malha (text-to-mesh) com materiais PBR adequados para engines de jogos. A etapa intermediária de difusão multi-view ainda é a receita de melhor desempenho para objetos gerais.
NeRF (para contexto)
Neural Radiance Field (Mildenhall et al., 2020). Um MLP minúsculo recebe (x, y, z, view direction) e gera (color, density). Renderize integrando ao longo dos raios. Supera a síntese de novas vistas baseada em malha em qualidade, mas é de 100 a 1000 vezes mais lento para renderizar. Substituído pelo Gaussian splatting para a maioria dos usos em tempo real, mas ainda dominante na pesquisa.
Construa
code/main.py implementa um ajuste de "Gaussian splatting" 2D de brinquedo: represente uma imagem alvo sintética (um gradiente suave) como uma soma de 2D Gaussian splats. Otimize posições, cores e covariâncias por gradiente descendente para corresponder ao alvo. Você verá as duas operações principais: renderização direta (forward render: splat + alpha-composite) e ajuste por gradiente descendente.
Passo 1: 2D Gaussian splat
def gaussian_at(x, y, gaussian):
px, py = gaussian["pos"]
sigma = gaussian["sigma"]
d2 = (x - px) ** 2 + (y - py) ** 2
return math.exp(-d2 / (2 * sigma * sigma))
Passo 2: renderizar somando splats
def render(image_size, gaussians):
img = [[0.0] * image_size for _ in range(image_size)]
for g in gaussians:
for y in range(image_size):
for x in range(image_size):
img[y][x] += g["color"] * gaussian_at(x, y, g)
return img
O Gaussian splatting 3D real ordena as Gaussianas por profundidade e faz o alpha-compositing em ordem. Nosso brinquedo 2D apenas soma.
Passo 3: ajuste por gradiente descendente
for step in range(steps):
pred = render(size, gaussians)
loss = mse(pred, target)
gradients = compute_grads(pred, target, gaussians)
update(gaussians, gradients, lr)
Armadilhas
- Inconsistência de vistas. Se você gerar 4 vistas de forma independente e elas discordarem sobre a estrutura do objeto, o ajuste 3D ficará borrado. Correção: difusão multi-view com atenção compartilhada.
- Alucinação do lado oculto. A conversão de uma única imagem → 3D precisa inventar o lado não visto. A qualidade varia muito.
- Explosão de Gaussian splats. O treinamento sem restrições cresce para mais de 10 milhões de splats e sofre overfitting. Heurísticas de densificação + poda (do artigo original do 3D-GS) são essenciais.
- Problemas de topologia. Malhas provenientes de campos implícitos (SDFs) frequentemente apresentam buracos ou auto-interseções. Execute um remesher (por exemplo, o voxel remesh do Blender) antes do envio.
- Termos dos dados de treinamento. O Objaverse possui termos mistos; o uso comercial varia para cada modelo.
Use
| Tarefa | Escolha para 2026 |
|---|---|
| Reconstrução de cena a partir de fotos | Gaussian splatting (3DGS, Gsplat, Scaniverse) |
| Objeto texto para 3D para jogos | Meshy 4 ou Rodin Gen-1.5 (saída PBR) |
| Imagem para 3D | Hunyuan3D 2.0, TripoSR, InstantMesh |
| Síntese de novas vistas a partir de poucas imagens | CAT3D, SV3D |
| Reconstrução de cena dinâmica | 4D Gaussian Splatting |
| Avatar / humano com roupas | Gaussian Avatar, HUGS |
| Pesquisa / SOTA | O que tiver sido lançado na última semana |
Para enviar 3D de produção em um pipeline de jogo ou e-commerce: as saídas de malhas PBR do Meshy 4 ou Rodin Gen-1.5 vão direto para o Unity / Unreal.
Envie
Salve outputs/skill-3d-pipeline.md. A Skill recebe um resumo 3D (entrada: texto / uma imagem / poucas imagens; saída: malha / splat / NeRF; uso: renderização / jogo / VR) e gera: pipeline (difusão multi-view + ajuste, ou modelo de malha direta), modelo base, orçamento de iterações, pós-processamento de topologia, canais de material necessários.
Exercícios
- Fácil. Execute
code/main.pycom 4, 16, 64 Gaussianas. Relate o MSE final em relação ao alvo. - Médio. Estenda para Gaussianas coloridas (RGB). Confirme se a reconstrução corresponde ao padrão de cores do alvo.
- Difícil. Usando gsplat ou Nerfstudio, reconstrua um objeto real a partir de uma captura de 50 fotos. Relate o tempo de ajuste e o SSIM final nas vistas reservadas (held-out).
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| 3D Gaussian Splatting | "3DGS" | Cena como uma nuvem de Gaussianas 3D; renderização de alpha-compositing diferenciável. |
| NeRF | "Neural radiance field" | MLP que gera cor + densidade em um ponto 3D; renderização por integração de raios. |
| Triplane | "Três planos 2D" | Fatora o 3D em três grades de features 2D alinhadas aos eixos; mais barato que o volumétrico. |
| SDS | "Score distillation sampling" | Treina o modelo 3D usando a pontuação de difusão 2D como pseudo-gradiente. |
| Difusão multi-view | "Múltiplas vistas de uma vez" | Modelo de difusão que gera um lote de vistas de câmera consistentes. |
| PBR | "Physically-based rendering" | Material com canais de albedo, rugosidade (roughness), metálico e normais. |
| Densificação | "Crescer splats" | Heurística de treinamento do 3DGS: divide / clona splats em regiões de alto gradiente. |
Nota de produção: o 3D ainda não possui um substrato compartilhado
Diferente de imagem (difusão latente + DiT) e vídeo (DiT espaço-temporal), o 3D não possui um único runtime dominante em 2026. A árvore de decisão de produção se divide com base na representação:
- NeRF / triplane. A inferência consiste em ray-marching + uma passagem direta (forward) de MLP por amostra. Uma renderização de 512² requer milhões de passagens diretas de MLP. Agrupe as amostras de raios de forma agressiva; aplica-se SDPA/xformers.
- Difusão multi-view + reconstrução LRM. Pipeline de duas etapas. A Etapa 1 (DiT multi-view) é um servidor de difusão exatamente como na Lição 07. A Etapa 2 (transformer LRM) é uma passagem direta única (one-shot) sobre as vistas. O perfil de latência geral é "difusão + one-shot" — escolha as primitivas de serviço por etapa de acordo com isso.
- SDS / DreamFusion. Otimização por ativo, não inferência. Crie tarefas (jobs), não manipuladores de requisições (request handlers).
Para a maioria dos produtos de 2026, a resposta correta é "executar um modelo de difusão multi-view sob demanda, reconstruir para 3DGS de forma assíncrona, servir o 3DGS para visualização em tempo real". Isso divide a carga de trabalho de forma limpa entre um servidor de inferência em GPU (rápido) e um otimizador offline (lento).
Leituras Adicionais
- Mildenhall et al. (2020). NeRF: Representing Scenes as Neural Radiance Fields — NeRF.
- Kerbl et al. (2023). 3D Gaussian Splatting for Real-Time Radiance Field Rendering — 3DGS.
- Poole et al. (2022). DreamFusion: Text-to-3D using 2D Diffusion — SDS.
- Liu et al. (2023). Zero-1-to-3: Zero-shot One Image to 3D Object — Zero123.
- Shi et al. (2023). MVDream — difusão multi-view.
- Hong et al. (2023). LRM: Large Reconstruction Model for Single Image to 3D — LRM.
- Gao et al. (2024). CAT3D: Create Anything in 3D with Multi-View Diffusion Models — CAT3D.
- Stability AI (2024). Stable Video 3D (SV3D) — SV3D.