Mesh decimation


#1

I don’t think this was possible before, but in current versions is it possible to decimate meshes that have been generated outside of Sequoia and imported in to it?


#2

Yes, it is now possible.
In 1.0, the decimation did not try to preserve the vertex color channel, and thus would resample the point data’s colors onto the final mesh. For that reason, only the Mesher object supported the Reduction operator.

In 1.1, the vertex channels are preserved as part of the process, so the final mesh retains a fairly good version of the vertex colors without additional resampling. Thus, the Reduction operator can be added to a Mesh Loader. And a Mesh Loader can pick any file from disk in a supported file format, regardless of its origin. (Resampling of a point cloud’s colors onto a mesh is still possible at export time).


#3

Cool. Are UVs one of the vertex channels that are preserved or is the decimation to distructive to try and do that in a sensible way? Also is the decimation multithreaded and/or distributable?

Has 1.1 been released or is it still a preview?


#4

UV channels are generally retained, but at extreme reductions where polygons can get merged beyond UV segment borders, degeneration can occur - right now we don’t apply any constraints to the reduction based on UV preservation (this could be added in the future).

I just tested with a car dataset - I loaded a mesh from disk that already included a baked texture map. Reducing the Mesh Loader to 50% retained all the texture quality. Going down to 10% introduced a few bad triangles. Going down to 1% pushed it too far.

It would be possible to work around this by rebaking the vertex colors of the unoptimized mesh onto the reduced one, but right now it would have to go through an intermediate Surface Points object that would resample the original mesh to a point cloud. This approach would generate new unwrapped UV coordinates on the reduced mesh, and create a new texture from the point data’s colors.

In the future, we plan to allow the picking of the unoptimized mesh as the source, and let the user resample either the vertex colors, or the actual baked texture into a new one.

The decimation has always been multi-threaded, but is not distributable (except when the reduction is part of distributed Hacksaw meshing of point data).

We have posted a release candidate, final builds to follow…


#5

That sounds pretty reasonable. Typically we’re looking at reduction targets of 10-25% for most meshes with 1% pretty much reserved for “At this location is a thing that kind-of sort-of resembles a car”.