Mesh offset method

By combining vertex offset and voxel offset methods, the robustness and computational resource consumption of mesh offset in complex self-intersection cases are solved, generating high-quality offset meshes while maintaining the connectivity of the input mesh.

CN121548845APending Publication Date: 2026-02-17SIMENS INDASTRI SOFTVEAR INK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380100670.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-07-26
Publication Date
2026-02-17

AI Technical Summary

Technical Problem

Existing mesh offset methods are not robust in handling complex self-intersections and suffer from excessive computational resource consumption or output mesh connectivity issues.

Method used

The method combines two mesh offset methods: first, vertex offset is applied to generate an initial offset mesh, identify self-intersecting parts and generate regions that meet the boundary conditions, then a voxel-based volume offset method is applied to repair the self-intersecting regions, and finally, a high-quality third offset mesh is generated by combining the two methods.

Benefits of technology

It achieves robust generation of high-quality offset meshes under complex self-intersection conditions, maintains the connectivity of the input mesh, and optimizes computational resource consumption.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121548845A_ABST
    Figure CN121548845A_ABST
Patent Text Reader

Abstract

A computer-implemented method for shifting a mesh in a three-dimensional model is provided. A first grid offset method is applied to a grid to obtain a first offset grid. A self-intersecting portion of the first offset grid is identified in which either a topological or geometric condition is satisfied. A facet of a grid mapped to a facet of a first offset grid including a self-intersecting portion is identified. A region of the grid is generated, wherein facets at boundaries of the region satisfy a predefined set of boundary conditions. A second grid offset method is applied to the region of the grid to obtain a second offset grid. A facet of the first offset grid corresponding to the facet of the region is removed from the first offset grid, and the first offset grid and the second offset grid are combined to obtain a third offset grid.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present disclosure relates to a computer-implemented method for offsetting a mesh in a three-dimensional model. BACKGROUND

[0002] Computer-aided design (CAD) systems are used to create and manipulate solid modeling representations of objects in many fields of engineering, manufacturing, and design, for example in additive manufacturing. Boundary representation (B-rep) technology provides an efficient and adaptable representation of a part by combining meshes and classical geometry: analytic curves and surfaces, non-uniform rational basis splines (NURBS), and procedural curves and surfaces; with topology, capturing connectivity and interaction between geometric elements. Additive manufacturing is the process of creating three-dimensional objects using a three-dimensional printer based on a CAD or other digital three-dimensional model. Objects can be scanned as a precursor to creating a CAD model, or can be designed from scratch and stored in an STL (stereolithography file format) or AMF (additive manufacturing file format) file for future printing.

[0003] Meshes and meshing techniques are ubiquitous in CAD, additive manufacturing, simulation technology, and graphics processing. A mesh representation of an object approximates the shape of the object as a collection of discrete connected geometric and topological units called facets. In a polygonal mesh, the facets can be triangles, quadrilaterals, or other simple convex polygonal shapes. The precision of a mesh depends on the size of the facets. Smaller facets will result in a smoother, more accurate model, but also require more computational resources to generate and process.

[0004] In CAD systems, an offset function enables a user to modify the geometry of an object by extending or contracting the surface of the object along the surface normal by a fixed distance. Offset operations can be used for a number of applications, including tolerance analysis, clearance testing, collision-free path planning, and construction of blends, thickened sheets, and hollow bodies. Given the object uses of offsets, it is important to provide offset operations that are robust and able to handle a wide variety of different kinds of geometry and situations.

[0005] In the context of mesh geometry, a number of methods can be used to generate an offset of a mesh. One offset method acts directly on the input mesh: the vertices or sometimes the facets of the mesh are offset by a fixed distance, and the offset mesh is constructed based on the offset vertices (or facets). This method is very fast and reliable when the offset distance is small enough or the mesh is smooth enough. It can provide an extremely compact representation of the offset mesh with similar connectivity to the input mesh, and facets oriented similarly to the input mesh facets when possible.

[0006] However, when larger offsets are required, this method can result in offset meshes with self-intersecting parts, where facets can become flipped or consumed. Thus, additional steps are required to repair the offset mesh. In cases where the self-intersections are glancing, or where there are intersections with multiple self-intersections, it can be difficult to robustly identify which parts of the offset mesh need to be preserved and which parts should be discarded.

[0007] A second method of mesh offsetting begins by scanning a mesh into a volume included in a three-dimensional voxel grid. A signed distance map is constructed and a marching cubes algorithm is applied to extract a polygon mesh from the appropriate level determined by the signed distance function.

[0008] The second method is robust even in cases where there are complex self-intersections under the offset, since no self-intersection repair is required. The voxel-based generation of the signed distance map provides that the problems associated with self-intersection repair never occur. Thus, this method always produces a mesh, regardless of the complexity of the self-intersection interactions. However, the initial steps of scanning a mesh into a volume and constructing a signed distance map can be slow, and can be overkill for simple meshes, and have a severely scaling peak memory requirement for large spatial meshes.

[0009] Further, the use of the marching cubes algorithm to generate the output mesh means that the connectivity of the output mesh is independent of the input mesh, and that the vertices of the output mesh are not located at the offset of the vertices of the input mesh. Additionally, there can be more facets in the output mesh, particularly for small offset distances, since the facet size is comparable to the voxel spacing, which itself is a fraction of the offset distance to maintain accuracy. SUMMARY

[0010] It is an object of the present disclosure to provide a method for offsetting a mesh, in particular to provide a method that produces a high quality and robust offset mesh.

[0011] The foregoing and other objects are obtained by features of the independent claims. Other implementations are evident from the dependent claims, the description and the drawings.

[0012] According to a first aspect, a computer-implemented method for offsetting a mesh in a three-dimensional model is provided. The method comprises: a) applying a first mesh offsetting method to the mesh to obtain a first offset mesh; b) identifying a self-intersecting portion of the first offset mesh, wherein either a topological condition or a geometric condition is satisfied; c) identifying facets of the mesh from a preimage of the self-intersecting portion that map to facets of the first offset mesh that include the self-intersecting portion; d) generating a region of the mesh from the identified facets, wherein facets at a boundary of the region satisfy a predefined set of boundary conditions; e) applying a second mesh offsetting method to the region of the mesh to obtain a second offset mesh, the second mesh offsetting method being different from the first mesh offsetting method; f) removing facets of the first offset mesh that correspond to facets of the region; and g) combining the first offset mesh and the second offset mesh to obtain a third offset mesh.

[0013] In a first implementation form of the method according to the first aspect, generating the region from the identified facets comprises: obtaining an initial region that includes the identified facets; and iteratively modifying the initial region until facets of the region obtained from the iterative modification of the initial region satisfy the predefined set of boundary conditions.

[0014] In a second implementation form, iteratively modifying the initial region comprises, for each iteration step: determining, for each facet at a boundary of the region obtained from a previous iteration step, whether the facet satisfies the predefined set of boundary conditions; and when the facet does not satisfy the predefined set of boundary conditions, expanding the region obtained from the previous iteration step to include facets adjacent to the facet.

[0015] In a third implementation form, the first offset method comprises offsetting each vertex of the mesh by a predetermined value.

[0016] In a fourth implementation form, the second offset method comprises a voxel-based volume offsetting method.

[0017] In a fifth implementation form, generating the region comprises merging one or more sub-regions of the facets of the mesh to form the region.

[0018] In a sixth implementation form, the geometric condition or the topological condition is satisfied when the self-intersecting portion comprises a grazing intersection.

[0019] In a seventh implementation form, the geometric condition or the topological condition is satisfied when the self-intersecting portion comprises an intersection between two or more facets that satisfies a complexity condition.

[0020] In an eighth implementation form, the predefined set of boundary conditions comprises a condition that specifies that each edge at a boundary of the region is non-skewed with respect to a corresponding edge in the first offset mesh.

[0021] In the ninth implementation, the predefined set of boundary conditions includes a condition that each edge at the boundary of the specified region is not reversed relative to the corresponding edge in the first offset grid.

[0022] In the tenth implementation, the predefined set of boundary conditions includes the condition that each vertex at the boundary of the specified region has a vertex normal.

[0023] In the eleventh implementation, the predefined set of boundary conditions includes conditions that each vertex at the boundary of a specified region is mapped to a vertex that is not located in the self-intersecting portion of the first offset mesh.

[0024] In the twelfth implementation, combining the first offset mesh and the second offset mesh to obtain the third offset mesh includes: trimming the second offset mesh; and deforming the second offset mesh to match the first offset mesh.

[0025] According to the second aspect, a method for manufacturing an article is provided. The method includes accessing a model of the article in computer-aided design (CAD) software, the model including a mesh; generating a modified model, the modified model including an offset of the mesh generated according to the method of the first aspect; and manufacturing the article based on the modified model.

[0026] These and other aspects of this disclosure will become clear from the embodiments described below. Attached Figure Description

[0027] To gain a more complete understanding of this disclosure and its advantages, reference is now made to the following description in conjunction with the accompanying drawings, wherein:

[0028] Figure 1 A schematic perspective view of the grid based on the example is shown;

[0029] Figure 2 A schematic perspective view showing the offset of the grid according to the example is shown;

[0030] Figures 3A-3B A schematic perspective view of the grid based on the example is shown;

[0031] Figures 4A-4B A schematic perspective view of the grid based on the example is shown;

[0032] Figure 5 This is a flowchart illustrating various embodiments of the methods according to this disclosure;

[0033] Figure 6 This is a flowchart illustrating various embodiments of the methods according to this disclosure;

[0034] Figure 7 This is a schematic diagram of a data processing system configured to perform embodiments of the present disclosure. Detailed Implementation

[0035] Example embodiments are described in full detail below to enable those skilled in the art to embody and implement the systems and processes described herein. It is important to understand that embodiments may be provided in many alternative forms and should not be construed as limited to the examples set forth herein.

[0036] Therefore, while embodiments may be modified in various ways and taken in various alternative forms, specific embodiments thereof are shown in the accompanying drawings and described in detail below by way of example. There is no intention to limit the particular forms disclosed. Rather, all modifications, equivalents, and alternatives falling within the scope of the appended claims should be included. Where appropriate, elements of the exemplary embodiments are consistently represented by the same reference numerals throughout the drawings and detailed description.

[0037] The terminology used herein to describe embodiments is not intended to limit the scope. The articles “a,” “an,” and “the” are singular because they refer to a single thing; however, their use in the singular form in this document should not preclude the existence of more than one thing. In other words, unless the context clearly indicates otherwise, an element mentioned in the singular may be numbered one or more. When used herein, the terms “comprising,” “including,” “covering,” and / or “containing” specify the presence of the said feature, item, step, operation, element, and / or component, but do not preclude the presence or addition of one or more other features, items, steps, operations, elements, components, and / or groups thereof.

[0038] Unless otherwise specified, all terms used herein (including technical and scientific terms) shall be interpreted as conventional in the field. Terms of common use shall also be interpreted as those of custom in the relevant field, rather than as idealized or overly formal, unless expressly stated otherwise herein.

[0039] Figure 1 A perspective view of a mesh 100 according to an example is depicted. Mesh 100 comprises a plurality of interconnected triangular facets 110. Each facet 110 includes vertices 120 connected by edges 130. Each facet also has an associated facet normal vector corresponding to the normal of the plane in which the facet lies. Each vertex has an associated normal vector, as shown about... Figure 1 The facet 140 in the mesh depicts the mesh. In some cases, vertex normals can be derived from the facet normals of the facets surrounding the vertex, for example, as a weighted average. In other cases, vertex normals can be provided as additional data along with mesh vertices, vertex positions, and the facets of the mesh. Facets are said to be adjacent when they share a common edge; otherwise, they are said to be non-adjacent. Self-intersection of the mesh with itself includes regions of the mesh where two or more facets intersect each other or where non-adjacent facets touch each other.

[0040] Figure 2 A perspective view 200 depicts the grid and offset grid based on the example. Figure 2 The grid 210 shown is with Figure 1 The mesh 210 shown is the same as the mesh 100 shown. Mesh 210 is offset using a first offset method, such as the previously described vertex offset method, where each vertex is offset a fixed distance along its corresponding vertex normal. This generates an initial offset mesh 220. In some cases, mesh repairs can be performed on the initial offset mesh 220, such as edge or vertex gap filling.

[0041] Offsets using the vertex offset method can result in self-intersections within the resulting offset mesh. Intersections between facets can be identified using conventional meshing algorithms. As in the example described herein, each self-intersection is imprinted onto the offset mesh. The imprinted self-intersection involves splitting all facets involved in the intersection and their edges, such that the self-intersection is reflected in the mesh topology. If the imprint extends across a facet, two new facets are created due to the splitting of the facet. The imprinted self-intersections form a chain of points, referred to herein as a self-intersection chain.

[0042] According to the examples of the methods described herein, subsets of self-intersecting chains are identified based on whether the self-intersecting chains satisfy a certain geometric or topological condition. For example, if a self-intersecting chain includes grazing intersections, where the facet normals of two facets are nearly parallel or antiparallel, such that the planes of the two facets almost coincide, then the self-intersecting chain will be included in the subset. In a second example, the subset may include self-intersecting chains involving complex interactions, such as intersections between multiple facets or other self-intersecting chains. In another example, the geometric or topological condition may be based on a fault condition of the offset method.

[0043] Figure 2 The diagram depicts two regions 230 and 240, each comprising a self-intersecting chain satisfying such criteria. Each facet in the initial offset mesh 220 within the self-intersecting regions 230 and 240 has a preimage in mesh 210. The preimage can be another facet; however, if the offset facet is generated as a result of filling gaps between edges or vertices, the preimage can also be an edge or a vertex. Regions 250 and 260 show the preimages of the self-intersecting regions 230 and 240 in the original mesh.

[0044] According to the method described herein, facets in the preimage of an identified self-intersecting chain that satisfy geometric or topological conditions are identified as seed facets and stored in a hash table. If any facet forms part of the self-intersecting chain under an offset and has been marked as a seed facet, then all facets in the self-intersecting chain are similarly identified as seed facets.

[0045] Once the initial set of seed facets for the self-intersecting chains has been identified, the corresponding regions in the original mesh containing the seed facets are grown until the boundaries of the regions satisfy a set of boundary conditions. The boundary condition set provides that each region is expanded until the boundaries are sufficiently well-behaved. As an example, this boundary condition set may include specifying the following conditions: each edge at the boundary of the region is non-skewed and non-reversed relative to its corresponding edge in the offset mesh; the vertices on the boundary are smooth; and no boundary vertices lie within the self-intersecting chains.

[0046] Regions can be iteratively expanded on a layer-by-layer basis, where facets at the region boundaries are checked at each iteration step to see if they satisfy boundary conditions. If the boundary conditions are not satisfied, the region is expanded to include adjacent facets previously outside the region. During the expansion of regions, different regions can be merged with each other. For example, in... Figure 2 If the boundaries become large enough, each region in region 250 and region 260 can eventually be merged.

[0047] Figure 3A and Figure 3B An example of region expansion based on boundary conditions is shown. Figure 3A A mesh portion 300 with an initial region 310 is depicted. A facet 320 located outside region 310 shares a boundary with the two boundary edges of region 310. Figure 3B A depiction of facets 320 within region 310 is provided. This boundary condition, where facets sharing two or more edges with the boundary of the region are included within it, can be used to fill small gaps and entrances. This improves the robustness of subsequent steps in the method by providing the simplest possible region boundary.

[0048] Figure 4A and Figure 4B Another example of region expansion is shown. Figure 4A A mesh portion 400 with an initial region 410 is depicted, the initial region 410 having two sub-regions connected by vertices. Figure 4B In this process, the initial region 410 is expanded to include four additional facets 420. Expanding the region in this way allows subsequent steps in the method to avoid managing the special case where regions meet at vertices.

[0049] Once each region in the original mesh has been expanded to points where its boundaries satisfy boundary conditions, a second offset method is applied to the facets within that region. This second offset method can be a voxel-based volumetric offset method: the input facets from each region are scanned into a (e.g., non-axis-aligned) voxel mesh, and a distance function across the voxel mesh is determined. The distance function is refined by relaxing it to the input mesh to approximate the voxels to be offset, and a traveling cube algorithm is applied to transform the rank set back into the mesh.

[0050] Applying the second offset method to the extended region results in a new offset grid for each of the i=1…N regions. M i The regions of the original offset mesh corresponding to the extended regions of the original mesh are removed from the original offset mesh. The boundaries of the holes in the original mesh are projected onto the mesh imprinted on them. M i Above, and used for trimming the mesh. M i To form a patch.

[0051] Based on the example, these steps can be performed as follows: Each vertex around the boundary is projected along its vertex normal until it touches the untrimmed mesh. M i For each pair of consecutive hit points, a plane is constructed passing through these two points with its normal perpendicular to the bisectors of the normals of the two vertices. This plane intersects the uncropped mesh, and the resulting intersection is imprinted onto the uncropped mesh. The imprinted vertices are matched to the boundary using the plane, and the imprint is used to trim the mesh. M i Repeat this process for all polyline segments. The trimmed mesh is deformed to ensure the resulting mesh is watertight.

[0052] The method and system described in this paper combine two mesh offset methods. The first method is used where possible, and the second method is used locally to repair areas where the first method is unlikely to succeed. The method described in this paper combines the advantages of using both methods to produce offset meshes with similar connectivity to the input mesh where possible, while robustly and proactively handling any self-intersections.

[0053] Figure 5 This is a block diagram of a computer implementation of method 500 for offsetting a grid, based on an example. Method 500 can be implemented in conjunction with the examples described herein.

[0054] At block 510, the method includes applying a first mesh offset method to a mesh to obtain a first offset mesh. At block 520, method 500 includes identifying self-intersecting portions of the first offset mesh, wherein either a topological or geometric condition is satisfied. At block 530, method 500 includes identifying facets of a mesh mapped to facets of the first offset mesh including the self-intersecting portions from a preimage of the self-intersecting portions. At block 540, method 500 includes generating a region of the mesh from the identified facets, wherein facets at the boundaries of the region satisfy a predefined set of boundary conditions. At block 550, method 500 includes applying a second mesh offset method, different from the first mesh offset method, to the region of the mesh to obtain a second offset mesh. At block 560, the method includes removing facets of the first offset mesh corresponding to the facets of the region. At block 570, method 500 includes combining the first offset mesh and the second offset mesh to obtain a third offset mesh.

[0055] Figure 6 This is a block diagram of a method 600 for manufacturing an article. Method 600 can be used in conjunction with other methods and examples described herein. In particular, the mesh generation method described herein can be used to provide an offset mesh of sufficiently high quality that does not compromise the quality of the manufactured article when an offset operation is applied to the mesh forming portions of the article to be manufactured.

[0056] At box 610, the method includes accessing a model of the article in a computer-aided design system, the model including a mesh. At box 620, method 600 includes generating a modified model, the modified model including offsets of the mesh generated according to method 500. At box 630, method 600 includes manufacturing the article based on the modified model.

[0057] Figure 7 An example of a data processing system in which embodiments of the present disclosure can be implemented, such as a CAD application configured to perform methods as described herein, is illustrated. The data processing system 700 includes a processor 710 connected to a local system bus 720. The local system bus connects the processor to main memory 730 and a graphics display adapter 740, which may be connected to a display 750. The data processing system may communicate with a wireless user interface adapter connected to the local system bus 720 or via a wired network, such as a local area network. Additional memory 760 may also be connected via the local system bus 720.

[0058] For other peripheral devices such as keyboard 780 and mouse 790, or suitable adapters for other pointing devices such as wireless user interface adapter 770, the user can provide input to the data processing system. Other peripheral devices may include one or more I / O controllers, such as USB controllers, Bluetooth controllers, and / or dedicated audio controllers (connected to speakers and / or microphones). It should also be understood that various peripheral devices can be connected to the USB controller (via various USB ports), including input devices (e.g., keyboard, mouse, touchscreen, trackball, camera, microphone, scanner), output devices (e.g., printer, speaker), or any other type of device operable to provide input or receive output from the data processing system.

[0059] Furthermore, it should be understood that many devices, referred to as input devices or output devices, can provide input and receive output for communication with the data processing system. Additionally, it should be understood that other peripheral hardware connected to the I / O controller can include any type of device, machine, or component configured to communicate with the data processing system.

[0060] An operating system included in a data processing system enables the output from the system to be displayed on a monitor for the user, and allows the user to interact with the system. Examples of operating systems that can be used in a data processing system include: Microsoft Windows™, Linux™, UNIX™, iOS™, and Android™ operating systems.

[0061] Furthermore, it should be understood that the data processing system 700 can be implemented in a networked environment, a distributed system environment, a virtual machine in a virtual machine architecture, and / or a cloud environment. For example, the processor and associated components may correspond to a virtual machine running in a virtual machine environment on one or more servers. Examples of virtual machine architectures include VMware ESCi, Microsoft Hyper-V, Xen, and KVM.

[0062] Those skilled in the art will understand that the hardware depicted for the data processing system 700 can vary for a particular implementation. For example, the data processing system 700 in this example may correspond to a computer, workstation, and / or server. However, it should be understood that alternative embodiments of the data processing system may be configured with corresponding or alternative components, such as in the form of a mobile phone, tablet computer, controller board, or any other system, which can operate to process data and perform the functions and features described herein associated with the operation of the data processing system, computer, processor, and / or controller discussed herein. The examples depicted are provided for illustrative purposes only and are not intended to imply any architectural limitations with respect to this disclosure.

[0063] Data processing system 700 can be connected to a network (not part of data processing system 700), which can be any public or private data processing system network or combination of networks known to those skilled in the art, including the Internet. Data processing system 700 can communicate with one or more other data processing systems, such as servers (not part of data processing system 700), via the network. However, alternative data processing systems can correspond to multiple data processing systems implemented as a part of a distributed system, in which processors associated with several data processing systems can communicate via one or more network connections and can collectively perform tasks described as being performed by a single data processing system. Therefore, it should be understood that, when referring to a data processing system, such a system can be implemented across an organization as multiple data processing systems communicating with each other via a network.

[0064] Data processing system 700 is configured to perform methods according to embodiments described herein. For example, keyboard 780 and mouse 790 may be used as user input devices for receiving information from a user, processor 710 may be configured to perform the steps of the method, and display 750 is configured to display a specific view to the user. A computer product includes instructions that, when run on a computer such as data processing system 700, may be provided to cause the computer to perform the steps of the methods of the embodiments described above.

[0065] This disclosure is described with reference to flowchart illustrations and / or block diagrams of methods, apparatus, and systems according to examples of this disclosure. Although the flowcharts above show a specific execution sequence, the execution sequence may differ from that depicted. Boxes described in one flowchart may be combined with boxes from another flowchart. In some examples, some boxes in the flowcharts may not be necessary and / or additional boxes may be added.

[0066] This disclosure may be embodied in other specific apparatuses and / or methods. The described embodiments are to be considered illustrative rather than restrictive in all respects. In particular, the scope of this disclosure is indicated by the appended claims rather than by the description and drawings herein. All variations falling within the meaning and scope of the claims' equivalents are included within their scope.

Claims

1. A computer-implemented method for offsetting a mesh in a three-dimensional model, the method comprising: The first grid offset method is applied to the grid to obtain the first offset grid; Identify the self-intersecting portion of the first offset mesh, wherein either a topological condition or a geometric condition is satisfied; The facets of the mesh are identified from the preimage of the self-intersecting portion, and the facets of the mesh are mapped to the facets of the first offset mesh including the self-intersecting portion; A region of the mesh is generated from the identified facets of the mesh, wherein the facets at the boundaries of the region satisfy a predefined set of boundary conditions; A second grid offset method is applied to the region of the grid to obtain a second offset grid, wherein the second grid offset method is different from the first grid offset method; Remove the facet of the first offset mesh corresponding to the facet of the region; as well as The first offset grid and the second offset grid are combined to obtain the third offset grid.

2. The method of claim 1, wherein generating the region of the mesh from the identified facets comprises: Obtain the initial region including the identified facets; as well as The initial region is iteratively modified until the facets of the region obtained from the iterative modification of the initial region satisfy the predefined set of boundary conditions.

3. The method of claim 2, wherein for each iteration step, the iterative modification of the initial region comprises: For each facet at the boundary of the region obtained from the previous iteration steps, determine whether the facet satisfies the predefined set of boundary conditions; as well as When the facet does not satisfy the predefined set of boundary conditions, the region obtained from the previous iteration steps is expanded to include facets adjacent to the facet.

4. The method of claim 1, wherein the first mesh offset method comprises offsetting each vertex of the mesh by a predetermined value.

5. The method of claim 1, wherein the second mesh offset method comprises a voxel-based volume offset method.

6. The method of claim 1, wherein the generation of the region comprises: One or more sub-regions of the facets of the mesh are merged to form the region.

7. The method of claim 1, wherein the geometric condition or the topological condition is satisfied when the self-intersecting portion includes grazing intersection.

8. The method of claim 1, wherein the geometric condition or the topological condition is satisfied when the self-intersecting portion comprises an intersection between two or more facets that satisfies a complexity condition.

9. The method of claim 1, wherein the predefined set of boundary conditions includes a condition specifying that each edge at the boundary of the region is not skewed relative to a corresponding edge in the first offset grid.

10. The method of claim 1, wherein the predefined set of boundary conditions includes a condition specifying that each edge at the boundary of the region is not reversed relative to a corresponding edge in the first offset grid.

11. The method of claim 1, wherein the predefined set of boundary conditions includes a condition specifying that each vertex at the boundary of the region has a vertex normal.

12. The method of claim 1, wherein the predefined set of boundary conditions includes a condition specifying that each vertex at the boundary of the region is mapped to a vertex not located in the self-intersecting portion of the first offset mesh.

13. The method of claim 1, wherein combining the first offset grid and the second offset grid to obtain the third offset grid comprises: Trim the second offset grid; and The second offset grid is deformed to match the first offset grid.

14. A method for manufacturing an article of articles, the method comprising: Access a model of the artifact in computer-aided design (CAD) software, the model including a mesh; Generate a modified model, the modified model comprising an offset of the mesh generated by the method according to any one of claims 1 to 13; as well as The article is manufactured based on the modified model.

15. A computer program comprising code, which, when executed by a data processing system, causes the data processing system to perform the steps of any one of the methods according to claims 1 to 13.