Techniques for generating stylized quadrilateral meshes from triangle meshes
Through the automatic modification technology based on triangular meshes in the generative design process, stylized quadrilateral meshes and T-splines are generated, which solves the problems of aesthetics and manufacturability in generative design and improves design quality and manufacturing efficiency.
Patent Information
- Application Number
- CN201980066577.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-08-08
- Filing Date
- 2019-08-09
- Publication Date
- 2025-09-23
- Estimated Expiration
- 2040-01-24
AI Technical Summary
The 3D object designs generated by existing generative design processes usually do not reflect non-functional aesthetic preferences, resulting in time-consuming manual modifications by designers to improve aesthetics and manufacturability, affecting design quality and manufacturing efficiency.
By generating a simplified quadrilateral mesh based on the input triangular mesh, the design is automatically modified to reflect non-functional preferences using techniques such as skeleton extraction, simplification, orientation propagation, quadrilateral mesh generation and creasing to generate stylized T-splines.
Automatically modifying 3D object designs significantly reduces the time and effort to improve aesthetics and manufacturability, improving design quality and manufacturing efficiency.
Smart Images

Figure CN112823381B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims the benefit of priority to U.S. Provisional Patent Application Serial No. 62 / 716,842, filed on August 9, 2018, entitled “Process for Stylizing and Improving the Fabrication of Three-Dimensional Shapes,” and U.S. Patent Application Serial No. 16 / 536,241, filed on August 8, 2019, entitled “Techniques for Generating Stylized Quadrilateral Meshes from Triangular Meshes.” The subject matter of these related applications is hereby incorporated by reference. Background Art
[0003] Fields of various embodiments
[0004] Embodiments relate generally to computer-aided design and computer-aided design software, and more particularly, to techniques for generating a stylized quadrilateral mesh from a triangular mesh.
[0005] Related technical notes
[0006] Generative design for three-dimensional ("3D") objects is a computer-aided design ("CAD") process that automatically synthesizes designs for 3D objects that satisfy any number and type of high-level objectives and design constraints. In a typical generative design flow, a user specifies functional objectives and design constraints, and the generative design application then executes various multi-objective optimization algorithms to optimize potential solutions based on the functional objectives and design constraints. This type of design process is an evolutionary process that can produce a large number (e.g., thousands) of complex geometric designs that satisfy the functional objectives and design constraints. The generative design application presents these designs to the user in the context of a design space. The user can then explore the design space, manually review and evaluate different designs, and select one or more designs for additional design and / or manufacturing activities.
[0007] One disadvantage of using a generative design process is that the resulting designs typically do not reflect non-functional preferences. Specifically, the resulting designs often have "organic" shapes, meaning that the resulting designs may have undulating shapes that reflect the best way that different forces can affect the shape of the 3D objects that constitute the resulting design. In essence, the performance of organic shapes is optimized by a generative design process about a set of functional goals and design constraints, but the overall appearance of the organic shapes is not considered. Due to the popularity of organic shapes in typical generative design spaces, designs typically generated via a generative design process are not aesthetically acceptable to the designer. In addition, even if a specific design generated via a generative design process is aesthetically acceptable to the designer, it may be inefficient to manufacture the organic shapes included in the design. For example, in order to reproduce a mass that characterizes an organic shape, a computer numerical control ("CNC") milling machine may have to move along several different tool paths while performing many time-consuming grinding operations.
[0008] Compounding the above shortcomings is the fact that modifying a given design selected from a generative design space to reflect non-functional aesthetic preferences often involves a manual process that can be tedious and prohibitively time-consuming. Consequently, if the time allotted for design activities is limited, the designer may decide not to make certain modifications to the selected design at the time of interest. In such cases, the overall quality of the design may suffer, and manufacturing time may increase. For example, if the designer were to smooth out fewer organic shapes included in the selected design to save time, the design's manufacturability may be suboptimal, resulting in a more time-consuming and expensive back-end manufacturing process.
[0009] As previously stated, there is a need in the art for more efficient techniques for modifying 3D object designs (such as those produced through generative design processes) to reflect non-functional preferences. Summary of the Invention
[0010] One embodiment describes a computer-implemented method for automatically modifying a design of a three-dimensional (3D) object. The method includes generating a simplified quadrilateral mesh based on an input triangular mesh representing the 3D object design, a preferred orientation associated with at least a portion of the input triangular mesh, and at least one mesh complexity constraint; performing one or more operations to convert the simplified quadrilateral mesh into a simplified T-spline; and performing one or more operations to crease one or more edges included in the simplified T-spline to generate a stylized T-spline, wherein the stylized T-spline represents a stylized design that converges more closely to the preferred orientation than the 3D object design.
[0011] At least one technical advantage of the disclosed technology over the prior art is that, using the disclosed technology, the design of a three-dimensional (3D) object can be modified more efficiently to improve overall aesthetics and manufacturability. In particular, using the disclosed technology, the types of surfaces and edges in a design including organic shapes can be automatically modified to produce a final design with less wavy shapes and shapes that are better aligned with preferred orientations. As a result, the time and effort required to improve the aesthetics and manufacturability of a given 3D object design can be significantly reduced relative to more manual prior art methods. Further, because 3D object designs can be automatically modified using the disclosed technology, a greater number of modifications can be made to the 3D object designs within the budget allocated for the design activity, thereby increasing the overall aesthetic quality and manufacturability of these designs. These technical advantages provide one or more technical advances over prior art methods. BRIEF DESCRIPTION OF THE DRAWINGS
[0012] In order that the manner in which the above-described features of various embodiments may be understood in detail, the inventive concept, briefly summarized above, may be more particularly described with reference to various embodiments, some of which are illustrated in the accompanying drawings. It should be noted, however, that the drawings illustrate only typical embodiments of the inventive concept and are therefore not to be considered limiting of the scope in any way, and that other equally effective embodiments may exist.
[0013] Figure 1 is a conceptual illustration of a system configured to implement one or more aspects of various embodiments;
[0014] Figure 2 shows the Figure 1 Example illustrations of some intermediate outputs generated by the stylization subsystem of
[0015] Figure 3 According to various embodiments Figure 1 A more detailed diagram of the azimuth propagation engine; and
[0016] Figure 4 is a flow chart of method steps for automatically modifying a three-dimensional object design according to various embodiments. DETAILED DESCRIPTION
[0017] In the following description, numerous specific details are set forth to provide a more thorough understanding of various embodiments. However, it will be apparent to one skilled in the art that the concepts of the present invention may be practiced without one or more of these specific details.
[0018] System Overview
[0019] Figure 1is a conceptual illustration of a system 100 configured to implement one or more aspects of various embodiments. System 100 includes, but is not limited to, computing instances 110. For purposes of explanation, multiple instances of similar objects are represented by reference numerals identifying the object and, when necessary, parenthetical labels identifying the instance. In alternative embodiments, system 100 may include any number of computing instances 110. Any number of components of system 100 may be distributed across multiple geographic locations or implemented in any combination in one or more cloud computing environments (i.e., packaged shared resources, software, data, etc.).
[0020] As shown, computing instance 110 includes, but is not limited to, a processor 112 and a memory 116. Processor 112 can be any instruction execution system, device, or apparatus capable of executing instructions. For example, processor 112 can include a central processing unit ("CPU"), a graphics processing unit ("GPU"), a controller, a microcontroller, a state machine, or any combination thereof. Memory 116 stores content, such as software applications and data, for use by processor 112 of computing instance 110. In alternative embodiments, each of computing instances 110 can include any number of processors 112 and any number of memories 116 in any combination. Specifically, any number of computing instances 110 (including one) can provide a multi-processing environment in any technically feasible manner.
[0021] Memory 116 may be one or more of readily available memory devices such as random access memory ("RAM"), read-only memory ("ROM"), a floppy disk, a hard disk, or any other form of local or remote digital storage. In some embodiments, a storage device (not shown) may supplement or replace memory 116. The storage device may include any number and type of external memory accessible to processor 112. For example, and without limitation, the memory may include a secure digital card, an external flash memory, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
[0022] The computing instances 110 are configured to implement one or more applications or subsystems of applications. For purposes of explanation only, each application is depicted as residing in the memory 116 of a single computing instance 110 and executing on the processor 112 of a single computing instance 110. However, as will be appreciated by those skilled in the art, the functionality of each application may be distributed across any number of other applications residing in the memory 116 of any number of computing instances 110 and executing in any combination on the processors 112 of any number of computing instances 110. Further, the functionality of any number of applications or subsystems may be combined into a single application or subsystem.
[0023] Specifically, computing instance 110 is configured to automatically modify a 3D object design to reflect non-functional preferences, such as aesthetic preferences and preferences related to manufacturability. As referred to herein, a "3D object design" is a design of a 3D object. A 3D object can be any type of object and, in a hierarchical manner, can include any number of other 3D objects. Typically, automated manufacturing tools / equipment are used to automatically generate many 3D objects based on a single 3D object design. Furthermore, a 3D object design can be represented using any number of different formats / models.
[0024] For example, a 3D object design can be represented as a polygonal mesh that uses vertices, edges, and faces to specify the surface of the 3D object. Each vertex is a point in 3D space, two vertices connected by a straight line define an edge, three vertices interconnected via three edges define a triangle, four vertices interconnected via four edges define a four-sided polygon (a "quad"), and so on. In general, a group of polygons connected together by shared vertices is called a polygonal mesh. More specifically, a group of triangles interconnected via shared vertices is called a triangle mesh, and each triangle represents a different face of the associated 3D object. A triangle mesh is also commonly referred to as a "triangle mesh." Similarly, a group of quadrilaterals interconnected via shared vertices is called a quad mesh, and each quadrilateral represents a different face of the associated 3D object.
[0025] In another example, a 3D object design may be represented as a T-spline that specifies the surface of the 3D object as multiple smaller surfaces formed into smooth elements. Typically, T-splines can be viewed and manipulated by CAD tools as smooth surfaces or box meshes. In yet another example, a 3D object design may be represented as a boundary representation ("B-Rep"). A B-Rep specifies a 3D object as solid, bounded by associated surfaces and having an interior and an exterior. A B-Rep specifies both topological structure (e.g., faces, edges, and vertices) and geometric structure (e.g., surfaces, curves, and points). For purposes of explanation only, "design" refers to a 3D object design.
[0026] Because many techniques for automatically generating 3D object designs (e.g., generative design algorithms, topology optimization algorithms, etc.) typically do not take non-functional preferences into account, automatically generated 3D object designs that do not meet non-functional requirements often need to be modified. For example, a typical generative design application generates a design space that includes a large number (e.g., thousands) of complex geometric designs that meet any number of specified functional goals and design constraints. One disadvantage of using generative design applications is that the resulting designs often have organic shapes that are aesthetically unattractive or expensive / difficult to manufacture. Due to the prevalence of organic shapes in typical generative design spaces, designs typically generated via generative design applications are not aesthetically acceptable to designers.
[0027] Compounding the above shortcomings is the fact that modifying a given design selected from a generative design space to reflect non-functional aesthetic preferences often involves a manual process that can be tedious and prohibitively time-consuming. Consequently, if the time allotted for design activities is limited, the designer may decide not to make certain modifications to the selected design at the time of interest. In such cases, the overall quality of the design may suffer, and manufacturing time may increase.
[0028] Modify 3D object designs to reflect non-functional preferences
[0029] To address the aforementioned issues, computing instance 110 implements a stylization subsystem 102 that automatically modifies an input design represented by an input triangular mesh 106 to reflect non-functional preferences. Stylization subsystem 102 resides in memory 116 of computing instance 110 and executes on processor 112 of computing instance 110. As shown, stylization subsystem 102 includes, but is not limited to, a skeleton extraction engine 120, a simplification engine 130, an orientation propagation engine 140, a constraint generation engine 150, a quadrilateral mesh generation engine 160, and a crease engine 170. As depicted by the dashed box and arrows, in alternative embodiments, stylization subsystem 102 may also include a T-spline optimization engine 180 and / or a boundary representation (B-Rep) generation engine 190.
[0030] In alternative embodiments, the functionality of the skeleton extraction engine 120, simplification engine 130, orientation propagation engine 140, constraint generation engine 150, quad mesh generation engine 160, and creasing engine 170 as described herein can be implemented in any number of software applications in any combination. Each software application can reside in any number of memories 116 and execute on any number of processors 112, in any number of locations, and in any combination. Further, in different embodiments, any number of components of the stylization subsystem 102 and / or any of the techniques disclosed herein can be implemented, while other components and / or techniques can be omitted.
[0031] The stylization subsystem 102 can obtain the input triangle mesh 106 from any source and in any technically feasible manner. For example, in some embodiments, the stylization subsystem 102 obtains the input triangle mesh 106 based on input received from a user via a graphical user interface ("GUI"). For example, the user can select a triangle mesh representation of one of the designs generated by a generative design application as the input triangle mesh 106. In another example, the stylization subsystem 102 can obtain the input triangle mesh 106 from another software application via an application programming interface ("API").
[0032] As shown, the skeleton extraction engine 120 generates a skeleton 122 and a skeleton mapping set 124 based on the input triangle mesh 106 and the skeleton generation parameter set 118. The skeleton 122 represents the global shape and topology of the input triangle mesh 106 and includes, but is not limited to, any number of nodes ( Figure 1 not shown) and any number of edges ( Figure 1 106 ). Each node is a different point in 3D space, and each edge connects two nodes. Skeleton mapping set 124 includes, but is not limited to, any number of mappings (not shown) between skeleton 122 and input triangle mesh 106. More precisely, for each node and each edge in skeleton 122, a corresponding mapping in skeleton mapping set 124 specifies one or more associated vertices in input triangle mesh 106.
[0033] The skeleton generation parameter set 118 specifies values for any number of parameters that control how the skeleton extraction engine 120 generates the skeleton 122 and / or the quality of the skeleton 122. For example, in some embodiments, the skeleton generation parameter set 118 specifies the value of a skeleton complexity parameter that controls the complexity (e.g., the number of nodes and / or edges) of the skeleton 122. The skeleton extraction engine 120 can generate the skeleton 122 and the skeleton mapping set 124 in any technically feasible manner.
[0034] For example, in some embodiments, the skeleton extraction engine 120 collapses the input triangular mesh 106 to generate a collapsed mesh. The skeleton extraction engine 120 then merges the vertex groups in the collapsed mesh according to the skeleton complexity parameter value to generate the skeleton 122. For each node in the skeleton 122, the skeleton extraction engine 120 generates a mapping between the node and the vertex group from which the node was generated, and then adds the mapping to the skeleton map set 124. For each edge in the skeleton 122, the skeleton extraction engine 120 generates a mapping between the edge and the union of the two vertex groups associated with the two nodes connected via the edge, and then adds the mapping to the skeleton map set 124.
[0035] Skeleton extraction engine 120 may obtain skeleton generation parameter set 118 in any technically feasible manner. For example, in some embodiments, skeleton extraction engine 120 generates skeleton generation parameter set 118 based on input received from a user via a GUI or API. In alternative embodiments, skeleton generation parameter set 118 is omitted and skeleton extraction engine 120 operates in a default manner. In the same or other alternative embodiments, skeleton extraction engine 120 does not generate skeleton mapping set 124. Instead, stylization subsystem 102 may include a skeleton mapping engine that generates skeleton mapping set 124 based on skeleton 122 and input triangle mesh 106.
[0036] As shown, simplification engine 130 generates a simplified skeleton 132 based on input triangle mesh 106, skeleton 122, skeleton mapping set 124, and skeleton complexity threshold 128. In general, simplification engine 130 segments the edges of skeleton 122 and then removes redundant nodes and edges according to skeleton complexity threshold 128 to generate simplified skeleton 132. Thus, simplified skeleton 132 is a simplified version of skeleton 122.
[0037] More precisely, the simplification engine 130 simplifies the skeleton 122 based on the local curvature of the skeleton 122 and the rate of change of the cross-section of the input triangle mesh 106 along each path between any two nodes in the skeleton 122 having a degree higher than two. As referred to herein, the local curvature of the skeleton 122 along a path of the skeleton 122 is the derivative of the direction vector of an edge of the skeleton 122 with respect to the position along the path.
[0038] To determine the rate of change of the cross-sections of the input triangular mesh 106, the simplification engine 130 obtains cross-sections of the input triangular mesh 106 whose planes pass through the nodes of degree 2 in the skeleton 122. The simplification engine 130 uses the skeleton mapping set 124 to avoid generating cross-sections of portions of the input triangular mesh 106 that do not correspond to nodes in the skeleton 122. Subsequently, the simplification engine 130 performs a comparison operation between the cross-sections in each series of cross-sections. Each series of cross-sections follows a different path between two nodes of the skeleton having a degree greater than two. The simplification engine 130 can perform any number and type of comparison operations using any type of distance metric. For example, in some embodiments, the simplification engine 130 can align the cross-sections to each other and then calculate a distance metric value based on the area difference between the cross-sections.
[0039] The simplification engine 130 then segments each path between two nodes of the skeleton 122 with a degree greater than 2 using a segmentation metric based on the rate of change and local curvature of continuous cross-sections of the skeleton 122 at each node. The simplification engine 130 can implement any type of segmentation metric and use any segmentation algorithm and / or clustering algorithm to segment each path based on the segmentation metric value. For example, in some embodiments, the simplification engine 130 calculates a segmentation metric value for each node of the skeleton 122 and then compares the segmentation metric value to the skeleton complexity threshold 128. The simplification engine 130 designates nodes with segmentation metric values greater than the skeleton complexity threshold 128 as boundaries between segments and designates the remaining nodes (which are inside the segments) as redundant nodes. The simplification engine 130 then removes redundant nodes from the skeleton 122 to generate a simplified skeleton 132.
[0040] The simplification engine 130 may obtain the skeleton complexity threshold 128 in any technically feasible manner. For example, in some embodiments, the simplification engine 130 determines the skeleton complexity threshold 128 based on input received from a user via a GUI or API. In other embodiments, the simplification engine 130 sets the skeleton complexity threshold 128 equal to the parameters included in the skeleton generation parameter set 118. In alternative embodiments, the simplification engine 130 does not obtain the skeleton complexity threshold 128 and the simplification engine 130 operates in a default manner. In other alternative embodiments, the simplification engine 130 may obtain any number and type of parameters that customize the segmentation / simplification process in any technically feasible manner.
[0041] The orientation propagation engine 140 propagates the global orientation 136 and the local orientation set 138 to each node of degree one or two in the simplified skeleton 132 to generate an orientation set 142. The global orientation 136 is a 3D vector that specifies the preferred orientation of the quadrilateral face. In some embodiments, the global orientation 136 can be associated with a manufacturing process or a machining process. For example, the global orientation 136 can be a pooling direction associated with a molding manufacturing process or a machining direction associated with a three-axis subtractive manufacturing process.
[0042] The local orientation set 138 includes, but is not limited to, any number (including zero) of local orientation specifications. Each local orientation specification specifies the local orientation of a node in the simplified skeleton 132 and an associated subset. A local orientation is a 3D vector that specifies a preferred orientation of a quadrilateral face corresponding to the associated subset of the node. Thus, each local orientation specification is associated with a different portion of the simplified skeleton 132 and, therefore, a different portion of the initial design. The global orientation 136 and the local orientations included in the local orientation set 138 are also referred to herein as "preferred orientations." Note that the orientation propagation engine 140 ignores the global orientation 136 of nodes having a local orientation specified in the local orientation set 138.
[0043] Position propagation engine 140 may obtain global position 136 and local position set 138 in any technically feasible manner. For example, in some embodiments, position propagation engine 140 determines global position 136 and / or local position set 138 based on input received from a user via a GUI or API. In various embodiments, one or both of global position 136 and local position set 138 may be omitted, and position propagation engine 140 operates in a default manner with respect to the omitted preferred position.
[0044] The orientation set 142 includes, but is not limited to, a different local coordinate system for each node in the simplified skeleton 132 with one or two degrees ( Figure 1). In alternative embodiments, orientation set 142 may specify local coordinate systems for nodes of degree one or two in simplified skeleton 132 in any technically feasible manner. Orientation propagation engine 140 determines local coordinate systems based on global orientation 136, local orientation set 138, and the orientation and topology of simplified skeleton 132. Notably, orientation propagation engine 140 aligns local coordinate systems with each other and with associated preferred orientations. Figure 3 The position propagation engine 140 is described in more detail.
[0045] As shown, the constraint generation engine 150 generates a feature curve set 154 and a boundary-smoothed triangle mesh 152 based on the orientation set 142, the skeleton map set 124, and the input triangle mesh 106. Upon receiving the orientation set 142, the constraint generation engine 150 applies any number and type of mesh smoothing algorithms to the input triangle mesh 106 to generate a smoothed triangle mesh (not shown). For each triangle in the smoothed triangle mesh, the constraint generation engine 150 determines a "feature" angle between the triangle's normal vector and the local coordinate system associated with the triangle based on the skeleton map set 124 and the orientation set 142.
[0046] More specifically, the constraint generation engine 150 uses the skeleton mapping set 124 to identify the nodes associated with the triangles of the simplified skeleton 132. The constraint generation engine 150 then sets the feature angles equal to the direction of the surface normal of the triangle in the local coordinate system of the identified nodes (specified in the orientation set 142). Note that if the local orientation set 138 is not specified, the constraint generation engine 150 uses the global coordinate system defined by the global orientation 136 to calculate the feature angles of all triangles.
[0047] Subsequently, the constraint generation engine 150 divides the triangles in the smoothed triangular mesh into triangle groups based on the feature angles. The constraint generation engine 150 can divide the triangles in any technically feasible manner. For example, in some embodiments, the constraint generation engine 150 can use a machine learning model trained on data representing a preferred style with respect to feature angles and triangle groups to divide the triangles. In other embodiments, the constraint generation engine 150 can divide the triangles based on rules, heuristics, or functions associated with a style specified by the user via a GUI or API. For example, the constraint generation engine 150 can assign triangles associated with feature angles ranging from -90 degrees to -45 degrees to a first triangle group, triangles associated with feature angles ranging from -45 degrees to +45 degrees to a second triangle group, and triangles associated with feature angles ranging from +45 degrees to +90 degrees to a third triangle group.
[0048] The constraint generation engine 150 then uses any number and type of mesh boundary smoothing techniques to smooth the boundaries between the triangle groups of the smoothed triangle mesh and generate a boundary-smoothed triangle mesh 152. Note that in some embodiments, the smoothing process may involve local mesh reconstruction of one or more of the triangles at the boundary. As will be appreciated by those skilled in the art, each smoothed boundary is a sequence of triangle edges. The constraint generation engine 150 adds each of the smoothed boundaries to a feature curve set 154 as a different feature curve (not shown). Thus, the feature curve set 154 includes, but is not limited to, any number of feature curves, each of which is a sequence of triangle edges in the boundary-smoothed triangle mesh 152. Importantly, the feature curve set 154, together with the underlying boundary-smoothed triangle mesh 152, represents an orientation preference and, optionally, a preferred style.
[0049] The quadrilateral mesh generation engine 160 implements any number and types of quadrilateral mesh generation algorithms to generate a simplified quadrilateral mesh 164 based on the feature curve set 154, the boundary-smoothed triangular mesh 152, and the mesh complexity constraints 158. The feature curve set 154 constrains the orientation of the quadrilateral faces generated by the quadrilateral mesh generation engine 160. The mesh complexity constraints 158 constrain the complexity (e.g., the number of faces, edges, and / or vertices) of the simplified quadrilateral mesh 164. The mesh complexity constraints 158 can configure the quadrilateral mesh generation engine 160 to control the complexity of the simplified quadrilateral mesh 164 in any technically feasible manner. For example, in some embodiments, the mesh complexity constraints 158 specify a maximum number of quadrilateral faces that the simplified quadrilateral mesh 164 can have. The quadrilateral mesh generation engine 160 can obtain the mesh complexity constraints 158 in any technically feasible manner. For example, in some embodiments, quadrilateral mesh generation engine 160 determines mesh complexity constraint 158 based on input received from a user via a GUI or API.
[0050] Advantageously, simplified quadrilateral mesh 164 has the same topology as input triangular mesh 106 and approximates input triangular mesh 106, but better reflects non-functional preferences. Significantly, the complexity of simplified quadrilateral mesh 164 is limited by mesh complexity constraint 158, and the four faces of simplified quadrilateral mesh 164 are aligned with the preferred orientation. Typically, if input triangular mesh 106 represents an input design having an organic shape, simplified quadrilateral mesh 164 represents a simplified design having smoother surfaces and improved aesthetics relative to the preferred orientation. Furthermore, the time required to manufacture an object based on the simplified design can be less than the time required to manufacture an object based on the input design.
[0051] To facilitate subsequent design, optimization, and / or manufacturing operations, the quadrilateral mesh generation engine 160 generates simplified T-splines 162 based on the simplified quadrilateral mesh 164. The quadrilateral mesh generation engine 160 may convert the simplified quadrilateral mesh 164 into the simplified T-splines 162 in any technically feasible manner. The simplified T-splines 162 have the same topology as the input triangular mesh 106 and approximate the input triangular mesh 106, but better reflect non-functional preferences. In alternative embodiments, the quadrilateral mesh generation engine 160 may also fit the simplified T-splines 162 to the input triangular mesh 106. In other embodiments, the quadrilateral mesh generation engine 160 does not generate the simplified T-splines 162. Instead, the stylization subsystem 102 includes a T-spline generation engine that generates the simplified T-splines 162 based on the simplified quadrilateral mesh 164 and then optionally fits the simplified T-splines 162 to the input triangular mesh 106.
[0052] Note that the techniques described herein are illustrative rather than restrictive and may be modified without departing from the broader spirit and scope of the embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments and techniques. Furthermore, in various embodiments, any number of the techniques disclosed herein may be implemented, while other techniques may be omitted in any technically feasible manner.
[0053] In particular, and for purposes of explanation only, the functionality of the stylization subsystem 102 is described in the context of at least one quadrilateral mesh generation algorithm configured by a set of feature curves 154. However, any combination of techniques for generating a quadrilateral mesh having the same topology as a triangular mesh and approximating a triangular mesh while controlling the complexity and orientation of the generated quadrilateral faces is within the scope of the embodiments. In particular, a typical quadrilateral mesh generation algorithm optimizes the parameter mapping of the triangular mesh to the quadrilateral mesh to maximize the quality of the quadrilateral mesh while constraining the number of quadrilateral faces and the deviation from the triangular mesh. However, the manner in which the orientation of the quadrilateral faces can be constrained often varies based on the specific quadrilateral mesh generation algorithm, and the techniques described herein can be modified accordingly.
[0054] As a general matter, in alternative embodiments, any number and type of quadrilateral mesh generation algorithms may be configured in any technically feasible manner to simplify and / or control the orientation of shapes in the resulting simplified quadrilateral mesh 164. Specifically, any amount and type of "shape constraints" that control the orientation of quadrilateral faces generated by any type of quadrilateral mesh algorithm may be determined in any technically feasible manner. Furthermore, in alternative embodiments, the functionality of the skeleton extraction engine 120, simplification engine 130, orientation propagation engine 140, and constraint generation engine 150 may be modified to generate any number and type of shape constraints that are compatible with the implemented quadrilateral mesh generation algorithm.
[0055] For example, in some embodiments, simple contours can be generated for the beam-shaped portions of the input triangular mesh 106, and the quadrilateral mesh generation algorithm can be constrained to use these contours. In the same or other embodiments, the objective function associated with the quadrilateral mesh algorithm can be configured to penalize non-preferred orientations and / or the number of edges, vertices, and / or faces. In yet other alternative embodiments, the simplified T-splines 162 can be generated in any technically feasible manner based on any number and type of simplified contours and any number (including zero) and type of skeletons.
[0056] As shown, the crease engine 170 generates a stylized T-spline 172 based on the simplified T-spline 162, the simplified quadrilateral mesh 164, and the crease angle threshold 168. The crease angle threshold 168 is also referred to herein as the "crease threshold." For each edge of the simplified quadrilateral mesh 164, the crease engine 170 determines the "edge" angle where two quadrilaterals meet at the edge. If the edge angle exceeds the crease angle threshold 168 (e.g., 80 degrees), the crease engine 170 applies a crease to the corresponding edge of the simplified T-spline 162. Otherwise, the crease engine 170 does not apply a crease to the corresponding edge of the simplified T-spline 162.
[0057] In this manner, the crease engine 170 does not crease relatively smooth corners, but rather creases corners that are closer to right angles. After the crease engine 170 finishes applying creases to the simplified T-spline 162, the crease engine 170 stores the creased simplified T-spline 162 as a stylized T-spline 172. Advantageously, selectively adding creases to the simplified T-spline 162 can improve the manufacturability and aesthetics of the stylized design represented by the stylized T-spline 172 relative to both the simplified design represented by the simplified T-spline 162 and the input design represented by the input triangle mesh 106.
[0058] In alternative embodiments, the creasing engine 170 may perform any number of creasing operations on the simplified T-splines 162 to generate stylized T-splines 172 based on any relevant criteria and in any technically feasible manner. For example, in some embodiments, the creasing engine 170 may determine which edges to crease based on the simplified T-splines 162 rather than the simplified quadrilateral mesh 164. Further, the creasing engine 170 may determine which edges to crease based on the simplified T-splines 162 before fitting to the input triangular mesh 106, after fitting to the input triangular mesh 106, or without fitting to the input triangular mesh 106. In alternative embodiments, the creasing engine 170 may implement any type of rules, heuristics, algorithms, or trained machine learning models to determine which edges to crease.
[0059] After folding engine 170 generates stylized T-splines 172, stylization subsystem 102 provides stylized T-splines 172 to any number and type of software applications. Each software application can perform any number of design, optimization, and / or manufacturing operations based on stylized T-splines 172 and / or the stylized design represented by stylized T-splines 172.
[0060] As depicted by the dashed box and arrows, in an alternative embodiment, the stylization subsystem 102 optionally includes a T-spline optimization engine 180 and / or a B-Rep generation engine 190. The T-spline optimization engine 180 performs constrained optimization (i.e., fitting) of the stylized T-spline 172 to generate an optimized T-spline 182. More specifically, the T-spline optimization engine 180 optimizes the positions of vertices (i.e., control points) in the stylized T-spline 172 based on any number and type of constraints and / or goals associated with a user-specified preferred style and / or any number of additional requirements (e.g., performance requirements).
[0061] For example, a "flat bottom" constraint can specify that all vertices in the bottom surface need to have the same height. Similarly, a "flat top" constraint can specify that all vertices in the top surface need to have the same height. In some embodiments, a "prismatic style" configuration includes top / bottom flat constraints, objectives such as volume minimization, and other constraints such as mechanical stress constraints. The prismatic style configuration can be used to configure the T-spline optimization engine 180 to generate an optimized T-spline 182 representing a prismatic style design that is relatively easy to manufacture using a specific type of CNC machining method.
[0062] B-Rep generation engine 190 optionally converts stylized T-splines 172 or optimized T-splines 182 into stylized B-Reps 192. In general, a stylized design represented by stylized T-splines 172 may be converted into any number and types of different representations in any technically feasible manner.
[0063] Figure 2 shows the Figure 1 102. For purposes of explanation, the exemplary input design, represented by the input triangle mesh 106, includes organic shapes. As previously described herein, to reproduce the mass representing the organic shape, a CNC mill would have to move along many very long tool paths involving many time-consuming milling operations.
[0064] Skeleton extraction engine 120 generates skeleton 122 based on input triangular mesh 106. Notably, skeleton 122 accurately represents the global shape and topology of input triangular mesh 106. Subsequently, simplification engine 130 simplifies skeleton 122 to generate simplified skeleton 132. As shown, simplified skeleton 132 accurately represents the global shape and topology of triangular mesh 106, but the number of nodes and the number of edges in simplified skeleton 132 are respectively less than the number of nodes and the number of edges in skeleton 122.
[0065] As previously combined Figure 1 As described above, the orientation propagation engine 140 generates an orientation set 142 that the constraint generation engine 150 uses to generate a feature curve set 154. The feature curve set 154 and the mesh complexity constraints 158 configure the quadrilateral mesh generation engine 160 to generate a simplified T-spline 162 that represents a simplified design that is simpler and smoother than the input design represented by the input triangular mesh 106. Therefore, the time required for a CNC mill to manufacture an object based on the simplified design represented by the simplified T-spline 162 will be less than the time required for a CNC mill to manufacture an object based on the design represented by the input triangular mesh 106. Although Figure 2 Not shown in , but the creasing engine 170 then creases some of the edges in the simplified T-spline 162 to generate a stylized T-spline 172 .
[0066] Propagate one or more preferred orientations of quadrilateral faces
[0067] Figure 3 According to different embodiments Figure 11 is a more detailed illustration of the orientation propagation engine 140 of FIG. As shown, the orientation propagation engine 140 generates an orientation set 142 based on the simplified skeleton 132, the global orientation 136, and the local orientation set 138. The simplified skeleton 132 includes, but is not limited to, nodes 310(1)-310(N) and edges 320(1)-320(E), where N and E are any positive integers. Each edge 320 connects two nodes 310. The orientation propagation engine 140 includes, but is not limited to, a coordinate system initialization engine 340, a selective Y allocation engine 350, a Y propagation engine 360, and a Z allocation engine 370.
[0068] For each node 310(i) with a degree of one or two, the coordinate system initialization engine 340 generates and initializes a local coordinate system 330(i), and then adds the local coordinate system 330(i) to the orientation set 142. As shown, the local coordinate system 330(i) includes, but is not limited to, a local X-axis 332(i), a local Y-axis 334(i), and a local Z-axis 336(i). To initialize the local coordinate system 330(i), the coordinate system initialization engine 340 specifies the direction of the local X-axis 332(i) that is tangent to the direction of the simplified skeleton 132 at the node 310(i), sets the local Y-axis 334(i) to unspecified, and sets the local Z-axis 336(i) to unspecified. The coordinate system initialization engine 340 ignores nodes 310 that do not have a degree of one or two.
[0069] Thus, orientation set 142 includes, but is not limited to, a different local coordinate system 330 for each of nodes 310 having either one or two degrees. For purposes of explanation only, local coordinate system 330(i) corresponds to node 310(i). For purposes of illustration only, node 310(1) has two degrees, and therefore, orientation set 142 includes local coordinate system 330(1). Similarly, nodes 310(3) and 310(N) have one and two degrees, respectively. Consequently, orientation set 142 includes local coordinate systems 330(3) and 330(N). In contrast, node 310(2) has three degrees, and orientation set 142 does not include a corresponding local coordinate system 330.
[0070] The selective Y allocation engine 350 specifies the direction of any number of local Y axes 334(i) based on the global orientation 136 and the local orientation set 138. For each node 310(i) with a degree of one or two, the selective Y allocation engine 350 determines whether the node 310(i) is associated with a local orientation specified in the local orientation set 138. If the node 310(i) is associated with a local orientation, the selective Y allocation engine 350 selects the local orientation as the preferred orientation for the node 310(i). Otherwise, the Y allocation engine 350 selects the global orientation 136 as the preferred orientation for the node 310(i). If the preferred orientation is not approximately parallel to the local X-axis 332(i), the Y allocation engine 350 specifies the direction of the local Y axis 334(i) that is orthogonal to the local X-axis 332(i) and orthogonal to the preferred orientation at the node 310(i). Otherwise, the Y allocation engine 350 does not specify a local Y axis 334(i).
[0071] The Y propagation engine 360 propagates the local Y axis 334 that is assigned to determine the direction of the unassigned local Y axis 334. In some embodiments, the Y propagation engine 360 iteratively performs the following algorithm until the local Y axis 334 of all nodes 310 with a degree of 1 or 2 is assigned. For each node 310(i) with a degree of 1 or 2 and an unassigned local Y axis 334(i), the Y propagation engine 360 determines whether at least one of the two neighboring nodes 310 has a designated local Y axis 334. If neither neighboring node 310 has a designated local Y axis 334, the Y propagation engine 360 does not assign a direction to the local Y axis 334(i) during the current iteration.
[0072] Otherwise, for each neighboring node 310(j) having a designated local Y axis 334(j), the Y propagation engine 360 projects the local Y axis 334(j) onto the YZ plane at the node 310(i) to determine the associated projected direction. If only one of the neighboring nodes 310 has a designated local Y axis 334, the Y propagation engine 360 sets the local Y axis 334(i) as the projected direction. Otherwise, the Y propagation engine 360 sets the local Y axis 334(i) to the average of the projected directions.
[0073] Then, for each node 310(i) having a degree of one or two, the Z assignment engine 370 assigns a direction of a local Z axis 336(i) that is orthogonal to the local X axis 332(i) and to the local Y axis 334(i). In alternative embodiments, the orientation propagation engine 140 may determine the local coordinate system 330 in any technically feasible manner. For example, in various embodiments, the Y propagation engine 360 may implement any label propagation algorithm in any technically feasible manner to determine the direction of the local Y axis 334, rather than implementing the propagation algorithm previously described herein.
[0074] Figure 4 is a flow chart of method steps for automatically modifying a three-dimensional object design according to various embodiments. Figure 1-3 The method steps are described with reference to a system, but one skilled in the art will understand that any system configured to implement the method steps in any order falls within the scope of the various embodiments.
[0075] As shown, method 400 begins at step 402, where the skeleton extraction engine 120 generates a skeleton 122 and a skeleton mapping set 124 based on the input triangular mesh 106. The input triangular mesh 106 represents a 3D object design. At step 404, the simplification engine 130 generates a simplified skeleton 132 based on the input triangular mesh 106, the skeleton 122, the skeleton mapping set 124, and the skeleton complexity threshold 128. At step 406, the orientation propagation engine 140 propagates one or more preferred orientations (i.e., the global orientation 136 and / or the local orientations specified in the local orientation set 138) to each node with a degree of one or two in the simplified skeleton 132 to generate an orientation set 142. At step 408, the constraint generation engine 150 generates a feature curve set 154 and a boundary-smoothed triangular mesh 152 based on the orientation set 142, the simplified skeleton 132, the skeleton mapping set 124, and the input triangular mesh 106.
[0076] At step 410, the quadrilateral mesh generation engine 160 generates a simplified quadrilateral mesh 164 based on the feature curve set 154, the boundary-smoothed triangular mesh 152, and the mesh complexity constraint 158. At step 412, the quadrilateral mesh generation engine 160 converts the simplified quadrilateral mesh 164 into simplified T-splines 162. At step 414, the crease engine 170 creases any number of edges in the simplified T-splines 162 based on the crease angle threshold 168 to generate stylized T-splines 172 representing the stylized design. At step 416, the stylization subsystem 102 provides the stylized T-splines 172 to any number of software applications for further optimization and / or manufacturing operations. The method 400 then terminates.
[0077] In summary, the disclosed techniques can be used to efficiently modify designs to reflect non-functional preferences. In one embodiment, a stylization subsystem converts an input triangular mesh representing a 3D object design into stylized T-splines representing the stylized 3D object design based on mesh complexity constraints, one or more preferred orientations, and a crease angle threshold. The stylization subsystem includes, but is not limited to, a skeleton extraction engine, a simplification engine, an orientation propagation engine, a constraint generation engine, a quadrilateral mesh generation engine, and a crease engine. The skeleton extraction engine generates a skeleton representing the global shape and topology of the input triangular mesh. The skeleton extraction engine also generates a skeleton mapping set that specifies a mapping for each node and each edge in the skeleton to one or more vertices in the input triangular mesh. The simplification engine splits edges in the skeleton, determines redundant nodes / edges based on a skeleton complexity parameter, and removes the redundant nodes / edges to generate a simplified skeleton. The orientation propagation engine 140 determines a local coordinate system for each node of degree one or two in the simplified skeleton based on a global orientation and / or a local orientation set that specifies the local orientations of any number of nodes.
[0078] The constraint generation engine generates a set of feature curves and an underlying boundary-smoothed triangular mesh based on a local coordinate system associated with the simplified skeleton, the skeleton mapping set, and the input triangular mesh. The quadrilateral mesh generation engine generates a simplified quadrilateral mesh that has the same topology as the boundary-smoothed triangular mesh and approximates the boundary-smoothed triangular mesh, while limiting the complexity of the simplified quadrilateral mesh and controlling the orientation of the generated quadrilateral faces based on the feature curve set. The quadrilateral mesh generation engine then converts the simplified quadrilateral mesh into simplified T-splines. The crease engine creases any number of edges in the simplified T-splines based on a crease angle threshold to generate stylized T-splines. Finally, the stylization subsystem provides the stylized T-splines to any number of software applications for further optimization, design, format conversion, or manufacturing operations.
[0079] At least one technical advantage of the disclosed technology over the prior art is that the stylization subsystem can more efficiently modify the design of a 3D object to improve overall aesthetics and manufacturability. Specifically, the stylization subsystem automatically performs simplification, orientation, and crease operations that can modify the types of surfaces and edges in a design including organic shapes to produce a stylized design with less undulating shapes and faces that are better aligned with one or more preferred orientations. Thus, the time and effort required to improve the aesthetics and manufacturability of a given 3D object design can be significantly reduced relative to more manual prior art methods. Furthermore, because the stylization subsystem can automatically modify 3D object designs, a greater number of modifications can be made to 3D object designs within the allocated budget for design activities, thereby increasing the overall aesthetic quality and manufacturability of these designs. These technical advantages provide one or more technical advances over prior art methods.
[0080] 1. In some embodiments, a computer-implemented method for automatically modifying a three-dimensional (3D) object design comprises: generating a simplified quadrilateral mesh based on an input triangular mesh representing the 3D object design, a preferred orientation associated with at least a portion of the input triangular mesh, and at least one mesh complexity constraint; performing one or more operations to convert the simplified quadrilateral mesh into a simplified T-spline; and performing one or more operations to crease one or more edges included in the simplified T-spline to generate a stylized T-spline, wherein the stylized T-spline represents a stylized design that converges more to the preferred orientation than the 3D object design.
[0081] 2. The computer-implemented method of clause 1, wherein the preferred orientation is associated with at least one of a process, an aesthetic preference, and a style.
[0082] 3. The computer-implemented method of clause 1 or 2, wherein the input triangular mesh is generated using at least one of a generative design algorithm and a topology optimization algorithm.
[0083] 4. A computer-implemented method according to any one of claims 1 to 3, wherein generating the simplified quadrilateral mesh comprises generating one or more shape constraints based on the input triangular mesh and the preferred orientation; and executing a quadrilateral mesh generation algorithm based on the input triangular mesh, the one or more shape constraints, and the at least one mesh complexity constraint.
[0084] 5. A computer-implemented method according to any one of clauses 1-4, wherein generating the simplified quadrilateral mesh comprises configuring an objective function based on the preferred orientation; and executing a quadrilateral mesh generation algorithm based on the input triangular mesh, the objective function and the at least one mesh complexity constraint.
[0085] 6. A computer-implemented method according to any one of clauses 1-5, wherein generating the simplified quadrilateral mesh comprises generating a simplified skeleton based on the input triangular mesh; generating one or more shape constraints based on the simplified skeleton and the preferred orientation; and executing a quadrilateral mesh generation algorithm based on the input triangular mesh, the one or more shape constraints, and the at least one mesh complexity constraint.
[0086] 7. A computer-implemented method according to any one of clauses 1-6, wherein generating the simplified quadrilateral mesh comprises generating one or more characteristic curves based on the input triangular mesh and the preferred orientation, wherein each characteristic curve comprises a series of triangle edges; and executing a quadrilateral mesh generation algorithm based on the input triangular mesh, the one or more characteristic curves and the at least one mesh complexity constraint.
[0087] 8. A computer-implemented method according to any one of clauses 1-7, wherein performing the one or more operations to convert the simplified quadrilateral mesh includes generating an initial T-spline based on the simplified quadrilateral mesh; and fitting the initial T-spline to the input triangular mesh to generate the simplified T-spline.
[0088] 9. A computer-implemented method according to any one of clauses 1-8, wherein performing the one or more operations to cause one or more edges to be creased comprises: determining one or more edges included in the simplified T-spline that should be creased based on at least one of a rule, a heuristic, an algorithm, and a trained machine learning model; and for each edge included in the one or more edges, performing one or more crease operations on the edge.
[0089] 10. The computer-implemented method of any of clauses 1-9, wherein performing the one or more operations to crease one or more edges comprises: determining that a first angle associated with a first edge between two quadrilaterals included in the simplified quadrilateral mesh exceeds a crease threshold; determining that a second edge included in the simplified T-spline corresponds to the first edge; and performing one or more crease operations on the second edge;
[0090] 11. In some embodiments, one or more non-transitory computer-readable media comprising instructions that, when executed by one or more processors, cause the one or more processors to automatically modify a three-dimensional (3D) object design by performing the following steps: generating one or more shape constraints based on an input triangular mesh representing the 3D object design and a preferred orientation associated with at least a portion of the input triangular mesh; generating a simplified T-spline based on the input triangular mesh, the one or more shape constraints, at least one mesh complexity constraint, and a quadrilateral generation algorithm; and performing one or more operations to crease one or more edges included in the simplified T-spline to generate a stylized T-spline, wherein the stylized T-spline represents a stylized design that converges more to the preferred orientation than the 3D object design.
[0091] 12. One or more non-transitory computer-readable media as recited in clause 11, wherein the preferred orientation is associated with a pooling direction as part of a molding manufacturing process or a machining direction as part of a tri-axis subtractive manufacturing process.
[0092] 13. One or more non-transitory computer-readable media according to clause 11 or 12, wherein the 3D object design comprises at least one organic shape.
[0093] 14. One or more non-transitory computer-readable media according to any one of clauses 11-13, wherein generating the one or more shape constraints comprises generating a simplified skeleton based on the input triangular mesh; and determining the one or more shape constraints based on the simplified skeleton and the preferred orientation.
[0094] 15. One or more non-transitory computer-readable media according to any of clauses 11-14, wherein the one or more shape constraints comprise one or more characteristic curves, and each characteristic curve comprises a series of triangle edges.
[0095] 16. One or more non-transitory computer-readable media according to any one of clauses 11-15, wherein generating the simplified T-spline comprises executing the quadrilateral mesh generation algorithm to generate a simplified quadrilateral mesh based on the input triangular mesh, the one or more shape constraints and the at least one mesh complexity constraint; and performing one or more operations to convert the simplified quadrilateral mesh into the simplified T-spline.
[0096] 17. One or more non-transitory computer-readable media according to any one of clauses 11-16, wherein generating the simplified T-spline comprises executing the quadrilateral mesh generation algorithm based on the input triangular mesh, the one or more shape constraints and the at least one mesh complexity constraint to generate a simplified quadrilateral mesh; performing one or more operations to convert the simplified quadrilateral mesh into an initial T-spline; and fitting the initial T-spline to the input triangular mesh to generate the simplified T-spline.
[0097] 18. One or more non-transitory computer-readable media according to any one of clauses 11-17, wherein performing the one or more operations to crease one or more edges comprises: determining one or more edges included in the simplified T-spline that should be creased based on at least one of a rule, a heuristic, an algorithm, and a trained machine learning model; and for each edge included in the one or more edges, performing one or more crease operations on the edge.
[0098] 19. One or more non-transitory computer-readable media according to any one of clauses 11-18, wherein performing the one or more operations to crease one or more edges comprises: determining that a first angle associated with a first edge included in the simplified T-spline exceeds a crease threshold; and performing one or more crease operations on the first edge.
[0099] 20. In some embodiments, a system for automatically modifying a three-dimensional (3D) object design includes: one or more memories storing instructions; and one or more processors coupled to the one or more memories, and when executing the instructions, the one or more processors are configured to generate a simplified quadrilateral mesh based on an input triangular mesh representing the 3D object design, a preferred orientation associated with at least a portion of the input triangular mesh, and at least one mesh complexity constraint; perform one or more operations to convert the simplified quadrilateral mesh into a simplified T-spline; and perform one or more operations to crease one or more edges included in the simplified T-spline to generate a stylized T-spline, wherein the stylized T-spline represents a stylized design that converges more to the preferred orientation than the 3D object design.
[0100] Any and all combinations of any claim elements recited in any claim and / or any elements described in this application, in any manner, are within the intended scope of the embodiments and protection.
[0101] The description of the various embodiments has been presented for purposes of illustration, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments.
[0102] Aspects of the present embodiment may be embodied as a system, method or computer program product. Therefore, aspects of the present disclosure may take the following forms: a complete hardware embodiment, a complete software embodiment (including firmware, resident software, microcode, etc.) or an embodiment combining software and hardware aspects, which may all be collectively referred to herein as a "module," "system" or "computer." Additionally, any hardware and / or software technology, process, function, component, engine, module or system described in the present disclosure may be implemented as a circuit or circuit set. Additionally, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer-readable media having a computer-readable program code embodied therein.
[0103] Any combination of one or more computer-readable media can be utilized. Computer-readable media can be a computer-readable signal medium or a computer-readable storage medium. Computer-readable storage media can be, for example, but not limited to, electrical, magnetic, optical, electromagnetic, infrared or semiconductor systems, devices or equipment, or any suitable combination of the above. More specific examples (non-exhaustive enumeration) of computer-readable storage media include: an electrical connection with one or more wires, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this article, a computer-readable storage medium can be any tangible medium that can contain or store a program that is used or combined by an instruction execution system, device or equipment.
[0104] Aspects of the present invention are described above with reference to flowchart illustrations and / or block diagrams of methods, devices (systems) and computer program products according to embodiments of the present invention. It should be understood that each block of the flowchart and / or block diagram and the combination of each block in the flowchart and / or block diagram can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer or other programmable data processing device to produce a machine. When the instruction is executed via the processor of a computer or other programmable data processing device, the function / action specified in one or more blocks of the flowchart and / or block diagram can be realized. Such a processor can be, but is not limited to, a general-purpose processor, a special-purpose processor, a special-purpose application processor or a field programmable gate array.
[0105] The flow charts and block diagrams in the accompanying drawings illustrate the possible architecture, function and operation of the system, method and computer program product according to various embodiments of the present disclosure. To this end, each box in the flow chart or block diagram can represent a part for a module, program segment or code, and the part for the module, program segment or code comprises one or more executable instructions for realizing the logical functions of one or more specifications. It should also be noted that in some alternative embodiments, the function marked in the frame may not occur in the order marked in the figure. For example, depending on the function involved, the two boxes shown in succession can actually be performed substantially simultaneously, or these boxes can sometimes be performed in reverse order. It will also be noted that the combination of each box in the block diagram and / or flow chart and the box in the block diagram and / or flow chart can be realized by a system based on dedicated hardware or a combination of dedicated hardware and computer instructions that performs a specified function or action.
[0106] While the foregoing is directed to embodiments of the present disclosure, other and further embodiments of the disclosure may be devised without departing from the basic scope thereof, and the scope of the same is determined by the claims that follow.
Claims
1. A computer-implemented method for automatically modifying a three-dimensional (3D) object design, the method comprising: generating a simplified quadrilateral mesh based on an input triangular mesh representing the 3D object design, a preferred orientation associated with at least a portion of the input triangular mesh, and at least one mesh complexity constraint; performing one or more operations to convert the simplified quadrilateral mesh into simplified T-splines; as well as One or more operations are performed to crease one or more corners associated with one or more edges included in the simplified T-spline to generate a stylized T-spline, wherein the stylized T-spline represents a stylized design that is more aligned with a 3D vector than with the 3D object design, and wherein the 3D vector specifies the preferred orientation. 2 . The computer-implemented method of claim 1 , wherein the preferred orientation is associated with at least one of a manufacturing process, an aesthetic preference, and a style. 3 . The computer-implemented method of claim 1 , wherein the input triangular mesh is generated using at least one of a generative design algorithm and a topology optimization algorithm.
4. The computer-implemented method of claim 1 , wherein generating the simplified quadrilateral mesh further comprises: generating one or more shape constraints based on the input triangle mesh and the preferred orientation; as well as A quadrilateral mesh generation algorithm is performed based on the input triangular mesh, the one or more shape constraints, and the at least one mesh complexity constraint.
5. The computer-implemented method of claim 1 , wherein generating the simplified quadrilateral mesh further comprises: configuring an objective function based on the preferred orientation; as well as A quadrilateral mesh generation algorithm is performed based on the input triangular mesh, the objective function, and the at least one mesh complexity constraint.
6. The computer-implemented method of claim 1 , wherein generating the simplified quadrilateral mesh further comprises: generating a simplified skeleton based on the input triangular mesh; generating one or more shape constraints based on the simplified skeleton and the preferred orientation; as well as A quadrilateral mesh generation algorithm is performed based on the input triangular mesh, the one or more shape constraints, and the at least one mesh complexity constraint.
7. The computer-implemented method of claim 1 , wherein generating the simplified quadrilateral mesh further comprises: One or more characteristic curves are generated based on the input triangle mesh and the preferred orientation, wherein Each characteristic curve consists of a series of triangular sides; as well as A quadrilateral mesh generation algorithm is performed based on the input triangular mesh, the one or more characteristic curves, and the at least one mesh complexity constraint.
8. The computer-implemented method of claim 1 , wherein performing the one or more operations to convert the simplified quadrilateral mesh comprises: generating an initial T-spline based on the simplified quadrilateral mesh; as well as The initial T-spline is fitted to the input triangular mesh to generate the simplified T-spline.
9. The computer-implemented method of claim 1 , wherein performing the one or more operations to crease one or more corners associated with the one or more edges comprises: determining one or more edges included in the simplified T-spline that should be creased based on at least one of a rule, a heuristic, an algorithm, and a trained machine learning model; and For each edge included in the one or more edges, one or more creasing operations are performed on edge corners associated with the edge.
10. The computer-implemented method of claim 1 , wherein performing the one or more operations to crease one or more corners associated with the one or more edges comprises: determining that a first angle associated with a first edge between two quadrilaterals included in the simplified quadrilateral mesh exceeds a crease threshold; determining that a second edge included in the simplified T-spline corresponds to the first edge; as well as One or more creasing operations are performed on corners associated with the second side.
11. One or more non-transitory computer-readable media comprising instructions that, when executed by one or more processors, cause the one or more processors to automatically modify a three-dimensional (3D) object design by performing the following steps: generating one or more shape constraints based on an input triangular mesh representing a design of the 3D object and a preferred orientation associated with at least a portion of the input triangular mesh; generating a simplified T-spline based on the input triangular mesh, the one or more shape constraints, at least one mesh complexity constraint, and a quadrilateral mesh generation algorithm; and One or more operations are performed to crease one or more corners associated with one or more edges included in the simplified T-spline to generate a stylized T-spline, wherein the stylized T-spline represents a stylized design that converges more toward a 3D vector specifying the preferred orientation relative to the 3D object design.
12. The one or more non-transitory computer-readable media of claim 11, wherein the preferred orientation is associated with a pooling direction as part of a molding manufacturing process or a machining direction as part of a tri-axis subtractive manufacturing process.
13. The one or more non-transitory computer-readable media of claim 11, wherein the 3D object design comprises at least one organic shape.
14. The one or more non-transitory computer-readable media of claim 11 , wherein generating the one or more shape constraints comprises: generating a simplified skeleton based on the input triangular mesh; as well as The one or more shape constraints are determined based on the simplified skeleton and the preferred orientation. 15 . The one or more non-transitory computer-readable media of claim 11 , wherein the one or more shape constraints comprise one or more characteristic curves, and each characteristic curve comprises a series of triangle edges.
16. The one or more non-transitory computer-readable media of claim 11, wherein generating the simplified T-spline comprises: executing a quadrilateral mesh generation algorithm based on the input triangular mesh, the one or more shape constraints, and the at least one mesh complexity constraint to generate a simplified quadrilateral mesh; as well as One or more operations are performed to convert the simplified quadrilateral mesh into the simplified T-spline.
17. The one or more non-transitory computer-readable media of claim 11, wherein generating the simplified T-spline comprises: executing a quadrilateral mesh generation algorithm based on the input triangular mesh, the one or more shape constraints, and the at least one mesh complexity constraint to generate a simplified quadrilateral mesh; performing one or more operations to convert the simplified quadrilateral mesh into an initial T-spline; as well as The initial T-spline is fitted to the input triangular mesh to generate the simplified T-spline.
18. A system for automatically modifying a three-dimensional (3D) object design, the system comprising: one or more memories storing instructions; as well as one or more processors coupled to the one or more memories, and when executing the instructions, the one or more processors are configured to: generating a simplified quadrilateral mesh based on an input triangular mesh representing the 3D object design, a preferred orientation associated with at least a portion of the input triangular mesh, and at least one mesh complexity constraint; performing one or more operations to convert the simplified quadrilateral mesh into simplified T-splines; as well as One or more operations are performed to crease one or more corners associated with one or more edges included in the simplified T-spline to generate a stylized T-spline, wherein the stylized T-spline represents a stylized design that converges more toward a 3D vector specifying the preferred orientation relative to the 3D object design.
Citation Information
Patent Citations
Method of altering a mesh model using model independent dirichlet parametrization
US20090231334A1
Systems and methods for generating volumetric models
WO2017203528A1