Mesh offsetting method
Patent Information
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- SIEMENS INDUSTRY SOFTWARE INC
- Filing Date
- 2023-07-26
- Publication Date
- 2026-06-03
AI Technical Summary
Existing mesh offsetting methods face challenges in producing high-quality, robust offset meshes, especially when larger offsets are required, as they can result in self-intersections and require additional repair steps.
A computer-implemented method that applies a first mesh offsetting method to generate an initial offset mesh, identifies self-intersecting portions, and uses a second mesh offsetting method, such as a voxel-based volumetric method, to generate a second offset mesh, which is then combined with the first offset mesh to produce a high-quality third offset mesh.
This method effectively produces high-quality and robust offset meshes by addressing self-intersections and maintaining the connectivity of the input mesh, while also reducing the need for additional repair steps.
Smart Images

Figure US2023028655_30012025_PF_FP_ABST
Abstract
Description
MESH OFFSETTING METHODTECHNICAL 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 in many fields of engineering, manufacturing, and design to create and manipulate solid modelling representations of objects, for example, in additive manufacturing. Boundary representation (B-rep) technology provides an efficient and adaptable representation of parts by combining meshes and classic geometry: analytic surfaces and curves, non-uniform rational basis spline (NURBS), and procedural surfaces and curves; with topology, which captures the connectivity and interaction between geometric elements. Additive manufacturing is the process of creating three-dimensional objects using a three-dimensional printer based on CAD or other digital three-dimensional models. Objects may be scanned as a precursor to creating a CAD model, or may be designed from scratch, and stored in either STL (stereolithography file format) or AMF (additive manufacturing file format) files 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 cells called facets. In a polygonal mesh, facets may be triangular, quadrilateral, or other simple convex polygon shapes. The accuracy of a mesh depends on the size of the facets. Smaller facets will result in a smoother, more accurate model, but will also require more computational resources to generate and process.
[0004] In CAD systems, offsetting functions enable a user to modify the geometry of an object by expanding or contracting surfaces of the object along a surface normal by a fixed distance. Offsetting operations are useful for many applications including tolerance analysis, clearance testing, collision free path planning, and for construction of blends, thickened sheets, and hollowed bodies. Given the many uses of offsetting, it is important to provide that offsetting operations are robust and able to deal with a wide variety of different kinds of geometry and situations.
[0005] In the context of mesh geometry, a number of approaches are available to generate an offset of a mesh. One method of offsetting works directly on the input mesh: vertices, or sometimes facets of the mesh are offset by a fixed distance, and an offset mesh is constructed based on the offset vertices (or facets). This method is very fast and reliable when the offset distance is sufficiently small or when the mesh is sufficiently smooth. It can provide an extremely compact representation of the offset mesh, having similar connectivity to the input mesh, and facets which are oriented similarly to the facets of the input mesh wherever this is possible.
[0006] However, when a larger offset is required, this method may result in an offset mesh with self-intersection portions, where facets can become flipped or consumed. Consequently, additional steps are needed to repair the offset mesh. In cases where selfintersections are glancing, or where there are interactions with multiple self-intersections, it may be difficult to robustly identify which parts of the offset mesh need to be kept and which parts should be discarded.
[0007] A second approach to mesh offsetting starts by scanning the mesh into a volume contained in a three dimensional voxel grid. A signed distance map is constructed, and a marching cubes algorithm is applied to extract a polygonal mesh from an appropriate level, as determined by the signed distance function.
[0008] The second approach is robust even in situations where there are complicated selfintersections under offset as there is no need for self-intersection repair. The voxel-based generation of the signed distance map provides that problems related to self-intersection repair can never occur. This method therefore always produces a mesh, regardless of the complexity of how the self-intersections interact. However, the initial step of scanning the mesh into a volume and constructing a signed distance map may be slow, and may be overkill for a simple mesh, and have large peak memory requirements which scale badly for a spatially large mesh.
[0009] Furthermore, the use of a marching cubes algorithm to generate the output mesh means that the connectivity of the output mesh is unrelated to the input mesh and vertices of the output mesh do not lie at the offset of vertices of the input mesh. In addition, there may be many more facets in the output mesh, particularly for small offset distances, since facet size is a comparable size to voxel spacing, which is itself several times smaller than the offset distance in order to maintain accuracy.SUMMARY
[0010] It is an object of the disclosure to provide a method for offsetting a mesh, and, in particular, to provide a method that produces high quality and robust offset meshes.
[0011] The foregoing and other objects are achieved by the features of the independent claims. Further implementation forms are apparent from the dependent claims, the description, and the figures.
[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, where either a topological or geometric condition is met; c) identifying, from the preimage of the self-intersecting portion, facets of the mesh that map to facets of the first offset mesh containing the self-intersecting portion; d) generating, from the identified facets, a region of the mesh where facets at the boundary of the region satisfy a predefined set of boundary conditions; e) applying a second mesh offsetting method, different to the first mesh offsetting method, to the region of the mesh to obtain a second offset mesh; f) removing the facets of the first offset mesh corresponding to the 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 comprising 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 iterative step: determining, for each facet at boundary of a region obtained from the preceding iterative 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 preceding iterative step to include facets adjacent to the facet.
[0015] In a third implementation form, the first offsetting method comprises offsetting each vertex of the mesh by a predetermined value.
[0016] In a fourth implementation form, the second offsetting method comprises a voxelbased volumetric offsetting method.
[0017] In a fifth implementation form, generating the region comprises merging one or more sub-regions of facets of the mesh to form the region.
[0018] In a sixth implementation form, the geometric or topological condition is met when the self- intersecting portion comprises a glancing intersection.
[0019] In a seventh implementation form, the geometric or topological condition is met when the self-intersecting portion comprises an interaction between two or more facets that meets a complexity condition.
[0020] In an eighth implementation form, the predefined set of boundary conditions comprises a condition specifying that each edge at the boundary of the region is non-skew with respect to the corresponding edge in the first offset mesh.
[0021] In a ninth implementation form, the predefined set of boundary conditions comprises a condition specifying that each edge at the boundary of the region is non-reversed with respect to the corresponding edge in the first offset mesh.
[0022] In a tenth implementation form, the predefined set of boundary conditions comprises a condition specifying that each vertex at the boundary of the region has one vertex normal.
[0023] In an eleventh implementation form, the predefined set of boundary conditions comprises a condition specifying that each vertex at the boundary of the region is mapped to a vertex that does not lie in a self-intersecting portion of the first offset mesh.
[0024] In a twelfth implementation form, combining the first offset mesh and the second offset mesh to obtain a third offset mesh comprises: trimming the second offset mesh; and deforming the second offset mesh to match the first offset mesh.
[0025] According to a second aspect, a method of manufacturing an article is provided. The method comprises accessing a model of the article in computer-aided design (CAD) software, the model comprising a mesh; generating a modified model, the modified model comprising 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 the disclosure are apparent from the embodiments described below.BRIEF DESCRIPTION OF THE DRAWINGS
[0027] For a more complete understanding of the present disclosure, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
[0028] Figure 1 shows a schematic perspective illustration of a mesh according to an example;
[0029] Figure 2 shows a schematic perspective illustration of an offset of a mesh, according to an example;
[0030] Figures 3 A - 3B show a schematic perspective illustration of a mesh according to an example;
[0031] Figure 4A - 4B show a schematic perspective illustration of a mesh according to an example;
[0032] Figure 5 is a flow chart illustrating methods in accordance with various embodiments of the present disclosure;
[0033] Figure 6 is a flow chart illustrating methods in accordance with various embodiments of the present disclosure;
[0034] Figure 7 is a schematic representation of a data-processing system configured to carry out the embodiments of the present disclosure.DETAILED DESCRIPTION
[0035] Example embodiments are described below in sufficient detail to enable those of ordinary skill in the art to embody and implement the systems and processes herein described. It is important to understand that embodiments can be provided in many alternate forms and should not be construed as limited to the examples set forth herein.
[0036] Accordingly, while embodiments can be modified in various ways and take on various alternative forms, specific embodiments thereof are shown in the drawings and described in detail below as examples. There is no intent to limit to the particular forms disclosed. On the contrary, all modifications, equivalents, and alternatives falling within the scope of the appended claims should be included. Elements of the example embodiments are consistently denoted by the same reference numerals throughout the drawings and detailed description where appropriate.
[0037] The terminology used herein to describe embodiments is not intended to limit the scope. The articles “a,” “an,” and “the” are singular in that they have a single referent,however the use of the singular form in the present document should not preclude the presence of more than one referent. In other words, elements referred to in the singular can number one or more, unless the context clearly indicates otherwise. The terms “comprises,” “comprising,” “includes,” and / or “including,” when used herein, specify the presence of stated features, items, steps, operations, elements, and / or components, 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 defined, all terms (including technical and scientific terms) used herein are to be interpreted as is customary in the art. Terms in common usage should also be interpreted as is customary in the relevant art and not in an idealized or overly formal sense unless expressly so defined herein.
[0039] Figure 1 depicts a perspective illustration of a mesh 100, according to an example. The mesh 100 comprises a plurality of interconnected triangular facets 110. Each facet 110, comprises 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 depicted in relation to the facet 140 in Figure 1. In some cases, a vertex normal may be derived from the facet normal of the facets surrounding the vertex, for example, as a weighted average. In other cases, the vertex normal may be provided as additional data along with mesh vertices, vertex positions and facets of the mesh. Facets are said to be adjacent when they share a common edge, otherwise they are said to be non-adjacent. A self-intersection of a mesh with itself comprises a region of the mesh where two or more facets intersect with each other or where non-adjacent facets touch each other.
[0040] Figure 2 depicts a perspective illustration 200 of a mesh and offset mesh, according to an example. The mesh 210 shown in Figure 2, is the same mesh as the mesh 100 depicted in Figure 1. The mesh 210, is offset using a first offsetting method such as the vertex offsetting method previously described, where each vertex is offset by a fixed distance along its corresponding vertex normal. This generates an initial offset mesh 220. In some cases, mesh repair may be performed on the initial offset mesh 220 such as edge or vertex gap filling.
[0041] Offsetting using a vertex offsetting method may result in self-intersections in the resulting offset mesh. Intersections between facets may be identified using conventional meshing algorithms. According to examples described herein, each self-intersection isimprinted on the offset mesh. Imprinting a self-intersection comprises splitting all pairs of facets involved in the intersection and their edges so that the self-intersection is reflected in the mesh topology. If an imprint extends across a facet, then two new facets are created as a result of splitting of the facet. The imprinted self-intersections form chains of points referred to herein as self-intersections chains.
[0042] According to examples of the methods described herein, a subset of the selfintersection chains is identified based on whether the self-intersection chain meets a certain geometric or topological condition. For example, if a self-intersection chain comprises a glancing intersection in which the facet normals of two facets are close to being parallel or anti-parallel, such that the planes of the two facets are almost coincident, then the selfintersection chain will be included in the subset. In a second example, the subset may include self-intersection chains that comprise a self-intersection involving a complex interaction such as an intersection between multiple facets or other self-intersections. In further examples, the geometric or topological condition may be based on a failure condition of the offsetting method.
[0043] Two regions 230, 240 containing self-intersection chains that meet such criteria are depicted in Figure 2. Each facet in the initial offset mesh 220 in the self-intersecting regions 230, 240 has a preimage in the mesh 210. The pre-image may be another facet, however, it may also be an edge or vertex if the offset facet was generated as a result of edge or vertex gap filling. Regions 250, 260 show the pre-images of the self-intersecting regions 230, 240 in the original mesh.
[0044] According to the method described herein, facets in the pre-images of identified self-intersection chains that meet the geometric or topological condition are identified as seed facets and are stored in a hash table. If any facet forms part of a self-intersection chain under offset and has been marked as a seed facet, then all facets in the self-intersection chain are similarly identified as seed facets.
[0045] Once an initial set of seed facets for a self-intersection chain has been identified, the corresponding region in the original mesh containing the seed facets is grown until the boundary of the region satisfies a set of boundary conditions. The set of boundary conditions provide that each region is expanded until the boundary is sufficiently well-behaved. According to examples, the set of boundary conditions may include conditions specifying that each edge at the boundary of the region is non-skew and non-reversed with respect to thecorresponding edge in the offset mesh, vertices on the boundary are smooth and that no boundary vertices lie in a self-intersection chain.
[0046] The regions may be expanded iteratively on a layer-by-layer basis, where facets at the boundary of the region are checked to see if they meet the boundary conditions at each iterative step. If the boundary conditions are not satisfied, then the region expands to include adjacent facets that were previously outside the region. During the expansion of the regions, different regions may merge with each other. For example, in Figure 2 each of regions 250, 260 may eventually merge if the boundaries grow sufficiently large.
[0047] Figures 3 A and 3B show examples of expansion of a region, according to a boundary condition. Figure 3 A depicts a mesh portion 300 with an initial region 310. Facet 320, which lies outside region 310, shares a boundary with two boundary edges of the region 310. Figure 3B depicts the inclusion of facet 320 in the region 310. Implementing this boundary condition, where a facet which shares two or more edges with the boundary of the region is included in the region, may be used to fill small gaps and inlets. This improves the robustness of subsequent steps in the method by providing that the boundary of the region is as simple as possible.
[0048] Figures 4A and 4B show a further example of expansion of a region. Figure 4A depicts a mesh portion 400 with an initial region 410 with two sub-regions connected by a vertex. In Figure 4B, the initial region 410 is expanded to include four further facets 420. Expanding the regions in this manner provides that subsequent steps in the method do not have to manage special cases where regions meet at a vertex.
[0049] Once each of the regions of the original mesh has been expanded to a point where their boundaries satisfy the boundary conditions a second offsetting method is applied to facets in the regions. The second offsetting method may be a voxel based volumetric offsetting method: the input facets from each region are scanned into a (e.g., non-axis- aligned) voxel grid, and a distance function across the voxel grid is determined. The distance function is refined for voxels which are close to the required offset by relaxing back to the input mesh and a marching cubes algorithm is applied to convert the level set back to a mesh.
[0050] Application of the second offsetting method to the expanded regions results in new offset meshes Mi for each of the i = 1. . N regions. The regions of the original offset mesh corresponding to the expanded regions of the original mesh are removed from theoriginal offset mesh. The boundaries of the holes of the original mesh are projected to the meshes Mi imprinted on them, and used to trim the meshes Mi to form patches.
[0051] According to an example, these steps may be performed as follows. Each vertex around the boundary is projected along its vertex normal until it hits the untrimmed mesh, Mi. For each consecutive pair of hit points, a plane going through the two points and whose normal is perpendicular to the bisector of the two vertex normals is constructed. This plane is intersected with the untrimmed mesh, and the resulting intersection is imprinted on the untrimmed mesh. The vertices from the imprint are matched onto the boundary, using the plane and the imprint is used to trim the meshM. This is repeated for all polyline segments. The trimmed meshes are deformed to provide that the resulting mesh is watertight.
[0052] The methods and systems described herein combine two methods of mesh offsetting. The first method is used where possible, and the second method is used locally to patch areas where the first method is not likely to be successful. The method described herein combines advantages of using two approaches, to produce an offset mesh with similar connectivity to the input mesh where possible, while robustly and pre-emptively dealing with any self-intersections.
[0053] Figure 5 is a block diagram of a computer-implemented method 500 for offsetting a mesh, according to an example. The method 500 may be implemented in conjunction with the examples described herein.
[0054] At block 510, the method comprises applying a first mesh offsetting method to the mesh, to obtain a first offset mesh. At block 520, the method 500 comprises identifying a self-intersecting portion of the first offset mesh, where either a topological or geometric condition is met. At block 530, the method 500 comprises identifying, from the preimage of the self-intersecting portion, facets of the mesh that map to facets of the first offset mesh containing the self-intersecting portion. At block 540, the method 500 comprises generating, from the identified facets, a region of the mesh where facets at the boundary of the region satisfy a predefined set of boundary conditions. At block 550, the method 500 comprises applying a second mesh offsetting method, different to the first mesh offsetting method, to the region of the mesh to obtain a second offset mesh. At block 560, the method comprises removing the facets of the first offset mesh corresponding to the facets of the region. At block 570, the method 500 comprises combining the first offset mesh and the second offset mesh to obtain a third offset mesh.
[0055] Figure 6 is a block diagram of a method 600 for manufacturing an article. The method 600 may be used in conjunction with the other methods and examples described herein. In particular, the mesh generation methods described herein may be used to provide that when an offsetting operation is applied to a mesh that forms part of an article to be manufactured, the resulting offset mesh is sufficiently high quality and therefore does not compromise the quality of the manufactured article.
[0056] At block 610, the method comprises accessing a model of the article in a computer-aided design system, the model comprising a mesh. At block 620, the method 600 comprises generating a modified model, the modified model comprising an offset of the mesh generated according to the method 500. At block 630, the method 600 comprises manufacturing the article based on the modified model.
[0057] Figure 7 illustrates an example of a data processing system in which an embodiment of the present disclosure may be implemented, for example a CAD application configured to perform the methods of the embodiments as described herein. The data processing system 700 comprises a processor 710 connected to a local system bus 720. The local system bus connects the processor to a main memory 730 and graphics display adaptor 740, which may be connected to a display 750. The data processing system may communicate with other systems via a wireless user interface adapter connected to the local system bus 720, or via a wired network, for example, to a local area network. Additional memory 760 may also be connected via the local system bus 720.
[0058] A suitable adaptor, such as wireless user interface adapter 770, for other peripheral devices, such as a keyboard 780 and mouse 790, or other pointing device, allows the user to 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 appreciated that various peripherals may be connected to the USB controller (via various USB ports) including input devices (e.g., keyboard, mouse, touch screen, trackball, camera, microphone, scanners), output devices (e.g., printers, speakers), or any other type of device that is operative to provide inputs or receive outputs from the data processing system.
[0059] Further it should be appreciated that many devices referred to as input devices or output devices may both provide inputs and receive outputs of communications with the data processing system. Further it should be appreciated that other peripheral hardware connectedto the I / O controllers may include any type of device, machine, or component that is configured to communicate with a data processing system.
[0060] An operating system included in the data processing system enables an output from the system to be displayed to the user on the display and the user to interact with the system. Examples of operating systems that may be used in a data processing system may include Microsoft Windows™, Linux™, UNIXTM, iOS™, and Android™ operating systems.
[0061] In addition, it should be appreciated that data processing system 700 may be implemented as in a networked environment, distributed system environment, virtual machines in a virtual machine architecture, and / or cloud environment. For example, the processor and associated components may correspond to a virtual machine executing in a virtual machine environment of one or more servers. Examples of virtual machine architectures include VMware ESCi, Microsoft Hyper- V, Xen, and KVM.
[0062] Those of ordinary skill in the art will appreciate that the hardware depicted for the data processing system 700 may vary for particular implementations. For example, the data processing system 700 in this example may correspond to a computer, workstation, and / or a server. However, it should be appreciated that alternative embodiments of a data processing system may be configured with corresponding or alternative components such as in the form of a mobile phone, tablet, controller board or any other system that is operative to process data and carry out functionality and features described herein associated with the operation of a data processing system, computer, processor, and / or a controller discussed herein. The depicted example is provided for the purpose of explanation only and is not meant to imply architectural limitations with respect to the present disclosure.
[0063] The data processing system 700 may be connected to the network (not a part of data processing system 700), which can be any public or private data processing system network or combination of networks, as known to those of skill in the art, including the Internet. The data processing system 700 can communicate over the network with one or more other data processing systems such as a server (also not part of the data processing system 700). However, an alternative data processing system may correspond to a plurality of data processing systems implemented as part of a distributed system in which processors associated with several data processing systems may be in communication by way of one or more network connections and may collectively perform tasks described as being performedby a single data processing system. Thus, it is to be understood that when referring to a data processing system, such a system may be implemented across several data processing systems organized in a distributed system in communication with each other via a network.
[0064] The data processing system 700 is configured to carry out the methods in accordance with the embodiments described herein. For example, the keyboard 780 and mouse 790 may function as a user input device for receiving information from the user, the processor 710 may be configured to carry out the steps of the method and the display 750 configured to display a particular view to the user. A computer product comprising instructions which, when run on a computer, such as the data processing system 700, may be provided to cause the computer to execute the steps of the methods of the embodiments outlined above.
[0065] The present disclosure is described with reference to flow charts and / or block diagrams of the method, devices, and systems according to examples of the present disclosure. Although the flow diagrams described above show a specific order of execution, the order of execution may differ from that which is depicted. Blocks described in relation to one flow chart may be combined with those of another flow chart. In some examples, some blocks of the flow diagrams may not be necessary and / or additional blocks may be added.
[0066] The present disclosure may be embodied in other specific apparatus and / or methods. The described embodiments are to be considered in all respects as illustrative and not restrictive. In particular, the scope of the disclosure is indicated by the appended claims rather than by the description and figures herein. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Claims
CLAIMS1. A computer-implemented method for offsetting a mesh in a three-dimensional model, the method comprising: applying a first mesh offsetting method to the mesh to obtain a first offset mesh; identifying a self-intersecting portion of the first offset mesh, wherein either a topological condition or geometric condition is met; identifying, from a preimage of the self-intersecting portion, facets of the mesh that map to facets of the first offset mesh containing the self-intersecting portion; generating, from the identified facets of the mesh, a region of the mesh where facets at a boundary of the region satisfy a predefined set of boundary conditions; applying a second mesh offsetting method, which is different from the first mesh offsetting method, to the region of the mesh to obtain a second offset mesh; removing the facets of the first offset mesh corresponding to the facets of the region; and combining the first offset mesh and the second offset mesh to obtain a third offset mesh.
2. The method of claim 1, wherein the generating of the region of the mesh from the identified facets comprises: obtaining an initial region comprising 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.
3. The method of claim 2, wherein the iteratively modifying of the initial region comprises, for each iterative step: determining, for each facet at the boundary of a region obtained from a preceding iterative step, whether the facet satisfies the predefined set of boundary conditions; and expanding the region obtained from the preceding iterative step to include facets adjacent to the facet when the facet does not satisfy the predefined set of boundary conditions.
4. The method of claim 1, wherein the first mesh offsetting method comprises offsetting each vertex of the mesh by a predetermined value.
5. The method of claim 1, wherein the second mesh offsetting method comprises a voxel-based volumetric offsetting method.
6. The method of claim 1, wherein the generating of the region comprises merging one or more sub-regions of facets of the mesh to form the region.
7. The method of claim 1, wherein the geometric condition or the topological condition is met when the self-intersecting portion comprises a glancing intersection.
8. The method of claim 1, wherein the geometric condition or the topological condition is met when the self-intersecting portion comprises an interaction between two or more facets that meets a complexity condition.
9. The method of claim 1, wherein the predefined set of boundary conditions comprises a condition specifying that each edge at the boundary of the region is non-skew with respect to a corresponding edge in the first offset mesh.
10. The method of claim 1, wherein the predefined set of boundary conditions comprises a condition specifying that each edge at the boundary of the region is non-reversed with respect to a corresponding edge in the first offset mesh.
11. The method of claim 1, wherein the predefined set of boundary conditions comprises a condition specifying that each vertex at the boundary of the region has one vertex normal.
12. The method of claim 1, wherein the predefined set of boundary conditions comprises a condition specifying that each vertex at the boundary of the region is mapped to a vertex that does not lie in the self-intersecting portion of the first offset mesh.
13. The method of claim 1, wherein the combining of the first offset mesh and the second offset mesh to obtain the third offset mesh comprises: trimming the second offset mesh; and deforming the second offset mesh to match the first offset mesh.
14. A method for manufacturing an article, the method comprising: accessing a model of the article in computer-aided design (CAD) software, the model comprising a mesh; generating a modified model, the modified model comprising an offset of the mesh generated according to the method of any of claims 1 - 13; and manufacturing the article 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 carry out the steps of any of the method of any of claims 1 to 13.