# Remeshing

# Overview

The RemeshingProcessor takes an input scene and replaces it with a lightweight proxy geometry that resembles the original, but does not share vertex data or parts of the original mesh data. The remeshed object is created and optimized for a certain on-screen pixel size - which means that holes and parts that are close to each other will have their gaps filled if the distance is below a pixel. At default settings, the proxy mesh is assumed to be viewed from the outside. Any interior mesh that cannot be seen is removed. The result is a very light-weight mesh that is highly optimized for real-time viewing, or to speed up off-line rendering of small objects. Simplygon is capable of remeshing arbitrary geometry, including non-manifold surfaces.

Two separate processors are currently availible, RemeshingProcessor and RemeshingLegacyProcessor, where RemeshingProcessor generally preserves more sharp detail at lower triangle counts and contains newer functionality that is not availible in the Legacy equivalent, like HoleFilling, automatic inside-out remeshing and support for very high OnscreenSize settings at the cost of slightly slower processing at lower OnScreenSizes.

The RemeshingLegacyProcessor is the same as the RemeshingProcessor from Simplygon 8.3.


# Target

The remeshing quality level and output triangle count is controlled by setting a desired OnScreenSize. The LOD quality and triangle count is relative to this metric and will generate more triangles at larger values and fewer at lower, while keeping the geometrical error under one pixel for the given screen size.

# Merging cavities and gaps

The RemeshingSettings contain a setting called HoleFilling, which is used to enable, disable, and control the aggresivness of intelligent cavity removal algorithms. Since the remesher always generates two-manifold outputs, this is useful for removing insides from inputs that were not initially watertight, and would otherwise have been remeshed to two-sided output.

What this does is to measure the volume and hole opening sizes of concavities in the input geometry and fill them in in the remeshing if the concavity is large enough with a small enough opening. This removes a lot of unnessecary geometry and is recommended to be kept at it's Low default rather than turning it off, it will in the vast majority of cases have a positive effect on the result.

The RemeshingLegacyProcessor has the old MergeDistance settings that accomplish roughly the same things, but with worse quality; see comparisons below.

# Remeshing modes

The remesher can be told to remesh in different ways using the RemeshingMode setting. In addition to the default Outside mode which remeshes the scene so it will look good from the outside, there is also a Inside and a Manual mode. Inside remeshes the largest interior volume with no connection to the outside found in the scene, which can be used for things like caves or house interiors, while Manual lets the user specify a point in space that will be treated as outside and remeshed from the perspective of.

# Clipping planes

The remesher always creates two-manifolds, which means that even one sided input geometries will become two-sidedonce remeshed. So, sometimes the proxy models will have generated geometry on a side that is not intended to be viewed.

For example: if a one-sided plane is being remeshed, the generated two-manifold proxy will get a back side as well. All the geometry on the bottom side in this case is excessive. A clipping plane can be used to remove all parts of the mesh that is behind the cutting plane. By placing the cutting plane on the ground of scene, the model will no longer be a closed two-manifold because the bottom is removed and only the intended top geometry will be kept.

The clipping planes are added to the input Scene structure, and enabled using GeometryCullingSettings.

# Single clipping plane

Figure Description
Cutting plane Here the input mesh is one-sided and open
Cutting plane With no ClippingPlane or HoleFill, the remeshing output becomes double-sided, wasting texture space and triangles.
Cutting plane Adding a ClippingPlane will make the input watertight and hence make the output single-sided again.

# Multiple clipping planes

Multiple clipping planes can also be used to cut out tiles of the geometry.

Cutting planes

# Clipping geometry

Like clipping planes, only defined using a set of geometries instead. The clipping geometries need to be watertight within the bounds of the process geometry to work properly.

Like planes, the clipping geometries are added to the input Scene structure, and enabled using GeometryCullingSettings. The ProcessSelectionSet on the RemeshingSettings also needs to be set since the scene contains geometry you don't want remeshed.

Clipping geometry

Clipping geometry

# RemeshingProcessor vs RemeshingLegacyProcessor

The goal of the remesher has always been to take an object, or a scene of objects, and create a lightweight proxy that as closely as possible resembles the original with as few triangles and as small texture as possible. To accomplish this, the parts of the original object(s) that are visible when the object is viewed from the outside should mimic the original as closely as possible, while the parts that are obscured should be removed altogether.

As discussed in the HoleFilling section above, the legacy remesher accomplished this with a setting called MergeDistance that the user could use to control the size of the holes and openings that should be closed up. Unfortunately this also leads to other surfaces being welded together without much benefit, causing poor silhouette likeness.

From 9.0 onwards the remesher has been changed so that it handles openings and cavities in the geometry differently. All concavities will be detected automatically, and will be closed up depending on how beneficial it is. A large cavity with a small opening will be closed up, and open areas between two objects will be far less likely to be welded together.

The left side shows the legacy remesher with MergeDistance large enough to seal the tube, right side shows the new remesher where the tube is sealed. legacyvsnew

# Comparison

# 9.0 remesher

These meshes are created with the different HoleFilling-modes that are now available in the remesher, Disabled, Low, Medium and High, in order from top to bottom.

The first proxy has HoleFilling disabled, so apart from culling away triangles that are completely sealed away, all surfaces still remain. The second proxy has filled in the spout of the teapot, and also the tube all the way from the right-side opening to the section inside the tube on the left side where the teapot handle intersects the tube. On the 3rd proxy, the tube has been sealed up all the way out to the opening of the tube, and on the fourth proxy even the large opening on the top of the teapot has been sealed. As can be seen this is a very aggressive setting that probably shouldn’t be used apart from very specific cases.


# Legacy remesher

Here the same scene is processed by the legacy remesher, with different MergeDistance: 0, 25, 75 and 150. To completely seal the openings of the tube, MergeDistance 150 had to be used. This also caused the side of the tube being welded/merged together with the teapot, which is in most cases undesirable.


# Supported components

The RemeshingProcessor works with: