Mesh simplification algorithm

I have some relatively complicated geometry models that I would like to simplify in the back end of my app. Models could have 50k to 100k vertices and would like to have a decent visual with 50 to 90% vertex count reduction.

Ideally, the user would upload the raw model. Then our app would use a lambda (server less) function (python or JavaScript code) in AWS for example to simplify the model and send the model back to the scene for easy navigation and visualization.

The simplification algorithm would be something similar to this :

Our budget for the full process is between 1k$ to 5k$.
Only experienced candidates in such work are welcome to reply to this post

Hi, dear.
I fully understand what you want and I have rich experience.
In my previous similar project, I used Python libraries to reduce vertices.
For example, I used PyMeshLab. I think it is a good choice.
Anyway, I am confident.
Please contact me
Whatsapp: +381616330217
Skype : live:.cid.dae8bcd1e096eddc
Telegram : Telegram: Contact @Yurious0123

Do you only need to simplify them to reduce filesize?
50 to 100k vertices should render ok…
If you’re worried about filesize you might want to do mesh compression instead?
For instance meshopt can often compress a 100 megabyte mesh down to a few megabytes…

The simplification modifiers I have seen aren’t really bullet proof 1 shot type operations and often require lots of hand tweaking of parameters to work reliably…
Just my 2c.

3 Likes

Thanks Manthrax for your input,

The thing is when you want to render 100 meshes x 100 k vertices, and display vertex coloring and visualization, it becomes cumbersome for the web (desktops, tablets or even phones).

Typically, the way our meshes are triangulated/discretized are somehow standard. So I believe we can cover them with “standardized” simplification algorithm. That’s what I believe anyways but I could be wrong… we’ll have to try and see.

Bid Text:

"Hello! :star2: As an experienced Backend Developer with a knack for tackling complex geometry models, I am excited about the opportunity to assist in simplifying your models within the backend of your app.

With the ability to handle geometry models ranging from 50k to 100k vertices, I am well-equipped to implement a robust simplification algorithm that can achieve a significant vertex count reduction of 50 to 90% while maintaining a decent visual quality.

Utilizing AWS Lambda functions with Python or JavaScript code, I will ensure seamless model simplification processes for your users. Drawing inspiration from tools like Rhino simplify function, Fast Quadric Mesh Simplification, and Blender Decimate, I will tailor the algorithm to suit your specific requirements and budget constraints.

I am confident in my ability to deliver efficient and effective backend solutions that meet your project goals within the allocated budget range of $1k to $5k. Your project aligns perfectly with my expertise and I am eager to contribute to its success.

I look forward to collaborating with you on this exciting project and simplifying your geometry models for improved navigation and visualization. Let’s create a streamlined and user-friendly experience together! :computer::sparkles:"

Hello,
I am a threejs developer and 3D designer.
I encountered similar situations before and I used a threejs modifier like blender dicimate to reduce the models size and vertex numbers.
please contact me for more details
WhatsApp : +21626018624
Telegram: @Mejdikazdarlli

It sounds like you not only want some sort of simplification / compression processing but also maybe the use of batchMesh / batchMaterial?

1 Like

Thanks Lawrence for your input.

I don’t see how batchMesh or batchMaterial would help me in my case. The meshes the user uploads are not identical, they are buffergeometry with different vertex count. The overall nature of the geometry is similar, thats why we think we could simplify them using script.

Cheers,

fwiw: you can script headless blender to do these kinds of operations at scale, and with higher precision, quality, fidelity than you’ll get from a random threejs plugin.

2 Likes

What format are you wanting the users to upload the models in?
Is this the same format you want to store and display them in?

Regarding batching.

You are discussing two things.

  1. optimizing meshes for storage/display. This means when the user uploads them you convert them. Nothing happens with them yet.
  2. Displaying many meshes.
    It doesn’t matter if it’s dynamic or user uploaded etc. Batchmesh will let you render thousands of meshes. So will instancing. There are limitations, like single materials etc. but generally you can have many many objects if done right.
    even if the meshes were 5k triangles, 500 of them would be 2.5 million triangles which is a lot. Youd want instancing/batching regardless.

Assuming your goal is displaying them on the web and likely one part of the equation is displaying gltfs. I’d look at gltf-transform Can be run inline as worker or even in browser environments. Has meshoptimizer built in, and has different compression algos like Draco.

Yesterday it got a 500mb model with 10million triangles to 4.9mb with pretty decent quality.

1 Like