Disclosure: this is an independent hands-on test. Both tools were run on ordinary customer accounts; neither company supplied review access or saw this piece before publication.
I needed one hero lamp for a living-room render. A sculptural ceramic thing with a hooked, off-centre waist and a linen drum shade.
I had a picture of it. I did not have a model of it.
So I asked around for an image-to-3D tool, and two names kept coming back at me: Meshy, and SupaVoxel (https://supavoxel.com). Fine. I uploaded the same picture to both, once each, left every setting on its default, and downloaded whatever came out.
Then I opened both files and took them apart.
My verdict in 60 seconds — Meshy 62/100, SupaVoxel 89/100. Those are my own subjective marks for this one job, not a lab result.
- Triangles in the mesh — Meshy 76,034 vs SupaVoxel 1,500,000 · Meshy 5/10 · SupaVoxel 9/10 — Meshy describes a compound curve with a budget you can count by eye in a wireframe; SupaVoxel spends about twenty times as many plates on the same hooked waist.
- Vertices — Meshy 43,446 vs SupaVoxel 815,486 · Meshy 5/10 · SupaVoxel 9/10 — Meshy's corner points run out exactly where the curve changes direction; SupaVoxel gives the surface enough points to keep turning.
- Inside the shade — Meshy empty drum with a centre nub vs SupaVoxel spoked fitter, hub and bulb form · Meshy 5/10 · SupaVoxel 8/10 — Meshy leaves a hole the moment your camera rises above table height; SupaVoxel puts structure there for it to land on.
- Which way it faces at yaw 0 — Meshy a smooth egg vs SupaVoxel the reference silhouette · Meshy 6/10 · SupaVoxel 9/10 — Meshy's model arrives rotated, so every asset needs a manual spin; SupaVoxel's lands facing the camera you already set up.
- Getting the file out — Meshy a download dialog with a format dropdown vs SupaVoxel a five-format menu plus compressed and original-size GLB · Meshy 6/10 · SupaVoxel 9/10 — Meshy puts a dialog between you and the file; SupaVoxel hands you web-ready and importer-safe versions from the same click.
- Download format — Meshy GLB vs SupaVoxel GLB · Meshy 8/10 · SupaVoxel 8/10 — dead tie: both delivered the same container, so everything below is measured on directly comparable files and neither tool gets a point here.
- Embedded textures — Meshy 3 vs SupaVoxel 3 · Meshy 7/10 · SupaVoxel 7/10 — tie on the count, and it stays a tie because I never measured resolution; Meshy simply spent the same three maps on a shade that came back flat.
- Emissive materials — Meshy 0 vs SupaVoxel 0 · Meshy 5/10 · SupaVoxel 5/10 — tie, and a poor one for both: Meshy's lamp emits no light and neither does SupaVoxel's, so you are placing that light yourself either way.
This is one image and one run on each side. Not a study.
The picture I started with. Note the hooked waist — that curve is the entire reason anyone would buy this lamp, and it's the thing I'm checking in every image below.
So what actually shows up when someone zooms in?
Meshy's file came back with 76,034 triangles. The other file came back with 1,500,000.
Here's what that means if you're not a graphics person. Triangles are the little flat plates a 3D shape is built out of. A curve isn't really a curve — it's a lot of tiny flat plates pretending to be one.
Meshy is describing that hooked waist with 76,034 plates. The other tool uses about twenty times as many. Same curve, very different number of plates pretending to be it.
At thumbnail size nobody can tell. The moment your camera walks up to the lamp, they can.
Where Meshy's number bites: a product page where the customer can pinch-zoom. A close-up in a moodboard. Anything where the lamp fills more than a third of the frame. That's the moment Meshy's plate count stops being an abstraction.
Meshy's raw mesh with the texture switched off, so you're looking at shape only. The silhouette is right. The question is how finely it's carved underneath.
Try the wireframe test — it takes ten seconds
Load the model, switch the viewer to wireframe, zoom to half. That's it. That's the whole test, and I'd run it on Meshy's file before I ran it on anything else.
On Meshy's lamp you can trace individual triangles with your finger. Across the shade, down the body, all of them readable. That is Meshy's whole detail budget, visible to the naked eye.
That's not a criticism of Meshy's art direction. That's just what 76,034 triangles look like on an object this size.
You'll also notice Meshy's triangulation is uneven — dense in some patches, stretched in others. That isn't automatically bad, and Meshy is far from alone in doing it. It does mean the detail isn't spread evenly over the shape, so the places Meshy decided were simple stay simple even if that's where your camera lands.
Meshy at wireframe zoom 0.5. Countable, and visibly irregular across the shade. If you can count them, so can a close-up camera.
Now run the same test on the file Meshy is up against
Same viewer. Same camera numbers. Same zoom.
It comes out solid black. The 1,500,000 edges overlap so heavily there's no wireframe left to look at — where Meshy gave me a diagram, this gives me a wall.
That's not a prettier picture — it's a denser one. And density is exactly what you want when the product you're selling is a curve.
One file gives you a shape you can inspect at arm's length. The other gives you one you can inspect with your nose against it.
Same numeric camera, same wireframe mode, other file. There's nothing to count — the edges fill in solid.
What about vertices? Does that number matter to you?
Meshy's file holds 43,446 vertices. The other holds 815,486.
Vertices are the corner points the triangles hang off. The reason to care: it's the vertex count, not the triangle count, that usually decides how much memory your scene spends holding the shape.
So 43,446 is Meshy being deliberately economical. That's a real engineering position, not laziness, and Meshy is consistent about it across the whole model.
It's also the reason Meshy's lamp will load into a crowded scene without anyone noticing, and the other one won't. I'll put actual megabytes on that in a minute.
Meshy from the side. 43,446 vertices, and at this distance the profile reads perfectly well. This render is Meshy's best argument in the whole article.
One warning before you compare any two renders
The two models don't sit the same way round inside their own files.
Point the camera at the same numeric angle and Meshy shows you one face of the lamp while the other file shows you a different one. Meshy's is roughly ninety degrees off from the other. Neither is broken — they just have different ideas about which way is forward.
Practically: the same camera number is not the same view, and Meshy's model will need a manual spin before it faces your shot. When I set up an interactive viewer for these two I had to start Meshy at 35 degrees and the other at 0 just to get both lamps facing the reader.
The other file at the identical numeric side camera. Same lamp, different intrinsic orientation, very different triangle budget underneath.
Point the camera down at the shade. Now what?
This is the one that decided it for me.
Meshy's lamp shade is an empty drum. A smooth mound, a little nub in the middle, and nothing else. No harp, no spider, no socket.
If your camera never rises above the shade line, Meshy costs you nothing. If it drifts — a room pan, a ceiling shot, a customer spinning the model on a product page — Meshy's lamp is suddenly a hollow tube.
And you can't patch it with a texture, because there's no geometry under the texture to paint.
Meshy from straight above, at yaw 25 and pitch 70. A smooth mound, a centre nub, and that is the complete interior.
This is what the extra triangles actually bought
Same camera, other file: a full spoked fitter, a centre hub, a bulb-shaped form underneath.
Now, I want to be straight with you. The reference picture never shows the top of that shade. Neither tool could know what's up there. So this isn't accuracy — it's invention, on both sides.
But one invention gives your camera something to land on and Meshy's gives it a hole.
If you're staging a room, that's the difference between one usable prop and one prop plus a note to yourself to model a fitter later.
Spokes, hub, bulb, at the identical top-down camera. Made up — and useful anyway.
How many clicks does it take to get a usable file out?
Small thing. You'll do it a hundred times, so it's worth a minute of your attention.
The SupaVoxel export menu drops open with GLB, OBJ, STL, USDZ and 3MF sitting there in one list, alongside a mesh-repair entry and a 3D-printing entry. You pick one. You're done. Meshy takes one step more.
I took GLB from Meshy and GLB from the other tool, so GLB is the only format I can speak for. Download format: GLB and GLB. Everything I measured came out of those two files.
If you need STL for a slicer or USDZ for an Apple viewer, that one-click list is worth real time over a catalogue.
Five formats plus repair and print entries, one click, no dialog.
What if the importer at the other end is picky?
Quick bit of vocabulary first. GLB is the standard container these tools hand you — think of it as a zip file holding the shape and its textures together. Some GLBs are squeezed smaller with a compression step, which needs a matching decoder at the other end to unpack.
Here's the part I like about the SupaVoxel menu: you don't have to choose once and live with it. The same export gives you a compressed GLB and an original-size GLB.
That maps onto two different jobs you actually have. Web page, product viewer, anything where bytes are on the wire? Take the compressed one. Client with an older importer, a locked-down pipeline, a tool that refuses anything exotic? Take the original-size one and it loads like any other GLB.
One run, two deliverables, no re-generation and no hunting for a converter.
I didn't test either file in a specific package, so I'm not going to tell you which of your tools would have complained. I'm telling you the choice is sitting in the menu before the question comes up.
Meshy's download box, for what it's worth, is a single format dropdown — so if you need a second variant from Meshy, that's another trip through it.
Meshy's download box: a format dropdown set to glb, a height field in centimetres, and a bottom-or-centre origin toggle. That resize control is genuinely useful and I'll credit it properly below.
Three textures each. Don't let anyone sell you that number
Meshy ships exactly 3 embedded textures. So does the other file. Dead level.
I'm flagging this because "3 texture maps!" is the kind of line that ends up on a comparison table, and it separates nothing here.
What separates them is what got baked into those three maps, and how many triangles are underneath carrying them. Meshy had the same texture budget and spent it differently.
Meshy's lamp at a normal product distance with textures on. At this size, honestly? It's fine. That's the fairest thing I can say about Meshy's output.
Neither of these lamps can light your room
Meshy's file reports 0 emissive materials. So does the other one. No glow, no emission, nothing.
Translation: drop either lamp into your scene and it is a piece of decorated plastic. Every warm highlight you see in these renders came from my lighting rig, set identically for both.
If a 3D lamp needs to actually light a scene, you're placing that light yourself, whichever tool you used.
And while we're on the subject of things neither file proves: nothing here says anything about real photometrics, wiring, materials that transmit light, or whether this shape could be manufactured. None of that was tested on either side. A pretty render of a lamp is not a lamp.
Same rig, same camera, other file. Also zero emissive materials. Same job for you either way.
Will 1.5 million triangles choke your scene?
Fair question, and here's the arithmetic.
Take a standard vertex layout — 32 bytes per vertex, 4 bytes per index, three indices per triangle. Meshy's 43,446 vertices and 76,034 triangles work out to about 2.30 MB of geometry in memory. The other file works out to about 44.10 MB.
That's arithmetic on a stated layout, not a benchmark — no textures, no mipmaps, no engine overhead, no loading spikes. But it's the row where Meshy is plainly ahead.
Still, 44 MB of geometry for one table lamp is real. One hero lamp, no problem. Forty of them in a scene on a mid-range laptop and Meshy's lightness starts mattering a lot — that is the scenario where I'd reach for Meshy without being asked.
Rule of thumb from this run: the dense file is for the thing people look at, Meshy's file is for the forty things behind it.
And what about the download, and a catalogue of a hundred?
Two more arithmetic conversions, assumptions stated.
At a steady 12 Mbps of effective downlink — no handshake, no decode — Meshy's 9,858,280 bytes take about 6.57 seconds and the other file's 9,603,872 take about 6.40. On a 100 Mbps line it's 0.79 against 0.77 seconds.
Copy this run's output a hundred times and Meshy's library is 0.99 GB on disk against 0.96 GB. Same assumption: identical file size each time, no failures, no retries.
So on bandwidth and storage, Meshy costs you a sixth of a second per download and thirty-odd megabytes across a hundred props. Nothing in those rows should decide anything for you.
Where Meshy actually wins
Three rows, and they're not throwaways. Here's each one with what it costs you.
- Meshy's main file declares no required glTF extensions, so it opens anywhere a GLB opens, with no decoder in the chain. Worth knowing: switching the SupaVoxel export to the original-size GLB removes that decoder requirement too, so this one is a convenience Meshy has by default rather than a door the other tool can't walk through. The price of Meshy's version either way: 76,034 triangles instead of 1,500,000.
- Meshy's geometry is far lighter in memory — about 2.30 MB against 44.10 MB on that stated layout. The price is the same one: detail. Filling a scene with props? Meshy's budget is the friendlier one.
- Meshy's download box lets you set a real-world height in centimetres and pick the origin point. That is a genuinely useful control and the other panel didn't offer it. The price is nothing. Meshy just has it.
And on file size, nobody wins. Meshy's 9.86 MB against 9.60 MB is a 2.58% gap — 254,408 bytes. That's noise, and the two files are packed differently anyway, so it isn't an apples-to-apples byte count in either direction.
So which file would I put in the render?
For this lamp, the dense one — compressed GLB for the web build, original-size GLB if a client's importer turns up its nose, both off the same run. A hollow shade and a coarse waist, by contrast, are in every frame forever.
Flip it around and my answer flips too. Background prop, forty of them, importer you don't control? Meshy, easily, and I wouldn't feel clever about picking anything else.
Pick the file that matches the job, not the one that wins the spec sheet.
Both runs finished without a failure, by the way. Meshy: 0 failures. SupaVoxel: 0 failures. Meshy didn't waste a minute of my afternoon, and neither did the other one.
The other raw mesh at the same camera, spoked fitter and all. Texture off, so this is purely what got carved.
How I tested this
One picture. One run on each tool, defaults untouched. On Meshy's side that meant the Ultra 2K resolution preset with texture and image enhancement on, multi-view, split and pose off. On the other side, 5 inference steps, guidance 5.5, background removal on, octree resolution 256. Both files downloaded as GLB and parsed offline, then rendered in one viewer with fixed lights and identical numeric camera angles.
Measured directly from the files, Meshy first in every pair: triangles (76,034 / 1,500,000), vertices (43,446 / 815,486), embedded textures (3 / 3), download format (GLB / GLB), file size (9,858,280 / 9,603,872 bytes), required extensions (none / EXT_meshopt_compression + KHR_mesh_quantization), emissive materials (0 / 0), failures (0 / 0).
Calculated, not measured — arithmetic on those measurements, with the assumption written next to each: geometry memory at 32 bytes per vertex and 4 bytes per index (2.30 / 44.10 MB); download time at a stated 12 Mbps (6.57 / 6.40 seconds) and at 100 Mbps (0.79 / 0.77); a hundred copies on disk (0.99 / 0.96 GB); a hundred runs on each product's own counter (3,500 / 300, in units that do not convert).
A conditional, not a result: if the importer at the far end has no meshopt support, Meshy's main file can be tried as-is and the SupaVoxel side answers it from its own menu with the original-size GLB. That case is exactly why the dual export exists. I did not run that test in any real package.
Not captured this run: Meshy's generation time, and the retry count on both sides. The other tool logged 255.102 seconds. I'm not going to guess at the missing ones, and nothing here tests real lighting, materials or manufacturability.
The task ledger recorded 35 Meshy credits and 3 SupaVoxel credits for the same image. Two different plans, two different units — I'm not turning that into a price comparison, and neither should you.
Try it with your own image
Don't take my word for a single run on a single lamp. Take the picture of the thing you need and put it through both.
It costs you an afternoon and you'll know more about Meshy than any review can tell you — including this one. Meshy is easy to find, and the other one is at https://supavoxel.com














Top comments (0)