← abrir o modelo · galeria

NAPASSARELA · look em peças

A Juliana, da NAPASSARELA, como modelo 3D ilustrativa (rosto a partir de fotos que ela enviou) em render de estúdio 4K, com um look de 7 peças (vestido midi de pano simulado, colete, cinto, bolsa de corrente, sandália, bijus e chapéu de palha) que se separam, se vestem em ordem e trocam de cor; corpo, cabelo e roupas gerados em código.

Fontes e licenças

Construído em código (three.js) com o kit teardown de elvarofficial e whaleyxbt (MIT), pela skill si3d. Publicado 2026-11-10T08:02-03:00.

Notas do agente

# NAPASSARELA · look em peças (versão 3, com a Juliana)

Pedido 3 do Lucas (10/11/2026): "preciso que coloque a Juliana para ser a pessoa e não um manequim", com a referência
da skill `modelo-juliana`. Esta versão substitui a do manequim na mesma URL; a anterior está guardada em `v2/` e a
primeira em `v1/`.

**A imagem é ilustrativa.** É um modelo 3D com o rosto da Juliana, dona da NAPASSARELA, feito a partir de fotos que
ela enviou para ser a modelo da loja. Não é foto dela nem das peças do catálogo. O uso do rosto vale só para produtos
da NAPASSARELA, e é ela quem decide o visual da loja: esta versão ainda não passou pela aprovação dela.

## O que mudou
- **Pessoa no lugar do manequim:** corpo com pele, cabeça com o rosto da Juliana, cabelo castanho comprido com risca
  no meio, ondas e mechas caramelo, e uma roupa de base (macaquinho cor de pele) para quando as peças saem do corpo.
- **Rosto, sem modelo treinado e sem malha pronta:** uma foto dela (a mais nítida e de frente entre as que mandou)
  passa pelo MediaPipe Face Landmarker, que devolve 468 pontos 3D do rosto. Esses pontos viram duas coisas no mesmo
  mapa cilíndrico em volta da cabeça: o relevo (raio da superfície) e a cor (a foto desdobrada). Como forma e cor
  saem dos mesmos pontos, olho, nariz e boca caem no lugar. O resto da cabeça é um crânio genérico ajustado à borda
  do rosto.
- **Corpo:** o mesmo esculpido em código da versão 2, agora com proporção de pessoa (178 cm descalça, busto 85,
  cintura 61, quadril 89) e pescoço emendado na cabeça. Não são as medidas reais dela.
- **Cabelo:** 138 mechas em fita com textura de fios (raiz escura, pontas e mechas claras por vértice), nascendo na
  risca, descendo rente ao crânio e caindo na frente e atrás dos ombros.
- Roupas, acessórios, cena, interface e modos são os da versão 2. O chapéu foi refeito para assentar na cabeça nova.

## Hill climbing da semelhança
- **Juiz:** o mesmo da `modelo-juliana`: identidade ArcFace (glintr100) do rosto renderizado contra fotos reais dela
  que não entraram na textura. Régua: fotos reais dela entre si ficam em 0,64 (pior décimo) a 0,68 (média); a foto
  usada mede 0,65.
- **Ablação antes de mexer:** a textura sem luz nenhuma, na malha dos próprios pontos, mede 0,62. Ou seja, quase toda
  a perda vinha do que o 3D faz com a foto, não da foto.

| Rodada | O que mudou | Frente | 3/4 | Decisão |
| --- | --- | --- | --- | --- |
| j1 | primeira projeção: lado menos visto espelhado, luz do estúdio no relevo do rosto | 0,25 | – | base |
| j2 | luz do rosto com normal lisa (a foto já traz o próprio sombreado) | 0,39 | – | mantido |
| j3 | espelho só onde a foto quase não vê, sombra projetada reduzida no rosto, cabelo emoldurando | 0,43 | 0,38 | mantido |
| j3d | diagnóstico: câmera na altura dos olhos (de cima, a boca "desce" 6%); cabelo não pesa na nota | 0,48 | 0,49 a 12° | mantido |
| j4 | pele devolve o piso que o tone mapping subtrai; 60% da cor do rosto sai direto da foto | 0,52 | 0,44 | mantido |
| j5 | máscara de visibilidade larga na textura (apagou boca e nariz) | 0,39 | 0,42 | desfeito |
| j6 | máscara só na lateral, brilho não lava cílios e sobrancelhas, risca fechada | 0,51 | 0,45 | mantido; parada |

**Resultado: de 0,25 para 0,51 de frente e 0,45 a 3/4. A régua das fotos reais (0,64) não foi atingida.** O laço
parou por duas rodadas sem ganho (j4 e j6 empatam). O rosto lembra a Juliana; não passa por foto dela.

O que mais rendeu, em ordem: iluminar o rosto com normal lisa; devolver o piso de 0,04 que o tone mapping Neutral
subtrai (era ele que escurecia olho e boca e alaranjava a pele); não espelhar o rosto; câmera na altura dos olhos.

## Teste
`testar.mjs` no arquivo local e na URL pública, PC 1600 × 900 e celular 390 × 844: sem erro de console; todos os
botões mudam a tela (12 no PC, 9 visíveis no celular); arrasto gira. Entre a passada local e a pública: 52 a 60
quadros por segundo no PC (95% dos quadros em até 17 a 33 ms; 106 a 235 chamadas de desenho) e 55 a 59 no celular.
Prints em `revisao/teste/` e `revisao/teste-publico/`.

## Limites honestos
- **Semelhança parcial.** 0,51 contra 0,64 das fotos reais: reconhecível para quem a conhece, não um retrato.
- **Rosto vem de uma selfie só**, com o rosto em 400 px: de perto fica mole, o lado que a foto vê de raspão é pele
  lisa, o olhar sai levemente de lado e a expressão é fixa. Sem orelhas (o cabelo cobre).
- **Cabelo em fitas:** de perto as mechas têm cara de tira, a linha do cabelo na testa é dura e falta o volume solto
  do cabelo dela.
- **Corpo de vitrine**, não o dela: proporções escolhidas em código; pés em ponta quando descalça; mãos simples.
- De corpo inteiro, que é o enquadramento da página, lê como pessoa; o close de rosto é onde os limites aparecem.
- Passar disso pede outra matéria-prima (várias fotos em ângulos e luz controlados, malha de cabeça pronta, cabelo
  em ferramenta própria ou geração 3D paga), fora da regra "do zero em código": precisa de pedido novo.
- Página de 8,2 MB (malhas e a textura do rosto vão embutidas), bem acima do 1 MB usual das entradas si3d.

## Reaproveitado
- Kit teardown (build de página única e captura de quadros).
- Da versão 2 desta entrada: corpo, roupas, acessórios, cena, render de estúdio, interface, tour e `looks.js`.
- MediaPipe Face Landmarker (Apache-2.0) só na geração; juiz e régua da skill `modelo-juliana`.
- A única imagem de fora embutida é a textura do rosto, vinda da foto que a Juliana enviou.

---

## Versão 2 (09/11/2026): manequim de vitrine em render de estúdio

Pedido 1 (só texto): "um modelo de esquema 3D para a loja de roupas napassarela, onde vai ter tipo um conjunto de
vestido e etc.". Pedido 2: "Isso ficou horrível. Preciso de uma reformulação [...] modelo realista com gráficos 4K.
Use /theo-hill-climbing até ficar satisfeito e vá melhorando a skill com o aprendizado."

### O que foi construído (manequim)
Manequim feminino de vitrine, branco brilhante, de cabeça em ovo (como os da loja), com um look-exemplo de 7 peças num
canto de loja: parede de reboco, piso de cimento, rodapé e letreiro de latão. Tudo sai de código.

Medidas (cm; a cena roda em 1:10): manequim de 173 + salto de 6,5; busto 84, cintura 62, quadril 89; ombro a ombro 36;
cintura a 112, busto a 131. Vestido midi evasê com decote coração a 137 e barra a 42. Colete de alfaiataria aberto,
barra a 95, 3 botões. Cinto de 3 com fivela. Bolsa tiracolo 16 × 11 × 5,5 com corrente. Sandália de salto bloco 6,5.
Chapéu de palha de aba 24. Colar com pingente e pulseiras.

Como cada parte é feita (`gen/`, roda em node e grava as malhas em `dados.js`):
- **Corpo:** campo de distância (membros, juntas suaves, mãos com dedos, pés com dedos), malha por surface nets.
- **Vestido:** pano simulado (XPBD) costurado no molde e solto sobre o corpo: saia com dobras de gravidade,
  auto-colisão, bainha em tubo e alças.
- **Colete:** casca de espessura real recortada do campo do corpo, com vista, cava, botões e casas.
- **Cinto, bolsa, sandália, chapéu, bijus:** sólidos por campo de distância; corrente da bolsa e do colar simuladas elo
  a elo (cada elo é um toro); chapéu de trança em espiral; fivelas, ilhoses e pespontos em geometria.
- **Página (`obj/`):** render de estúdio acumulado (224 amostras de luz de área, sombra suave, oclusão, profundidade
  de campo), em até 4K no PC; materiais com textura procedural de trama, couro, palha e vincos.

O look inteiro continua saindo de `looks.js` (tipo, nome, tecido, grade, cores e para onde a peça vai ao separar).

Modos (botões): Look completo, Separar peças (as 7 saem com etiqueta), Montar o look (veste uma a uma), Trocar cor e
Passarela (tour automático; qualquer clique assume). A lista "Peças do look" isola uma peça, girando, com a ficha.
Arrasto gira, roda ou pinça dá zoom, teclas 1 a 5. A imagem fica nítida uns 2 s depois que o movimento para: é o
render juntando amostras.

### Reaproveitado na versão 2
- Kit teardown (build de página única e captura de quadros).
- Da versão 1 desta entrada: interface, tour, câmera por caixa, `looks.js`, logo e fontes. A estrutura de interface
  veio da entrada "PC sujo vs limpo · Prates Tech (v2)".
- Nenhuma geometria, textura ou foto de fora. As fotos reais da loja serviram só de leitura e de régua para o juiz.

### Hill climbing do realismo (método do Theo)
- **Alvo escrito antes** (`hill/ALVO.md`): nota ≥ 80 de 100 e nenhuma dimensão abaixo de 70. Parada alternativa: duas
  rodadas seguidas sem ganhar 2 pontos.
- **Juiz cego:** outro modelo vê 10 fotos fixas em 4K ao lado de três fotos reais da loja (vitrine, fachada e catálogo), sem saber o que
  mudou, e dá nota em 7 dimensões (manequim, tecido, materiais, luz, acessórios, cena, nitidez) com a lista de
  defeitos. Ruído entre leituras: cerca de 2 pontos.

| Rodada | O que mudou | Nota | Decisão |
| --- | --- | --- | --- |
| r0 | versão 1 publicada | 33,5 | base |
| r1 | só o render de estúdio, geometria antiga | 36,2 | mantido (+2,7) |
| r2 | geometria nova inteira (corpo, pano simulado, colete, acessórios) | 52,0 | mantido (+15,8) |
| r3 | luz, 224 amostras, vincos no tecido, letreiro em relevo, rosto esculpido | 56,4 | mantido (+4,4) |
| r4 | cabeça em ovo como a referência, saia ressimulada, sandália, tecido fosco | 58,7 (relida: 60,1) | mantido (+2,3) |
| r5 | canto de loja + luz principal menor e mais dura | 56,9 | desfeito (−3,2) |
| r6 | canto de loja com a luz da r4 | 59,9 | mantido por empate; parada |

**Resultado: de 33,5 para cerca de 60. O alvo de 80 não foi atingido** e o laço parou pela regra escrita (duas rodadas
sem ganhar 2 pontos). O juiz ainda responde "não parece foto". Notas finais: manequim 61, tecido 57, materiais 63,
luz 58, acessórios 58, cena 51, nitidez 73.

### Teste da versão 2
`testar.mjs` no arquivo local e depois na URL pública, PC 1600 × 900 e celular 390 × 844: sem erro de console; todos
os botões mudam a tela (12 no PC, 9 visíveis no celular); arrasto gira; 60 quadros por segundo nos dois (95% dos
quadros em até 16,8 ms); 103 a 108 chamadas de desenho por quadro no PC. Prints em `revisao/teste/` e `revisao/teste-publico/`.
Ajustes vindos desses prints: letreiro escondido onde ficava cortado ou atrás de etiqueta, etiqueta do chapéu dentro
do quadro, cabeçalho do celular sem encostar no chapéu.

### Limites da versão 2 (as roupas e a cena seguem iguais)
- **Não é fotorrealista.** O que o juiz ainda aponta: sandália com cara de papelão dobrado (palmilha em rampa, tira em
  arco rígido); colete lido como casca rígida, sem folga nem rugas de tensão; dobras da saia regulares demais; bolsa
  uniforme, com elos idênticos; parede e piso procedurais uniformes, lidos como "tela de aplicativo".
- O ganho grande veio da geometria (+15,8 numa rodada); luz e material renderam +2 a +4 por rodada e estacionaram em
  60. Passar disso pede outra matéria-prima: malha esculpida ou escaneada, pano simulado em ferramenta própria,
  texturas fotografadas. Isso está fora da regra "do zero em código" e precisa de pedido novo.
- "4K" vale no PC: o quadro parado é refinado na resolução da tela até 3840 × 2160. No celular o teto é menor (3,4
  megapixels e 48 amostras) para manter 60 quadros por segundo.
- As peças são exemplo: nomes e grades ilustrativos, sem preço, fora do catálogo real.
- Um único look. Peça de tipo novo (calça, saia, blusa) pede um gerador novo.
- O letreiro da parede some com as peças separadas e no celular em pé, para não disputar espaço com as etiquetas; a
  foto "peças" julgada na r6 ainda o mostrava.
- Celular testado só em tela simulada no Chromium, não em aparelho.
- Página de 5,7 MB (as malhas vão embutidas), bem acima do 1 MB usual das entradas si3d.