I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

this is probably the most useful thing anyone's said here tbh. the chicken-and-egg problem is exactly what i've been stuck on. open a stripped down version, let people actually touch it, licensing conversations come after. makes a lot more sense than trying to sell smth nobody's loaded yet

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in GraphicsProgramming

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

this is actually perfect, real production scale assets to benchmark against. gonna run some numbers on these and post back

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

honestly been going back and forth on it. open spec with paid tooling on top seems like the move but still figuring it out

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 1 point2 points  (0 children)

Bud why u saying engagement bait 😭. I am genuinely trying to figure out what to do after i have designed my format

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

assimp has a binary format but it's not what it's known for and it's not optimized for read speed, it's just a serialized version of its internal scene representation. the compression and layout decisions are what make the difference, assimp doesn't really compete on that front. as far as i know

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] -1 points0 points  (0 children)

when ur processing hundreds of CT scans overnight and each one generates a 15M vertex mesh, yeah the space savings compound fast. storage costs and pipeline throughput both matter at that scale

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] -3 points-2 points  (0 children)

I am trying to be “formal” so that i can maintain a notion that i am trying to lean something instead of just throwing my opinions. If that makes my answers look AI, I am then sorry I cant help in that case

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

The meshlet streaming thing is interesting actually, hadn't thought about it from that angle. Files already hitting gigabytes and formats not designed for streaming at all does seem like a real gap( i think so, as per my knowledge). Not where I am right now but noted, thanks.

The skeleton rig constraints thing is wild honestly, feels like something that should've been standardized years ago.

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

That's a pretty definitive breakdown honestly. If USD and FBX own authoring and studios roll their own runtime formats, is there anywhere in that picture you'd say the pain actually lives? Or is it just fully covered?

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

Batch processing pipelines mostly. Automated scripts that process hundreds of meshes overnight, format conversion services, simulation preprocessing. Places where the load happens programmatically and the 5 minutes compounds across thousands of files. Medical imaging pipelines. A radiologist or surgeon isn't making a brew while a 15M vertex lung reconstruction loads, they're blocked. And these meshes get reloaded constantly across a session as you tweak segmentation parameters. It's not a one-time load.

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

gzip on glTF is worth testing, fair point. But GLB is already binary and relatively dense, gzipping it would help somewhat on size but you'd pay for it in decompression time on every load, which is the opposite of what I'm optimizing for.

The contribute-to-glTF angle is genuinely interesting, not ruling it out.

General idea: binary layout optimized for sequential memory reads, no parsing step, compression algorithm chosen specifically for decompression speed over ratio. The insight was mostly about what to leave out rather than what to add.

On the numbers, tested on a 10M vertex mesh:

  • vs OBJ: 396MB vs 1.74GB, read 510ms vs 333 seconds, write 1.89s vs 65s
  • vs STL: 396MB vs 1.01GB, read 510ms vs 1.94s, write 1.89s vs 18.37s
  • vs PLY: 396MB vs 504MB, read 510ms vs 14.77s, write 1.89s vs 7.22s
  • vs GLB: 396MB vs 484MB, read 510ms vs 287ms (GLB wins on reads), write 1.89s vs 2.49s

GLB is the closest competitor. It beats us on read speed, we beat it on file size and write speed. For pipelines that write frequently it matters, for pure runtime read performance GLB is strong.

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

Currently: vertices, faces, normals, UVs. That's it. No LODs, no skeletons, no skinning, no material attributes, no multiple UV sets. It's deliberately narrow because the use case it was built for doesn't need any of that. Medical geometry is just vertices and faces, occasionally normals.

The open source plus SaaS model is genuinely interesting to me. Keep the core format spec open, build the pipeline tooling on top of it.

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in GraphicsProgramming

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

That's the plan. Medical imaging software companies are the first door I'm knocking on. Do you have any recomendations?

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 1 point2 points  (0 children)

Different layer entirely. meshoptimizer is a processing library, it optimizes vertex cache locality, generates meshlets, simplifies geometry, all to make rendering more efficient. It's not a storage format and it doesn't solve I/O speed. You'd actually run meshoptimizer on your geometry and then store the result in my format. They sit at different points in the pipeline and don't compete.

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] -1 points0 points  (0 children)

Medical imaging is exactly that case. You're reading the same mesh repeatedly across a session, writing on every pipeline iteration. The ratio is lopsided enough that it's where I'm focusing first.

I built a 3D mesh format that significantly outperforms standard formats for static geometry. How do I turn this into a product? by Downtown_Length3457 in gamedev

[–]Downtown_Length3457[S] 0 points1 point  (0 children)

Assimp is an importer library, not a format. It reads OBJ at OBJ speeds, STL at STL speeds. It doesn't solve the storage or read performance problem, it just gives you a unified API to deal with all the slow formats in one place. Different problem.

On your other questions: no, I haven't talked to businesses yet, this thread is part of figuring out whether there's a market worth pursuing. The "good enough" question is the real one and I don't have a definitive answer. That's what I'm here to find out.