To optimize a tessellated model, PiXYZ Decimation algorithm is used to reduce the mesh polygon density by smartly deleting vertices. It allows precise control, preventing smoothing artifacts and topological irregularities.

The algorithm uses a combination of the 3 following parameters to obtain the lightest model (in terms of polygon count) possible whilst keeping acceptable quality:


  • Surfacic tolerance: The maximum distance between vertices of the original model and resulting simplified surfaces.


  • Lineic tolerance: The maximum distance between lineic vertices of the original model and resulting simplified lines.

The "Lineic tolerance" is meant to preserve the boundaries of the original surface (where the edges are “sharp”).


  • Normal tolerance: The maximum angle between original normals and those interpolated on the simplified surface.

The "Normal tolerance" setting preserves the quality of how the light reacts on a surface/mesh. Combined with the "Surfacic tolerance" setting, it will act as a quality controller, keeping polygons where the surface curvature is important and preserving the visual quality of the model.


  • Texture Coordinates tolerance: This setting is meant to preserve the UV (or Texture Coordinates) whilst decimating a mesh (0,01 is a good value).


NOTE                The Texture Coordinates tolerance is used to control UV distortion whilst decimating. But UV seams (like sharp edges) remain "significant" edges: they are affected by the Lineic tolerance, but decimation cannot ignore them. That can cause decimation effectiveness to be restrained. To allow the Decimation to go further in term of polygons reduction the user should delete the UVs prior to decimating.


Example


In the example below, the polygon count is reduced to 13 126 with an almost imperceptible quality loss even on sharp edges.

The quality is better than using only a "Surfacic tolerance" of 0.1mm with a triangle count widely inferior (13 126 against 140 846):

Advanced settings


Algorithm settings are listed and explained in the API documentation:



Related topics