Benchmark
What size an AI-generated 3D model really is, and what three slicers turn it into
What size does an AI-generated 3D model come out at, and what does a slicer do with it?
Result
None of the four generators gives the model a real size. TRELLIS.2 and Stable Fast 3D return it about 1 unit across, Hunyuan3D-2.1 and Neural4D about 2, whatever the object is. As a GLB, whose unit is metres by specification, that reads as a figurine one or two metres tall; the same numbers in an STL read as one or two millimetres. Hunyuan3D-2.1 exports both formats itself, and its two files are 1000 times apart. No slicer multiplies by 1000. PrusaSlicer and Bambu Studio decide the unit from volume, and a figurine of under 1 cubic millimetre falls in their inches band: PrusaSlicer asks and then scales by 25.4, Bambu Studio scales by 25.4 without asking. Cura scales by 100 on a 220 mm bed and not at all on a 180 mm one. Every one of those results looks like a plausible figurine, which is why the error goes unnoticed. Separately, two thirds of Hunyuan3D-2.1's surface was a thin sheet spanning its whole generation volume, so its longest side measured the sheet, not the object.
Where each generator puts the model
| Generator | Format | Extent in file units (x, y, z) | Centre | Unit the format gives | Longest side as read (mm) |
|---|---|---|---|---|---|
| Hunyuan3D-2.1 (Tencent) | GLB | 1.9855, 1.4702, 1.9856 | -0.004, 0.0004, -0.0038 | metres, fixed by the glTF 2.0 specification | 1,985.64 |
| Hunyuan3D-2.1 (Tencent) | STL | 1.9855, 1.4702, 1.9856 | -0.004, 0.0004, -0.0038 | none in the file; slicers read it as millimetres | 1.99 |
| Neural4D | GLB | 1.4248, 2, 1.0996 | 0, 0, 0 | metres, fixed by the glTF 2.0 specification | 2,000.00 |
| Neural4D | STL | 1.4248, 1.0996, 2 | 0, 0, 0 | none in the file; slicers read it as millimetres | 2.00 |
| Stable Fast 3D (Stability AI) | GLB | 0.705, 0.9392, 0.4718 | -0.0113, 0.0063, -0.0487 | metres, fixed by the glTF 2.0 specification | 939.21 |
| TRELLIS.2 (Microsoft) | GLB | 0.662, 1.0013, 0.63 | 0.0002, -0.0002, -0.0001 | metres, fixed by the glTF 2.0 specification | 1,001.34 |
Read the extent column first: every output is about 1 or 2 units across, set by the generator's normalisation and not by the figurine. The last column is that same number once the format's unit is applied, in millimetres. Hunyuan3D-2.1 wrote both of its files itself, and they differ by exactly the factor between metres and millimetres.
What each slicer turns the STL into
| STL from | Volume as read (mm³) | Slicer | Unit it guesses | Asks first | Scale applied | Longest side, from the source rule (mm) | Longest side, on import (mm) |
|---|---|---|---|---|---|---|---|
| Hunyuan3D-2.1 (Tencent) | 0.447 | PrusaSlicer | inches | Yes | 25.4 | 50.44 | 50.44 |
| Hunyuan3D-2.1 (Tencent) | 0.447 | Bambu Studio | inches | No | 25.4 | 50.44 | not imported |
| Hunyuan3D-2.1 (Tencent) | 0.447 | Cura (220 x 220 x 250 mm bed) | power of ten to fill the build volume | No | 100.0 | 198.56 | not imported |
| Hunyuan3D-2.1 (Tencent) | 0.447 | Cura (180 x 180 x 180 mm bed) | left as is | No | 1.0 | 1.99 | not imported |
| Neural4D | 0.824 | PrusaSlicer | inches | Yes | 25.4 | 50.80 | 50.80 |
| Neural4D | 0.824 | Bambu Studio | inches | No | 25.4 | 50.80 | 50.80 |
| Neural4D | 0.824 | Cura (220 x 220 x 250 mm bed) | power of ten to fill the build volume | No | 100.0 | 200.00 | not imported |
| Neural4D | 0.824 | Cura (180 x 180 x 180 mm bed) | left as is | No | 1.0 | 2.00 | not imported |
No slicer lands on the figurine's real size, and none could: the file never contained one. A factor of 1000 would only make the STL agree with the GLB, which reads as a figurine two metres tall. The two right-hand columns are the check on the method: where a real import was made, it agrees with the rule read out of the source code to the hundredth of a millimetre.
Is the longest side the object?
| File | Longest side (file units) | Thin sheet spanning the volume | Share of surface in the sheet | Longest side without it |
|---|---|---|---|---|
| figurine__hunyuan21.glb | 1.9856 | Yes | 66.21% | 1.4702 |
| figurine__hunyuan21.stl | 1.9856 | Yes | 66.21% | 1.4702 |
| figurine__neural4d.glb | 2.0000 | No | none | same |
| figurine__neural4d.stl | 2.0000 | No | none | same |
| figurine__sf3d.glb | 0.9392 | No | none | same |
| figurine__trellis2.glb | 1.0013 | No | none | same |
The check looks for a band 1% of the model's height that holds far more surface than the rest and is much wider than everything outside it. Only Hunyuan3D-2.1's output had one: a slab about 0.015 units thick, fused into the same watertight shell as the figurine. Scaling that file to a target longest side scales the slab.
Why the slicers do not agree
PrusaSlicer and Bambu Studio both guess the unit from volume in cubic millimetres, with different thresholds: PrusaSlicer treats under 0.001 as metres and under 9 as inches, Bambu Studio under 0.008 as metres and under 8 as inches. A figurine 2 mm tall has a volume of well under 1 cubic millimetre, which is above both metre thresholds and inside both inch bands. PrusaSlicer shows a dialog before converting; in Bambu Studio the equivalent dialog is commented out in the source and the conversion is written only to its log. Cura does not guess a unit at all: it scales anything more than 100 times smaller than the bed, by a power of ten.
Which generators are missing
TripoSG's official Space failed on every GPU call on the day of the run. Meshy, Tripo and Rodin require a paid subscription on their free tiers to download a GLB or STL, so no file could be measured without paid access. Meshy and Tripo both document an optional real-world size estimate, auto_size, which is off by default; whether it is accurate is not tested here.
Disclosure
The author of this site works for the company that makes Neural4D. It is included on its public free tier, with the same input image and the same script as every other generator, and this measurement makes no ranking: every generator's output lacks a real size.
How this was measured
One 1024 x 1024 image of a keychain figurine, itself AI generated, sent through four image-to-3D generators with default settings on 2026-09-24: TRELLIS.2, Hunyuan3D-2.1 and Stable Fast 3D through their official Hugging Face Spaces, and Neural4D on its public free tier. Each file was measured raw, in file units, then read the way its format requires: GLB as metres, STL as millimetres because that is what every slicer assumes. Each STL was then run against the unit guessing rules in the source code of PrusaSlicer, Bambu Studio and Cura, and imported by hand into PrusaSlicer 2.9.6 and Bambu Studio 02.08.02.61 to check the rule against the application.
- Software and versions
- trimesh 5.1.0, numpy 2.5.2, PrusaSlicer 2.9.6 (Windows, portable), Bambu Studio 02.08.02.61 (Windows, portable)
- Date measured
- 2026-09-28
- Script
scripts/measure-gen-scale.py- Raw data
- gen-mesh-scale-2026-09-28.json
This data is published under CC BY 4.0. Reuse the numbers freely, with a link back so a reader can check the method.
What this does not show
Stated so the result is not read wider than it goes.
- Whether any generator's optional real-world sizing works. Meshy and Tripo document an auto_size option, off by default; it needs paid access to download the result and was not tested.
- Geometry quality. One AI generated input image is close to a best case for every generator, and a scale reading does not depend on it; a quality comparison would.
- Cura on a real import. Its row is computed from source only.
- Other seeds or inputs. Normalisation is a property of each model, so the box should not move with the input, but one run per generator does not prove that.
Where this is used
- What Size Is an AI-Generated 3D Model? Four Generators, Two Formats, Three Slicers
- Why a 3D Model Imports at the Wrong Size: Only One Mesh Format Stores a Unit
- Can You 3D Print a GPT-6 Astra Model? We Measured 1,304 Files
- How to Check a Model You Did Not Make, and Why the Order Matters
- When a Broken Mesh Is Worth Repairing, and When You Are Just Making It Worse
TRELLIS , Hunyuan3D , Neural4D , PrusaSlicer , Bambu Studio , UltiMaker Cura