Optimization refers to the process of finding a trade-off between Visual Fidelity, download speed and Rendering performance.
CAD
In modern engineering design, nearly all 3D geometries are created by computer-aided design
(CAD) systems. And those geometries are the natural starting point or input for creating Visual Assets for a 3D real-time visualization.
B-Reps and NURBS
Boundary representations (B-Rep) are the primary method of representing modeled objects in those CAD systems. The mathematical description of curve and surface elements can vary but they are usually given in parametric forms represented by non-uniform rational B-splines (NURBS).
(Image of teapot represented by a B-Rep)
The main advantage of this representation is the ability to compactly describe a surface of almost any shape and store it in an efficient way. Additionally, the underlying math calculates an accurate definition of the surface shape independent of the distance the surface is examined. They do not have any pre-defined “resolution”.
The CNC machine tools that create the tooling for final products work from these accurate, smooth NURBS data.
Tessellation
Although NURBS are ubiquitous in the CAD industry, there is currently no built-in hardware support for displaying NURBS surfaces. To be displayed in a 3D application, NURBS surfaces need to be translated into meshes (polygons, edges, vertices), the native language of modern graphics cards. Graphics Processing Unit (GPU) pipelines are very efficient in processing triangles and they do not work properly with parametric surfaces.
(Image of a teapot represented by a triangle model)
A Mesh Surface
A mesh is composed of multiple connected polygons, or triangles, forming a mesh surface that is understandable by a GPU, to be rendered in a 3D application. The number of triangles in the polygonal representation depends on accuracy used when approximating the original precise B-Rep representation. This process of taking the continuous, mathematical equation of a surface and approximating it with polygons is called meshing, triangulation or tessellation.
Since the direct evaluation of NURBS surfaces on the GPU is a highly complex and computationally intensive task, they are usually converted in simpler surface descriptions and tessellated on the CPU (Central Processing Unit) as a pre–processing step. Afterward, the set of generated triangles is sent to the GPU.
The resource demands (CPU, GPU, Memory) to execute a dynamic re-tessellation at every frame on top of all other relevant tasks necessary for an interactive real-time visualization are simply too much for an average consumer device. Therefore, tessellation is not done on the fly while the 3D real-time visualization is running, it is done as a pre-process upfront.
Simplification
It is important to know that when using triangles to approximate smooth edges and 3D it is not possible to achieve the perfect smoothness of an image initially created in NURBS. Unless a very high number of triangles is used, relating to performance issues on the other side. Removing, combining or simplifying non-visual elements from CAD files is crucial for generating high-performance and high-quality visual assets. Optimizing visual asset creation is a key measure of success for any visual configuration project.
(Images of a teapot with different tessellation versions)
Part 3: Optimizing Visual Asset Creation will be available in a few weeks.