Formatos 3D: OBJ, STL, glTF, FBX y USDZ comparados
El ecosistema 3D vive un caos similar al del audio en los 2000 — múltiples formatos competidores, cada uno optimizado para un caso distinto. Elegir mal cuesta horas: un STL para web no lleva texturas, un FBX para impresora 3D incluye datos de animación inútiles, un OBJ para AR no comprime bien. Esta guía es la chuleta para elegir el formato correcto al primer intento.
Resumen rápido
| Formato | Ideal para | Geometría | Texturas | Animación | Tamaño típico |
|---|---|---|---|---|---|
| STL | Impresión 3D | Triángulos | ❌ | ❌ | Pequeño |
| OBJ | Intercambio CAD/render | Polígonos | ✅ (MTL externo) | ❌ | Medio |
| PLY | Escaneo 3D, point clouds | Triángulos + color por vértice | ⚠ por vértice | ❌ | Variable |
| FBX | Animación, juegos | Polígonos | ✅ (embebidas) | ✅ | Grande |
| glTF / GLB | Web, AR Android, motores modernos | Triángulos | ✅ (embebidas en .glb) | ✅ | Compacto |
| USDZ | AR iOS (Apple Quick Look) | Polígonos | ✅ | ✅ | Compacto |
| 3MF | Impresión 3D moderna | Triángulos + propiedades material | ⚠ | ❌ | Pequeño |
| STEP / IGES | CAD ingeniería | NURBS (paramétrico) | ❌ | ❌ | Variable |
STL — el estándar de la impresión 3D
STL (Stereolithography, años 80) es el formato más simple posible: una lista de triángulos sin textura, sin color, sin nada más. Por eso es perfecto para impresión 3D — la impresora solo necesita la geometría.
Ventajas: universal en slicers (Cura, PrusaSlicer, Bambu Studio), archivos pequeños, conversión trivial desde cualquier software 3D.
Limitaciones: sin color, sin textura, sin metadata de unidades (¿estos vértices son mm o pulgadas?), sin compresión inherente. Un STL "ASCII" es 10× más grande que el equivalente "binario" — usa siempre binario.
Cuándo usarlo: cuando el destino es una impresora 3D, sin excepciones. Si quieres color en la impresión, usa 3MF o AMF.
OBJ — el lingua franca del intercambio CAD/render
OBJ (Wavefront, 1980s) es uno de los formatos más interoperables: lo lee y escribe prácticamente todo el software 3D. Almacena geometría poligonal (no solo triángulos) + UV mapping + normales. Las texturas se referencian en un archivo MTL adjunto que apunta a las imágenes externas (PNG, JPG).
Ventajas: amplio soporte, formato de texto legible (debugeable), incluye topología poligonal sin obligar a triangular.
Limitaciones: archivo de texto = pesado para mallas grandes, dependencia de archivos MTL + texturas externas (fácil "perder" assets al mover el .obj), sin animación.
Cuándo usarlo: intercambio entre Blender ↔ ZBrush ↔ Maya ↔ 3ds Max donde necesitas geometría + UVs + texturas pero no animación.
glTF / GLB — el "JPEG del 3D" para web y AR
glTF (GL Transmission Format, Khronos Group, 2017) es el estándar moderno diseñado específicamente para web y motores 3D actuales. Optimizado para:
- Carga rápida (binario empaquetado en .glb, una sola descarga)
- Render directo en GPU (geometría ya en formato consumible)
- PBR materials estándar (metallic-roughness, igual que Unity/Unreal/Three.js)
- Animación esqueletal y morph targets
- Compresión opcional (Draco para geometría, KTX2/Basis para texturas)
.gltf = JSON + archivos externos (geometría .bin, texturas .png/.jpg). .glb = todo empaquetado en un binario único.
Ventajas: estándar abierto, soporte nativo en navegadores (<model-viewer>, Three.js, Babylon.js), compresión Draco reduce 50-90% el tamaño, AR en Android (Scene Viewer) sin conversiones.
Limitaciones: no soporta NURBS ni geometría paramétrica (solo mallas), no es ideal para CAD industrial.
Cuándo usarlo: cualquier modelo 3D que vaya a navegador, AR Android, juego con motor moderno, o realidad virtual web.
FBX — el caballo de batalla de animación
FBX (Filmbox, comprado por Autodesk en 2006) es el formato dominante en producción de animación, juegos AAA y Hollywood. Soporta todo: geometría, texturas, materiales complejos, esqueletos, blend shapes, animación, cámaras, luces, escenas completas.
Ventajas: el formato más completo del ecosistema de animación, soporte impecable en Maya, 3ds Max, Blender, Unity, Unreal.
Limitaciones: formato binario propietario (especificación cerrada parcialmente, solo SDK oficial de Autodesk), archivos pesados, conversiones entre versiones de FBX a veces rompen compatibilidad.
Cuándo usarlo: pipelines profesionales de juegos y animación. Para cualquier otro caso, glTF da el 90% del valor con la mitad del tamaño y headache.
USDZ — el formato AR de Apple
USDZ (Universal Scene Description ZIP, Apple/Pixar 2018) es el equivalente de glTF para el ecosistema iOS. Se abre nativamente en Quick Look (iMessage, Safari, Files) sin instalar nada.
Ventajas: un solo tap en iPhone abre el modelo en AR, ecosistema Apple integrado, basado en USD de Pixar (estándar industria de cine VFX).
Limitaciones: optimizado para iOS — fuera de Apple es marginal, conversión desde otros formatos pierde algunas características avanzadas, autoría requiere macOS o Reality Composer.
Cuándo usarlo: e-commerce con AR para iPhone, marketing inmersivo, productos físicos (zapatos, mobiliario, joyas) que se "prueban" virtualmente.
STEP / IGES — el mundo CAD industrial
STEP (ISO 10303) e IGES son formatos CAD paramétricos — almacenan superficies NURBS, no mallas poligonales. Una pieza diseñada en SolidWorks se exporta a STEP manteniendo la información matemática exacta de cada curva, lo que permite reabrirla y modificarla en otro CAD.
Cuándo usarlo: diseño industrial, ingeniería, CAM (control numérico de máquinas), cualquier flujo donde las dimensiones son críticas y deben ser editables paramétricamente. NO para visualización web ni render artístico — los CAD viewers son lentos y sin texturas atractivas.
Decisión rápida
| Tu objetivo | Formato |
|---|---|
| Imprimir en 3D (PLA, resina, SLS) | STL (binario) |
| Imprimir en 3D con color | 3MF |
| Mostrar modelo en web o motor de juegos | glTF/GLB |
| AR en iPhone | USDZ |
| AR en Android | glTF/GLB |
| Animación profesional, juegos AAA | FBX |
| Intercambio entre softwares 3D para retoque | OBJ |
| Diseño CAD ingeniería | STEP o IGES |
| Escaneo 3D / point cloud | PLY o LAS |
Pitfall — "convierto OBJ a glTF y el modelo aparece negro"
Casi siempre las texturas no llegaron. OBJ referencia archivos MTL + imágenes externas; al convertir hay que mover/embeber esos archivos. Usa una herramienta que sepa empaquetar:
# Con Blender en línea de comandos
blender --background --python convert.py
# Donde convert.py importa OBJ y exporta GLB con texturas embebidas
# Con obj2gltf (npm)
npx obj2gltf -i model.obj -o model.glb --binary