Mesh incarnation method based on tetrahedra
The method generates a mesh representation by modifying tetrahedra to meet tolerance conditions, addressing inefficiencies in existing methods and improving structural integrity and accuracy for lattice structures.
Patent Information
- Application Number
- PCT/US2024/031236
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-05-28
- Publication Date
- 2025-12-04
AI Technical Summary
Existing mesh generation methods for lattice structures, particularly those using the marching cubes algorithm, are inefficient, memory-intensive, and result in inconsistent facet sizes, leading to loss of small features and poor structural integrity due to stress concentration at intersections.
A method involving determining a set of covering spheres, generating triangulations, and modifying tetrahedra to ensure facets meet predefined tolerance conditions, resulting in a more efficient and accurate mesh representation that varies in size based on local curvature.
The method produces a mesh with improved structural integrity and reduced computational overhead, maintaining accuracy without altering distant facets, suitable for additive manufacturing.
Smart Images

Figure US2024031236_04122025_PF_FP_ABST
Abstract
Description
MESH INCARNATION METHOD BASED ON TETRAHEDRA TECHNICAL FIELD
[0001] The present disclosure relates to methods and systems for generating a mesh representation of a surface and, in particular, a blended rod and ball lattice. 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] Lattices are a common type of interior space-filler used in CAD systems and additive manufacturing. Lattice structures may be used for their physical and mechanical properties in, for example, heat transfer, filtration, and structural components. In B-rep (Boundary Representation) modelling, lattice structures may be enclosed by closed, connected sets of faces, where each face is a portion of a two-dimensional surface. The faces have boundary edges, which are defined by curves where the faces intersect with one another.
[0004] Rod and ball lattices are lattices comprising a plurality of lattice topologies, where a lattice topology is either a rod or a ball. Rods may be cylindrical or conical, and balls are spherical. Each rod is joined to other rods by a ball, building up the lattice structure. One particular issue with a lattice structure is the occurrence of stress at the points where the rods and balls intersect. This is caused by a sharp, concave edge being generated in the lattice surface. Stress points are problematic as they lead to issues with the lattice structure deforming or even breaking apart in a final component. For example, if the intersection between a rod and ball is a region of high stress, then little mechanical strength or pressure will be required to cause the lattice to break at the intersection. One solution to this is tocreate a blended lattice structure. A blended lattice may have material added at a concave edge or removed at a convex edge to smooth the edges. Smoothing the edges in this manner improves the structural integrity of the lattice and reduces weak points around intersections.
[0005] A mesh is a subdivision of a continuous geometric space into discrete geometric and topological cells called facets. Facets may be triangular in shape, though higher order polygons are also suitable. In modelling systems, the majority of operations are available when using a mesh structure, but this may be limited when considering a lattice structure. In order to overcome this, lattices used for space filling may be converted into meshes (to tolerance) in order to perform certain operations. Meshes are also employed in three- dimensional printing applications, hence lattice conversion is also used in additive manufacturing situations.
[0006] One approach to mesh generation is based on the use of the marching cubes algorithm. The marching cubes algorithm may be applied to an implicit function representing a surface. When applied to lattices, the marching cubes algorithm has an advantage that it produces a mesh regardless of the complexity of how the different topologies in the lattice interact. However, it also has a number of drawbacks. Firstly, incarnating a blended lattice using marching cubes is slow and memory-intensive if the lattice is large relative to the radius of the rods and the balls. Secondly, there is little variation in facet size on the resulting mesh. Consequently, small features may be lost, high-curvature features may be approximated coarsely, and low-curvature features produce many more facets than is necessary. Having too many facets may also cause operations on the mesh to run slowly. Thirdly, local modifications to the surface may alter facets in the incarnated mesh in portions far away from the local modifications, where the box of the implicit function used in the marching cubes algorithm is altered. In view of these drawbacks, there is a need to provide improved mesh generation methods. SUMMARY
[0007] According to a first aspect, a computer-implemented method for generating a mesh representation of a closed surface defined by an implicit function in a three-dimensional model, is provided. The method comprises: a) determining a set of covering spheres that enclose the surface; b) generating a triangulation of the exterior surface of the covering spheres and the intersecting planes between each pair of covering spheres; c) obtaining an initial set of tetrahedra, based on the triangulation; d) generating, from the initial set oftetrahedra and the definition of the surface as an implicit function, an initial mesh representation of the surface as a plurality of facets; e) evaluating the initial mesh representation of the surface, to identify facets in the initial mesh representation that fail to meet predefined tolerance conditions; and f) for each identified facet: i) modifying at least the tetrahedron that generated the facet; and ii) regenerating facets in the initial mesh representation based on the modified tetrahedra.
[0008] The method according to the first aspect provides a representation of a closed surface as a mesh. The method is more efficient and provides an improved mesh compared to other mesh generation methods. The facet size varies depending on the local curvature of the surface, resulting in fewer facets for a given accuracy. Furthermore, a local modification to the surface does not alter facets in the incarnated mesh in portions far away from the modification. The data obtained from the method may be used to efficiently manufacture components with improved physical and structural characteristics.
[0009] In certain examples, the surface comprises a surface of a blended rod and ball lattice.
[0010] In certain examples, the radius of each covering sphere is at least 1.5 × (^^^^ + ^^^^),wherein ^^^^ is the maximum ball radius of the lattice, and ^^^^ is the maximum blend radius.
[0011] In certain examples, steps e) and f) of the method according to the first aspect are repeated until the predefined tolerance conditions are met for every facet in the mesh representation.
[0012] In certain examples, for each covering sphere, generating the triangulation of the exterior surface of the covering sphere comprises: trimming the exterior surface of the sphere based on intersections of the sphere with further covering spheres in the set of covering spheres; generating a polyline approximation of the intersections; and triangulating the trimmed exterior surface.
[0013] In certain examples, for each pair of covering spheres, generating the triangulation of the intersecting planes between each pair of covering spheres comprises: trimming the intersecting plane to: a) the polyline approximation of the intersection between the pair of spheres; and b) intersecting planes between further pairs of covering spheres, that lie between the pair of spheres; and triangulating the trimmed intersecting plane.
[0014] In certain examples, the method comprises applying a constrained Delaunay triangulation method to obtain a triangulation.
[0015] In certain examples, obtaining the initial set of tetrahedra comprises defining the initial set of tetrahedra based on vertices of the triangulation and centre points of the covering spheres.
[0016] In certain examples, generating the initial mesh representation comprises: determining, for each tetrahedron in the set of tetrahedra, a set of points of intersection of the surface and edges of the tetrahedron, based on the implicit function; and forming the initial mesh representation based on the set of points.
[0017] In certain examples, the predefined tolerance conditions specify that each fin of each facet lies within a predetermined threshold distance of the surface.
[0018] In certain examples, evaluating the initial mesh representation comprises, for each fin of each facet: approximating the implicit function in a neighbourhood of the fin, based on a spline function; and determining whether the fin lies within the predetermined threshold based on the approximation.
[0019] In certain examples, when a fin of a facet does not lie within the predetermined threshold, modifying the tetrahedra comprises splitting an edge of at least the tetrahedron that generated the facet to form further tetrahedra.
[0020] In certain examples, the predefined tolerance conditions specify that the height to width ratio of each facet in the mesh representation exceeds a predetermined threshold value.
[0021] In certain examples, evaluating the initial mesh representation comprises, for each facet: determining whether the height to width ratio of the facet is above the predetermined threshold value.
[0022] In certain examples, when the height to width ratio of a facet is below the predetermined threshold value, modifying the tetrahedra comprises: identifying a tetrahedron in a neighbourhood of the tetrahedron that generated the facet; and replacing the pair of tetrahedra with three tetrahedra via a bi-stellar flip.
[0023] These and other aspects of the disclosure are apparent from the embodiments described below. BRIEF DESCRIPTION OF THE DRAWINGS
[0024] 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:
[0025] Figure 1 shows a schematic representation of a rod and ball lattice according to an example;
[0026] Figure 2 is a block diagram of a method for generating a mesh representation of a closed surface, according to an example;
[0027] Figure 3 shows a schematic representation of a set of covering spheres, according to an example;
[0028] Figure 4 is a cross-sectional diagram showing a set of covering spheres for a rod of a lattice, according to an example;
[0029] Figure 5 shows a schematic representation of a triangulation of a set of covering spheres, according to an example;
[0030] Figure 6 is a cross-sectional diagram of a triangulation of a trimmed plane, according to an example;
[0031] Figures 7A–7C show a schematic representation of covering tetrahedra, according to an example;
[0032] Figures 8A–8D show a graphical representation of a method for estimating the accuracy of a facet in a mesh, according to an example;
[0033] Figures 9A–9B show a graphical representation of a method for splitting tetrahedra, according to an example;
[0034] Figures 10A–10D show a graphical representation of a bi-stellar flip, according to an example;
[0035] Figure 11 is a schematic representation of a data-processing system adapted to carry out the embodiments of the present disclosure. DETAILED DESCRIPTION
[0036] 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.
[0037] 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 areconsistently denoted by the same reference numerals throughout the drawings and detailed description where appropriate.
[0038] 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.
[0039] 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.
[0040] The method described herein is used to generate a mesh representation of a closed surface using a set of covering tetrahedra. The method may be applied to a closed surface, S, which is represented by a field function f(p) for positions p, where f(p) = 0 on the surface, f(p) < 0 inside the surface and f(p) > 0 outside the surface. One example of such a surface is a blended rod and ball lattice.
[0041] Figure 1 shows an unblended rod and ball lattice 100, according to an example. The lattice 100 comprises linear rods 101, 102, 103 and spherical balls 111, 112, 113, 114. The rods 101, 102, 103 are cylindrical. In certain examples, in a rod and ball lattice, the rods may be cylindrical or conical. The balls 111, 112, 113, 114 have the same radius as their connected rods. In certain examples, in a rod and ball lattice, the balls may have the same or greater radius as their connected rods. The rods and balls of a rod and ball lattice such as the lattice 100 may be referred to as lattice topologies. In every rod and ball lattice, every rod has terminating balls at each end.
[0042] Lattice topologies may be connected with other lattice topologies. A ball’s connected rods are the rods that have the ball at one or the other end of the rod; a rod’s connected balls are the balls at either end of the rod; a rod’s connected rods are the rods connected to the balls of that rod; a ball’s connected balls are the other balls connected to that ball’s rods. In the lattice 100, the ball 112 is connected to the rod 101 and the rod 102, the rod101 is connected to balls 111, 112, and connected to rod 102, and the ball 112 is connected to the balls 111, 113.
[0043] The lattice 100 is an unblended lattice with sharp edges at rod and rod intersections. In certain examples, an unblended lattice may have sharp edges wherever two lattice topologies intersect. A field function f(p) that defines the surface of an unblended lattice with N lattice topologies may be constructed from field functions fi(p) where fi(p) is a signed distance function from the surface of lattice topology, i. The function f(p) is defined as: ^^^^(^^^^) =1m≤^^^^i≤n^^^^^^^^^^^^(^^^^)
[0044] After applying a concave rolling ball blend with radius r, a single-blended field function g(p) may be defined as follows:where q is a position within the volume of a sphere of radius r centred at p.
[0045] After applying a second blend, a convex rolling ball blend with radius s, a double- blended field function g2(p) may be defined as follows:where c is a position within the volume of a sphere of radius s centred at p, and q is a position within the volume of a sphere of radius r+s centred at c.
[0046] The blended lattice surface is defined by the scalar field function h(p) for positions p, where h(p) = 0 on the lattice surface, h(p) < 0 inside the lattice surface and h(p) > 0 outside the lattice surface. Far enough from any blends, the scalar field function h(p) is defined as being equal to the field function of the unblended lattice, f(p). Far enough from any convex blends, the scalar field function h(p) is defined as being equal to the field function of the single-blended lattice, g(p). Near the blends, h(p) is defined as being equal to the double-blended field function g2(p). h(p) is defined in this way because f(p) is faster to compute than g(p), which is faster to compute than g2(p).
[0047] Figure 2 shows a block diagram of a computer-implemented method 200 for generating a mesh representation of a closed surface defined by an implicit function, such as a blended rod and ball lattice. The method 200 may be implemented in conjunction with other examples described herein. The method 200 may be implemented in software on a data processing system. The method 200 may be implemented in a computer-aided design (CAD) system or computer-aided manufacturing (CAM) system in conjunction with an additive manufacturing system.
[0048] At block 210, the method 200 comprises determining a set of covering spheres for the surface.
[0049] Figure 3 shows an example of a set of covering spheres 300 for the lattice 100. The blended lattice is guaranteed to lie within the lattice obtained by offsetting the underlying unblended lattice by the maximum blend radius. It is sufficient to find a set of spheres that cover the offset of the unblended lattice.
[0050] The sphere radius may be selected from a range, wherein the radius is larger than the maximum of all the ball radii plus the maximum of all the blend radii. For example, theradius of each covering sphere may be set to at least 1.5 × (^^^^ + ^^^^), wherein ^^^^ is themaximum ball radius of the lattice, and ^^^^ is the maximum blend radius. However, if the radius is too large the covering spheres will not capture the features of the original lattice.
[0051] The set of covering spheres comprises a first subset of spheres with centres matching the centres of the balls in the lattice. For example, referring to Figure 3, the spheres 301, 302, 303, 304, correspond, respectively, to the balls 111, 112, 113, 114 of the lattice 100.
[0052] The set of covering spheres may also comprise spheres positioned along the rods of the lattice. The sphere radius determines the maximum spacing of the spheres along rods. Figure 4 is a cross-sectional diagram 400 showing spacing of covering spheres 401, 402, 403, 404 along a rod 411 of a lattice, according to an example.
[0053] In Figure 4, the maximum blend radius is depicted by lines 421, 422. Spheres 401, 402, 403, 404 are spaced to cover the volume between lines 421, 422. This will provide that the offset of the rod 411 is completely covered by spheres.
[0054] Referring to Figure 2, at block 220, a triangulation of the exterior surface of the covering spheres and the intersecting planes between each pair of covering spheres is generated. To generate a triangulation the exterior of each covering sphere is trimmed to the other spheres that intersect with it and the intersections are approximated using a polylineapproximation. A triangulation method such as a constrained spherical Delaunay triangulation may be used to triangulate the trimmed surface of the sphere.
[0055] For each pair of intersecting spheres, the plane of intersection on which the circular intersection between the pair of spheres lie is identified. The intersecting plane is trimmed to a) the polyline approximation of the intersection between the pair of spheres and b) intersecting planes between further pairs of covering spheres, that lie between the pair of spheres. The resulting trimmed plane is triangulated using a constrained planar Delaunay triangulation method. Duplicated positions in different portions of the triangulation may be merged. If the centre of the circle generated by intersecting a pair of spheres lies in the trimmed plane this is included as a vertex in the triangulation. Similarly, when the method 200 is applied to a rod and ball lattice, the intersections of rod axes passing through trimmed planes are also included as additional vertices. These steps increase the chance that the mesh representation obtained from subsequently generated tetrahedra is representative of the blended lattice surface.
[0056] Figure 5 shows an example of a triangulation 500 of the set of covering spheres 300, obtained using this method. The trimmed exterior surface of the spheres 301, 302, 303, 304 is triangulated using the constrained spherical Delaunay method resulting in the pattern of facets 501 depicted in Figure 5. Figure 5 further depicts the trimmed portions of intersecting planes between pairs of spheres, such as the trimmed plane 511 between spheres 301 and 302.
[0057] Figure 6 shows a plane 600 that has been trimmed to the polyline representation of the intersection of the two spheres plus one other plane. The centre 601 of the circle is included as a vertex in the triangulation.
[0058] In Figure 2, at block 230 an initial set of tetrahedra are obtained based on the triangulation. The initial set of tetrahedra may be obtained by forming individual tetrahedron from three vertices of a facet and the centre point of a covering sphere. For each facet either one or two tetrahedra are generated. Figure 7a depicts a tetrahedron 701 formed from the vertices facet on the triangulated surface of the sphere 302. Figures 7b and 7c show an example of two tetrahedra 702, 703 formed from a facet lying in the trimmed plain 704 between a pair of intersecting spheres.
[0059] At block 240, an initial mesh representation of the surface as a plurality of facets is generated using the set of tetrahedra and definition of the surface as an implicit function. The method of generating facets using the tetrahedra is similar to the method of generatingfacets in the marching tetrahedra algorithm: the marching tetrahedra algorithm starts from a grid that subdivides a volume into a plurality of cubes called voxels, and each voxel is subdivided into six tetrahedra. When applied to a surface defined by an implicit function, the marching tetrahedra algorithm estimates the zero-crossing point along each tetrahedron edge that connects a corner with a positive value to a corner with a negative value using linear interpolation. In the present method, tetrahedra are determined from an earlier stage in the algorithm and the edges of the tetrahedra may be longer than those in a marching tetrahedra algorithm. The zero-crossing points along edges of each tetrahedron in the set of tetrahedra are identified using an iterative method, for example, regula falsi.
[0060] At block 250, the initial mesh representation is evaluated to identify facets that fail to meet predefined tolerance conditions.
[0061] In one example, the predefined conditions may include a condition that specifies that each fin of every facet lies within a predetermined threshold distance of the surface. This provides that facets whose fins meet the condition approximate the surface sufficiently to within a specified distance. One method to evaluate whether a fin meets this condition is to evaluate the implicit function at a pair of points, one above the facet and one below, at the specified distance from the mid-point of the fin. If the evaluation above the facet is positive and the evaluation below the facet is negative, this indicates that the fin is likely to be within the specified distance of the surface. However, in practice, evaluating the implicit function once or twice at every fin in a large mesh becomes impractical.
[0062] As an alternative, the implicit function may be approximated in a neighbourhood of each fin using a spline function. Referring to Figures 8A–8D, a method of approximating an implicit function in a region of a fin is described. Figure 8A shows a portion 800 of a mesh representation of a surface (not shown in Figure 8A), comprising six facets. The method aims to approximate the surface in the neighbourhood of the fin 801.
[0063] Figure 8B shows surface normals 821, 822 at vertices 811, 812. The surface normals 821, 822, may be obtained using a weighted average of facet normal vectors surrounding vertices. In extreme cases, the facet normals at a vertex may vary so much that this method becomes unreliable. If this is the case, the facets may be marked as requiring improvement. The face 831 of the tetrahedron that generated the fin 801 is also shown in Figure 8B and an average 823 of the facet normals on the fin’s interior.
[0064] Figure 8C shows a cubic approximation 840 of the surface in the plane of the tetrahedron face 831. First, tangent vectors 841, 842 are obtained by taking the cross productsof the normals 821, 822 with the face normal of face 831. Then, a y-axis is chosen to be the direction of the new edge 843, lying in the tetrahedron face, that would be created were the tetrahedron split. An x-axis is chosen to be perpendicular to this, also lying in the tetrahedron face. The tangent vectors 841, 842 together with the vertex positions may be used to determine the cubic 840 in the x-y co-ordinate system. The maximum deviation from the fin 801 may be calculated by identifying the point 844 where the cubic curve’s gradient equals the fin’s gradient. Figure 8D shows a side view in the direction of the fin 801. The fin’s accuracy is estimated by measuring the distance 851 from the point 844 to the fin, in the direction 823 of the average of the fin’s two facet normals. Line 852 represents the tetrahedron face 831 viewed edge-on.
[0065] In a second example, the predefined tolerance conditions may include a condition that specifies that the height to width ratio of each facet in the mesh representation exceeds a predetermined threshold value. This provides that facets are well-proportioned and not too skinny. Skinny facets may impact the performance of subsequent operations which use the mesh.
[0066] At block 260, for each facet identified as failing to meet the predefined conditions, the tetrahedron that generated the facet is modified. At block 270, facets in the initial mesh representation are regenerated, based on the modified tetrahedra. Blocks 250 to 270 may be repeated as many times as required until all facets meet the predefined tolerance conditions or, for example, until a fixed number of iterations have been performed.
[0067] According to examples described herein, different approaches to modifying the tetrahedra may be used depending on the type of condition the facet has failed to meet. In cases where the facet is a poor approximation to the surface, an edge of the tetrahedron that generated the facet may be split resulting in new tetrahedra.
[0068] Figure 9A and 9B show an example of edge splitting for tetrahedra. In Figure 9A, a face of a tetrahedron 901 is shown. A fin 911 of a facet in a mesh representation generated by the method described herein passes through the face. The edge 921 of the tetrahedron 901 is split, resulting in a pair of tetrahedra 902, 903 as shown in Figure 9B. When the mesh representation is regenerated, this replaces the fin 911, with two fins 912, 913.
[0069] Splits may be applied to each tetrahedron in the initial set of tetrahedra independently. However, it is important that for any two tetrahedra sharing a coincident face that the splits on that face are applied in the same order. In situations where there is morethan one split on a tetrahedron face, an ordering for the splits applied to edges on that face is determined before splitting is performed.
[0070] If there are splits to several of the edges of a tetrahedron, the situation may arise where it is not possible to achieve the required ordering of splitting. If so, it might be necessary to first split the tetrahedron into four using the centroid of the tetrahedron as an additional tetrahedron vertex.
[0071] The method described herein will find at most one zero of an implicit function on any particular edge. The initial set of covering tetrahedra is chosen to reduce the likelihood of there being more than one zero of the implicit function on any particular edge. However, it doesn’t guarantee it. If there is more than one zero of the implicit function along an edge, then it is highly likely that the mesh will be marked as requiring improvement in that region. The splitting of tetrahedron edges provides a means to ultimately find missing zeros.
[0072] In the case of skinny facets with a large height to width ratio, a different approach may be used to improve the initial set of tetrahedra. For these facets, the mesh may be improved by identifying the tetrahedron in which the facet lies, identifying a neighbouring tetrahedron and replacing the pair of tetrahedra with three tetrahedra, using a bi-stellar flip. This will delete the shared face between the two tetrahedra and add a new edge between the two tetrahedra vertices that do not belong to the shared face. The removal of the face results in an improved triangulation of the mesh in the region of the pair of tetrahedra.
[0073] Figures 10A–10D show an example of a bi-stellar flip and resulting facets. Figure 10A shows a pair of tetrahedra 1001, 1002, where the evaluation at one corner is positive and the evaluations at the other four corners are negative. Figure 10B shows the pair of facets 1011, 1012 that are obtained from connecting the zero-crossing points of the edges for each tetrahedron. In Figure 10B, the facet 1012 is undesirable for meshing purposes due to the large difference between the height and width of the facet. Figure 10C shows an example of tetrahedra resulting from a bi-stellar flip. In Figure 10C, the two tetrahedra from Figure 10A are transformed into three tetrahedra 1021, 1022, 1023. Figure 10D shows the pair of facets 1031, 1032 that are obtained from connecting the zero-crossing points of the edges for each new tetrahedron. The facets 1031, 1032 both have a better height to width ratio than the facets 1011, 1012.
[0074] The method described herein is faster and requires fewer calculations than the marching cubes algorithm for a given accuracy. Furthermore, the size of the facets varies depending on the local curvature of the surface. Thus, the resulting mesh more faithfullyrepresents the underlying surface at a given accuracy, with fewer facets than marching cubes. Furthermore, small modifications to one part of the surface do not alter the facets of a portion of the incarnated mesh that lie a long distance away from where the modifications were made.
[0075] The method 200 may be used in conjunction with additive manufacturing systems. In particular, the method may further comprise generating instructions to control an additive manufacturing device to fabricate the mesh representation of the surface. Since the mesh representation obtained by the method 200 provides an improved representation the local curvature of the surface, the resulting additively manufactured object has an improved finish with better surface quality. This reduces the need for post-processing and provides that the fabricated object matches the original design intent.
[0076] Figure 11 illustrates an example of a data processing system in which embodiments of the present disclosure may be implemented, for example a CAD application configured to perform the methods of the embodiments of the present disclosure as described herein. The data processing system 1100 comprises a processor 1110 connected to a local system bus 1120. The local system bus connects the processor to a main memory 1130 and graphics display adaptor 1140, which may be connected to a display 1150. The data processing system may communicate with other systems via a wireless user interface adapter connected to the local system bus 1120, or via a wired network, for example, to a local area network. Additional memory 1160 may also be connected via the local system bus 1120.
[0077] A suitable adaptor, such as wireless user interface adapter 1170, for other peripheral devices, such as a keyboard 1180 and mouse 1190, 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.
[0078] Further, in certain examples, devices referred to as input devices or output devices may both provide inputs and receive outputs of communications with the data processing system. Further, other peripheral hardware connected to the I / O controllers may include anytype of device, machine, or component that is configured to communicate with a data processing system.
[0079] 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 WindowsTM, LinuxTM, UNIXTM, iOSTM, and AndroidTMoperating systems.
[0080] In addition, the data processing system 1100 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.
[0081] Those of ordinary skill in the art will appreciate that the hardware depicted for the data processing system 1100 may vary for particular implementations. For example, the data processing system 1100 in this example may correspond to a computer, workstation, and / or a server. However, 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.
[0082] The data processing system 1100 may be connected to the network (not a part of data processing system 1100), 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 1100 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 1100). 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 performed by a single data processing system. Thus, it is to be understood that when referring to a dataprocessing 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.
[0083] The data processing system 1100 is adapted to carry out the methods in accordance with the embodiments described herein. For example, the keyboard 1180 and mouse 1190 may function as a user input device for receiving information from the user, the processor 1110 may be adapted to carry out the steps of the method and the display 1150 adapted 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 1100, may be provided to cause the computer to execute the steps of the methods of the embodiments of the present disclosure outlined above.
[0084] 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.
[0085] The present disclosure can 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
CLAIMS 1. A computer-implemented method for generating a mesh representation of a closed surface in a three-dimensional model, wherein the surface is defined by an implicit function, the method comprising: a) determining a set of covering spheres that enclose the surface; b) generating a triangulation of an exterior surface of the set of covering spheres and intersecting planes between each pair of covering spheres of the set of covering spheres; c) obtaining an initial set of tetrahedra based on the triangulation; d) generating, from the initial set of tetrahedra and a definition of the surface as the implicit function, an initial mesh representation of the surface as a plurality of facets; e) evaluating the initial mesh representation of the surface to identify facets in the initial mesh representation that fail to meet predefined tolerance conditions; and f) for each identified facet of the facets: i) modifying at least a tetrahedron that generated the respective facet; and ii) regenerating facets in the initial mesh representation based on the modified tetrahedra.
2. The method of claim 1, wherein the surface comprises a surface of a blended rod and ball lattice.
3. The method of claim 2, wherein a radius of each covering sphere of the set ofcovering spheres is at least 1.5 × (^^^^ + ^^^^),wherein ^^^^ is a maximum ball radius of the ball lattice, and wherein ^^^^ is a maximum blend radius.
4. The method of claim 1, further comprising: repeating steps e) and f) until the predefined tolerance conditions are met for every facet in the mesh representation.
5. The method of claim 1, wherein, for each covering sphere, the generating of the triangulation of the exterior surface of the respective covering sphere comprises:trimming the exterior surface of the sphere based on intersections of the sphere with further covering spheres in the set of covering spheres; generating a polyline approximation of the intersections; and triangulating the trimmed exterior surface.
6. The method of claim 5, wherein for each pair of covering spheres, the generating of the triangulation of the intersecting planes between each pair of covering spheres comprises: trimming an intersecting plane to: a) the polyline approximation of the intersection between the pair of spheres; and b) intersecting planes between further pairs of covering spheres, that lie between the pair of spheres; and triangulating the trimmed intersecting plane.
7. The method of claim 5 or 6, further comprising: applying a constrained Delaunay triangulation method to obtain the triangulation.
8. The method of claim 1, wherein the obtaining of the initial set of tetrahedra comprises: defining the initial set of tetrahedra based on vertices of the triangulation and centre points of the covering spheres.
9. The method of claim 1, wherein the generating of the initial mesh representation comprises: determining, for each tetrahedron in the set of tetrahedra, a set of points of intersection of the surface and edges of the tetrahedron, based on the implicit function; and forming the initial mesh representation based on the set of points.
10. The method of claim 1, wherein the predefined tolerance conditions specify that each fin of each facet lies within a predetermined threshold distance of the surface.
11. The method of claim 10, wherein the evaluating of the initial mesh representation comprises, for each fin of each facet: approximating the implicit function in a neighbourhood of the fin, based on a spline function; and determining whether the fin lies within the predetermined threshold distance based on the approximation.
12. The method of claim 11, wherein, when the fin of the facet does not lie within the predetermined threshold distance, the modifying of the tetrahedra comprises: splitting an edge of at least the tetrahedron that generated the facet to form further tetrahedra.
13. The method of claim 1, wherein the predefined tolerance conditions specify that a height to width ratio of each facet in the mesh representation exceeds a predetermined threshold value.
14. The method of claim 13, wherein the evaluating of the initial mesh representation comprises, for each facet: determining whether the height to width ratio of the facet is above the predetermined threshold value.
15. The method of claim 1, wherein, when a height to width ratio of a facet is below a predetermined threshold value, the modifying of the tetrahedra comprises: identifying a tetrahedron in a neighbourhood of the tetrahedron that generated the facet; and replacing the pair of tetrahedra with three tetrahedra via a bi-stellar flip.
16. A method of fabricating an object in an additive manufacturing system, wherein the object is represented as a closed surface defined by an implicit function in a three- dimensional model, the method comprising: generating a mesh representation of the surface based on the method of any one of claims 1 to 15; generating operating instructions to control the additive manufacturing system to fabricate the object, based on the mesh representation; and fabricating the object in the additive manufacturing system.
17. A computer-readable medium storing data which defines the representation of the object of claim 16, and the operating instructions adapted to control an additive manufacturing system to fabricate the object using the representation when the data is relayed to the additive manufacturing system.
Citation Information
Patent Citations
Methods of generating a component including a blended lattice
WO2024072408A1