Sketchfab Forum

Reduce 3D polygon surface - Help for Research application


(Tomer Nussbaum) #1

hello, I'm working on a project that takes physical simulations of galaxies and turn them into a 3D surfaces in obj file format, to make research easier.

My main problem, is that the model I've made is too big so we need to reduce the # of polygons and the model has cubes as outer surf. So I get something like this:

I'm looking for a package to reduce # of polygons that can handle that kind of a surface. Also, I want a code package I can add to my own code. I've tried Blender and MeshLAb but It either doesn't work or that I cannot get the code out of the environment easily.

Any help would be appreciated, Thanx, Naftali
an example model

(Shaderbytes) #2

the word you are looking for is decimation. There are various algorithms for this. In blender the decimate modifier default simple action does edge collapsing , the more advanced ones try to preserve edge loops , namely un-subdivide the model.

Needless to say there are a certain minimum amount of polygons required to form a certain shape. No algorithm in the world can change that fact. Since you say you need to keep your square voxel surface then there is nothing you can do to reduce your poly count,


Maybe Simplygon?

(Draconius) #4

Keep in mind that depending on where this model goes, there are many other ways to optimize a model beyond reducing the polycount. Many low-poly models can still perform poorly if they are layered with lights and post-processing effects, for example. Reducing texture resolution or using a game engine to add levels of detail (the further away you are from the model, the simpler and more low-poly the model - if I'm not mistaken, this is Simplygon's primary purpose) are other good ways to optimize viewing...

...come to think of it, that would be a great feature to incorporate into sketchfab viewers in general...

...anyway, just remember polycount isn't everything. You can still have a huge model that loads and performs great. :slight_smile:

(Mrchlblng) #5

@tomer_nussbaum could you detail a bit how you generate the mesh? Is it a simplified marching cube where you only keep the geometry for voxel intersecting the isosurface?

I see 2 ad hoc ways to simplify this type of surface:

  • do not generate voxel within volumes (depending on how you generate the mesh it might already be the case)
  • simplify planar surfaces with an ad hoc voxel remesher; I'm not sure open source code exist for this but you can find some articles like (maybe the minecraft community released some tools)

(Tomer Nussbaum) #6

thx for your detailed answer. I don't want to keep the square surface :slight_smile:, getting rid of it is part of the programs I'm writting. :slight_smile:

(Tomer Nussbaum) #7


I wrote a completely new python lib to handle it, using Voronoi, (as I promised you a year ago :grin:) and then export that to obj file to upload here.. So what I would like to do is to be able to do some fit on the surface, or use some other algorithm to smooth the stairs in the model.

About your ideas,
1. Won't work with my model.
2. I'm taking a look at it.

  • Note that I use Vornoi as it is general for all point distribution, and therefore will work with SPH and also AMR particles, which you need to use a very complex divide-and-conquer algorithm and to be very specific to your AMR implementation. So I think this can be the best solution to use.