How to Convert FBX to GLB Without Losing Materials

·12 min read

FBX is the workhorse of the 3D industry. It came out of Kaydara in the late 1990s, was acquired by Autodesk, and became the default export format for Maya, 3ds Max, MotionBuilder, and eventually every other DCC that needed to talk to them. It carries geometry, animation, cameras, lights, and materials — but its material model is stuck in a pre-physically-based world. When you convert FBX to GLB, that mismatch is where materials usually get lost.

GLB speaks strict glTF 2.0 PBR: metallic/roughness, base color, normal, occlusion, and emissive. FBX carries a legacy Phong/Lambert graph plus a loose convention for PBR maps stuffed into "custom user properties" that every application interprets slightly differently. If you export an FBX and expect the converter to guess your intent, you'll be disappointed. If you prepare the file, the conversion is boring — which is what you want.

Before you export: the pre-flight checklist

  • Bake procedural materials to textures. Substance graphs, Blender procedural nodes, Maya utility networks — none of that survives the trip. Bake to image files first.
  • Use PBR maps, not Phong. If your FBX only has diffuse + specular, expect flat-looking output. Modern DCCs export a metallic/roughness set — use it.
  • Embed textures in the FBX. "Embed Media" in Maya and 3ds Max; "Path Mode: Copy + Embed Textures" in Blender. Otherwise the converter has no way to find them once the file leaves your machine.
  • Triangulate before export. GLB requires triangles anyway, and triangulating in the DCC gives you predictable results instead of relying on the exporter's fallback.
  • Apply transforms. Reset scale to 1 and freeze rotations. Non-uniform scales on parent nodes are the single most common cause of "why does my model look squashed in the viewer" bug reports.
  • Check units. FBX defaults vary between 1 unit = 1 cm and 1 unit = 1 m. glTF expects meters. Set your scene units before exporting.

Texture channel gotchas

This is where most FBX → GLB conversions go sideways. glTF has strict rules about how PBR maps are packed. FBX has none.

  • Metallic + Roughness must be packed into a single texture in glTF: green channel = roughness, blue channel = metallic. Most FBX exporters split them into two separate files. Pack them before conversion, or accept that the converter will do it and may not preserve your intended values.
  • Normal maps must be tangent-space, OpenGL convention (green channel points up). DirectX-convention normals (green points down) will produce inverted lighting on curved surfaces. Flip green if needed.
  • Ambient occlusion goes in the red channel of the metallic/roughness texture (packed ORM), or as a separate map. Standalone AO textures in FBX are ignored by most viewers unless you pack them.
  • Base color should be albedo only — no baked lighting. If your diffuse texture has shadows painted into it, they'll double up when the viewer relights the scene.
  • Emissive maps need to be sRGB, not linear. Getting this wrong makes glowing surfaces look muddy.

Animation and rigs

glTF 2.0 supports skinned meshes and keyframe animation. It does not support IK solvers, constraints, or blendshape animation graphs — those are runtime concepts, not asset-format ones. Bake your animation to keyframes before exporting, and expect blendshapes (morph targets) to come through with named channels that your runtime will need to drive explicitly.

Convert in the browser

3D Model Converter runs entirely client-side. Your FBX never leaves your machine, which matters when you're moving client work or NDA'd assets. Drop the file, hit convert, download the GLB. No account, no queue, no upload progress bar staring at you while a 200 MB file crawls to a server. Everything happens locally in WebAssembly.

Verify the output

Never trust a conversion without inspecting the result. Load the GLB in a viewer that shows the material graph — the glTF Viewer by Don McCurdy is the community reference and shows every texture channel and material property. Check base color, roughness (should not be a mirror unless intended), metallic (should be 0 for anything not metal), and normals (no inverted lighting on curved surfaces).

If something's wrong, it's almost always because a texture didn't embed, a channel didn't pack, or a transform wasn't frozen. Fix the source and re-export. Trying to patch the GLB afterwards is a losing battle.

Ready to convert? Convert FBX to GLB