To develop a world-class geometric kernel is not just difficult, but also is an extremely interesting task

A conversation with Nikolai Golovanov, the head of ASCON’s C3D geometric kernel development team

There is not always a clear understanding in the CAD community about where the geometric kernel ends and the CAD program begins. What is a geometric kernel, and what job does it perform in a CAD system?

We call the geometric kernel the part of a CAD system that makes the mathematical model of real and theoretical objects.

Our C3D kernel is an independent software component that consists of five groups of functions and algorithms. The first three groups are parts of C3D’s Modeler module:

  • The first group handles basic objects and algorithms. Basic objects include vectors, matrices, points, curves, and surfaces. The algorithms handle tasks like finding intersections of objects, joining objects, and projecting them.
  • A second group consists of the objects and algorithms needed to construct and modify 3D bodies.
  • The third group consists of objects and algorithms for doing surface triangulation, calculations of inertial characteristics of models, checking for collisions among elements, and constructing projections of 3D models to the drawing plane.
  • A fourth group makes up C3D’s Solver module, consisting of algorithms that apply geometric constraints on and between objects. These constraints establish relationships between the elements of variational geometry.
  • The fifth group is C3D’s Converter module, and it provides the data exchange facilities to read 2D and 3D models from other CAD systems.
Nikolai Golovanov

There are several geometric kernels available on the market today. By which criteria should they be compared?

A geometrical kernel is characterized primarily by its functionality. It has to provide all the functions needed by the programmers working on their CAD software. In addition, it needs features like speed and reliability. The quality of the geometric kernel greatly impacts the quality of the entire CAD system.

For us as developers, the important aspects of a geometric kernel are its structure, its simplicity of use, and the clarity of its algorithms. These features enable developers to produce a software product in the minimum of time and with the lowest expenditure of resources.

What role does the geometric kernel play in the final product?

In our own CAD system, KOMPAS-3D, we found that the C3D geometric kernel is less than one-fourth of the program code, when measured by the amount of source code and the size of executable files. The complexity of developing the geometric core, however, is significantly larger than the complexity of the rest of the CAD system. This is evidenced by the fact that there are several times more CAD and other modeling systems in the world than there are geometric kernels by themselves.

ASCON is the only software company in Russia to publish a kernel, and one of only a very few in the rest of the world. What does this mean for you?

At the end of the last century, almost all Russian CAD systems had their own private geometric kernels. However, the core functionality of these CAD systems lagged behind their global peers. Because of the great complexity of making improvements to one’s own geometric kernel, many Russian CAD companies abandoned their development efforts, and then purchased ready-made kernels.

Our company, ASCON, took a different route. We decided to continue developing our own kernel. As a result, KOMPAS-3D is now the only Russian CAD system successful at competing globally. And, of course, to develop a world-class geometric kernel is not just difficult, but also is an extremely interesting task. We proud of the results of our work, and enjoy working on it!

For a long time, your kernel remained internal to ASCON. Now, any developer can license C3D. What caused you to make this change?

It was the demand from international customers that caused us to change our minds. And so today, in our kernel development work, we rely not only on the needs of our own KOMPAS-3D developers, but more importantly on the wishes expressed by our new international customers.

For example, with the kernel being a standalone product, it had to get its own security system and we added component-specific licensing. We are actively translating the documentation into different languages. Other than this, development is proceeding as before: we constantly improve the algorithms, add functionality, and work on advancing the speed and reliability.

Tell us a little bit about the team working for you on the kernel.

Our team consists of experienced professionals, as well as new employees. All are graduates of leading universities and technical institutes. The backbone of the team consists of Aleksandr Maksimenko, Andrew Penquin, and Yuri Kozulin. Each of them is responsible for an important part of the work.

Nevertheless, we are constantly looking for talented professionals who can help us develop the C3Dkernl in new directions.

Many thanks for this interview!


About Nikolai Golovanov, the head of C3D geometric kernel development team, ASCON

Nikolai Golovanov is a graduate of the Mechanical Engineering department of Bauman Moscow State Technical University as a designer of space launch vehicles. Upon his graduation, he began with the Kolomna Engineering Design bureau, which at the time employed the future founders of ASCON, Alexander Golikov and Tatiana Yankina. While at the bureau, Mr Golovanov developed software for analyzing the strength and stability of shell structures.

In 1989, Alexander Golikov and TatianaYankina left Kolomna to start up ASCON as a private company. Although they began with just an electronic drawing board, even then they were already conceiving the idea of three-dimensional parametric modeling. This radical concept eventually changed flat drawings into three-dimensional models. The ASCON founders shared their ideas with Nikolai Golovanov, and in 1996 he moved to take up his current position with ASCON. Today he continues to develop algorithms and to improve the C3D kernel.

Learn more about C3D at c3dlabs.com/en/products/c3d-kernel/, www.facebook.com/C3Dlabs or twitter.com/C3Dlabs