Benchmark
What is wrong with an AI-generated 3D model as downloaded: 16 models, sliced and repaired
What is wrong with an image-to-3D model as downloaded, and does it slice and print without repair?
Result
PrusaSlicer produced G-code for all 16 models, so slicing is no test. Eleven were watertight as downloaded, and being watertight was not the test either. All four TRELLIS.2 models were hollow: two surfaces about 0.16 mm apart at an 80 mm print size, thinner than a nozzle line, filling 1 to 4% of their convex hull. They sliced to 0.5 to 1.3 metres of filament where the other generators' versions of the same object took 5.7 to 23.5. The Windows repair service made all 16 watertight and changed none of that: the repaired skins were still 0.15 to 0.16 mm. Stable Fast 3D's mug was watertight and solid all the way through, its opening sealed. Its mug, charger and pumpkin also came out tilted 18 to 25 degrees, standing on 1 to 15 square millimetres of bed. Hunyuan3D-2.1's STLs kept the GLB's Y-up axes, so all four arrive in a slicer on their side. The measurements that caught these are the ones a watertight check does not make: wall thickness, solid volume, and how the model sits on the bed.
The file as downloaded
| Object | Generator | File printed | Triangles | Watertight | Open edges | Non-manifold edges | Separate shells | UVs in the GLB |
|---|---|---|---|---|---|---|---|---|
| charger | Hunyuan3D-2.1 (Tencent) | charger__hunyuan21.stl | 344,234 | Yes | 0 | 0 | 1 | No |
| charger | Neural4D | charger__neural4d.stl | 500,000 | Yes | 0 | 0 | 1 | No |
| charger | Stable Fast 3D (Stability AI) | charger__sf3d.glb | 25,660 | Yes | 0 | 0 | 1 | Yes |
| charger | TRELLIS.2 (Microsoft) | charger__trellis2.glb | 292,138 | No | 401 | 20 | 8 | Yes |
| figurine | Hunyuan3D-2.1 (Tencent) | figurine__hunyuan21.stl | 453,880 | Yes | 0 | 0 | 1 | No |
| figurine | Neural4D | figurine__neural4d.stl | 99,996 | No | 8 | 0 | 2 | No |
| figurine | Stable Fast 3D (Stability AI) | figurine__sf3d.glb | 22,584 | Yes | 0 | 0 | 1 | Yes |
| figurine | TRELLIS.2 (Microsoft) | figurine__trellis2.glb | 291,026 | No | 0 | 266 | 68 | Yes |
| mug | Hunyuan3D-2.1 (Tencent) | mug__hunyuan21.stl | 589,094 | Yes | 0 | 0 | 1 | No |
| mug | Neural4D | mug__neural4d.stl | 500,000 | Yes | 0 | 0 | 1 | No |
| mug | Stable Fast 3D (Stability AI) | mug__sf3d.glb | 32,104 | Yes | 0 | 0 | 1 | Yes |
| mug | TRELLIS.2 (Microsoft) | mug__trellis2.glb | 276,809 | No | 3 | 15 | 6 | Yes |
| pumpkin | Hunyuan3D-2.1 (Tencent) | pumpkin__hunyuan21.stl | 507,512 | Yes | 0 | 0 | 1 | No |
| pumpkin | Neural4D | pumpkin__neural4d.stl | 500,000 | Yes | 0 | 0 | 1 | No |
| pumpkin | Stable Fast 3D (Stability AI) | pumpkin__sf3d.glb | 34,488 | Yes | 0 | 0 | 1 | Yes |
| pumpkin | TRELLIS.2 (Microsoft) | pumpkin__trellis2.glb | 284,010 | No | 0 | 5 | 6 | Yes |
Read this table as the check most guides tell you to run, and notice that it passes 11 of 16. The two tables below are where the problems are.
Is it solid, and what does the slicer make of it (80 mm longest side)
| Object | Generator | Volume, % of convex hull | Thinnest wall on two rays (mm) | G-code produced | Filament (m) |
|---|---|---|---|---|---|
| charger | Hunyuan3D-2.1 (Tencent) | 87.4 | 54.30 | Yes | 13.69 |
| charger | Neural4D | 82.9 | 24.88 | Yes | 12.11 |
| charger | Stable Fast 3D (Stability AI) | 89.8 | 29.18 | Yes | 11.26 |
| charger | TRELLIS.2 (Microsoft) | 3.6 | 0.16 | Yes | 0.50 |
| figurine | Hunyuan3D-2.1 (Tencent) | 19.0 | 0.47 | Yes | 5.70 |
| figurine | Neural4D | 63.6 | 3.56 | Yes | 8.66 |
| figurine | Stable Fast 3D (Stability AI) | 76.2 | 37.59 | Yes | 8.58 |
| figurine | TRELLIS.2 (Microsoft) | 1.9 | 0.15 | Yes | 0.78 |
| mug | Hunyuan3D-2.1 (Tencent) | 20.8 | 2.50 | Yes | 11.26 |
| mug | Neural4D | 19.2 | 2.59 | Yes | 11.11 |
| mug | Stable Fast 3D (Stability AI) | 85.2 | 3.43 | Yes | 16.44 |
| mug | TRELLIS.2 (Microsoft) | 2.4 | 0.16 | Yes | 0.49 |
| pumpkin | Hunyuan3D-2.1 (Tencent) | 93.4 | 72.07 | Yes | 23.53 |
| pumpkin | Neural4D | 86.5 | 52.69 | Yes | 22.42 |
| pumpkin | Stable Fast 3D (Stability AI) | 96.2 | 68.83 | Yes | 23.28 |
| pumpkin | TRELLIS.2 (Microsoft) | 1.1 | 0.16 | Yes | 1.32 |
A solid object fills most of its convex hull; a mug with a real cavity fills about a fifth. Under 4% means a hollow skin. The wall column is the thinnest stretch of material where two rays through the centre cross the model, so for a solid object it is the object's width. 0.15 to 0.16 mm is thinner than any nozzle line, and the filament column shows what the slicer did with it.
How it lands in the slicer
| Object | Generator | Axes | Lands on its side | Base tilt (degrees) | First layer on the bed (mm²) |
|---|---|---|---|---|---|
| charger | Hunyuan3D-2.1 (Tencent) | STL kept the GLB Y-up axes | Yes | 0.1 | 2,312.0 |
| charger | Neural4D | STL written Z-up | No | 0.1 | 1,037.7 |
| charger | Stable Fast 3D (Stability AI) | GLB turned to Z-up | No | 18.6 | 1.1 |
| charger | TRELLIS.2 (Microsoft) | GLB turned to Z-up | No | 0.0 | 1,364.4 |
| figurine | Hunyuan3D-2.1 (Tencent) | STL kept the GLB Y-up axes | Yes | 3.4 | 40.1 |
| figurine | Neural4D | STL written Z-up | No | 1.4 | 2.1 |
| figurine | Stable Fast 3D (Stability AI) | GLB turned to Z-up | No | 4.3 | 5.5 |
| figurine | TRELLIS.2 (Microsoft) | GLB turned to Z-up | No | 0.3 | 6.5 |
| mug | Hunyuan3D-2.1 (Tencent) | STL kept the GLB Y-up axes | Yes | 0.3 | 7.8 |
| mug | Neural4D | STL written Z-up | No | 0.1 | 47.4 |
| mug | Stable Fast 3D (Stability AI) | GLB turned to Z-up | No | 24.5 | 1.2 |
| mug | TRELLIS.2 (Microsoft) | GLB turned to Z-up | No | 0.3 | 0.6 |
| pumpkin | Hunyuan3D-2.1 (Tencent) | STL kept the GLB Y-up axes | Yes | 3.2 | 19.1 |
| pumpkin | Neural4D | STL written Z-up | No | 0.8 | 261.3 |
| pumpkin | Stable Fast 3D (Stability AI) | GLB turned to Z-up | No | 21.6 | 14.8 |
| pumpkin | TRELLIS.2 (Microsoft) | GLB turned to Z-up | No | 0.1 | 8.8 |
Slicers take Z as up and no slicer rotates a model on import. Base tilt is the angle between the model's widest downward flat face and the floor, along the model's own upright axis; on a round object it measures little. The last column is the area of the first 0.2 mm layer, as the file lands: a few square millimetres means it stands on a point.
After the Windows repair service
| Object | Generator | Watertight | Shells | Volume, % of hull | Thinnest wall (mm) | Filament (m) |
|---|---|---|---|---|---|---|
| charger | Hunyuan3D-2.1 (Tencent) | Yes | 1 | 87.4 | 54.31 | 13.69 |
| charger | Neural4D | Yes | 1 | 82.9 | 24.88 | 12.11 |
| charger | Stable Fast 3D (Stability AI) | Yes | 1 | 89.8 | 29.18 | 11.26 |
| charger | TRELLIS.2 (Microsoft) | Yes | 1 | 3.8 | 0.16 | 0.60 |
| figurine | Hunyuan3D-2.1 (Tencent) | Yes | 1 | 19.0 | 0.47 | 5.70 |
| figurine | Neural4D | Yes | 2 | 63.6 | 3.56 | 8.67 |
| figurine | Stable Fast 3D (Stability AI) | Yes | 1 | 76.2 | 37.59 | 8.58 |
| figurine | TRELLIS.2 (Microsoft) | Yes | 2 | 1.9 | 0.15 | 0.78 |
| mug | Hunyuan3D-2.1 (Tencent) | Yes | 1 | 20.8 | 2.50 | 11.27 |
| mug | Neural4D | Yes | 1 | 19.2 | 2.58 | 11.11 |
| mug | Stable Fast 3D (Stability AI) | Yes | 1 | 85.2 | 3.43 | 16.44 |
| mug | TRELLIS.2 (Microsoft) | Yes | 1 | 2.4 | 0.16 | 0.49 |
| pumpkin | Hunyuan3D-2.1 (Tencent) | Yes | 1 | 93.4 | 72.07 | 23.53 |
| pumpkin | Neural4D | Yes | 1 | 86.5 | 52.69 | 22.41 |
| pumpkin | Stable Fast 3D (Stability AI) | Yes | 1 | 96.2 | 68.83 | 23.28 |
| pumpkin | TRELLIS.2 (Microsoft) | Yes | 1 | 1.1 | 0.16 | 1.31 |
Repair closed every hole and merged most loose shells, and changed nothing about solidity: compare the last three columns with the table above. A repair service closes surfaces; it does not decide that the space between two of them should be filled.
Why a watertight check misses the worst cases
Watertight means every edge is shared by exactly two triangles. Two closed surfaces 0.16 mm apart satisfy that, and so does a mug whose opening has been sealed into a solid cylinder. Both slice without complaint. The readings that catch them are volume against the convex hull, wall thickness along a ray, and a cross-section at mid-height, filled the way a slicer fills it.
What the slicer said
PrusaSlicer printed at least one print stability warning for every model, most of them generic advice to enable supports or a brim. Two messages point at a real defect. "Floating object part" appeared on four of the five models that had more than one shell. On the TRELLIS.2 pumpkin, the fifth, it reported "Empty layer between 68.45 and 69.05" and "Make sure the object is printable". None of the messages says the model is hollow. The full output for every slice is in the JSON.
Which generators are missing
TripoSG's official Space failed with a RuntimeError on every attempt, on 2026-09-24 and again on 2026-10-14. Meshy, Tripo and Rodin require a paid subscription on their free tiers to download a GLB or STL. Hugging Face's free GPU quota ran out several times during generation; those failures are listed with their dates, and each run was retried on a later day with the same settings.
Disclosure
The author of this site works for the company that makes Neural4D. It was run in its web app with default settings and downloaded as an untextured model, the download a free account gets; every setting used is available on a free account. A free account's 50 weekly credits cover about one generation, so these runs used more credits than that. Same input images and the same script as every other generator, and this benchmark ranks nothing.
How this was measured
Four input images (phone photos of a mug, a phone charger and a small jack-o'-lantern, and the AI generated keychain figurine from the scale benchmark), each sent through four image-to-3D generators: TRELLIS.2, Hunyuan3D-2.1 (shape only) and Stable Fast 3D through their official Hugging Face Spaces, and Neural4D in its web app, downloaded as an untextured model, the download a free account gets. Generated 2026-09-24 to 2026-10-15, one run each, at the Spaces' default settings. Each model was measured as the file a user would print (the generator's own STL where it offers one, else the GLB), scaled so its longest side is 80 mm and oriented the way a slicer receives it, then sliced with PrusaSlicer 2.9.6's default profile, repaired with the Windows 3D printing repair service, and sliced again.
- Software and versions
- trimesh 5.1.0, PrusaSlicer 2.9.6 (Windows, portable, default profile), Windows.Graphics.Printing3D repair service (Windows 11), the service behind PrusaSlicer's "Fix through the Netfabb", Blender 5.2.2 (renders only)
- Date measured
- 2026-10-15
- Script
scripts/measure-gen-baseline.py- Raw data
- gen-mesh-baseline-2026-10-15.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.
- Nothing was physically printed. Every print reading is what PrusaSlicer 2.9.6 produces from the file with its default profile: whether it slices, what it reports, and how much filament the G-code uses.
- One run per input per generator, at each Space's default seed. A different seed can give different geometry; how much these readings vary between seeds is not measured.
- Four input images. They were chosen to cover an open vessel, a box with thin protrusions, a relief surface and a figurine, not to be a representative sample of what people generate.
- Other slicers. Bambu Studio, OrcaSlicer and Cura may repair or report differently on import.
- Generation quality: how closely each model resembles its photo is not scored, and no generator is ranked.
Where this is used
- Can You 3D Print an AI-Generated Model? What We Found Inside 16 of Them
- What Size Is an AI-Generated 3D Model? Four Generators, Two Formats, Three Slicers
- How to Split an STL Into Parts That Fit Your Printer
- How to Repair a Broken STL File: Holes, Non-Manifold Edges and Flipped Normals
- When a Broken Mesh Is Worth Repairing, and When You Are Just Making It Worse
TRELLIS , Hunyuan3D , Neural4D , PrusaSlicer