← Trabajos

De una foto de un mueble a un modelo 3D: dos modelos de IA comparados y dónde fallan

Transparencia: esta pieza es una prueba propia de portfolio, no un trabajo de cliente. Los modelos 3D están generados con IA a partir de dos fotos con licencia CC0. Son objetos reales, sin personas ni marcas. Probamos dos modelos, y la parte comercial, al final, dice qué sí ofrecemos.

Ver el vídeo en YouTube (presentadora y voz generadas con IA).

Generado con IA a partir de una foto. Foto: The Metropolitan Museum of Art (CC0)

El problema

Una tienda online o un estudio de interiorismo tiene la foto de un mueble y necesita un modelo 3D con texturas. Modelarlo a mano lleva horas. Los modelos de IA que sacan un 3D de una sola foto prometen ahorrarlo. Quisimos ver qué sale de verdad, con un objeto fácil de leer y otro difícil, y dónde hay que seguir trabajando.

Qué hicimos

Dos fotos, una por objeto, las dos con licencia CC0 de Wikimedia Commons:

  • Un taburete de nogal de hacia 1670 con asiento bordado y flecos verdes (The Metropolitan Museum of Art, Open Access). Patas torneadas, travesaños y un textil con mucho detalle.
  • Una silla negra con la forma de la clásica Thonet nº 14 (foto de Antonio Borrillo). Al mirarla de cerca resultó ser de tubo metálico con un asiento de plástico estampado como rejilla, no de madera curvada. Sirve igual como prueba difícil: oscura, fina, brillante y con huecos.

El proceso:

  1. Recorte del fondo con BiRefNet y encuadre cuadrado alrededor del objeto.
  2. Dos modelos de foto a 3D, con las mismas semillas (1234 y 777): Pixal3D (TencentARC, licencia MIT) y TRELLIS.2 (Microsoft, MIT). Pixal3D está construido sobre TRELLIS.2 y usa además el campo de visión de la foto (lo estimamos con MoGe-2). Los dos a resolución 1024; Pixal3D también a 1536 como prueba extra. Usamos el port nativo de ComfyUI con pesos int8, no las implementaciones oficiales, así que estos resultados no valen como cifras "oficiales" de ninguno de los dos.
  3. Postproceso en el mismo grafo: malla de referencia muy densa, versión de unos 150.000 triángulos y otra de unos 50.000, despliegue UV y horneado de texturas. El GLB resultante lleva tres texturas PNG de 2048 px: color base, un mapa empaquetado de oclusión ambiental, rugosidad y metálico (la oclusión se hornea a 1024 px en el grafo) y normales.
  4. Renders en Blender con luz neutra de estudio: vistas desde el ángulo de la foto, tres cuartos, lateral, trasera y cenital, giro de 360°, wireframe del modelo de 50.000 triángulos y atlas UV.

Todo en una RTX 4090: unos 25 minutos de generación para las 10 pruebas y menos de 10 minutos de render.

Resultados

  • Taburete: gana Pixal3D con claridad. La silueta, las patas torneadas, los travesaños, los flecos y el bordado floral siguen la foto. A resolución 1536 el bordado sale más nítido y los flecos tienen el verde correcto. El modelo final es la semilla 777 a 1536, con 147.869 triángulos.
  • Silla: empate técnico. Las cuatro pruebas a 1024 recuperan el aro del respaldo, el doble travesaño, el anillo bajo el asiento y las cuatro patas cónicas. Elegimos Pixal3D (semilla 1234, 149.206 triángulos) porque la geometría es algo más limpia. La diferencia con TRELLIS.2 cae dentro del ruido entre semillas.
  • Más resolución no siempre ayuda. En el taburete mejoró. En la silla, 1536 añadió una lámina pálida en una pata trasera y cortó el extremo de otra, y nos quedamos con 1024.
  • Tiempos por modelo en el taburete: Pixal3D 124 y 135 s a 1024 (215 s a 1536); TRELLIS.2 252 y 215 s. En la silla, Pixal3D tardó 70 y 72 s y TRELLIS.2 56 y 52 s. No investigamos por qué.
  • Memoria de la tarjeta (pico): en el taburete, Pixal3D 11,2 a 12,7 GB a 1024 y 15,6 GB a 1536; TRELLIS.2 18,2 a 18,5 GB. Es el pico de toda la tarjeta, con unos 2,1 GB de otros procesos.
  • Lo que se entrega por objeto: un GLB con material PBR (tres texturas de 2048 px: color base, oclusión + rugosidad + metálico empaquetados, y normales), versiones de unos 150.000 y 50.000 triángulos, giro de 360°, vistas, wireframe y atlas UV.

Míralos en 3D

Son los modelos finales de unos 150.000 triángulos, con las texturas reducidas a 1024 px (WebP) y los vértices cuantizados para web: 6,5 MB el taburete y 5,2 MB la silla (los GLB originales pesan 24,4 y 16,5 MB). Se cargan al pulsar el botón. Arrastra para girar, rueda o pellizca para acercar.

Vista previa del modelo 3D del taburete
Taburete, Pixal3D, semilla 777. Generado con IA.
Vista previa del modelo 3D de la silla
Silla, Pixal3D, semilla 1234. Generado con IA.
Hoja comparativa: foto de un taburete de nogal con asiento bordado floral y flecos verdes, junto a cinco renders 3D generados con IA. Las dos versiones de Pixal3D y la de resolución 1536 se parecen a la foto. Las dos de TRELLIS.2 están dañadas: una con el asiento rasgado, agujeros negros y patas hechas astillas, otra con el asiento lleno de agujeros y el bordado manchado.
Taburete: foto | Pixal3D (2 semillas) | TRELLIS.2 (2 semillas) | Pixal3D a 1536. Generado con IA.
Hoja comparativa: foto de una silla negra con forma Thonet nº 14, junto a cinco renders 3D generados con IA. Todas recuperan el aro del respaldo y las cuatro patas; el asiento sale como un plato liso sin rejilla.
Silla: foto | Pixal3D (2 semillas) | TRELLIS.2 (2 semillas) | Pixal3D a 1536. Generado con IA.
Wireframe del modelo de 50.000 triángulos del taburete: triángulos irregulares, con algunos enormes y planos en los travesaños
Wireframe, taburete, 50.000 triángulos
Atlas UV del taburete: miles de islas diminutas y unas pocas grandes
Atlas UV del taburete

Qué falla todavía

Cada fallo, con lo que añadiría un trabajo para un cliente:

  • TRELLIS.2 rompió el taburete. Con una semilla, los travesaños salieron hechos astillas retorcidas y la tapa del asiento rasgada, con agujeros negros. Con la otra, las patas están bien pero el asiento está lleno de agujeros y el bordado se vuelve manchas amarillas. Dos semillas, mismo veredicto, pero son solo dos. En un trabajo: cambiar de modelo, probar varias semillas y elegir, o simplificar la foto.
  • La rejilla de la silla se pierde en todas las pruebas. El asiento sale como un plato macizo de color liso, no como un tejido con huecos. En un trabajo: modelar el asiento aparte, o usar un material con recorte alfa, o una foto de cerca como textura repetible.
  • Se inventa lo que la foto no ve. El travesaño oculto del taburete sale de madera clara y el fleco oculto, mostaza. El asiento de la silla visto por detrás es un disco blanco liso. En un trabajo: varias fotos del objeto (Pixal3D tiene un modelo multivista, que no probamos con estos pesos), o retoque de la textura.
  • Las partes finas salen irregulares. Las patas de la silla son onduladas en vez de tubos rectos, las puntas se ensanchan o se cortan en ángulo y aparecen láminas pálidas junto a las patas traseras en una prueba de TRELLIS.2. En un trabajo: rehacer patas y respaldo como tubos limpios en Blender usando la malla generada solo de guía, o retopología y limpieza a mano.
  • El despliegue UV es muy fragmentado. Miles de islas diminutas y unas pocas grandes; la malla de 50.000 triángulos tiene triángulos irregulares, con algunos enormes y planos en los travesaños del taburete. Hornea bien, pero es frágil si alguien edita la textura. En un trabajo: retopología en cuadrículas, UV limpio a mano y nuevo horneado. Estimamos medio día por objeto; es una estimación nuestra, no la hemos medido en un trabajo real.
  • El metal sale demasiado brillante. El asiento de la silla parece latón en los renders. En un trabajo: limitar el mapa de metálico en las partes que no son metal.
  • El modelo de Pixal3D sale inclinado. La malla sale en el marco de la cámara de la foto, con la inclinación de esta (35° en el taburete). Lo nivelamos a mano antes de renderizar, a ojo (-35° y -25°). Sin esto no se puede entregar.
  • Peso de los archivos. Cada GLB original pesa entre 12 y 29 MB porque las texturas son PNG. Para esta página recomprimimos los de unos 150.000 triángulos (texturas a 1024 px en WebP, vértices cuantizados): 6,5 MB el taburete y 5,2 MB la silla. Es una versión de visualización, con menos detalle de textura que la entrega.
  • La versión ligera de 50.000 triángulos del taburete se estropea. Al abrirla en un visor 3D aparecen manchas negras en la cara superior del asiento y en las esquinas, que el modelo de 150.000 triángulos no tiene (visto a ojo en un visor, no medido). La silla de 50.000 triángulos sale bien. Por eso los visores de esta página usan la versión de 150.000. En un trabajo: decimar con más cuidado o retopología.
  • Lo que no hemos medido: si la malla es estanca (importa para imprimir), el número de islas UV, las dimensiones en unidades reales y cómo se comporta con cristal o cromo. No decimos nada de eso.
  • Muestra pequeña. Dos fotos y dos semillas por celda. La victoria de Pixal3D en el taburete es clara; en la silla no se puede decir quién gana.
Render trasero del taburete: el travesaño oculto sale de madera clara y el fleco oculto, mostaza
Taburete visto por detrás: lo que la foto no veía, inventado
Vista cenital de la silla: el asiento es un plato liso de color beige, sin rejilla
Silla desde arriba: la rejilla se ha perdido
Silla, giro de 360°. Generado con IA a partir de una foto. Foto: Antonio Borrillo (CC0)

Qué recibe un cliente

Esta pieza no es un servicio que vendamos tal cual: es una prueba propia y los modelos no se entregan como producto. Para un caso real, partiríamos de las fotos de tu mueble y te daríamos el GLB con texturas PBR, una versión ligera, los renders y el wireframe. Y te diríamos de antemano, como aquí, qué partes de ese objeto es probable que salgan mal y qué trabajo manual harían falta para dejarlo listo para tu tienda o tu visor. No prometemos un modelo listo para producción a partir de una sola foto.

Escríbenos tu caso con una foto del mueble: hello@grawwww.xyz. Respondemos en menos de 48 horas.

Créditos y licencias. Fotos: taburete, The Metropolitan Museum of Art, Open Access (CC0), cortesía; silla, Antonio Borrillo (CC0), cortesía. Modelos: Pixal3D (TencentARC, MIT) y TRELLIS.2 (Microsoft, MIT), en el port nativo de ComfyUI con pesos int8. Built with DINOv3 (Meta). Recorte de fondo: BiRefNet (MIT). Campo de visión: MoGe-2 (MIT). Renders: Blender. Visor 3D: model-viewer (Google, BSD-3-Clause).

Todos los modelos 3D y renders de este artículo están generados con IA. Objetos reales de dos fotos CC0, sin personas ni marcas.