18.09.2025 • C3D Modeler

C3D Geometric Kernel: New Features and Development Trends

Tatiana Kondrikova, C3D Modeler Team Leader, C3D Labs, talks about new features of the C3D kernel and plans for its further improvement.

The C3D Modeler 2025 updates cover multiple key areas: wireframe modeling, shells, direct modeling, sheet metal modeling, geometry diagnostics, and system-level improvements. A prominent new feature is the mid-curve (Fig. 1), which is a set of points equidistant to two given curves. This operation applies to two curves in the plane. These curves can be closed or open, and can consist of tangentially joined segments provided that there are no self-intersections. The result is a NURBS curve.

C3D Geometric Kernel: New Features and Development Trends, photo 1
Fig. 1. Mid-curve

Another important feature is the wrapping/unwrapping of curves and points onto a ruled surface. Previously, this transformation was supported only for analytic surfaces (cones, cylinders, etc.) Now it is available for all developable surfaces (with zero Gaussian curvature at all points). For unmapping from closed surfaces, the user can now specify the position of the section line for better control.

C3D Geometric Kernel: New Features and Development Trends, photo 2
Fig. 2. Wrapping/unwrappin curves and points onto a ruled surface

A new export API function suggested to users is removing self-intersections of contours (Fig. 3). This operation used to be available to the kernel’s internal procedures only - for example, for constructing equidistant lines in rotation, extrusion, and sweep operations. Now, once self-intersections are removed, the result is the main contour and additional fragments.

C3D Geometric Kernel: New Features and Development Trends, photo 3
Fig. 3. Removing self-intersections of contours

The Boolean operations with regions (Fig. 4) have been improved. Now they handle tangency, self-tangency, and polylines better. Now the user can control the error of Boolean operations as tolerances in the intersections of complex regions are critical in some applications.

C3D Geometric Kernel: New Features and Development Trends, photo 4
Fig. 4. Boolean operations with regions

Similar refinements are now being applied throughout the entire kernel. For example, we have two regions as shown in Fig. 4 on the left. The two vertical segments are d apart. If the configured precision in this direction exceeds d, the kernel detects the overlapping of the segments, and the result will be different from the case where the error is smaller.

Some improvements are about switching the 3D curve functionality to wireframes. The goal is to support tolerant geometry. The edges in a wireframe model are connected with some error (there is a comparison of distances between edges with rough accuracy). Now, such operations as Equidistant, Extend, Intersect, Merge Edges, and Intersect Shells are available for wireframe models as well. For example, if one of the intersecting shells has a tolerant edge, the intersection curves will have some gap between them near the intersection with the edge. As a result, the resulting wireframe will maintain its connectivity because it now has a tolerant vertex.

Now let’s talk about shell operations. Another new capability is a geometric array of faces many new face filleting options.

C3D Geometric Kernel: New Features and Development Trends, photo 5
Fig. 5. Midshell

Let's start with the midshell (Fig. 5). The midshell is a surface whose points are equidistant from two sets of faces. The midshell operation divides complex geometry into fragments to create shell models for CAE analysis. Previously, the operation handled only shells with pairs of equidistant faces. Now, a general solution is available. The result is a NURBS surface. The shell can be trimmed by the edges of the parent faces.

C3D Geometric Kernel: New Features and Development Trends, photo 6
Fig. 6.1. Geometric array of faces

C3D Geometric Kernel: New Features and Development Trends, photo 7
Fig. 6.2. Geometric array of faces

We are working hard on a geometric array of faces. This operation modifies the shell by copying groups of faces. The resulting shell is stitched together from the original shell and the copied faces. For this, the faces should be extended to or through the shell. Fig. 6.1-6.2 shows the geometry before (left) and after (right) the operation. The blue faces are copied. The operation can add material to the shell or remove it. In the second image, the interior faces of the hole are copied.

The surface extension tool (Fig. 7) has also been enhanced. We focused on simplified surface extension used when maximum surface extension is needed, with no strict requirements for the edge shape. Another innovation is a configurable result. The operation can now either extend the original faces, or create new extended faces and add them to the original shell, or generate a new shell containing only the extended faces.

C3D Geometric Kernel: New Features and Development Trends, photo 8
Fig. 7. Shell extension

The core operations have also been fine-tuned. Previously, you could not create open shells from a multi-contour sketch by rotation or extrusion. It is supported now; even more, if the shells contours intersect, self-intersections will be processed if possible (Fig. 8).

C3D Geometric Kernel: New Features and Development Trends, photo 9
Fig. 8. Open shells

The fillet functionality has been significantly improved. We have introduced new filleting procedures like the rolling ball method, edge trimming for stitching into a single shell, and others.

Last year, we implemented the rolling disk method for face filleting. This operation requires defining a directrix. At each point on the directrix, a normal plane containing the cross-section is constructed. For the rolling ball method, a directrix is not required: the path curves are defined as the locus of the points where the ball touches the original surfaces (Fig. 9). If some parameters (e.g., radius or cross-section shape parameter) are variable, a directrix is still needed.

C3D Geometric Kernel: New Features and Development Trends, photo 10
Fig. 9. Rolling disk and ball methods

The new functionality constructs fillets when the original faces do not share a common edge and belong to different shells (Fig. 10). We have introduced new types of variable radius fillet surfaces (different radii for each face), as well as variable chord surfaces.

C3D Geometric Kernel: New Features and Development Trends, photo 11
Fig. 10. New fillet surfaces

Another new face fillet feature trims the original faces with a tangent or end face (either tangent to the original curves or extending the side edges). Now the original faces can be trimmed, and the resulting shell is stitched with the fillet faces.

C3D Geometric Kernel: New Features and Development Trends, photo 12
Fig. 11. Trimming the original faces

The second and third images in Fig. 11 show various types of fillet surface trimming. This functionality now has a new two-step interface. First, the fillet surfaces are created, and then, the user specifies the fragments to trim the original shell. The shell can be stitched with the fillet faces.

C3D Geometric Kernel: New Features and Development Trends, photo 13
Fig. 12. Filleting three groups of faces

We are also working on filleting three groups of faces (Fig. 12). This will expand the two groups' filleting operation. It is similar to the full-edge fillet operation. Concurrently, we are developing filleting by boundary curves (Fig. 13). For this operation, two curves must be defined on the surfaces. The result is a surface with boundary curves identical to the original curves. These curves have the specified type of blending into the surfaces.

C3D Geometric Kernel: New Features and Development Trends, photo 14
Fig. 13. Filleting by boundary curves

There is ongoing work to improve surface quality when filleting edges: the blending of adjacent and neighboring faces has been improved (Fig. 14). The fillet point coordinates are now calculated with higher precision, as are the higher-order derivatives. This has improved the fillet surface quality, the smoothness of its blending with adjacent faces, and eliminated defects that previously occurred due to the inaccurate definition of the fillet-to-original face intersection points.

C3D Geometric Kernel: New Features and Development Trends, photo 15
Fig. 14. Edge filleting

Now let’s talk about direct modeling. There is a new operation: replace with a group of faces. On Figs. 15.1-15.3 (left), the faces to be replaced are shown in turquoise, and the faces to be replaced. In orange. The operation supports multiple options: extrusion (the shell faces are extended to the replacing faces), trimming (the faces are trimmed by the replacing faces), or creating a step (some faces are extended, and some are trimmed).

C3D Geometric Kernel: New Features and Development Trends, photo 16
Fig. 15.1 Face replacement

C3D Geometric Kernel: New Features and Development Trends, photo 17
Fig. 15.2 Face replacement

C3D Geometric Kernel: New Features and Development Trends, photo 18
Fig. 15.3 Face replacement

Another direct modeling improvement is better removal of faces (in particular, chamfers and fillets) with segmented edges after import (Fig. 16). The fillet recognition feature has been enhanced. The face rotation and face shift along a vector operations now better handle some special cases.

C3D Geometric Kernel: New Features and Development Trends, photo 19
Fig. 16. Face replacement

Now, about sheet modeling. An important refinement is unbend a ruled shell with complex side faces (Fig. 17). Suppose we have a ruled shell. We modify its side faces, for example, by adding chamfers shown in blue. Such a shell can now be flattened.

C3D Geometric Kernel: New Features and Development Trends, photo 20
Fig. 17. Flattening a ruled shell

As for diagnostics, the kernel now detects self-intersections in shells and surfaces and provides a function for calculating the potential energy of a curve.

The shell self-intersection detector has two modes: self-intersection of faces only, intersection between different faces, or auto mode to search for all intersections (Fig. 18). The result is a list of indices of the intersecting faces and intersection curves.

The self-intersection detector can use triangulation. Similarly, the surface self-intersection feature supports such modes as along UV lines, segmented intersection, and auto.

C3D Geometric Kernel: New Features and Development Trends, photo 21
Fig. 18. Self-intersection diagnostics

The curve diagnostics now have an objective smoothness criterion: potential energy of the curve (Fig. 19). The CurveMinMaxCurvature function with an updated interface returns the potential energy. You can enable potential energy calculation in the operation settings. The function also detects inflection points, local minima and maxima of the curvature, and curvature discontinuity points.

C3D Geometric Kernel: New Features and Development Trends, photo 22
Fig. 19. Calculating potential energy of a curve

Next, let me tell you about the system-level improvements. They can be divided into three categories.

First is about the performance and multithreading. We have parallelized a number of kernel algorithms, such as thin-wall body construction, detection of shell self-intersections, and construction of a NURBS copy of a surface. We did a lot of work to ensure thread safety: the function that retrieves a set of shell edges is now fully containerized, and vulnerabilities in intersection curves and surface contours have been fixed. Other operations (e.g., variable cross-section surfaces, projections) have been optimized.

The second category is the C3D format support. We have fixed Linux model read/write errors. We have also implemented delayed deletion of read objects to prevent memory leaks. When reading legacy models, there are two modes now: MbColor or MbVision. There is a progress indicator when saving models. The current view settings can now be saved as model attributes.

The third category is code refactoring and some low-level tasks. Now there is an option to disable internal handling of fatal errors. There is better control over memory usage when computing meshes in Win32, and memory shortages are now tracked during triangulation. We have fixed memory leaks and removed obsolete interfaces.

Let's move on to the plans for the future. These include greater control over operation precision, new wireframe functionality such as shell trimming and constructing an equidistant surface from a set of faces, and improvements to curve projection functions. We will improve conjugation along boundaries in surface passing through two families of curves.

As for face filleting, we will expand the three-face fillet functionality and improve the work on the topic of rounding edges along boundary curves. For edge filleting, we plan to improve the variable-radius operation and the handling of self-intersections in regions with extreme curvature changes of the original faces.

In direct modeling, we will make it possible to resize cylindrical and spherical faces while maintaining the correct topology.

These are our plans for the kernel to meet user requirements.

Tatiana Kondrikova, C3D Modeler Team Leader, С3D Labs
Tatiana Kondrikova,
C3D Modeler Team Leader,
C3D Labs
Share
Up