I want to simplify the mesh (eg reduce the number of polygons) for optimization. There are many simplification algorithms, how to find out for which model one or another algorithm should be applied? maybe there is some metric by which you can determine which algorithm is best applied? or maybe using the characteristics of the model you can find out which algorithm would be better to apply?

Of course you can simplify the “simplification” method itself, but there are a lot of considerations to have, and depending on what you want, if its a more broad process, than it would take more measures than when generating something from scratch.

If you can provide with more info on what is your goal or need, it would be easier to provide with more specific decimation techniques for your purpose. for example, is it on runtime? Is it only once? Is it LOD? Are there different types of polygons?

And if its for terrain topology, then you could perform some reduction techiques by using division trees, such as Octrees or Quadtrees.

If it’s a regular object, do you want to preverve the meshe’s silhouette or you can afford some deformations?

Hi, sorry for answering so late. I need to simplify models for their use in virtual reality. When simplifying, the shape of the models should be preserved as best as possible. We need to find a middle ground between simplifying and preserving the shape of the model.
So maybe there is some metric by which you can determine which algorithm is best applied? or maybe using the characteristics of the model you can find out which algorithm would be better to apply?

Does it have to be at runtime, or can you have the mesh preloaded with the decimation levels? Are these meshes a closed and known set, or are they dynamic? If its the former, you can create different decimated meshes for each mesh, let’s say 3, and each one has a more reduced factor. For example:
you have a mesh of a person containing 300.000 triangles, then you could store 3 different meshes where the first one is that model, the second one is the same model but with only 50.000 triangles, and the third one, is the same one but with only 5000 triangles. This ways you are reducing the processing time to convert meshes, and you can have the total control over the shape of the models. Check out the LOD concept

Usually, this takes up much processing than just use a standard process to decimate each mesh regardless of its shape or complexity. Although you can use Octrees, or you can even have 2 processes for already triangulated meshes and quad/multi meshes, the uniformer the process the better.

If you can afford having the different level of detail already packed up in your application, then I suggest using a 3D modeling tool such as Blender, and using the Decimate modifier, you can reduce the polycount as much as you’d like and then export it to use in your system.