The following blog describes the new features released in Polygonica 3.3.
Adjusting remeshed vertices to lie on a CAD surface
Polygonica provides fast quality-based remeshing of polygons to triangles, with a wide range of control options such as adaption to curvature and remeshing of selected regions. It is very effective in improving mesh quality, replacing long thin triangles typically found in meshes generated by CAD systems with good aspect ratio triangles tending towards equilateral.
The new CAD-face remeshing options extend this capability further by allowing the host application to adjust vertex coordinates during the remesh process, typically so that they lie ‘exactly’ on the original mathematical BREP surface, as opposed to lying within being constrained to lie on the input polygon mesh surface.



Application developers are offered callbacks for surface points and edge boundaries, and may return the adjusted vertex coordinate and a more accurate surface normal.
Shelling / Hollowing with selected face removal
Polygonica supports fast polygon-based spherical offsetting along with offsetting along vertex normal and voxel-based offsetting. Hollowing solids, a common operation in print preparation for Additive Manufacturing, is implemented by an inwards offset which is then subtracted from the original.
A new hollowing mode has been introduced that simultaneously allows a solid to be ‘hollowed’ and then ‘clipped’ by a region consisting of a subset of the faces on the original model. The result is a thickened surface where the geometry that joins the original surface to the offset geometry follows the contours of the clipping region of the original solid.



Although terminology varies, one common usage refers to hollowing when the solid stays closed after the hollowing operation, and shelling refers to hollowing in which selected faces are removed.
Z Compensation
Z compensation is a specific form of deformation compensation for Additive Manufacturing. It attempts to correct a design part prior to 3D printing for the tendency for downwards facing surfaces to deform or droop downwards during the printing process. Z compensation aims to compensate for this effect by moving downwards facing surfaces upwards prior to printing.
Two different types of Z compensation are supported – in the default version all downwards-facing faces are moved upwards by the same amount. Alternatively, the amount of compensation can be varied based on the angle of the face. The application can specify an array of angles and corresponding compensation distances, and compensation distances can be applied such that they are constant within a specified range of angles, or varied linearly across a range of angles.
Several Polygonica customers have implemented Z compensation algorithms using the existing Polygonica API, but these solutions did not support variable compensation and also did not handle geometric conditions such as the edges of large planar faces particularly cleanly. The new API is superior both in the control offered and the quality of the result.
Left: Original uncompensated model. Right: Sections through both compensated model (blue) and original model (red). Note that for the purposes of illustration an unusually large compensation distance has been used.



1D medial skeleton
A medial guided skeleton is a one dimensional representation of a solid where the skeleton lies close to the true medial axis of the skeleton. Since a true medial axis of a three dimensional object may contain two dimensional sheets for thin walls of the solid, the emphasis here is in identifying tubular-like structures within the solid and shrinking these on to a one dimensional skeleton.
Therefore the medial guided skeleton is only an approximate representation of the medial axis of the solid. However it is useful in shape matching and in identifying cylindrical type features in the solid. The skeleton is represented as a graph which enables connectivity information to be queried.
Edge blending and chamfering (Beta)
A new API has been added to perform blending operations – creating fillets and chamfers – on selected edges within a well formed boundary mesh.
Left: A series of edges selected on a polygon mesh model. Right: A circular fillet, radius 2.5, has been applied to the selected edges.
Left: Several sharp edges are selected for blending, including a three-way junction. Right: After blending with a 0.5 radius fillet.
New separate shells option for solid closing
By default, solid closing will merge non-watertight sub-meshes (shells) within a body and then attempt to join any gaps between them. This workflow is typically useful with meshes generated from CAD parts where separate surface patches may not be correctly aligned or vertices on adjacent edges may not match.
There are some cases where it is desirable to suppress this merging and to perform solid closing on each shell separately, with the results then resolved during downstream self-intersection fixing.
This can sometimes be the case for certain types of Additive Manufacturing supports, generated by certain third party software, and also similar structures that follow a heavily self-intersecting beam-node pattern. Polygonica will create a closed watertight result in either case, but the result quality may be preferable if shell merging is supressed.
Point cloud to mesh registration and alignment
Mesh-mesh registration was included in Polygonica 3.2. Registration has now been extended to support point cloud to mesh alignment and point set to point set alignment. You can find more details about point cloud to mesh alignment in this blog.
General Point cloud registration
The previous API for registering point sets against each other required user interaction to select corresponding points in an initial rough alignment phase. Only the subsequent fine tuning step was completely automatic, although if the point sets were reasonably well aligned in the first case the first step could be omitted.
In Polygonica 3.3 an option has been added to perform a general registration between point sets thus removing the need for user guidance and interaction, enabling a fully automated pipeline.‘General’ registration refers to the alignment of objects that are in any general position relative to each other rather than in positions where they are already roughly aligned.
Left: Different point sets at random orientations and locations in 3D space. Right: The same points after performing automatic general registration. Additional automated fine registration can now be performed.
Sparse point set registration
To improve results for sparse data sets, a new type has been added for points registration.
If this type is set, then during refinement, rather than trying to directly minimise the global error, the points on the object being registered are mapped to inferred ‘surfaces’ fitted to the points on the reference point set. This allows the point objects to move more freely with respect to each other during the registration process, and can give significantly better results in some cases, particularly with sparse datasets.



Closing a mesh using a reference mesh
Polygonica provides a number of very powerful methods to make meshes watertight, including advanced healing, shrink-wrapping and curvature sensitive hole filling.
However there are cases where these functions can struggle to deliver a result that is suitable for downstream processing.
A typical example might be a mesh constructed from a laser scan of an object with many deep pockets that are very close together, such that, due to scanner occlusion, it is very difficult to determine which open edges should belong to which pockets.
Left: The top surface of this mesh has been scanned well. The remainder of the mesh hasn't, and there are large gaps due to scanner occlusion. Right: The mesh has been automatically closed and healed by merging with the reference mesh and then using Polygonica's healing to fix any small issues in the result.
You can find more details in this blog and in the accompanying video demonstration.
Gap thickness and protrusion (height) analysis
Polygonica already supports mesh-mesh comparison, which computes the nearest distance of one mesh to a reference mesh at an even spread of sample points across the mesh surface. This is typically used in heatmap comparison displays in metrology applications.
In addition there is a similar API to compute wall thickness across the surface, which is particularly useful for printability checks in Additive Manufacturing Applications.
In Polygonica 3.3 a new type of analysis has been added to compute the thickness of gaps in the part – for example between adjacent walls, or within pockets and holes.
The wall thickness API has also been extended to calculate the protrusion for a particular thickness. This can be thought of as computing the height of a thin wall, although the term ‘protrusion’ is used as the computation is orientation independent, and, as it follows the mesh surface, need not be a linear distance.
You can find more details in this blog and in the accompanying video demonstration.
Support for feature detection of fillets and chamfers
Polygonica’s existing feature detection supports identification of machining features such as islands, holes, pockets and machined planes. Since machined features often contain blends, Polygonica reports chamfers and fillets, but only when detected as part of a machined feature.
Feature detection of chamfers (left) and radial fillets (right) on a polygon mesh model.
The feature detection APIs have been extended to support a new ‘CAD’ feature type that supports detection of CAD features such as fillets and chamfers in any location on the mesh. As with blends within machined features, Polygonica reports the height and angle of a chamfer, and the radius and convexity of a fillet.
Deformation scaling
In Polygonica 3.2 general mesh morphing algorithms were added to Polygonica, with specific variants to support deformation compensation within Additive Manufacturing workflows.
In Polygonica 3.3, the amount of deformation can be controlled using a scale factor between 0.0 and 1.0, allowing a large deformation to be performed in a series of steps.
Tangential extension of curve
A new function has been added to extend the open ends of a 3D polycurve tangentially, including curves imprinted onto the mesh surface.
For imprint curves, the curve can be extended along a geodesic path whose initial trajectory is tangential to the end point, or along a path defined by a plane that contains the terminating edge and is perpendicular to the plane of the face in which the terminating edge lies.
Optionally, the curve extension can be terminated if it meets a sharp edge.
Improvements to 3D medial axis computation
As a polygon mesh is generally an approximation of a ‘true’ mathematical surface, artefacts and noise in the mesh can affect analysis functions such as 3D medial axis computation.
To help mitigate this, from Polygonica 3.3, Polygonica’s surface-fitting algorithms can be used to fit simple parametric surface primitives in order to refine the medial axis process. Additionally the application can pass a list of pre-defined surfaces which the medial axis algorithm will use during its computation.
Pruning option in 2D medial axis creation
Polygonica’s 2D medial axis computation will create an accurate representation of the medial axis of a closed 2D polyline, or profile.
However the computation is sensitive to slight perturbations in the profile. As the profile itself is ordinarily a piecewise approximation of a shape boundary, some users are interested in a pruned medial axis that encodes the structure of the underlying shape, rather than the minutia of the representation given by the profile.
Specifically, all convex corners of the profile, however vague, result in a spur on the medial axis.
An application can now specify a pruning tolerance, representing the maximum distance a profile reconstructed from a pruned medial axis will lie from the original input profile. The medial axis generation function will remove less significant branches of the medial axis, whilst remaining within the specified pruning tolerance.
Tolerance option for self-intersection query
A new tolerance option has been added to self-intersection query, allowing the application to specify what is considered a self-intersection. This mirrors the existing options provided for self-intersection fixing during modelling workflows, and also during conversion to a different coordinate precision – typically double to single. The latter option improves the portability of meshes to systems which use different tolerances. These can include CAE/CFD/FEA software, which are typically sensitive to mesh quality, as well as commonly used 3D Print Preparation systems and hybrid modelling kernels.
Miscellaneous Changes
• A new API has been added to simplify querying the vertices defining a face, without enumerating edges and considering edge directions.
• Existing query APIs have been extended to provide simpler access to vertex attributes (normals, colours, texture coordinates, custom application data etc) at mesh “corner” vertices i.e. vertices that do not share attributes between connected faces, such as vertices lying on a sharp edge.
• Polygonica provides options to separate parts of and fill gaps in surface regions. These are useful for performing more complex selection operations. A new option has been added to control gap filling between nearby regions, such that the gap will only be filled if the angle between faces is below the specified threshold. This is useful in preventing regions lying on faces either side of a sharp edge from being inadvertently joined.
• An imprint curve – a polycurve that lies on an associated mesh surface - can now be converted to a standard 3D polycurve to make operations such as merging curves with imprinted curves simpler.
• Polygonica has always provided rich text-based error information for debugging and reporting along with comprehensive bitfield status values for handling errors in production runtimes. This support has been extended to include unpacking of function specific error codes, the originating function, and more context such as the specific Polygonica environment where the error originated.