AmonFlux
IMAGE & PDF SUITE

Converting 3D Models: Units, Up Axis and What Each Format Actually Stores

By Marco Caturano 11 min readPublished June 9, 2026 · Updated September 10, 2026

A converted model that opens at two hundred times its intended size, or lying on its side, has not been corrupted. Both are the predictable result of moving a file between formats that record different things, or record nothing at all and leave the reader to guess. Once you know which three assumptions differ, almost every conversion problem becomes a setting rather than a mystery.

What each format actually stores

A 3D file is not one thing. It may carry geometry, materials, textures, a node hierarchy, transforms, skeletons, animation and metadata, and formats differ enormously in how much of that they can express. Converting into a format that cannot represent something means that thing is discarded, quietly.

FormatGeometryMaterialsTexturesHierarchyAnimation
STLTriangles onlyNoneNoneNoneNone
OBJYes, with UVsIn a separate .mtlReferenced filesGroups onlyNone
PLYYes, vertex colourNoneNoneNoneNone
glTF / GLBYesPBREmbedded or referencedFullYes
FBXYesYesReferencedFullYes
Collada (DAE)YesYesReferencedFullYes
3MFYesColour and propertiesLimitedYesNone
USDZYesPBREmbeddedFullYes
Capability is the ceiling, not a promise: a glTF can carry animation, but only if the source had any.
Converting a textured model to STL and back does not lose the textures temporarily. STL never held them, so they are gone the moment the file is written. Keep the source.

Units: the single biggest cause of wrong-sized models

STL and OBJ store numbers with no unit attached. A cube written as 20 units across might be 20 millimetres, 20 centimetres or 20 metres; the file does not say, and the reader has to assume. Different applications assume differently.

Mechanical CAD and 3D printing overwhelmingly work in millimetres. glTF specifies metres. Game engines and AR viewers follow glTF. So a part exported from CAD at 200 mm, saved as STL and opened in a glTF-based viewer, becomes a 200 metre object: the numbers are unchanged and the interpretation is not.

ContextUsual unit
Mechanical CAD, slicers, 3D printingMillimetres
glTF, GLB, USDZMetres, by specification
Game enginesMetres
Architectural modelsMetres or millimetres, varies
STL, OBJ, PLYUndefined — whatever the author intended

The fix is to state both ends explicitly: what the file was authored in, and what the destination expects. A conversion from millimetres to metres multiplies every coordinate by 0.001, which is exactly the correction needed. Guessing after the fact by eye works, but you will never land on a round number and the model will be subtly wrong forever.

Up axis: why the model is lying on its side

There is no universal agreement on which direction is up. Two conventions dominate and they are ninety degrees apart.

  • Z-up, with Y running into the screen: mechanical CAD, 3D printing, Blender, most engineering tools.
  • Y-up, with Z coming towards the viewer: glTF, USD, game engines, AR viewers, and most web 3D.

A model that appears rotated a quarter turn after conversion has almost always crossed that boundary without the rotation being applied. The correction is a single rotation of minus ninety degrees about X to go from Z-up to Y-up, and plus ninety to go back.

One practical warning: apply the rotation to the geometry rather than leaving it as a transform on the root node when the destination is a printing or manufacturing workflow. Slicers and CAM software frequently ignore node transforms and read raw vertex positions, so a model that looks correct in a viewer can still arrive on its side in the slicer.

Materials and textures travel worst of all

Geometry is a list of numbers and converts cleanly. Materials are a description of how a surface responds to light, and the formats describe that in incompatible ways.

Self-contained versus referenced

GLB and USDZ pack the geometry, materials and image files into one container. Nothing can go missing. OBJ, glTF in its JSON form, FBX and Collada instead reference external files by relative path, so the model is only complete if the .mtl, the .bin and every texture travel with it in the right folder structure. This is the single most common reason a model arrives grey and untextured.

Old and new material models

OBJ and older FBX files describe surfaces with the Phong model: a diffuse colour, a specular colour and a shininess number. glTF and USD use physically based rendering: base colour, metalness, roughness, normal and occlusion maps. There is no exact translation between the two. Converting Phong to PBR involves guessing a roughness from a shininess value, and the result usually needs adjusting by hand.

  • Choose GLB when the model must arrive complete in one file. It is the safest general-purpose target.
  • Choose USDZ when the destination is Apple AR Quick Look specifically.
  • Choose OBJ when the recipient needs something old and widely readable, and send the .mtl and textures alongside.
  • Choose STL or 3MF for printing, and accept that appearance is not part of the deal.

Triangle counts and when to reduce them

Decimation removes triangles by collapsing edges and re-tessellating the surface. Whether that is an improvement or a disaster depends entirely on where the triangles came from.

SourceSimplification
Photogrammetry or 3D scanWorks very well — triangles are dense and evenly distributed
Sculpted organic meshWorks well at moderate ratios
Tessellated CAD outputUse with care — flat faces and sharp edges get rounded off
Hand-modelled low-poly assetAvoid — every triangle is already doing work
Architectural modelAvoid — repeated straight edges degrade visibly

CAD models deserve a note of their own. A CAD file describes surfaces mathematically: a cylinder is a cylinder, exact at any resolution. Exporting to a mesh format converts those surfaces to triangles, and that step is one way. Once a cylinder has become 64 flat facets, no amount of processing recovers the original definition. If you may need the precise geometry later, keep the CAD file.

Check the result at the size it will actually be viewed, not at full zoom. A 60 percent reduction that looks brutal at close range is often indistinguishable in a product viewer at normal scale.

An order of operations that avoids most problems

  1. Decide the destination first. Printing, web viewer, game engine and AR each imply a different target format, and that choice constrains everything after it.
  2. Select the model with its companion files — the .mtl, the .bin, the textures — not the model alone.
  3. Set the source unit to what the file was authored in and the target unit to what the destination expects. Do this before looking at anything else.
  4. Set the up axis if you are crossing between CAD and web or game conventions.
  5. Inspect the result in a preview before downloading. Wrong scale, wrong orientation and missing materials are all visible immediately and all cheap to fix at this point.
  6. Only then consider simplification, and only if the triangle count is genuinely a problem for the destination.
  7. Keep the original. Every conversion is a translation, and the source file is the only thing that holds everything.

Common questions

Why is my model invisible after conversion?

Usually scale. A model interpreted as metres when it was authored in millimetres sits a thousand times too large, so the camera starts inside it. Check the bounding box dimensions rather than assuming the geometry failed to load.

Can I convert STL back into a CAD format?

Not meaningfully. A mesh is a triangle soup with no memory of the surfaces it approximated. Converting it into a CAD container gives you a mesh inside that container, not editable parametric geometry. Reverse engineering that properly is a manual job.

Why did my textures disappear?

Either the target format cannot store them, or they were referenced externally and the referenced files were not supplied. STL and PLY have no concept of textures. OBJ needs its .mtl and the images. GLB embeds everything, which is why it is the safer target.

Which format should I use for a website?

GLB. It is a single file, it supports physically based materials, it is the native format of every web 3D library, and it compresses well. There is no strong reason to serve OBJ or FBX to a browser.

Does converting between formats lose quality?

Geometry is generally preserved exactly, since vertex coordinates are just numbers. What gets lost is everything around it: materials that cannot be expressed, hierarchy that gets flattened, animation the target does not support, and precision if the format stores coordinates at lower precision than the source.

Try it yourself

The settings described above are all adjustable in the tool. Files stay on your device; nothing is uploaded to a server.

3D model converter

Related guides