Cookies de estadística y publicidad
Usamos cookies de estadística y de publicidad, y ambas van a Google. Si rechazas, para ti no cambia nada visible.Ir a la página de privacidad
GLB
glTF con las texturas dentro. Un archivo en lugar de una carpeta llena de dependencias.
GLB
GLB es un formato binario, que solo significa algo para un programa que lo conoce. Guarda formas y coordenadas en lugar de píxeles, así que se mantiene nítido a cualquier tamaño: un logotipo llevado al tamaño de una valla publicitaria no pierde nada. Se usa para la web y entregar un archivo terminado.
La extensión es .glb y el nombre completo, Binary glTF. Ambos importan menos que lo que el archivo puede contener, y de eso trata el resto de esta página.
Khronos Group lo publicó en 2016. La especificación es glTF 2.0.
La edad interesa por un motivo práctico: cuanto más antiguo es un formato, más programas han tenido tiempo de aprenderlo.
Está publicada entera, así que cualquiera puede implementarla leyendo el documento en vez de a base de inspeccionar archivos. Por eso aparece en tantos programas, y por eso los archivos escritos hace veinte años siguen abriéndose hoy. Publicada no quiere decir libre de regalías: cuando un formato envuelve un códec, la licencia de las patentes es un asunto aparte que la norma no resuelve.
GLB guarda su contenido exactamente. Volver a guardarlo no cambia nada, así que puedes abrirlo, editarlo y guardarlo tantas veces como quieras sin acumular daño; eso es lo que lo convierte en un formato de trabajo y no de entrega.
GLB puede guardar una animación en lugar de una sola imagen fija. Conviene saberlo antes de convertir: un destino que solo admite un fotograma se queda con el primero y descarta el resto, casi siempre sin decirlo.
Blender, three.js y Babylon.js lo leen, y también la mayoría de programas del mismo tipo.
Cuando un archivo no se abre, el formato rara vez es el problema: lo más habitual es que el programa sea anterior al formato. Convertir a algo más antiguo es la salida fiable, y para eso está el resto de este sitio.
Ningún navegador lo lee.
Ese es el motivo más frecuente para convertirlo: no que el formato sea malo, sino que el sitio donde quieres mostrar el archivo no sabe leerlo.
GLB está pensado para abrirse y cambiarse. Guarda el archivo en este formato mientras el trabajo siga en marcha y exporta desde él cada vez que haga falta una copia terminada.
GLB es glTF empaquetado en un único contenedor binario: la descripción de la escena en JSON, el búfer con la geometría y todas las texturas, con una cabecera pequeña delante. No se añade nada y no se deja nada fuera — desempaqueta un GLB y tendrás el .gltf, el .bin y las imágenes que si no estarían sueltas en una carpeta.
Esa es toda la diferencia, y es la razón de que casi todo lo que se publica en 3D en la web sea un GLB. Un .gltf sin sus acompañantes es una descripción de escena que apunta a datos que no están, y mandarlo así es el mismo error que mandar un OBJ sin su MTL.
Un modelo 3D tiene más piezas sueltas que casi cualquier otro material: un búfer binario, una textura de color base, un mapa de normales, uno de rugosidad, uno de oclusión, uno de emisión. Un objeto puede ser ocho archivos, y una escena entera, decenas.
Un solo archivo elimina de golpe toda una familia de fallos: la textura que no viajó, la ruta relativa rota, la carpeta comprimida un nivel por encima de donde tocaba. También elimina viajes de red: un navegador que pide un GLB hace una petición donde el equivalente en .gltf hace ocho, y en una conexión móvil esa diferencia se nota más en el tiempo hasta ver algo que en los bytes.
En Android, Scene Viewer acepta GLB directamente, y el componente model-viewer que usan la mayoría de las páginas con 3D lo toma como fuente principal. Cuando apuntas el teléfono a la ficha de un producto y aparece el mueble en el salón, lo que ha llegado es un GLB.
iOS es la excepción que hay que conocer: Quick Look de Apple usa USDZ, formato propio, así que una tienda que quiera realidad aumentada en las dos plataformas publica el GLB y el USDZ uno al lado del otro y deja que el componente elija según el sistema. Por eso las fichas de producto llevan dos archivos y no uno.
Mandan las texturas, no la geometría. Un modelo con cuatro mapas de 4K son treinta megabytes antes de contar nada más, y reducirlos a 1K o 2K normalmente no cuesta nada visible al tamaño en que el modelo se ve de verdad. Eso primero.
Después Draco para la malla, que con frecuencia deja la geometría en una quinta o una décima parte, y KTX2 con Basis Universal para las texturas, que además permite que la tarjeta gráfica las mantenga comprimidas en memoria en lugar de expandirlas. Juntos convierten una exportación de cuarenta megabytes en algo por debajo de tres. Ojo: los dos son extensiones, y un visor que no las implemente no podrá abrir el archivo, así que van al final de la cadena y nunca en el máster.
Editar e inspeccionar. Un .gltf es JSON legible, de modo que un valor de material equivocado o un nodo mal escalado se encuentran y se arreglan en un editor de texto, y un sistema de control de versiones puede enseñar una diferencia con sentido entre dos revisiones.
Un GLB es opaco. Cualquier cambio pasa por desempaquetar, editar y volver a empaquetar, y un repositorio con GLB guarda un binario completo nuevo en cada commit. La organización sensata es la misma que en el resto de este sitio: el .gltf con sus recursos como copia de trabajo, y el GLB generado como paso de publicación.
En bastantes sitios, para un formato de diez años: todas las bibliotecas de 3D para web, Blender, Unity, Unreal, Godot, Substance, Sketchfab, el visor de realidad aumentada de Android y los principales mercados de recursos. Office incluso lo incrusta en un documento o en una diapositiva.
Donde no encaja es en cualquier cadena anterior: la impresión 3D quiere STL o 3MF, el CAD quiere sus propios formatos, y el cine y los efectos visuales usan USD o Alembic. GLB es un formato de entrega para tiempo real, y pedirle un trabajo de fabricación o de postproducción es pedírselo al archivo equivocado.
Esta es la parte que hay que leer antes de convertir nada aquí, porque no coincide con lo que uno esperaría de un empaquetado y desempaquetado. Lo que este conversor traslada es geometría: dónde están los triángulos, los nombres de cada malla cuando el destino tiene dónde ponerlos, y las transformaciones de los nodos, que se hornean en los propios vértices. Nada más. Ni materiales, ni texturas, ni coordenadas UV, ni normales, ni colores por vértice, ni cámaras, ni luces, ni animaciones, ni el grafo de escena.
De ahí salen varias consecuencias concretas. De GLB a glTF sale un único archivo autocontenido, con el búfer incrustado en base64 dentro del propio JSON, y no la carpeta con .bin y texturas que da una exportación normal. Hacia STL o PLY todas las mallas se funden en una sola y los nombres se pierden; el STL se escribe en binario y el PLY en texto. Y hay tres cosas que el lector rechaza en voz alta en lugar de hacerlas a medias: un glTF que apunta a un .bin externo — te dirá que conviertas el GLB —, un archivo con compresión Draco, y las primitivas que no sean triángulos, que se saltan. Todo esto ocurre en tu navegador, sin que el modelo se suba a ninguna parte, con un límite de 100 MB por archivo.
Desde OBJ, desde FBX o desde un programa de modelado, cuenta con que los materiales pidan trabajo: el vocabulario de renderizado basado en física que usa glTF no tiene equivalente en el MTL de un OBJ, así que el modelo llega gris y correcto en vez de texturizado y correcto.
Hacia STL para imprimir, se descarta todo lo que no sea forma, y además la malla suele necesitar reparación antes de que un laminador la acepte: los modelos hechos para tiempo real con frecuencia no son estancos, y una superficie sin grosor se ve perfecta en pantalla y es imposible de imprimir.
| Extensión | .glb |
|---|---|
| Tipo de medio | model/gltf-binary |
| Publicado por | Khronos Group |
| Primera publicación | 2016 |
| Especificación | glTF 2.0 |
Solo el empaquetado. Un .gltf es JSON que hace referencia a un búfer binario y a archivos de textura aparte, así que el modelo es una carpeta; un .glb lo mete todo en un único archivo binario. Son los mismos datos con distinto envoltorio.
Blender lo abre directamente, igual que Unity, Unreal y Godot. Para echarle un vistazo rápido sirve cualquier visor de glTF en la web, y Office puede incrustarlo en un documento o en una diapositiva.
Casi siempre por las texturas y no por la geometría. Cuatro mapas de 4K son treinta megabytes antes de contar nada más. Redúcelos a 1K o 2K primero, y solo después aplica Draco a la malla y KTX2 a las texturas.
En Android sí: Scene Viewer lo toma tal cual. iOS usa el formato USDZ de Apple, así que una web que quiera funcionar en ambas publica el GLB y el USDZ juntos y deja que el componente model-viewer elija según la plataforma.
No. Lo que se traslada es la geometría, más el nombre de cada malla cuando el destino admite nombres. Los materiales, las texturas, las coordenadas UV, las normales, las animaciones y el grafo de escena no pasan, y conviene saberlo antes y no después.
Conviértelo antes a STL o a 3MF, y cuenta con tener que reparar la malla. Los modelos hechos para renderizado en tiempo real a menudo no son estancos, y una superficie sin grosor se ve bien en pantalla y no se puede imprimir.