Generate structured 3D models from raw meshes

By calculating the distribution of the main curvature value of the mesh and identifying the dominant range, combined with element type detection and parameter recognition, the problem of generating structured 3D models from the mesh is solved, and a more robust and efficient model generation is achieved.

CN111383341BActive Publication Date: 2025-02-21DASSAULT SYSTEMES SA
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN201911392352.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-12-29
Filing Date
2019-12-30
Publication Date
2025-02-21
Estimated Expiration
2039-12-30

AI Technical Summary

Technical Problem

The prior art is difficult to efficiently generate structured 3D models from meshes, especially when preserving semantic information and processing complex geometric shapes.

Method used

By providing a grid including normals and main curvature values, the distribution of main curvature values ​​is calculated, the dominant range is identified, the region is calculated, the element type is detected, and the element parameters are identified through the mesh surface to generate a structured 3D model.

Benefits of technology

This method can generate structured 3D models from the mesh more robustly, reduce dependence on mesh quality, improve computational efficiency, and support design tools in CAD/CAE/CAM systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN111383341B_ABST
    Figure CN111383341B_ABST
Patent Text Reader

Abstract

The present invention particularly relates to a computer-implemented method for generating a structured three-dimensional (3D) model from a mesh. The method comprises providing a mesh comprising faces, each face of the mesh comprising a normal and a principal curvature value; calculating a distribution of principal curvature values ​​over the entire mesh by counting the number of occurrences of discrete curvature values; identifying one or more dominant ranges of principal curvature values ​​in the calculated distribution; for each identified dominant range, calculating one or more regions of the mesh comprising faces belonging to the identified dominant range; for each calculated region, detecting a primitive type by using the curvature values ​​of all faces of the region, and identifying parameters of the detected primitive by using the mesh surface of the region.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of computer programs and systems, and more particularly to a method, system and program for generating a structured three-dimensional (3D) model from a mesh. Background Art

[0002] Many systems and programs for design, engineering and manufacturing of objects are available on the market. CAD is an abbreviation for computer-aided design, for example, it refers to software solutions for designing objects. CAE is an abbreviation for computer-aided engineering, for example, it refers to software solutions for simulating the physical behavior of future products. CAM is an abbreviation for computer-aided manufacturing, for example, it refers to software solutions for defining manufacturing processes and operations. In such computer-aided design systems, graphical user interfaces play an important role in terms of technical efficiency. These technologies can be embedded in product lifecycle management (PLM) systems. PLM refers to a business strategy that helps companies share product data, apply common processes, and leverage corporate knowledge to develop products from concept to end of life across the entire concept of the extended enterprise. The PLM solution provided by Dassault Systèmes (trademarks CATIA, ENOVIA and DELMIA) provides an engineering center (for organizing product engineering knowledge), a manufacturing center (for managing manufacturing engineering knowledge), and an enterprise center (for enabling enterprise integration and connection to both engineering and manufacturing centers). Together, the system provides an open object model that links products, processes, and resources together to enable dynamic, knowledge-based product creation and decision support that drives optimized product definition, manufacturing preparation, production, and service.

[0003] Building (or rebuilding) a structured 3D model from a mesh allows building (or rebuilding) a 3D model that can be used in specialized software (such as CAD / CAE / CAM / PDM / … systems). In other words, an existing mesh can be analyzed for the extraction of implicit knowledge contained in the mesh. For example, a mesh representing a real-world object (such as a mechanical part) can be generated by measuring precise scans, but the modeling software cannot exploit the semantics implicitly contained in the mesh. As another example, a CAD system can simulate the tool motion of a machine tool used to manufacture an object, and a mesh can be output from a file containing machine commands and specifications. Similarly, it is impossible or very difficult to reverse engineer these files to obtain a structured 3D representation. In another example, the original mesh representation can be obtained from a structured 3D model, typically for visualization purposes. However, structural information is lost during this process.

[0004] In "Topology Reconstruction for B-Rep Modeling from 3DMesh in Reverse Engineering Applications, 2012", Bénière et al. work on extracting enough information from the mesh to build an accurate B-Rep model using curvature. By analyzing the curvature on the mesh triangles relative to the overall mesh curvature distribution, they build submeshes that may be potential candidates for faces represented by B-Rep. When a submesh does not touch its neighboring meshes, they expand it until they can recover certain restrictions between neighboring faces. They expand the submeshes by aggregating triangles based on the concept of distance to the constructed submeshes. For complex and tortuous geometries, this process cannot guarantee the recovery of valid restrictions. In addition, this method only focuses on reconstructing an accurate B-Rep.

[0005] Being able to invert the mesh is therefore of great value as it allows advanced versions and support for all the design tools that CAD / CAE / CAM / PDM / … systems traditionally offer.

[0006] In this case, there is still a need to generate a structured three-dimensional (3D) model from the mesh refinement. Summary of the invention

[0007] Therefore, a computer-implemented method for generating a structured three-dimensional (3D) model from a mesh is provided. The method comprises providing a mesh including faces, each face of the mesh including a normal and a principal curvature value, calculating a distribution of the principal curvature values ​​across the mesh by counting the number of occurrences of discrete curvature values, and identifying one or more dominant ranges of principal curvature values ​​in the calculated distribution, for each identified dominant range, calculating one or more regions in the mesh including faces belonging to the identified dominant range, for each calculated region, detecting a primitive type by using the curvature values ​​of all faces of the region, and identifying parameters of the detected primitive by using the mesh surface of the region.

[0008] The method may include one or more of the following:

[0009] -Building a geometry and adjacency graph of a structured 3D representation of the provided mesh, wherein each node of the graph represents one of the calculated regions and comprises the identified primitive types and parameters of the region; each connection between two nodes is the intersection between the respective surfaces of the regions represented by the nodes.

[0010] - for each connection, the construction of the geometric and adjacency graphs also includes: each connection between two nodes is the intersection between the respective surfaces of the regions represented by the nodes, each connection between two nodes has associated convexity, concavity and position information;

[0011] - identifying one or more dominant ranges of principal curvature values ​​in the calculated distribution comprises: determining a local maximum between two consecutive local minima in the calculated distribution, and identifying a surface included between the two consecutive local minima as belonging to the one or more dominant ranges;

[0012] - when the number of occurrences of the local maximum is equal to and / or greater than a predetermined value, repeating the determination of the local maximum in the calculated distribution and the identification of the surface as belonging to the one or more dominant ranges, and wherein before each repetition, the surface previously identified as belonging to the one or more dominant ranges is discarded and the distribution of the surface according to its principal curvature values ​​is recalculated;

[0013] - the principal curvature values ​​of each face include a minimum curvature value and a maximum curvature value; calculating the distribution of the face includes: calculating a first distribution of the minimum curvature value over the entire grid by counting the number of occurrences of the discrete curvature values, and calculating a second distribution of the maximum curvature value over the entire grid by counting the number of occurrences of the discrete curvature values; and wherein the subsequent steps of the method are performed for the first and second distributions;

[0014] - apply a Gaussian kernel to the resulting distribution;

[0015] - for each calculated region, apply region growing guided by the distance between faces weighted by the curvature value to aggregate all faces that are not yet assigned to the calculated region;

[0016] -Region growing includes assigning the same first score to faces in a first group of faces, the first group of faces including faces in faces that do not belong to the calculated regions, and assigning the same second score of zero to each face that belongs to one of the calculated regions, the first score being greater than the second score; testing each face of the first group by the following steps: for each adjacent region of the face, calculating a third score based on the distance between the face and the adjacent region and the difference in principal curvature values ​​between the face and the adjacent region; if the third score is less than the first score, setting the first score to the third score and recording the region corresponding to the third score; if the neighborhood of the tested face does not belong to the first group of faces, adding the neighborhood to the first group of faces; if the third score is greater than the first score, removing the tested face from the first group; regrouping the tested faces initially in the first group with the regions associated with the best third scores they have;

[0017] - When all faces of the second group have been tested, the test stops;

[0018] - After calculating the regions of the grid, calculate the intersection rings between the calculated regions;

[0019] - After calculating the intersection rings, for each intersection ring: collect an ordered list of the regions that make up the intersection ring, as well as the concavity, convexity and position information for each edge of the intersection ring;

[0020] - identifying parameters of primitives by using the surface for the area, including estimating parameters of the detected primitives using a minimal optimization of these parameters.

[0021] A computer program comprising instructions for performing the method is also provided.

[0022] There is also provided a computer-readable storage medium having the computer program recorded thereon.

[0023] A system is also provided, the system comprising a processor coupled to a memory having the computer program recorded thereon and a graphical user interface. BRIEF DESCRIPTION OF THE DRAWINGS

[0024] Embodiments of the invention will now be described by way of non-limiting examples and with reference to the accompanying drawings, in which:

[0025] Figure 1 A flow chart showing an example of the method;

[0026] Figure 2 An example of a system is shown;

[0027] Figure 3 An example of comparison between this method and the prior art is shown;

[0028] Figure 4 A screenshot showing an example of the original grid;

[0029] Figure 5 Shows Figure 4 Screen shot of an example of remeshing of the original mesh;

[0030] Figure 6 is an example showing a representation of curvature.

[0031] Figure 7 and Figure 8 Shows Figure 5 Screen capture of the principal curvatures of a mesh;

[0032] Fig. 9 and Fig.10 Shows Figure 5 Example of the distribution of principal curvature values ​​for a mesh of ;

[0033] Fig.11 Shows Figure 5 Screen shot of a mesh with a range of curvature values ​​of interest;

[0034] Fig.12 Shows Figure 5 Screen shot of a region of uniform curvature of the mesh;

[0035] Fig.13 Shows Figure 5 Screen shot of a region of uniform curvature of the mesh;

[0036] Fig.14a and Fig.14b are screenshots showing before and after the region growing process;

[0037] Fig.15a and Fig.15b are screenshots showing before and after the region growing process;

[0038] Fig.16 is an example of the distribution of principal curvature values ​​for a planar solid;

[0039] Fig.17 is an example of the distribution of principal curvature values ​​for a cylinder;

[0040] Fig.18 is a screenshot of a representation of a structured three-dimensional (3D) model from a mesh. DETAILED DESCRIPTION

[0041] Reference Figure 1 A flowchart is provided, which proposes a computer-implemented method for generating a structured three-dimensional (3D) model from a mesh. The method includes providing (S10) a mesh including faces. The mesh includes vertices, edges and faces that are represented using polygons including triangles and quadrilaterals to define a 3D shape. Each face of the provided mesh includes a normal and a principal curvature value. The method also includes calculating (20) the distribution of principal curvature values ​​of the mesh. The distribution is performed over the entire mesh. The distribution is calculated by counting the number of occurrences of discrete curvature values. The method also includes identifying (S30) one or more dominant ranges of principal curvature values ​​in the calculated distribution. The method also includes calculating (S40) one or more regions of the mesh including faces belonging to the identified dominant range for each identified dominant range. The method then also includes detecting (S50) a primitive type for each calculated region by using the curvature values ​​of all faces of the region, and calculating the parameters of the detected primitive by using the mesh surface of the region.

[0042] This approach improves the generation of structured three-dimensional (3D) models from meshes.

[0043] It is noteworthy that this method is more robust compared to known solutions of B-Rep construction. These B-Rep construction solutions are usually brittle, i.e., they are either completely complete or fail to generate a valid structured representation of the entity, depending on the quality of the provided mesh. In the present method, the construction of regions is based on the dominant range of principal curvature values. As a result, the present method does not rely on edges identified in the mesh to find primitives, but rather discards faces that form edges of primitives and retains triangles that may belong to the surface of the primitive. This makes the identification of primitives less sensitive to the quality of the mesh, since typically more faces of the mesh are contained in the surface of the primitive than the faces of the mesh that form the edges.

[0044] Additionally, the present method does not allow for failure to fully successfully identify all faces and neighbors to generate a structured 3D model representation. Even though the structured 3D model may not contain all faces and neighbor information that could be expected, even though it does not cover the entire mesh, it may contain other information (e.g. convexity, position) that allows a reconstruction of the feature tree to be performed. The structured 3D model is a geometry and neighbor graph with all this information. Generating this geometry and neighbor graph using the present method is more robust than methods for reconstructing a valid and complete B-Rep from a mesh. Figure 3 The differences between the known method and the present method are shown.

[0045] Furthermore, using only the dominant range of curvature values ​​and one or more regions of the computational mesh allows obtaining an effect similar to disabling the operator from the first iteration of the process. In contrast, prior art solutions perform multiple iterations depending on the geometric complexity of the mesh to be analyzed. Thus, the present method reduces the consumption of resources (e.g., CPU, memory) of the system for computing and generating structured 3D models.

[0046] Further improvements will become apparent in the following description.

[0047] The method is computer-implemented. This means that the steps (or substantially all steps) of the method are performed by at least one computer or any similar system. Therefore, the steps of the method can be performed by a computer, which may be fully automatic, or semi-automatic. In an example, the triggering of at least some steps of the method can be performed by user-computer interaction. The required level of user-computer interaction may depend on the foreseen level of automation and be balanced with the need to implement the user's wishes. In an example, the level can be user-defined and / or predefined.

[0048] For example, the step of providing a grid may be the result of a user selection of a grid stored, for example, on a database.

[0049] A typical example of a computer implementation of the method is to perform the method using a system suitable for this purpose. The system may include a processor coupled to a memory and a graphical user interface (GUI), the memory having recorded thereon a computer program including instructions for performing the method. The memory may also store a database. The memory is any hardware suitable for such storage, possibly including several physically distinct parts (e.g., one for the program and possibly one for the database).

[0050] By CAD system, it is further meant any system, such as CATIA, which is at least suitable for designing a modeled object based on a graphical representation of the modeled object. In this case, the data defining the modeled object include data that allow the representation of the modeled object. The CAD system can, for example, use edges or lines (in some cases using faces or surfaces) to provide a representation of the CAD modeled object. Lines, edges or surfaces can be represented in various ways, such as non-uniform rational B-splines (NURBS) or surfaces obtained from a set of points calculated by LIDAR. In particular, a CAD file contains specifications from which geometric shapes can be generated, which in turn allow the generation of a representation. The specifications for the modeled object can be stored in a single CAD file or in multiple CAD files. The typical size of a file representing a modeled object in a CAD system is in the range of one megabyte per component. And a modeled object can typically be an assembly of thousands of components.

[0051] In the context of CAD, a modeled object may typically be a 3D modeled object, e.g., representing a product, e.g., a part or assembly of a component, or possibly an assembly of a product. A "3D modeled object" refers to any object modeled by data that allows its 3D representation. The 3D representation allows the component to be viewed from all angles. For example, a 3D modeled object, when represented in 3D, can be manipulated or rotated around any of its axes, or around any axis in the screen on which the representation is displayed. This does not in particular include 2D icons that have not been modeled in 3D. The display of a 3D representation facilitates design (i.e., increases the speed at which the designer statistically completes his task). This speeds up the manufacturing process in industry, since the design of the product is part of the manufacturing process.

[0052] The mesh (and by extension the generated structured 3D model) may represent the collective graphics of a product to be manufactured in the real world after its virtual design has been completed using, for example, a CAD software solution or a CAD system, such as a (e.g. mechanical) part or an assembly of parts (or equivalently an assembly of parts, since from the method point of view an assembly of parts may be considered as a part itself or the method may be applied independently to each part of the assembly), or more generally, any rigid body assembly (e.g. a moving mechanism). The mesh may also represent the geometry of a product to be manufactured in the real world after scanning the product, e.g. the mesh comes from a metrologically accurate scan, with subsequent mesh design operations, e.g. performed using software allowing mesh editing. The mesh may also represent the geometry of a product to be manufactured in the real world after retrieving the mesh from a machine tool data file, a 3D printer file, a metrological equipment data file... The mesh may also represent the geometry of a product to be manufactured in the real world after a point cloud has been processed by dedicated meshing software or authored in a digital content creation tool (which may generate assets for 3D visualization).

[0053] The mesh (and by extension the generated structured 3D model) can represent products in a variety and unlimited number of industrial sectors, including: aerospace, architecture, construction, consumer products, high-tech equipment, industrial equipment, transportation, marine and / or offshore oil and gas production or transportation. Therefore, the 3D modeled object designed by this method can represent an industrial product, which can be any mechanical part, such as a part of a land vehicle (including, for example, automobile and light truck equipment, racing cars, motorcycles, trucks and motor equipment, trucks and buses, trains), a part of an air vehicle (including, for example, fuselage equipment, aerospace equipment, propulsion equipment, defense products, aviation equipment, space equipment), a part of a naval vehicle (including, for example, naval equipment, commercial ships, offshore equipment, yachts and workboats, ship equipment), a general mechanical part (including, for example, industrial manufacturing machinery, heavy mobile machinery or equipment, installed equipment, industrial equipment products, metal products, tire manufacturing products), electromechanical or electronic parts (including, for example, consumer electronics, safety and / or control and / or instrumentation products, computing and communication equipment, semiconductors, medical devices and equipment), consumer products (including, for example, furniture, home and garden products, leisure products, fashion products, products of hard goods retailers, products of soft goods retailers), packaging (including, for example, food and beverage and tobacco, beauty and personal care, household product packaging).

[0054] CAD systems can be history-based. In this case, the modeled object is further defined by data including the history of geometric features. The modeled object can actually be designed by a physical person (i.e., a designer / user) using standard modeling features (e.g., extrusion, rotation, cutting and / or rotation) and / or standard surface features (e.g., sweeping, blending, throwing, filling, deformation and / or smoothing). Many CAD systems that support such modeling capabilities are history-based systems. This means that the creation history of the design features is usually saved through a non-cyclic data flow that links the geometric features together through input and output links. The history-based modeling paradigm has been well known since the early 1980s. Modeled objects are described by two persistent data representations: history and B-rep (i.e., boundary representation). B-rep is the result of the calculations defined in the history. When representing a modeled object, the shape of the part displayed on the computer screen is (e.g., tessellated) B-rep. The history of the part is the design intent. Basically, the history records collect information about the operations that the modeled object has undergone. B-rep can be saved with the history to make it easier to display complex parts. History can be saved with the B-rep to allow design changes to be made to the part based on design intent.

[0055] By PLM system, it also means any system suitable for managing modeled objects that represent physical manufactured products (or products to be manufactured). Therefore, in a PLM system, a modeled object is defined by data suitable for manufacturing a physical object. These can usually be dimensional values ​​and / or tolerance values. In order to manufacture an object correctly, it is indeed better to have such values.

[0056] By CAM solution it also means any solution, hardware-software suitable for managing the manufacturing data of a product. Manufacturing data typically includes data about the product to be manufactured, the manufacturing process and the resources required. CAM solutions are used to plan and optimize the entire manufacturing process of a product. For example, it can provide the CAM user with information about the feasibility, the duration of a manufacturing process or the number of resources (such as a specific robot) that can be used in a specific step of the manufacturing process; and therefore, allow decisions to be made about management or the investments required. CAM is a subsequent process after the CAD process and potentially the CAE process. Such CAM solutions are manufactured by Dassault Systèmes under the trademark CAM. supply.

[0057] By CAE solution it also means any solution, hardware or software suitable for analyzing the physical behavior of a modeled object. A well-known and widely used CAE technique is the Finite Element Method (FEM), which generally involves dividing the modeled object into elements whose physical behavior can be calculated and simulated by equations. Such CAE solutions are marketed by Dassault Systèmes under the trademark Another growing CAE technology involves the modeling and analysis of complex systems consisting of multiple components from different physical domains without CAD geometry data. CAE solutions allow simulations to optimize, improve and validate the products to be manufactured. Such CAE solutions are manufactured by Dassault Systèmes under the trademark supply.

[0058] PDM stands for Product Data Management. A PDM solution refers to any solution, hardware, software suitable for managing all types of data related to a specific product. PDM solutions can be used by all actors involved in the life cycle of a product: mainly engineers, but also project managers, finance personnel, sales personnel and buyers. PDM solutions are usually based on a product-oriented database. It allows actors to share consistent data about their products and, therefore, prevents actors from using different data. This type of PDM solution is provided by Dassault Systèmes under the name Trademark provided.

[0059] Figure 2An example of a system for performing the method is shown. The system of the example includes a central processing unit (CPU) 1010 communicatively coupled to a memory (e.g., a random access memory (RAM) 1070). In this example, the CPU and the memory communicate via an internal communication bus 1000. The client computer further includes a graphics processing unit (GPU) 1110, which is associated with a video random access memory 1100 connected to the bus. Video RAM 1100 is also referred to in the art as a frame buffer. A mass storage device controller 1020 manages access to a mass storage device (such as a hard disk drive 1030). Mass storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including, for example, semiconductor memory devices (such as EPROM, EEPROM, and flash memory devices); magnetic disks (such as internal hard disks and removable disks); magneto-optical disks; and CD-ROM disks 1040. Any of the above may be supplemented or combined by a specially designed ASIC (application specific integrated circuit). A network adapter 1050 manages access to a network 1060. The client computer may also include a tactile device 1090, such as a cursor control device, a keyboard, etc. The cursor control device is used in the client computer to allow the user to selectively position the cursor at any desired location on the display 1080. In addition, the cursor control device allows the user to select various commands and input control signals. The cursor control device includes a plurality of signal generating devices for inputting control signals to the system. Typically, the cursor control device may be a mouse, the buttons of which are used to generate signals. Alternatively or additionally, the client computer system may include a sensitive pad and / or a sensitive screen.

[0060] The computer program may include instructions executable by a computer, the instructions including a unit for causing the above-mentioned system to perform the method. The program can be recorded on any data storage medium, including the memory of the system. The program can be implemented, for example, in digital electronic circuits or computer hardware, firmware, software, or a combination thereof. The program can be implemented as a device (e.g., a product) tangibly embodied in a machine-readable storage device to be executed by a programmable processor. The method steps can be performed by a programmable processor that executes an instruction program to perform the functions of the method by operating on input data and generating output. Therefore, the processor can be programmable and coupled to receive data and instructions from a data storage system, at least one input device, and at least one output device, and to transmit data and instructions to the data storage system, at least one input device, and at least one output device. If necessary, the application program can be implemented in a high-level process or object-oriented programming language or in an assembly or machine language. In any case, the language can be a compiled language or an interpreted language. The program can be a complete installation program or an update program. In any case, the application of the program on the system structure will generate instructions for executing the method.

[0061] "Generating a structured 3D model from a mesh" is at least part of a process of elaborating a 3D modeled object. Thus, the method may include creating a mesh from scratch. The method may be included in a manufacturing process, which may include, after executing the method, generating a new 3D modeled object from the generated structured 3D model. The new 3D modeled object represents a physical product. In any case, the mesh in the input of the method and the generated structured 3D model may represent a manufactured object as a product, such as a part or an assembly of parts. Because the method allows the design of a modeled object from an original mesh, the method also improves the manufacturing of the product, thereby increasing the productivity of the manufacturing process.

[0062] Reference Figure 1 , providing (S10) a mesh including faces. The mesh includes vertices, edges and faces that are represented using polygons including triangles and quadrilaterals to define a 3D shape or at least a portion of a 3D shape. The 3D shape represents a solid object. The 3D shape represents products in various industrial fields, including but not limited to aerospace, architecture, construction, consumer products, high-tech equipment, industrial equipment, transportation, ships and / or offshore oil and gas production or transportation.

[0063] Each face of the provided mesh includes a normal. As known in the art, a normal of a face is a direction perpendicular to the face. In an example, the normal may be a vertex normal.

[0064] Each face of the provided mesh includes principal curvature values. The principal curvature values ​​measure how the surface bends in different directions and by different amounts at that point. The maximum and minimum curvature values ​​of a face are called the principal curvature values ​​of the face.

[0065] Figure 6 (From "Discrete differential geometry: an applied introduction", K.Crane) is a generalized representation of the curvature at a given point of a surface starting from a reference point (N, X1, X2). The axis N represents the normal of the surface at the given point, and in this example, X1 and X2 are the directions in which the minimum and maximum curvature values ​​are calculated.

[0066] In an example, when the polygonal representations are not of similar size and well balanced, the provided mesh may be a primitive mesh. For example, the primitive mesh may include skinny triangles. More generally, the method behaves correctly and produces useful results (even if sometimes partial) on meshes that are valid representations of 3D entities, e.g., 3D meshes may form closed and orientable manifold surfaces that do not automatically intersect. The method may also produce interesting results with meshes that are not closed.

[0067] Figure 4 An example of a raw mesh with triangles as polygonal representation is shown. This raw mesh of triangles is not particularly clean, as it has T-junctions, that is, the mesh includes points where two polygons meet along the edge of another polygon. In addition, no information about normals and principal curvature values ​​is available.

[0068] In an example, the method may further include remeshing the provided mesh. This allows the quality of the mesh to be improved, i.e., faces have similar sizes and are well balanced, e.g., there are no skinny triangles. There are many methods available, e.g., for the present method, variational methods may tend to produce meshes that perform well. Figure 5 Shown in Figure 4 Example of the resulting mesh after performing the Ramesh operation on the original mesh.

[0069] Additionally, remeshing the original mesh can improve the evaluation of the principal curvature values. Indeed, curvature can be evaluated on a discrete 3D representation such as a triangular mesh using procedures such as tangent one, and most of these procedures tend to give better results on meshes whose faces (usually triangles) are similar and well-balanced.

[0070] In an example, the principal curvature values ​​on the discretized geometry (the remeshed faces) may be evaluated using any known method. The normals may be evaluated at the same time, before, or after evaluating the principal curvature values.

[0071] Figure 7 and Figure 8 Shown for Figure 5 The grid identifies (calculates) a maximum curvature value of 70 or a minimum curvature value of 80.

[0072] Reference Figure 1 , calculate (S20) the distribution of principal curvature values ​​over the entire grid. The distribution is calculated by discretizing the principal curvature values, and by counting the number of occurrences of a particular value. A link is maintained between each curvature value of the distribution and its corresponding face - the corresponding face is the face on which each curvature value has been obtained (or calculated).

[0073] Each entry in the distribution contains the number of occurrences of a principal curvature value within an interval of principal curvature values. The interval of principal curvature values ​​is also referred to as the range of principal curvature values. It should be understood that all intervals of values ​​(i.e., all ranges) include all principal curvature values ​​of the faces of the mesh. In examples, a Gaussian may be applied to the distribution to reduce noise. In practice and for visualization of only a histogram of the distribution (e.g., in Fig. 9 and Fig.10 ), the intervals of the principal curvature values ​​can be the same; otherwise, the discretization of the values ​​and the range of values ​​over which the distributions extend must be the same for both principal curvature distributions.

[0074] In the example, the amount of range is fixed for the discretization, and can be selected by the user. The principal curvature values ​​are accumulated over the entire grid.

[0075] In another example, the amount of ranges can be adjusted based on the maximum number of occurrences for each range: In practice, the number of occurrences can vary widely from one mesh to another. In the end, these exact counts are important relative to the other counts because they can be used to identify interesting ranges of principal curvature values, but an isolated count is not that important. The number of occurrences within a range can be divided by the number of faces of the mesh, so the number of occurrences for each range can be interpreted as a percentage.

[0076] Calculation of the distribution is performed as known in the art.

[0077] In an example, the calculation of the distribution may further include applying a Gaussian kernel to the resulting distribution to smooth out some fluctuations in the values.

[0078] Fig. 9 is a diagram of an example of the distribution of principal curvature values ​​for a face of a mesh. In this example, the distribution is represented by a histogram. Here, the principal curvature values ​​are between -2.0 and 2.0, and the distribution includes a range of 40 values. The sign of the principal curvature values ​​is taken for calculating the distribution. The principal curvature values ​​can be found in Fig. 9 In this example, the curvature values ​​have been forced to be discretized into 40 ranges.

[0079] Reference Figure 1 , S20, the principal curvature value of each face may include a minimum curvature value and a maximum curvature value. Therefore, instead of Fig. 9 The calculation in question has a distribution of absolute values, which may include the calculation of two distributions, namely a first distribution of the minimum curvature value over the entire grid by counting the number of occurrences of discrete curvature values, and a second distribution of the maximum curvature value by counting the number of occurrences of discrete curvature values ​​and classifying the maximum curvature value by the number of occurrences over the entire grid.

[0080] It will be appreciated that the examples discussed with reference to the general case of computing a distribution by counting the number of occurrences of discrete curvature values ​​are applicable to the examples of computing the first and second distributions.

[0081] Fig.10 is an illustration of two examples of calculated distributions for the same mesh. The distribution on the left is calculated for the minimum curvature value of a face of the mesh, and the distribution on the right is calculated for the maximum curvature value of a face of the mesh.

[0082] Reference Figure 1 , at S30, the method further includes identifying one or more dominant ranges of principal curvature values ​​in the calculated distribution. A dominant range is a range that represents a number of occurrences greater than the number of occurrences of other ranges. A dominant range may be dominant in the entire distribution. Alternatively, a dominant range may be locally dominant. It is called a locally dominant range. A locally dominant range refers to a range that has a number of occurrences greater than the number of occurrences of a range in a given number of continuous ranges on the distribution.

[0083] In the example where two distributions are computed, the dominant range is identified on each of the two distributions.

[0084] In an example, the identification of the dominant range of the principal curvature value can be performed after determining the local maximum of the distribution, which is between two continuous local minima of the distribution. According to mathematical definitions, "local maximum" and "local minimum" are local extreme values. "Continuous local minimum" means that there are no other local minima between two local minima. The range (including the local maximum) contained between the two local minima forms the dominant range. Therefore, the face with a discrete curvature value contained between two continuous local minima belongs to the dominant range, and the face belonging to two continuous local minima does not belong to the dominant range. The face belonging to two continuous local minima is most likely to belong to or close to the edge of the primitive, and the face belonging to the identified dominant range is most likely to form the primitive.

[0085] Now refer to Fig.10, shows an example of identifying a dominant range of principal curvature values ​​from a local maximum and two consecutive local minima. The range represented in dark grey is the local maximum. Now discussing the right part of the figure, which corresponds to the distribution of maximum curvature values ​​of the faces of the mesh. A local maximum 1200 has been identified. This local maximum is surrounded by two local minima 1210, 1212, which are consecutive local minima because no other local minima are included in the range between 1210 and 1212. Rectangle 1220 covers the range that forms the identified dominant range. It should be understood that in Fig.10 Three further dominant ranges can be identified in the right part of the figure. Now let's discuss the left part of the figure, which corresponds to the distribution of the minimum curvature values ​​of the faces of the mesh. Two consecutive local maxima 1230, 1332 have been identified. They are local minima 1240, 1242 surrounded by two consecutive local minima. Interestingly, range 1240 is empty because no face has a minimum curvature value covered by this range. The empty range 1240 is a local minimum and, moreover, it is the last range of the distribution; for these reasons, it is indicated as belonging to the dominant range 1250. It should be understood that if range 1240 would be located between two local maxima, it would not be indicated as belonging to the identified dominant range.

[0086] In the example, the identification of one or more dominant ranges on the distribution is performed without iteration, that is, all dominant ranges are identified in a row in the distribution. Therefore, the computational cost for identifying the dominant ranges is low. In the example where there are two distributions, the identification is performed similarly for the two distributions in the row.

[0087] In the example, the identification of one or more dominant ranges on the distribution performed after determining the local maximum of the distribution between two consecutive local minima of the distribution is repeated, while the number of occurrences of the local maximum is equal to and / or higher than a predetermined value, for example, the predetermined value can be the number of occurrences equal to 1. The types of primitive types (e.g., planes, cylinders, ruled surfaces, etc.) are restricted, and the number of iterations does not have to exceed the number of types of primitives. Before each repetition, the faces previously identified as belonging to the dominant range are discarded and the distribution is recalculated. Therefore, the two consecutive local minima of the distribution identified in the former belong to the new distribution. Alternatively, all dominant ranges can be identified in a row. Interestingly, the previous local minimum may lead to the newly identified dominant range. This means that the face that was previously considered to have an edge that may belong to the primitive or close to the primitive may become part of the primitive in the identification of the next new dominant range. The new distribution may include the same number of ranges. The identification of each dominant range allows the deriving of a range of values ​​of interest, wherein each face is part of a surface that may be associated with the primitive of interest. In fact, the range of dominant values ​​identified allows each face to be determined as a face of the dominant primitive type. Obviously, the process can be repeated for the remaining facets that have been discarded during the first pass (i.e., those that do not fall within the previously identified dominant range), resulting in other distributions of values, identifying faces associated with another primitive type, etc. In examples where there are two distributions (one for minimum curvature values ​​and one for maximum curvature values), the iterative identification is performed similarly on both distributions, e.g., concomitantly.

[0088] Thus, determining the dominant range allows identifying a first set of faces of the mesh that are likely to be at or near the edges of the surface of a primitive, and a second set of faces (one set for each dominant range), where each set will form a region of the dominant primitive type.

[0089] It is worth noting that the method according to the present invention is different from the known prior art (e.g., the method of Bénière et al. discussed previously). In the known prior art, the sub-meshes are iteratively processed until a point is reached where each part can be identified or known how to process it. In contrast, the method can be stopped early when an operation similar to destruction is achieved by not considering areas outside the dominant range associated with the primitive type. As is known in the art, destruction means removing non-essential details from the CAD model.

[0090] Fig.11 It is shown from Figure 5 A screenshot of the maximum curvature of the grid together with a histogram - in the debug window 110 - shows the distribution of the minimum and maximum curvature values ​​and the range of values ​​that have been established.

[0091] Back to Figure 1, one or more regions of the grid are calculated (S40) for each identified dominant range. Thus, each calculated region includes faces belonging to the corresponding identified dominant range. Thus, a region of the grid is a set of faces of the provided grid.

[0092] Thus, once one or more interesting ranges of curvature values ​​are identified, the faces are classified in one iteration of the method based on whether they are part of these dominant ranges. Fig.12 As Figure 5 Screen shot of the regions of uniform curvature obtained by S40 on the mesh of FIG. Regions 122, 123, 124 may match a particular primitive surface type 120. Regions 125, 127, 128, and 129 match another primitive surface type (here, cylinder). These regions are all part of the primitive surface of rod 126, but at this step of the method, they are treated as separate regions. Note also that Fig.12 Most of the regions shown have no clear intersection with their neighbors, such as between 122-123 and 123-124.

[0093] In the example, region growing is applied on each computational region to aggregate faces that have not been assigned to one of the computational regions. Faces that have not been assigned to a computational region are faces that have not been previously attributed to one of the identified dominant ranges. Region growing can be applied to each region successively, or to two or more or all computational regions simultaneously. Region growing improves the quality of the intersections between mesh regions: in effect, region growing aims to aggregate all faces that have not been assigned to a computational region. These are typically faces that were not identified as belonging to a dominant region. Region growing helps create regions that touch each other.

[0094] In the example, region growing (applied to each computational region) is guided by the distances between faces. The distance to be considered is the distance between a face of the region and an unassigned face. The distance can be calculated using any known method (e.g., Euclidean distance). A number of jumps from triangles of the region to unassigned triangles can be used as an estimate of the distance, e.g., the distance on the surface. Note that when the faces of the mesh are well detailed (e.g., due to remeshing), the number of jumps is an approximation (even very rough) of the geodesic distance. Therefore, geodesic distance or similar distances can be used and are better than, for example, the Euclidean distance between face centers.

[0095] In the example, the distance that a region is grown is weighted (or modulated) by the difference between the curvature values. Using the difference between the curvature values ​​to guide the growth allows maximizing the number of relevant intersections of the growing region with other regions. Furthermore, guiding the growth with the curvature values ​​allows faster growth in regions that are more likely to be part of the same primitive surface.

[0096] In the example, the distance value is linearly weighted by the difference between the constant and the curvature value. This improves the efficiency of region growing.

[0097] In these examples of region growing, scores are calculated for unassigned faces. Thus, according to these examples, the scores can be calculated based on the distance between faces, or based on the distance weighted by the difference between the curvature values, or based on the distance and the difference between two curvature values ​​weighted linearly by a constant. When reaching an unassigned face that may already be associated with another primitive, the new score of the current expansion is compared with the recorded score and the best score that won. If it was the previous score that won, the expansion through this facet stops. If, on the contrary, the new score wins, it means that all the facets that touch this facet (except the one that we got from the new score) may have better scores than before, so we extend the same process to these neighborhoods... and so on. If an already associated face is associated with a new region, all the neighbors of this already associated face (except the associated face) are evaluated again. This mechanism has some similarities to Dijkstra or A*, except that this mechanism does not try to reach a specific goal and is not guided towards this goal by heuristics.

[0098] A detailed example of the growing region algorithm is now discussed. The region growing is guided by the distance which is linearly weighted by the difference between a constant and the curvature value.

[0099] Although the principle is the same as above, at the implementation level the algorithm works in the following way, which is similar to the simplified implementation. The face checks what the value of the neighborhood is.

[0100] The process is initiated as follows. The same first score (the same arbitrarily large score) is assigned to the faces of a first set of faces, the first set of faces including faces that do not belong to any computational regions. In addition, the same second score of zero is assigned to each face that belongs to one of the computational regions. The first score is greater than the second score. Otherwise, to initiate the process, all triangles in the region are initialized with zero cost, and the region of which they are part is recorded as the region that gave them this zero score. All faces (e.g., triangles) that are not part of a region will have scores that are infinitely high, and "no region" regions will be recorded on these faces as the regions that gave them this score.

[0101] Each face of the first group (the faces that are not yet part of a region and must be processed) is then tested. That is, all faces that are not assigned to a region are put into a queue of faces to be processed.

[0102] For each face to be processed (or tested), the face's neighbors are checked to see what score can pass. The neighbors of a face are the faces that share edges. So for each neighboring region of a face, a third score is calculated based on the distance between the face and the neighboring region and the difference in the principal curvature values ​​between the face and the neighboring region.

[0103] If there is no better score (that is, if the third score is greater than the first score), the process stops for the tested face and the tested face is placed in the list of processed faces. The area to which the score corresponds is also recorded. Alternatively, when the best score among the calculated scores for the tested face has been determined, the area to which the score corresponds is recorded.

[0104] If the score is equal to the assigned score, the process stops. The tested face is placed in the list of faces that have been processed. The area to which the score corresponds is also recorded. Alternatively, when the best score among the calculated scores for the tested face has been determined, the area to which the score corresponds is recorded.

[0105] If there is a better score (i.e., if the third score is less than the current score), the tested face is removed from the first set (the faces that are not yet part of the region and must be processed), the process records the better score (i.e., the process records the better score, which becomes the new current face score), and the region of that score for the tested face, and then all neighbor faces of the tested face (except the face assigned the new score) are put back into the queue of faces to be processed. If the final neighbor face is in the list of processed faces, it is removed from the list of processed faces.

[0106] And, when the list of faces to be processed is empty, the tested faces that were originally in the first group are regrouped using the area associated with the best third score they had.

[0107] This process will converge like Dijkstra and ensure that every face not assigned to a region will record its best "proximity" score and the associated region.

[0108] Regional growth can be summarized as follows.

[0109] Initialize an arbitrarily large score for each "edge" triangle (not assigned to a region), and specify at this time that it is not associated with any region.

[0110] Initialize all non-"edge" triangles already associated with primitives with fraction zero, and associate them with the primitive they are already part of.

[0111] Put all "edge" triangles into the set of triangles to be processed

[0112] While the collection of triangles to be processed is not empty:

[0113] Get the triangle from this collection

[0114] If the triangle is already in the processed list:

[0115] Continue with the next triangle in the set of triangles to be processed

[0116] For each neighborhood of the triangle:

[0117] The possible new score for this triangle is calculated as if we came from this neighborhood using the following formula (the new score is the value that will be checked against the current best score for the face):

[0118] New score = neighborhood score + 1 + constant aggregation factor * (A + B)

[0119] in

[0120] constant_curvature_factor is the constant curvature factor;

[0121] A is the absolute value of the difference between the maximum curvature value of the selected surface and the maximum curvature value of the surface of the adjacent area;

[0122] B is the absolute value of the difference between the minimum curvature value of the selected surface and the minimum curvature value of the surface of the adjacent area.

[0123] If the new score is lower than the triangle's current score:

[0124] Set New Score

[0125] Associating triangles with shapes associated with their neighbors

[0126] Record the neighborhoods we used

[0127] If the triangle score is improved (by a certain neighborhood):

[0128] put all of that triangle's neighbors (but the specific triangle's neighbor with the improved score) back into the list of triangles to be processed, and remove it from the list already processed,

[0129] Add the triangle to the processed list.

[0130] It is worth reminding that the algorithm is applied after identifying one or more dominant ranges of principal curvature values ​​(S30). Therefore, the algorithm has one or more second groups (a group of faces for each dominant range) in the input, each of which will form a region of the dominant primitive type, while the first group of faces includes faces that may belong to or faces close to the edges of the region.

[0131] The above test stops when the second set of faces is empty, that is, when all faces are associated with one of the computational regions of the mesh. Fig.13 represents the value obtained after applying area growth Fig.12 Notice that each region now has edges defined by the interconnecting edges of the faces; therefore, the edges of a region are the polylines that bound the surface of the region.

[0132] Fig.14a (respectively Fig.15a ) is a screenshot of a mesh with the region before the growing region. Fig.14b (respectively Fig.15b ) is after applying the area growth Fig.14a (respectively Fig.15b )'s grid.

[0133] Reference back Figure 1 , for each calculation area, a primitive type is detected (S50). A primitive is a building block from which other shapes can be built. Primitives are generally used in 3D modeling to construct 3D modeling objects. For example, 2D polygons (e.g., squares, rectangles) are primitives that can be piled up to form a 3D volume (e.g., a square pad or a rectangular pad). A primitive can be, but is not limited to, a plane, a cylinder, a sphere, a pyramid, a cone, a quadratic surface, a ruled surface, a torus... A set of primitives allows the description of an industrial product, such as: the one represented by a grid.

[0134] The detection (also can be said to be calculation) of the primitive type depends on the curvature value of the surface of the region. As is known in the art, the type of the primitive is detected by using the curvature value of the surface of the region. Fig.16 The distribution of the principal curvature values ​​of the surface of a region as a primitive of type plane is shown. Fig.17 The distribution of the principal curvature values ​​of the faces of a region as a primitive of type cylinder is shown. Fig.16 and Fig.17 The distribution of can be a template of the corresponding type of primitives, and comparison of the template with the distribution of a region allows identifying the primitives of this region.

[0135] For each detected primitive, the parameters of the detected primitive are calculated based on the primitive type using the surface of the region (i.e., the triangles of the mesh associated with the region), and a least squares optimization algorithm may be applied to the parameters. The parameters of the primitive determine the characteristics of the primitive from which the primitive can be instantiated. For example, as known in the art:

[0136] – The parameters of a primitive plane are the normal of the plane and the point on the plane;

[0137] - The parameters of the primitive sphere are center and radius;

[0138] - The parameters of the primitive cylinder are the direction of the axis, the height of the cylinder, the center of the base circle and the radius;

[0139] - The parameters of the primitive cone are the axis, the height of the cone, the center of the cone base and the radius;

[0140] -The parameters of the primitive torus are the direction vector, the center, the radius of the large circle, and the radius of the small circle.

[0141] As is known in the art, detection of parameters of primitives is performed. The parameters are calculated using the surface of the region (i.e. directly forming a mesh). In the example, identification of the parameters is performed by estimating the parameters using least squares optimization. The values ​​of the parameters are optimized so that they can adhere at most from the exact surface they are instantiated to the mesh portion represented by the surface. Each parameter includes one or more parameter values ​​for instantiating the primitive. For simplicity, the terms "parameter" and "parameter value" are synonymous.

[0142] In the example, and after calculating the regions of the mesh, the intersection rings between the regions are calculated using the adjacency of the triangles of the mesh. The intersection between two regions is also called a surface-to-surface intersection (SSI), where a surface is the intersection of the two regions. When two surfaces intersect, the result can be a set of isolated points, a set of curves, or any combination of these.

[0143] The intersection loops between regions form the boundaries of the regions' surfaces. The term "loop" means that an intersection forms a closed curve within it, or two or more intersections form a closed curve within them. Thus, an intersection loop for a region may be the result of the region intersecting with another region, for example, a plane intersecting with a cylinder; an intersection loop for a region may be the result of the region intersecting with two or more regions, for example, one face of a cube intersecting with four faces. The regions are a set of faces of a mesh, and the intersection between two regions includes the interconnected edges of the faces (a connected sequence of edges), and the interconnected edges all belong to the regions forming the intersection. Thus, an intersection is a polyline of the common edges of the faces of two regions, and therefore an intersection loop is also a polyline including the common edges of the faces of two or more regions that bound the surface of the region.

[0144] In the example, after identifying all intersections of a region with other regions, calculation of intersection rings is performed for each region. Thus, intersection rings are created from all intersections of the region with other regions. As is known in the art, when calculation of intersection rings is completed, polylines of the edges of the faces of the region are constructed.

[0145] In the example, after calculating the intersection rings, and for each intersection ring, an ordered list of regions belonging to the intersection rings is collected. In other words, the regions touching a given region are identified and sorted according to the direction of travel on the rings of said given region. The ordered list of intersections represents the intersection rings of the nodes of the adjacency graph and the geometric graph. In the event that the region contains two or more intersection rings, and therefore the node needs to contain multiple intersections, they are provided with the first intersection in the list that contains the other intersections (the choice of cylinder is arbitrary).

[0146] In the example, the concavity, convexity and position information of each edge of the intersecting ring are collected. The calculation of concavity and convexity is performed as known in the art. In the example, once the various regions are in contact with each other, the outer intersecting ring and the inner intersecting ring are collected for each region. These intersections are collected using predicates about the same rotation order evaluated for each triangle to handle potential numerical problems that may be caused by floating point arithmetic. Jonathan Richard Shewchuk discussed such a collection in "RobustAdaptive Floating-Point Geometric Predicates", in Symposium on ComputationalGeometry 1996, pages 141-150. While collecting the intersection, the concavity and convexity information of each edge of the face of the region is calculated and recorded, and the vertices associated with the ring portion are also recorded. Alternatively, the edges that form the intersecting rings can be recorded instead of the vertices. The concavity, convexity and position information of each edge of the intersecting ring can be stored on the connection between the two nodes associated with the edge.

[0147] In the example, the concavity, convexity, and position of the edges that form the intersection between the two regions are collected. The concavity, convexity, and position are no longer the concavity, convexity, and position of each edge, but the overall concavity, convexity, and position of the polyline created by the edges that form the intersection between the two regions are collected. They are then merged to be associated with the intersection, so that the concavity and convexity for each adjacency / intersection between the two regions can be obtained.

[0148] As is known in the art, an intersection ring can be an outer intersection ring or an inner intersection ring. Thus, the outer intersection ring and the inner intersection ring represent the outer and inner boundaries of each node, i.e., the region boundaries of the provided mesh. In the example, for a region that can be flattened and projected to a certain location, the outer ring will be the region that contains the other rings.

[0149] Examples of inner and outer intersection rings in the mesh of an object 180 Figure 2. is represented on a picture (screenshot). Several regions (e.g. 1800, 1820, 1810, 1830, 1840...) have been calculated. Region 1800 will be identified as a primitive of type plane. Region 1800 is in contact with region 18010, which will be identified as a primitive of type cylinder, and four regions (only two of the four regions 1830, 1840 can be seen in this figure). An intersection ring 1802 has been calculated between region 1800 and region 1810. Another intersection ring 1804 has been calculated between region 1800 and the four regions. More precisely, intersection ring 1804 includes four intersections between region 1800 and the four regions (e.g. 1830, 1840). Intersection ring 1802 delimits region 1800 and is an outer intersection ring. The surface defined by intersection ring 1804 is empty (that is, intersection ring 1804 does not define any face of the mesh, or any face of region 1800 is not in the bounding surface defined by intersection ring 1804), so intersection ring 1804 is an internal intersection ring intersection. Ring 1802 is also an external intersection ring of region 1810. Intersection ring 1822 between region 1810 and region 1820 (which will be identified as a cylinder primitive) is an internal intersection ring of region 1810, while it is an external intersection ring of region 1810. Similarly, intersection ring 1824 between region 1820 and region 1840 (which will be identified as a primitive of type plane) is an external intersection ring of region 1820, while it is an internal intersection ring of region 1840. It should be understood that this choice is arbitrary for the cylinder because there is an equivalent ring on the other side of the cylinder. Therefore, when building the CSG tree, several combinations may be tried.

[0150] Directed intersecting rings are collected, marked as internal or external rings, and the convexity information and the positions of the intersecting edges are maintained for each intersection, allowing to directly exploit this information, for example to generate an accurate solid feature tree without having to build a complete accurate B-Rep representation. Again, this is particularly interesting in cases where the information provided by the mesh analysis does not allow the reconstruction of a complete B-Rep. Therefore, the present invention is more robust. Even though the obtained result may not reflect all the details of the primitive mesh, it can be used as a basis for modeling operations and can be extended to any usage that utilizes traditional accurate CAD models. For example, a user can use a portion of a structured three-dimensional (3D) model generated from a mesh as an intermediate step and edit any element through its parameters.

[0151] Back to Figure 1, constructing the geometry and adjacency graph of the provided mesh (S60). The graph provides a structured representation of the output of steps S10 to S50, and thus provides a representation of the structured 3D model of the mesh generated using these steps. The graph includes nodes and connections between nodes. Each node of the graph represents one of the computational regions (S40) and is associated with the primitive type identified for this region and the parameters identified for this region. Each connection between two nodes represents the intersection between the surfaces of the region represented by the node.

[0152] Fig.18 The screenshot of provides an example of a representation of a structured 3D model of a mesh of an object 180 generated using the output of steps S10 to S50. Node "face_16" represents region 1800 and is associated with the primitive type of region 1800 (plane) and the parameters of the primitive. As already discussed, region 1800 is in contact with five regions. Region 1810 is represented by node "face_15" and four regions (e.g. 1830, 1840...) are represented by nodes "face_16", "face_17", "face_18", "face_19". Five connections are shown, one connection between node "face_16" and node "face_15" representing intersection 1802, and one connection between node "face_16" and node "face_15" representing the intersection forming an intersecting ring 1804 (respectively "face_17", "face_18", "face_19").

[0153] In an example, further collected information (e.g., intersections, ordered lists of regions forming intersecting rings), concavity and convexity information for each edge of faces and / or vertices associated with the ring portions) is combined with the geometry and adjacency Figure 1 "Recorded together" means that this information can be accessed or associated with a node or connection. For example, now refer to Fig.18 , the ordered list of four areas forming the intersecting ring 1804 and the node "face_16", or the connections between the node "face_16" and the nodes "face_15", "face_17", "face_18", and "face_19" can be ranked according to the list.

[0154] In these examples, the generation has been shown for the case where the complete surface of the mesh is processed. It is worth mentioning that the representation is not necessarily complete, that is, the generation can only cover a portion of the mesh. Although the generated structured 3D model does not fully reflect all the details of the primitive mesh, the generated structured 3D model is still useful.

[0155] The structured 3D model generated from the mesh can be edited by the user. The user can perform the editing of the structured 3D model in any known way from the CAD field, such as including selecting at least one node or connection. Compared with the version represented by discrete geometry such as mesh, this version has ergonomic features. In particular, the number of nodes / connections that can be included in the editable structured 3D model is lower than the number of discrete geometric entities of the input mesh by a factor greater than 5 times. Therefore, the editable structured 3D model represents the 3D shape in a more compact and organized manner than the mesh. Moreover, acting on a single node or connection of the structured 3D model may show a global impact, while in the case where the mesh acts on a single geometric entity, only a local impact will be shown. For example, in contrast to selecting a large number of mesh triangles alone, any node or connection of the structured 3D model in this article can be configured to identify a set of faces of the region. In addition, the structured 3D model is more meaningful to the user semantically than the mesh.

[0156] This version may include, for example, selecting a graphical item (node, connection) by graphical interaction. Graphic interaction here refers to operating a tactile device to activate pixels at a position corresponding to the position of a graphical item on the display. For example, a mouse cursor may be placed over a displayed graphical item, or a displayed graphical item may be touched directly via a touch screen or indirectly via a touch pad. The selection may trigger the opening of a dialog box, etc., and the input of one or more parameter values ​​by a user, for example via a keyboard.

[0157] In an example, the method may include displaying a graphical representation of a provided mesh, and at the same time, a method for generating a structured 3D model from the mesh is initiated by a user, and therefore, displaying a graphical representation of the structured 3D model is performed simultaneously with displaying a graphical representation of a discrete geometric representation. Then, the user can hide the graphical representation of the mesh to edit the structured 3D model. Alternatively, the method may continue to display the graphical representation of the mesh and the structured 3D model simultaneously, and when the user performs editing on the structured 3D model, the method may update (e.g., change) the graphical representation of the mesh accordingly. This provides visual feedback to the user of the execution version. Conversely, the user can modify the provided mesh, for example, by replacing one or more elements (vertices, edges, faces, etc.) that form the mesh, and update the structured 3D model by executing the method.

[0158] In an example, the method is configured to take as input a 3D mesh or 3D point cloud determined from physical measurements of a real object, and the method allows determination of a corresponding editable feature tree representing the 3D shape of the real object. The user can then execute a version of the structured 3D model, for example to create a design similar to but different from the real object. In alternative and additional examples, the method is configured to take as input a 3D mesh of a 3D modeled object without a corresponding structured 3D model, the 3D modeled object being received from a remote computer system or retrieved from a non-volatile memory, and the method allows determination of a corresponding structured 3D model representing the 3D shape. The user can then execute a version of the structured 3D model, for example to create a design similar to but different from the 3D mesh, or to complete a design formed by the 3D mesh.

[0159] In addition to the possibility of performing 3D shape editing in a more ergonomic way or as a substitute for it, obtaining a structured 3D model can also be used for other purposes, such as extracting a feature tree from a provided mesh. The feature tree is a hierarchical organization that contains a history of entity operations performed on a three-dimensional (3D) solid model. Each entity operation is defined as a feature on a solid. The stretch / rotation operation that creates a solid from a sketch (and direction / length / angle parameters) is also a function of the feature tree. An operation is a Boolean operation, such as an add operation or a remove operation. The entity used to apply the Boolean operation is usually obtained from a sketch, on which an extrusion operation is applied. In the example, the feature tree is a CSG (Constructive Solid Geometry) feature tree. CSG modeling is a well-known technique used in solid modeling, which includes combining simple objects using Boolean operations to generate complex objects. The simplest solid object used for representation is called a primitive with a simple shape, such as a cuboid, a cylinder, a prism, a pyramid, a sphere, a cone. The feature tree improves the possibility of performing a 3D shape version in a more ergonomic way. In addition, obtaining a feature tree can also be used for other purposes, such as 3D shape merging or mechanical simulation.

[0160] The 3D shape merging method may include: providing a first feature tree representing a first 3D shape on a computer system, providing a mesh of a second 3D shape, executing the method on the mesh to obtain a second feature tree representing the second 3D shape, and then merging the first feature tree and the second feature tree. The merging and / or mechanical assembly or mechanical fit between the first 3D shape and the second 3D shape may be performed according to any merging technique. The merging may, for example, include connecting the second tree to the first tree. The 3D shape merging method may further include applying a geometric model to the merged tree to obtain a graphical representation of the 3D shape represented thereby, and / or displaying the graphical representation to a user.

[0161] Mechanical simulation can be performed based on feature trees. In fact, since feature trees represent 3D shapes in a compact form (relative to discrete geometric representations) and in a parameterized manner, more accurate mechanical calculations can be performed on the features obtained using this method. In particular, it is easier and more direct to calculate finite element meshes from CSG (as taught in the paper "Finite-element mesh generation from constructive-solid-geometry models", Edwin Boender, Willem F. Bronsvoort, Frits H. Post, in Computer-Aided Design, Volume 26, Issue 5, May 1994, Pages 379-392, or the paper "Finite element mesh generation methods: a review and classification", K Ho-Le, in 38 Computer-Aided Design, volume 20 number 1 January / February 1988). In addition, CSG also provides a guarantee of the water resistance of the surface. Mechanical simulations can therefore include computing one or more finite element meshes from a feature tree (e.g., CSG) and / or one or more modifications thereof, and then performing a finite element analysis based on each finite element mesh. Additionally, since the CSG is parameterized, the CSG can be easily optimized based on simulation results. Thus, one or more modifications can be used to optimize an editable feature tree (e.g., CSG) based on each previous finite element analysis result.

Claims

1. A computer-implemented method for generating a structured three-dimensional (3D) model from a mesh, comprising: - providing (S10) a mesh comprising faces, each face of the mesh comprising a normal and a principal curvature value; - calculating (S20) the distribution of the principal curvature values ​​over the entire grid by counting the number of occurrences of discrete curvature values; - identifying (S30) one or more dominant ranges of principal curvature values ​​in the calculated distribution; - for each identified dominant range, calculating (S40) one or more regions of the mesh comprising faces belonging to the identified dominant range; - for each calculated region, applying region growing, the growing being guided by the distances between faces, the distances being weighted by the curvature values, to aggregate all faces that have not yet been assigned to the calculated region; - for each calculated region, detecting (S50) primitive types by using the curvature values ​​of all faces of the region, and identifying parameters of the detected primitives by using the mesh surface of the region.

2. The computer-implemented method of claim 1 , further comprising: - Establishing (S60) a geometry and adjacency graph of a structured 3D representation of the provided mesh, wherein: - each node of the graph represents a region among the calculated regions and comprises the identified primitive types and parameters of the region; and - each connection between two nodes is the intersection between the respective surfaces of the region represented by the nodes.

3. The computer-implemented method of claim 2, wherein: The establishment of the geometric and adjacency graph also includes, for each connection: - each connection between two nodes is the intersection between the respective surfaces of the areas represented by the nodes, and each connection between the two nodes has associated convexity, concavity and position information.

4. The computer-implemented method according to one of claims 1 to 3, wherein: Identifying one or more dominant ranges of principal curvature values ​​in the calculated distribution comprises: - determining a local maximum between two consecutive local minima in the calculated distribution; and - identifying a face included between the two consecutive local minima as belonging to the one or more dominant ranges.

5. The computer-implemented method of claim 4, wherein: When the number of occurrences of the local maximum is equal to and / or greater than a predetermined value, repeatedly determining the local maximum in the calculated distribution and identifying the surface as belonging to the one or more dominant ranges, and wherein, before each repetition, the surface previously identified as belonging to the one or more dominant ranges is discarded and the distribution of the surface according to its principal curvature value is recalculated.

6. The computer-implemented method of one of claims 1 to 3, wherein: -The principal curvature values ​​of each surface include the minimum curvature value and the maximum curvature value; - Calculating the distribution of the surface includes: - calculating a first distribution of the minimum curvature value on the entire grid by counting the number of occurrences of the discrete curvature values; and - calculating a second distribution of the maximum curvature value on the entire grid by counting the number of occurrences of the discrete curvature values; and wherein the subsequent steps of the method are performed for the first distribution and the second distribution.

7. The computer-implemented method of one of claims 1 to 3, further comprising: -Apply a Gaussian kernel to the resulting distribution.

8. The computer-implemented method of claim 1 , wherein: The region growing includes: - assigning the same first score to faces in a first group of faces, the first group of faces including faces that do not belong to any calculated region, and assigning the same second score of zero to each face belonging to one of the calculated regions, the first score being greater than the second score; - testing each face of the first group in the following manner: - for each adjacent region of the face, calculating a third score based on the distance between the face and the adjacent region and the difference in principal curvature values ​​between the face and the adjacent region; - if the third score is less than the first score: - setting the first score to the third score and recording the region corresponding to the third score; - if the neighborhood of the tested face does not belong to the first group of faces, adding the neighborhood to the first group of faces; - if the third score is greater than the first score, removing the tested face from the first group; - regrouping the tested faces originally in the first group with the regions associated with the best third scores they have.

9. The computer-implemented method of claim 1 , wherein: The testing stops when all faces of the second set have been tested.

10. The computer-implemented method of one of claims 1 to 3, further comprising: After calculating the regions of the grid, intersection rings between the calculated regions are calculated.

11. The computer-implemented method of claim 10, further comprising: After calculating the intersection rings, for each intersection ring: - collect an ordered list of the areas that make up the intersection ring, as well as the concavity, convexity and position information for each edge of the intersection ring.

12. The computer-implemented method of one of claims 1 to 3, wherein: Identifying parameters of the primitives using the surface for the region includes estimating parameters of the detected primitives using a minimal optimization of those parameters.

13. A computer program product comprising instructions for executing the method according to any one of claims 1-12.

14. A system comprising a processor coupled to a memory and a graphical user interface, the memory having recorded thereon instructions for executing the method according to any one of claims 1-12.