Clean Mesh


Input Streams: Any mesh stream

Output Streams: Modified mesh stream


The Clean Mesh stage provides several clean-up operations for the current mesh stream. This stage is commonly used right after a load asset stage to correct geometry errors and reduce polygon count.


Several optional parameters are provided for cleaning your mesh. Not all settings are necessary for each project, but Fix Degenerate Triangles is recommended in most cases to ensure proper operation of subsequent stages.



Close Holes can modify your geometry’s UV layout in undesirable ways causing UV overlaps. When using ‘Close Holes’ it may be necessary to process affected frames using the Generate UV’s stage.

  • Debride: This operation removes all triangles with two or fewer connected faces. This deletes faces bordering holes and can disconnect thin strips of geometry. This can be useful in conjunction with Remove All But Largest Component to remove excess thin strips of geometry produced in some meshing algorithms.

  • Remove All But Largest Component: This operation deletes all disconnected pieces of the mesh except for the one with the largest area. This can be useful to extract the desired geometry in a clip with a lot of floating noise.

  • Fix Degenerate Triangles: Removes Degenerate Triangles, a kind of geometry issue that can cause errors or reduced performance in many Stages.


Degenerate Triangles are a concept in geometry and 3D graphics. In HoloEdit, a “Degenerate Triangle” is a triangle that has either one of the following properties: zero surface area, or one or more edges with zero length.

  • Close Holes: Seals holes in the mesh.

  • Remove Small Components: If enabled, any detached portion of the mesh smaller than the Minimum Component Area value will be deleted.

  • Minimum Component Area: This sets the minimum area (in meters) that is preserved if the Remove Small Components parameter is enabled.

  • Enable Decimation: Enable this option to apply Decimation, a step where mesh complexity is automatically reduced to meet a target vertex count. Lower vertex counts increase compression and significantly reduce processing time in later stages. For most clips this step can be enabled without noticeable loss of quality.

  • Target Vertices: Target vertex count if “Decimate” is enabled.

  • Preserve UVs: Preserve UVs can reduce the number of steps needed in some workflows, by eliminating the need for Generate UVs and Transfer Texture, in certain cases. With Preserve UVs enabled, we preserve vertices on the edges of UV islands in order to not introduce visible seams and texture shifting in the result. This effectively creates a minimum vertex count, and can lead to over decimation in areas that are not along UV island boundaries. With Preserve UVs disabled, UVs will be destroyed in the process of decimation, and must be recomputed using the Generate UVs stage, but there is no lower bound on vertex count. In general, when moving from very high vertex counts to very low vertex counts, or when you have a large number of UV islands, you will want to disable Preserve UVs.

  • Face Tracking Weight: A 0 - 1 value to determine how much Detect Face stage data should influence decimation.

    • A setting of 0 will result in the face being decimated to the same mesh density as the rest of the mesh.

    • A setting of 1 will result in the face not being decimated at all.

    • Any other value is a linear blend between those two values.

  • Skeleton Mask: When Clean Mesh is run on a clip with a skeleton, this parameter allows you to select which bones to exclude from decimation. This allows for more specific decimation in unselected regions.

Working with Clean Mesh


Clean Mesh should be run before running any other stages that edit the mesh stream, such as Stabilize Mesh.

Clean Mesh is a very valuable stage that provides necessary cleanup to produce good results in other stages, compression, and fixes for some common geometry issues.

When preparing a track before Stabilization, you should usually apply the Enable Decimation option with a Decimation Target Vertices value between 40k-75k. Higher vertex counts are supported, but may result in significantly longer compute times for Stabilization. (See the Stabilize Mesh for details on the Stabilize Mesh stage.)