Systems, methods and file formats for 3D printing of microstructures
By introducing .MESO file format and optimized slice process, the problem of difficulty in printing complex microstructures in the prior art is solved, efficient design and manufacturing of dense microstructures is achieved, and the flexibility and accuracy of 3D printing is improved.
Patent Information
- Application Number
- CN202180024444.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-07-30
- Filing Date
- 2021-03-24
- Publication Date
- 2025-05-13
- Estimated Expiration
- 2041-03-24
AI Technical Summary
Existing 3D printing techniques are difficult to print complex microstructures, such as fur, feather, microlattice or braided fabrics, directly due to the lack of high-resolution CAD models and the computational costly slicing process.
A new file format is provided.MESO, which represents 3D microstructures and combines the slicing process to support high-resolution 3D printing. This file format optimizes material design and engineering through data structures and methods, allowing for the design and printing of dense microstructures that were previously considered expensive or impossible.
It realizes efficient representation and processing of complex microstructures, reduces material use and weight, supports the design and manufacturing of mechanical metamaterials, realizes bionic design and customized surface textures, and improves the flexibility and accuracy of 3D printing.
Smart Images

Figure CN115334932B_ABST
Abstract
Description
[0001] Related Applications
[0002] This application is a provisional (35 USC 119(e)) non-provisional of U.S. application serial number 62 / 994,582, filed on March 25, 2020, entitled “SYSTEMS, METHODS AND FILE FORMAT FOR 3D PRINTING OF MICROSTRUCTURES”, and this application is a provisional (35 USC 119(e)) non-provisional of U.S. application serial number 63 / 058,782, filed on July 30, 2020, entitled “SYSTEMS, METHODS AND FILE FORMAT FOR 3D PRINTING OF MICROSTRUCTURES”. The entire contents of these applications are incorporated herein by reference in their entirety.
[0003] Notice of Copyrighted Material
[0004] Portions of material in this patent document are protected by copyright under the copyright laws of the United States and other countries. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the U.S. Patent and Trademark Office publicly available file or records, but otherwise reserves all copyright rights. The copyright owner hereby does not waive any rights to have this patent document maintained in confidence, including but not limited to the rights pursuant to 37 C.FR §1.14. Background Art
[0005] There are many different types of 3D printing technologies for constructing three-dimensional objects from digital 3D models. The 3D printing process can use a variety of processes in which computer control is used to deposit, join or solidify materials to create objects using plastics, liquid or powder particles, and other materials. Summary of the invention
[0006] Recent 3D printing techniques can allow for complex geometries that are difficult or impossible to manufacture using conventional manufacturing techniques. In some embodiments, the inventors have realized that high-resolution stereolithography 3D printing can be used, particularly digital light processing (DLP) printing techniques, which allow for printing resolutions of less than 100 μm. High-resolution 3D printing can allow one to produce complex structures to reduce the weight of an object, construct metamaterials, realize biomimetic designs, or simply achieve aesthetic surface textures.
[0007] Despite the increased resolution of recent 3D printers, it is impractical to directly print very dense microstructures such as fur, feathers, microlattices, or woven fabrics. This may be mainly due to the lack of effective digital representations of CAD models with fine material structures. Typically, 3D printers and related CAD / CAM design software are usually optimized for processing medium to large-scale solid objects. These objects can be faithfully represented by triangular meshes, which can be converted to .stl or other mesh-type data formats between parties. They are also characterized by their smooth finish, which has become a major feature of the latest 3D printers. However, when it comes to representing and processing dense microstructures, the files representing these microstructures become very large, and slicing these complex structures for printing may also be computationally expensive.
[0008] In some embodiments described herein, systems, methods, and new file formats for printing 3D microstructures are provided. Such microstructures may have high-precision features, for example, from 0.001 to 5 mm. These features may include surface relief textures, three-dimensional woven structures, meshes, fur, or feather-like structures. These small features typically require high fidelity to capture the subtle differences in softness, stretchability, and touch. Using conventional CAD methods, an accurate 3D model of each single strand can theoretically produce a high-fidelity representation of these subtle differences, but such files will be very large and will be difficult to process and print. For example, a typical fur sample may contain thousands of hairs per square inch, meaning that a simple clothing design with millions of triangles may be cumbersome and impractical.
[0009] To address this dilemma between file economy and geometric fidelity, a new file format for representing 3D microstructures, referred to herein as the MESO format (.MESO or .meso), is provided to serve as a high-level interface between designers and 3D printers. In some embodiments, this file exchange format establishes an efficient workflow for computational design and data transfer within our printing ecosystem to get from sketches and designs to finished prints.
[0010] In some embodiments, a .meso file format and slicing process are provided that open new spaces for material design and engineering. One goal is to support designers and engineers in modeling dense microstructures that were previously considered computationally expensive or impossible. Specifically, such dense structures can be used for different applications as further outlined below. Such embodiments can allow one or more improvements, including:
[0011] Reduced material usage and weight: Bulk solid structures can be replaced by carefully designed micro-lattice structures. In some embodiments, the geometry of the lattice determines the overall mechanical properties of the design. In this way, manufacturers can reduce the material used for 3D printing and reduce the weight of the overall design.
[0012] Mechanical metamaterials: By incorporating micro-compliant, jointed, or hinged structures, the ability to design and fabricate mechanical metamaterials that exhibit negative Poisson's ratio (e.g., auxetic structures or materials that thicken in a direction perpendicular to the applied force and thus have high energy absorption and fracture resistance) is provided. In this way, new mechanical elements that exhibit certain structural properties can be created.
[0013] Biomimetic Design: Natural materials can outperform artificial materials, primarily due to their layered structures. Materials like fur or feathers are difficult to model with traditional CAD software and difficult to accurately replicate with other manufacturing methods. In some embodiments described herein, the complexity of modeling is greatly reduced while maintaining the density and fine details of such structures for 3D printing.
[0014] Customized surface textures: Many physical products used commercially contain surface textures, such as wrinkles, dents, bumps, reliefs, etc. According to some embodiments, such textures can be designed and manufactured at extremely high resolutions. Such textures can be easily customized individually, rather than mass produced.
[0015] According to one aspect, a data format for representing a 3D object is provided, comprising a data structure. The format comprises: node information identifying a plurality of 3D coordinates within a 3D wireframe object; line information identifying a plurality of nodes that collectively identify a line object within the 3D wireframe object; and shell information identifying a surface to which the line object is attached, wherein interpretation of the data structure is used to control a 3D printing operation. According to one embodiment, the data structure further comprises a populate function that defines repeated replication of the line object to a plurality of points on a surface. According to one embodiment, the data structure further comprises a blend function that is adapted to blend at least two geometric shapes. According to one embodiment, the data structure further comprises mesh information that describes a legacy mesh geometry. According to one embodiment, the data structure further comprises a branch function that describes one or more sub-objects attached to the line object. According to one embodiment, the data structure further comprises a parameter that controls at least one of the thickness, shape, and / or distortion of the line object. According to one embodiment, the data format renders a representation of the 3D object when received and interpreted by a computer system. According to one embodiment, the data structure is used to generate a 3D swab or applicator. According to one embodiment, the data structure is used to generate a hybrid design of at least two designs.
[0016] According to one aspect, a method for processing a digital representation of a 3D object is provided. The method includes: providing a wireframe representation of the 3D object, the wireframe representation defining at least one line; determining a slice of the 3D object to be processed; determining at least one intersection point for the determined slice, the at least one intersection point defining an intersection of at least one line of the wireframe representation with the slice of the 3D object; and determining a corresponding shape associated with the intersection point to be rendered for the intersection point. According to one embodiment, the action of rendering the corresponding shape associated with the intersection point also includes determining the corresponding shape based on at least one parameter of the at least one line. According to one embodiment, the at least one parameter includes at least one or more of the group including thickness, shape and distortion of the line object. According to one embodiment, the action of determining the corresponding shape associated with the intersection point to be rendered also includes determining the corresponding shape based on an intersection angle between the slice and the at least one line. According to one embodiment, the action of determining the corresponding shape associated with the intersection point to be rendered also includes determining the corresponding shape based on an intersection angle between the slice and the shape of the at least one line. According to one embodiment, the method also includes determining at least one different slice of the 3D object to be processed, and for the slice and the at least one different slice, processing them in parallel by different processing entities. According to one embodiment, information about any lines of the wireframe representation that intersect with the associated slice to be processed is provided to different processing entities. According to one embodiment, the act of slicing is performed as part of a printing step. According to one embodiment, the method also includes a process for determining a mesh representation for at least one portion of the 3D object and combining the slice of the mesh representation with the corresponding slice of the wireframe representation to form a combined slice. According to one embodiment, the method also includes the act of using a vector space to calculate, for each slice of the 3D object to be processed, a plurality of lines that intersect with the corresponding slice of the 3D object. According to one aspect, the method also includes the act of using a linear equation to determine a plurality of lines that intersect with the corresponding slice of the 3D object. According to one aspect, the method also includes the act of determining, for each slice of the 3D object, a set of intersection points of the lines representing the wireframe that intersect with the corresponding slice of the 3D object.
[0017] According to one aspect, a method for processing a digital representation of a 3D object is provided. The method includes: providing a wireframe representation of the 3D object; segmenting the wireframe representation into a plurality of blocks; assigning each of the plurality of blocks to a corresponding processing entity; and rendering each of the plurality of blocks substantially in parallel by the corresponding processing entity. According to one embodiment, the method also includes the act of segmenting the wireframe representation into the plurality of blocks and also includes the act of determining, for at least one of the plurality of blocks, a subset of line objects of the wireframe representation that intersect with at least one of the plurality of blocks. According to one embodiment, the method also includes the act of determining a representation of at least one of the plurality of blocks of the wireframe representation. According to one embodiment, the method also includes the act of providing a representation of at least one of the plurality of blocks of the wireframe representation to its assigned processing entity. According to one embodiment, the method also includes the act of providing, for at least one of the plurality of blocks, line information to its assigned processing entity, the line information being associated with lines that intersect with at least one of the plurality of blocks. According to one embodiment, the method also includes the act of merging each of the rendered plurality of blocks into a model representing the 3D object. According to one embodiment, the method also includes representing the lines of the wireframe representation as a series of nodes. According to one embodiment, the method further comprises representing the line by a plurality of parameters including at least one of thickness, shape and twist of the line.
[0018] According to one aspect, a 3D printed swab or applicator is provided. The swab or applicator comprises: a spherical object having an internal lattice structure that provides structural strength and fluid retention, a reinforcing mesh structure on the internal lattice structure that contributes to the shape of the spherical object and absorbs fluid, and a plurality of hairs protruding from the reinforcing mesh structure; and a handle connected to the spherical object. According to one embodiment, the handle comprises parallel strands of wire that are bound together and reinforced by loops between the strands. According to one embodiment, the handle comprises a latticed rod wall structure and an internal shear reinforcement element. According to one embodiment, the handle comprises a breaking point with a reduced diameter of the parallel strands. According to one embodiment, the hairs are reinforced near their mid-portions. According to one embodiment, the hairs are arranged in a spiral array. According to one embodiment, the internal lattice structure is continuous between the spherical object and the handle. According to one embodiment, the internal lattice structure is printed by a shell offset from a free-form curve. According to one embodiment, the hairs have a diameter of less than about 100 μm. According to one embodiment, a swab is defined by a data structure comprising a plurality of line information identifying a plurality of nodes that collectively identify at least one line object.
[0019] According to one aspect, a 3D printed swab or applicator is provided. The applicator comprises: a spherical object; and a rod, wherein the spherical object comprises an inner core as an extension of the rod, wherein the inner core connects the spherical object to the rod and provides rigidity to the swab or applicator. According to one embodiment, the spherical object comprises a radial array of hairs originating from the inner core. According to one embodiment, the radial array of hairs is spaced between about 50 μm and about 200 μm. According to one embodiment, the spherical object comprises a primary external mesh structure on the inside of the hair structure, which contributes to the shape of the spherical object and absorbs fluid. According to one embodiment, the spherical object comprises a secondary internal mesh structure nested between the external mesh and the internal core to provide additional rigidity. According to one embodiment, the spherical object comprises a plurality of hairs protruding from the primary external mesh structure. According to one embodiment, the rod comprises a primary structure consisting of wire elements of a diamond grid pattern in cylindrical form. According to one embodiment, the rod comprises a secondary structure consisting of an inner spiral surface attached to the diamond grid pattern, the secondary structure providing internal shear resistance. According to one embodiment, the rod comprises a textured finish consisting of thinner wire elements spiraled on the outside to provide a refined finishing.
[0020] According to one aspect, a 3D printed applicator is provided. The applicator includes: a sphere having an internal lattice structure that provides structural strength, a plurality of bristles protruding from the internal lattice structure, a plurality of reinforcing wires connected to the bristles at locations along the length of the bristles; and a handle connected to the sphere. According to one embodiment, the location along the length of the bristles is near the midpoint of the bristles. According to one embodiment, the length of the bristles is limited so that the bristles are confined within a boundary geometry. According to one embodiment, the diameter of each bristle is individually specified in a meso file. According to one embodiment, the bristles have a diameter of less than about 100 μm. According to one embodiment, the applicator is defined by a data structure including a plurality of line information, the line information identifying a plurality of nodes that collectively identify at least one line object.
[0021] According to one aspect, a method for designing a fabric or article for 3D printing is provided. The method includes: generating a first design represented by a first file including a plurality of parameters having a first set of values; generating a second design represented by a second file having a second set of values for the parameters; and interpolating the values of the parameters between the first value and the second value to generate a third design, the third design being a hybrid of the first design and the second design, wherein the third design is a fabric or article suitable for 3D printing. According to one embodiment, the first design and the second design are not represented by a mesh of triangular elements. According to one embodiment, the first design and the second design have similar topology. According to one embodiment, the fabric is fur, feathers, plaid, or woven. According to one embodiment, the fabric has a minimum length scale of about 100 μm. According to one embodiment, the fabric has at least 1,000 hairs per square inch. According to one embodiment, the parameter is selected from the diameter of the fiber, the twist angle of the fiber, the cross-sectional profile of the fiber, or any combination thereof. According to one embodiment, the design includes shared vertices stored in a list of shared points. According to one embodiment, the act of interpolating also includes determining to apply a weighted average between the first value and the second value to generate the third design. According to one embodiment, the method further comprises, for the 3D article, adjusting a weighted average over the plurality of instances for generating a third design. According to one embodiment, the method further comprises: providing an index associated with the first design; applying a transformation matrix to determine the second design; providing a weight value, the weight value indicating at least a weighted portion of at least one of the first geometric shape or the second geometric shape; and applying the weighted average using the weight value to determine the third design.
[0022] According to one aspect, a method for designing a fabric or article for 3D printing is provided. The method includes: providing a design characterized by a file including a list of vertices defining a plurality of fibers and a set of parameters defining characteristics of the fibers; and selecting a set of values for the parameters, the set of values producing the desired properties of the design when 3D printed. According to one embodiment, the design is repeated or tiled when 3D printed. According to one embodiment, the parameter is the diameter of the fiber, the twist angle of the fiber, the cross-sectional profile of the fiber, or any combination thereof. According to one embodiment, the parameter is a branching function. According to one embodiment, the design has each fiber defined by a separate wireframe and an individual value of the parameter. According to one embodiment, the design does not define each fiber by a separate wireframe. According to one embodiment, the fiber is represented as a filling function of a shell surface. According to one embodiment, the data structure also includes a volume mapping function. According to one embodiment, the data structure also includes an array of vertices of a wireframe object. According to one embodiment, the method also includes information identifying vertices defining a central polyline spine of a wire object. According to one embodiment, the data structure also includes a diameter of the wire object at each vertex in the vertex. According to one embodiment, the data structure also includes information identifying the normal direction of the starting face at the starting point. According to one embodiment, the data structure further includes rotation information of the line object along its vertices. According to one embodiment, the method further includes the following actions: segmenting the wireframe representation into a plurality of blocks; assigning each of the plurality of blocks to a corresponding processing entity; and rendering each of the plurality of blocks substantially in parallel by the corresponding processing entity. According to one embodiment, the action of segmenting the wireframe representation into the plurality of blocks further includes the action of determining, for at least one of the plurality of blocks, a subset of the line objects of the wireframe representation that intersect the at least one of the plurality of blocks. According to one embodiment, the method further includes the action of determining a representation of at least one of the plurality of blocks of the wireframe representation. According to one embodiment, the method further includes the action of providing the representation of at least one of the plurality of blocks of the wireframe representation to its assigned processing entity. According to one embodiment, the method further includes the action of providing, for at least one of the plurality of blocks, line information to its assigned processing entity, the line information being related to the lines that intersect the at least one of the plurality of blocks. According to one embodiment, the method further includes the action of merging each of the rendered plurality of blocks into a model representing the 3D object. According to one embodiment, the method further includes representing the lines of the wireframe representation as a series of nodes. According to one embodiment, the method further comprises representing the line by a plurality of parameters including at least one of thickness, shape and twist of the line.
[0023] It should be understood that all combinations of the foregoing concepts and the additional concepts discussed in more detail below (assuming such concepts are not mutually contradictory) are considered part of the inventive subject matter disclosed herein. In particular, all combinations of the subject matter within the present disclosure are contemplated as part of the inventive subject matter disclosed herein. In addition, it should be understood that one or more 3D printing systems can be used to implement one or more systems, methods, and file formats to 3D print such microstructures. For example, some embodiments can be used in conjunction with one or more systems described in U.S. patent application serial number 16 / 552,382 filed on August 27, 2019, which is incorporated herein by reference in its entirety. However, it should be understood that other printer methods and systems can be used with the embodiments described herein.
[0024] Other aspects, examples and advantages of these exemplary aspects and examples are discussed in detail below. In addition, it should be understood that the aforementioned information and the following detailed description are only illustrative examples of various aspects and examples, and are intended to provide an overview or framework for understanding the nature and characteristics of the claimed aspects and examples. Any example disclosed herein can be combined with any other example in any manner consistent with at least one of the objects, purposes and needs disclosed herein, and references to "example", "some examples", "alternative examples", "various examples", "one example", "at least one example", "this and other examples" etc. are not necessarily mutually exclusive, and are intended to indicate that the specific features, structures or characteristics described in conjunction with the examples may be included in at least one example. These terms appearing herein do not necessarily all refer to the same example. BRIEF DESCRIPTION OF THE DRAWINGS
[0025] Various aspects of at least one embodiment are discussed herein with reference to the accompanying drawings, which are not intended to be drawn to scale. The drawings are included to provide illustration and further understanding of the various aspects and embodiments, and are incorporated into and constitute a part of this specification, but are not intended to be used as a definition of limitations of the invention. In the event that technical features in the drawings, detailed description, or any claims are followed by reference numerals, the sole purpose of including the reference numerals is to increase the understandability of the drawings, detailed description, and / or claims. Therefore, neither the reference numerals nor their absence are intended to have any limiting effect on the scope of any claim element. In the drawings, each identical or nearly identical component shown in each figure is represented by the same reference numeral. For clarity, not every component is labeled in every figure. In the drawings:
[0026] Figure 1 A block diagram of a distributed computer system capable of processing wireframe models according to various embodiments is shown.
[0027] Figure 2A process for operating on wireframe model information according to various embodiments is shown.
[0028] Figure 3 A process for determining a shape based on the intersection of a cutting plane and a line is shown in accordance with various embodiments.
[0029] Figure 4 A process is shown in which a 3D object representation is operated on in parallel by multiple processing entities.
[0030] Figure 5A An example method for representing wireframe information is shown.
[0031] Figure 5B Various object shapes that can be formed by the intersection of a cutting plane and a 3D object are shown.
[0032] Figure 6 An example of the .MESO format is shown according to various embodiments.
[0033] Figure 7 Example wireframe representations of simple lines are shown in accordance with various embodiments.
[0034] Figure 8 An example shell representation capable of representing a surface is shown.
[0035] Fig. 9 A method of blending shapes using weighted averaging is shown.
[0036] Fig.10 A method for blending shapes along a surface is shown.
[0037] Fig.11 An example wireframe representation of a line with branches or sub-wireframes extending from a main line is shown.
[0038] Fig.12 A diagram showing a plurality of lines filled on a surface.
[0039] Fig.13 An example process for slicing a 3D object is shown in accordance with various embodiments.
[0040] Fig.14 An example process for slicing a wireframe representation is shown in accordance with various embodiments.
[0041] Fig.15 An example process for processing portions of a 3D model in parallel is shown in accordance with various embodiments.
[0042] Figures 16A to 16B Various embodiments of image post-processing are shown.
[0043] Fig.17AExample light intensity gradient filtering operations are shown in accordance with various embodiments.
[0044] Fig. 17B Example light intensity hollow gradient filtering operations are shown in accordance with various embodiments.
[0045] Fig.18A An example starting slice of a 3D object is shown.
[0046] Fig.18B shows a light intensity hollow gradient filter applied Fig.18A An example starting slice of .
[0047] Fig.19 The processing of the slice is shown without the filter applied.
[0048] Fig. 20 A slice is shown in which filtering is applied to reduce the intensity of activated neighboring pixels according to various embodiments.
[0049] Fig.21A Exemplary simple fibers that can be created using various embodiments are shown.
[0050] Fig.21B Shows Fig.21A Example cross section of a simple fiber.
[0051] Fig. 22 Example data representations of simple fibers are shown in accordance with various embodiments.
[0052] Fig.23A Example node hairs that may be created using various embodiments are shown.
[0053] Fig. 23B Show Fig.23A Example cross section of a node hair.
[0054] Fig.24A Example twisted hairs that can be created using various embodiments are shown.
[0055] Fig. 24B Shows Fig.24A Example cross section of a twisted hair.
[0056] Fig.25 An example of applying multiple fill functions to the same mesh face is shown according to various embodiments.
[0057] Fig.26 Shows a uniform fill function where hair is applied to a surface.
[0058] Fig. 27 Shown is an example feather layout containing multiple blending geometries, each containing a different weight.
[0059] Figures 28A to 28B Shown for generating Fig. 27 Two different parent geometries for the feathered design layout shown.
[0060] Fig.29 It shows that one can use Fig.30 The lattice structure generated by the modular units shown.
[0061] Fig.31 It shows that you can use Fig.32 The woven structure generated by the mapped woven unit is shown.
[0062] Figures 33A to 33D shows multiple 3D lattice structures that can be combined to create a swab structure such as Figures 34A to 34B The swab structure shown as an example in FIG.
[0063] Figures 34A to 34B The entire example swab structure is shown.
[0064] Fig.35 An example shaft structure is shown in accordance with some embodiments.
[0065] Figures 36A to 36B Other examples of swab designs are shown.
[0066] Fig.36C As described herein and Figures 36A to 36B Experimental results comparing the swab design shown with a traditional flocked swab.
[0067] Fig.36D As described herein and Figures 36A to 36B Experimental results of the swab design shown compared to traditional flocked and cotton swabs.
[0068] Fig.37 Example cosmetic applicator designs are shown in accordance with various embodiments.
[0069] Fig.38 Variations of cosmetic applicator designs are shown according to various embodiments.
[0070] Figures 39A to 39C Various other types of cosmetic applicators are shown in accordance with some embodiments.
[0071] Fig.40 An example design of eyelashes represented using a wireframe is shown.
[0072] Fig.41 Variations of eyelash designs are shown according to some embodiments.
[0073] Fig.42 A column support technique is shown using a wireframe representation according to various embodiments.
[0074] Fig.43 A frame support for anchoring suspended hairs is shown according to some embodiments.
[0075] Fig.44 Example cocoon support strategies are shown in accordance with various embodiments.
[0076] Fig.45A and 45B Examples of cocoon scaffolds and cross sections are shown, respectively. DETAILED DESCRIPTION
[0077] As described above, various embodiments relate to systems, methods, and data structures for representing 3D objects. Specifically, 3D objects are represented by wireframe models that include one or more lines and / or other object types composed of lines.
[0078] Figure 1 A block diagram of a distributed computer system 100 capable of processing wireframe models according to various embodiments is shown. For example, one or more users may utilize a design system (e.g., system 102) or other system capable of processing and / or storing one or more wireframe models 103. Such a system may include, for example, 3D object design software capable of defining one or more wireframe models.
[0079] In some aspects, a processing system 101 is provided that is capable of receiving wireframe models and processing them according to various embodiments. As described above, it may be beneficial to use wireframe models to reduce the weight of certain objects rather than representing them as solid elements. Because the system works with wireframe models, a file format is provided that facilitates representing wires in a more easily processed manner. For example, the processing system 101 may include a slicing engine 104 that is capable of slicing one or more wireframe models to determine (e.g., such as by a 3D printer) to be rendered and / or printed.
[0080] Furthermore, in some embodiments, the processing system 101 may include one or more processing entities 105 that are capable of processing different parts of the wireframe model in parallel. This is important because in traditional modeling type processes, parallel processing of models is not possible. The processing system 101 may also include one or more post-processing functions 106 that may be used to produce an output format that may be viewed, printed, or otherwise used by other processing entities in an output stage 107.
[0081] As discussed above, one advantage of working with wireframe information is that elements of a wireframe object may be represented by lines that may be manipulated in a manner that is easier than traditional types of 3D modeling. Figure 2An example process 200 for operating on wireframe model information is shown in accordance with various embodiments.
[0082] Specifically, at box 201, process 200 begins. At box 202, the system receives wireframe information representing a particular 3D object. At box 203, the system determines a slice of the 3D object to be processed. At box 204, the system determines the intersection of the wireframe with the slice for each slice to determine one or more intersection points. That is, given a particular cutting plane, one or more wireframe elements of the 3D model will intersect the cutting plane, thereby defining a plurality of points to be rendered in the particular slice. At box 205, the system determines a corresponding shape to be rendered for each intersection point. At box 206, process 200 ends.
[0083] As described above, a corresponding shape can be determined for each point that intersects the cutting plane. The shape associated with the point can be rendered at the cutting location based on information stored in the wireframe model and a determination of the cutting angle relative to the line passing through it. Figure 5 shows how the angle affects the shape of the intersection of the cutting plane with various conic sections.
[0084] Figure 3 A process 300 for determining a shape based on the intersection of a cutting plane and a line according to various embodiments is shown. In box 301, the process 300 starts. In box 302, the system determines the intersection angle between the line and the slice for a line that intersects a particular slice. As shown in FIG. 5, the shape can change based on the intersection angle of the cutting plane with the object. For a simple circular line object, the intersection angle can render a circle, a parabola, an ellipse, or a hyperbola. In addition, the system can determine the parameters associated with the line that intersects the slice. For example, within a wireframe model data file, several parameters can be used to describe a particular line. For example, one or more parameters can control the thickness, shape, and / or distortion of a line object. In box 303. In box 304, the system determines the corresponding shape to be rendered for a point based on the parameters and / or the determined intersection angle. The process can be repeated for any number of line elements that intersect with the cutting plane. For each iteration of the cutting plane, a 2D representation can be calculated, which can be rendered in an output (e.g., printed on a particular layer).
[0085] Furthermore, as described above, a 3D object represented by a wireframe representation may be more efficiently processed by multiple processing entities. Figure 4 A process 400 is shown for operating on a 3D object representation in parallel by several processing entities.
[0086] At block 401, process 400 begins. At block 402, the system receives wireframe information representing a 3D object. As discussed further below, the wireframe information may be stored and represented in a .MESO format. At block 403, the system segments the wireframe representation of the 3D object into a plurality of blocks. At block 404, the system assigns the plurality of blocks to respective processing entities. Each processing entity operates in parallel and renders its assigned blocks (e.g., in block 405). At block 406, the system may perform one or more post-rendering operations, such as filtering, smoothing, and / or combining of the rendered blocks. At block 407, process 400 ends.
[0087] As discussed above, the calculations used to determine the slice data can be simplified because the wireframe model can be interpreted as lines. In some embodiments, rather than parsing into a mesh model, the .MESO data is interpreted "directly" as lines. In one embodiment, for the 2D lines of the wireframe model positioned in 3D space, for each slice layer, the intersection between the lines of the model and the slice layer is calculated. This intersection point in 3D space can be converted into 2D coordinates in 3D space for the slice data for each layer (x, y, z) so that layer #123 is at (u, v) of layer #123. In some embodiments, for each intersection point (for each layer), the shape of the line intersection that must be drawn onto the slice is then determined by the parameters of the .MESO line (such as diameter, profile shape, twist, and intersection angle). This information is then used to calculate the corresponding appropriate parabolic cone intersection (for the circular meso line profile shape), such as Figure 5A shown.
[0088] As shown in the figure, depending on the angle at which the slice plane intersects the object, the shape can be Figure 5A Any number of shapes shown as examples in (e.g., parabola, circle, ellipse, hyperbola). The calculated cone intersection is then added to the slice data.
[0089] Because the wireframe model can be interpreted as lines, and for each slice, the intersection of the wireframe model can be calculated in a simple manner, the processing of the model can be operated in parallel. That is, for parts of the wireframe model, the line intersection and cone intersection calculations can be computationally parallelized. This makes it possible to combine it with a parallel slicing algorithm and be very scalable for large amounts of data. Again, this slicing style is implemented by various embodiments of the .MESO file format as line parameters such as contour shape, wire diameter, etc. are provided directly within the file format. The following is an example implementation describing various embodiments, and it should be understood that various features can be used independently or in combination with other features described herein.
[0090] Example MESO Data Structure
[0091] In some embodiments, a data structure referred to herein as a .MESO (or .meso) data structure is provided that stores line information associated with a wireframe model. In some embodiments, the .MESO structure is an index-based data structure for mesh reconstruction and scan path generation for AM processing. Although the .MESO structure is specifically designed for 3D printing intermediate structures, which focuses on fibrous structures, this format can be applied to other areas. Such fibrous structures may include, but are not limited to, fibers, feathers, lattices, woven structures, and / or composite structures using various elements in combination. Although other index-based geometry formats (e.g., .obj) have been used, the .MESO data structure can provide support for operations and mesoscale geometry.
[0092] Design considerations
[0093] In some implementations, the .MESO format may exhibit one or more of the following design considerations:
[0094] Simplicity: Abstract materials into wireframes and shells. Design geometric shapes using node graphs.
[0095] Versatility: A wide range of materials can be designed, such as fur, feathers, plaid, weave or surface textures.
[0096] Fidelity: Maintaining the fine features of a design.
[0097] Scalability: Materials designed to be meter-long can be scaled. Structures designed to be nanometer-sized can be scaled.
[0098] Backwards compatibility: with existing meshes.
[0099] Future compatibility: Future features.
[0100] In some embodiments, some embodiments of the .meso format can provide a size reduction in file size and / or a reduced processing load for printing. In some embodiments, a first size reduction mechanism is used. First, in some embodiments, the .meso file format is an index-based data format, which is a feature that provides a significant reduction in file size. In one embodiment of the format, the first part of the file contains 3D coordinates, the so-called model nodes. One benefit of doing this is that redundant information is avoided from being stored multiple times. The second part of the file contains data for connections between previously defined nodes. In .meso, volumes and meshes create reference coordinates that were previously defined as nodes. By introducing index (node) based file formatting, a major portion of redundant information can be replaced by the initial node definition. For example, the vertices of a cube are defined as nodes once, and only their indices are referenced by the mesh afterwards, rather than saving node coordinates multiple times at different points in the file.
[0101] Another file size reduction mechanism that can be used within the .meso format is a lot of information that is stored implicitly in the data format itself. Figure 5B shows how file size reduction can be achieved. While standard 3D file formats in 3D printing store all information explicitly in the file, .meso stores a higher abstraction of the data in the file. This means that structures such as wireframes (wire-shaped volumes) or shells (surface-shaped volumes) are described only by their so-called ridges. When comparing the wire volume in the middle of the above figure, a reduction in file size is achieved. While the standard file format will store all vertices and meshes explicitly and separately and thus store 8 vertices and 12 mesh triangles, the .meso format can save such a structure with only 2 ridge node coordinates and the outline and diameter information of the wire. The reduction in file size is achieved by the prior knowledge of the data format, i.e., it will construct a wireframe wire structure. Only the basic core information of the wire is stored. The reconstruction or compilation process of the mesh later before production also contains enough parsing intelligence to process only the basic core information of the wire. The reduction in file size is achieved by a higher degree of encoding, which means a more refined and intelligent parsing of the data.
[0102] There can be a trade-off between the generality of a file format and its usefulness for a specific purpose. In this trade-off, the purpose of 3D printing at the mesoscale can be prioritized, which provides warranties in terms of optimizing the exchange format. In addition, there are some features of the .meso file structure that are particularly suitable for creating a compact file structure, including:
[0103] Self-similarity
[0104] Elements such as fur and plaid are often constructed from similar or identical modular units. These units can repeat in 2D, 3D, or fractal patterns with small variations in the transformations between units. Thus, the format can describe a series of geometric shapes as variations of its parent.
[0105] Shape Blending
[0106] The ability to transform between self-similar units also allows a degree of mixing between discrete states of similar topology. This is a common feature in nature; from skeletal features between different species to the proportions of feathers on a bird. This means that a designer / maker can create a new geometry as a weighted mix of several discrete shapes of similar topology.
[0107] Different features
[0108] At the mesoscale, some features of the geometry become more prominent than others. This is especially true for features attributed to mechanical properties. When details of certain sizes approach the limits of the printer's resolution, they become less relevant. This allows the designer to emphasize key geometric parameters, such as the cross-sectional profile, which can affect the feel of the fur. Instead of free-form shapes, the designer can describe the fine structure parametrically.
[0109] With this implementation, instead of storing these geometries as volume meshes, the .MESO format according to some embodiments uses a simplified set of parameter descriptions to store the geometric properties of individual fibers. This technique allows any program using .MESO to quickly reconstruct large amounts of geometry with less information.
[0110] These parameters provide instructions for mesh reconstruction. For example, the triangles of a fiber are reconstructed from a polyline curve with parameters such as diameter, twist angle, cross-sectional profile, etc. This abstract representation of the geometry can strike a balance between scale and resolution. For example, a small sample of fur may consist of thousands / millions of individual hairs. On the one hand, each hair should have features and forms that can be manipulated individually, and on the other hand, they are variations of similar basic shapes. In some embodiments, the .MESO format exploits the idiosyncrasies of tiny fibers; the example format assumes some assumptions about the underlying tissue while allowing the user to determine more expressive properties of the fur.
[0111] In addition to reduced file size, some .MESO formats can provide several other benefits compared to other mesh formats. Since each geometry is described parametrically, it is easy to modify these underlying parameters downstream, such as varying length or scaling diameter of each fiber. This is particularly useful in collaboration because it maintains the editability of the design. It also provides a simple and organized structure that allows users to easily extract useful information.
[0112] This results in some features of the file structure that are unique to some embodiments of the example .MESO data structure, including:
[0113] High correlation between data
[0114] OBJ is a commonly used index-based file format. Unlike STL, where each vertex of a triangle is stored as an individual coordinate, in an OBJ file, the vertices of a triangle are retrieved from a shared list of points. This avoids redundancy when representing shared vertices and maintains mesh topology information, resulting in a compact and consistent mesh.
[0115] In some embodiments, the .MESO format can use the same logic to reduce file size. Taking advantage of the high self-similarity between geometric shapes, in some embodiments, the .MESO format can allow some geometric shapes to be referenced in parameter functions. This provides an additional level of data efficiency because instances of detailed geometric shapes are only recorded once and referenced multiple times. An example includes the reference of a sub-wireframe in a sub-D function, where one instance of a wireframe and mesh face can be repeated to create any number of sub-D functions. Figure 6 An example .MESO format is shown in accordance with various embodiments.
[0116] Object interpolation
[0117] Shape blending. A new shape can be derived by interpolating several different shapes.
[0118] Data Structure Overview
[0119] MESO files mainly contain two kinds of geometric information: 1) geometric shape and 2) parametric function.
[0120] Geometries include points (vertices), lines (wireframes), and surfaces (faces). These geometries are represented as connections between nodes, with additional information encoded at each node. Parametric functions are the primary geometries on which the parametric function will be applied.
[0121] A parameter function is an object containing parameters, which are instructions for a specific function during reconstruction and slicing. A parameter function is a standalone object in a data structure that can be referenced by geometries as a way to extend their own description. In most cases, these functions are used to generate children from the current geometry.
[0122] In one embodiment, the .MESO format is built based on the JSON schema. It contains one or more of the following objects, either alone or in combination with any other objects:
[0123]
[0124]
[0125] Header
[0126] The .MESO format may include a header that contains information for slicing the software to process the file. This may include, for example, information identifying the material in which the object defined by the file is printed (e.g., materialID) and the type of machine that will print the object (e.g., machineID), as well as the settings required to start the slicing process. It also contains information about ownership and dates. In some embodiments, the file may include slicing settings that control the actual slicing of the geometry.
[0127] node
[0128] An array of 3D coordinates representing the vertices of all the main geometric shapes in the file. This array will be indexed when the file is imported.
[0129] Coordinates [point3d] X, Y, Z coordinates of the node
[0130] Wire
[0131] Each wire contains an array of nodes and attributes at each node, which enables highly abstract parametric representations of hair-like or lattice structures. A collection of wireframes will be indexed. Figure 7 Example wireframe representations of simple lines are shown in accordance with various embodiments.
[0132]
[0133]
[0134] Grid
[0135] The mesh provides compatibility with other file formats commonly used in Additive Manufacturing such as .STL. This should be a watertight mesh.
[0136] shell
[0137] Each shell contains an array of faces. Each face contains node information for 3 to 4 instances. Since thickness is assigned to each face, the shell can be closed or open, manifold or non-manifold. Figure 8 An example shell representation capable of representing a surface is shown.
[0138] Node [int] Index of the shell face node Thickness[double] The thickness of the mesh surface at each node. filling The name of the fill function. Volume Mapping The name of the volume mapping function. level [int] Label indicating the slicing level for this mesh face. See Level Description.
[0139] Level markers are used to indicate settings and behaviors to be applied to this geometry during slicing.
[0140]
[0141]
[0142] Each volume holds a reference / index to the slice settings for that volume. Approach: Save all x settings only once per volume, give them IDs, references and safe IDs, will save file sizes and represent a flexible and adaptable formatting.
[0143] Furthermore, masking geometry can be used to create dark region(s).Discrete flags can be provided to limit the slice settings available to the user.
[0144] mix
[0145] A blend shape is defined by the weights of the primary geometric shapes. Its node positions and properties are a weighted average of those primary geometric shapes it involves.
[0146] Node [int] The index of the node. The origin of the blended geometry Transformation Matrix The transformation to apply. parent[int] The index of the parent geometry. Weight [double] The weight of the parent geometry.
[0147] Fig. 9 A method of blending shapes using a weighted average between two different types of designs is shown. Fig.10 A method for blending shapes along a surface is shown, and designs can be blended in multiple dimensions along a surface. It should be understood that any number of designs can be blended using a blending function.
[0148] contour
[0149] The outline contains a series of 2D vectors to expand / thicken each vertex of the wireframe. These vectors are transposed into a local orientation at each vertex, which is aligned with the curve normal and the front vector.
[0150] Contour point [2D point] An array of vectors representing the outline shape. Thickness[double] The thickness of the hollow tube. Set to 0 to create a solid line.
[0151] Branches
[0152] Branches contain parameters for placing sub-wireframes onto the main line. Fig.11 An example wireframe representation of a line with branches or sub-wireframes extending from a main line is shown.
[0153]
[0154] filling
[0155] Fill contains parameters for placing sub-wireframes on the main shell face (for example, placing hair structures on a surface). Fig.12 A diagram showing lines filled on a surface.
[0156]
[0157] Volume Mapping
[0158] The box mapping contains the parameters to transform and deform the main geometry. The main geometry is remapped from the unit box at the origin to the uvw coordinates in the target box.
[0159] Node [int] The indices of the 8 vertices representing the 8 corners of the target box. child[int] The index of the subwireframe to remap. Segmentation subdivision count along the edge of the box
[0160] slice
[0161] The term slicing in 3D printing is widely used to describe the process of generating 3D printing production data at the end. Therefore, the input of most slicing software is virtual model data encoded in some data format (such as .stl, .obj or .meso). After passing through the slicing software, the data is converted into a format that the manufacturing machine can interpret to control the machine behavior, such as the positioning of the motor control unit, the laser path, the projected image, etc.
[0162] Because in some embodiments the manufacturing process that may be used is DLP printing, the slicing software may focus primarily on the projected light sequence as the end result of slicing combined with other auxiliary printing settings such as platform movement speed. Since the slicing classification does not contain a full-featured view of the interdependencies between model data, slicing, printing, and machine settings in an overview of the entire production, designers tend to use the term compile, as in compile to product data or compile to print.
[0163] The state of the art in DLP and the other slicing software most commonly used in the 3D printing industry is 3D mesh slicing. Justified by the popularity of the stl format for 3D model data, the slicing algorithm reconstructs other data formats back into a stl style mesh to be sliced via a standard slicing algorithm. Although this process ensures high backward compatibility, this can happen at the expense of efficiency and ignores a huge potential for optimization. Especially for scaling up 3D printing from prototyping to mass production, factors such as computational effort in terms of time spent and cost are important measures to increase productivity levels.
[0164] In addition to the already stated advantages of the .meso data format, it is also possible to create a design language that is efficient when read, interpreted, and compiled into printable production data. In some embodiments, there may be two (2) slicing engines as cores that can be used to compile .meso data into printable machine data:
[0165] Mesh Reconstruction Slicing Engine
[0166] Linear frame slicing engine
[0167] .MESO grid reconstruction slice
[0168] like Fig.13As shown, an example process for slicing a 3D object according to various embodiments is performed in a slicing plane that gradually moves through the 3D object in a parallel manner. The first slicing engine, namely the mesh reconstruction slicer, is designed for backward compatibility and is capable of processing standard data formats such as .stl and .obj. In addition, in some embodiments, for example, the ability to combine files with multiple different data formats such as .stl in addition to .meso and slice the combined model data is provided. The virtual model is converted into a two-dimensional grid, which forms a volume to be sliced and printed when closed. In some embodiments, one aspect of the algorithm is to create a cutting plane that continuously advances through the model with discrete step increments. For DLP printing, the intersection plane can represent the projection surface of the light to be projected onto the resin. Therefore, the intersection cut between the cutting plane and the grid enclosed volume is calculated for each plane increment step and saved as grayscale bitmap image data.
[0169] In some embodiments of mesh slicing, a GPU slicing algorithm is selected based on a mesh face culling operation. The included volume is detected by evaluating the number of triangle meshes within and outside the effective field of view of the facing increment step. In order for this slicing technique to run on the GPU, the entire model can be reconstructed using a 2D mesh with the determined facing direction. The two-dimensional intersection cuts of the plane and the model volume are saved as image data in a bitmap format. Each intersection cut, also called a layer or slice, is later projected onto the resin.
[0170] The GPU slicing algorithm can be, for example, a mesh reconstruction with a mesh face culling slicing algorithm. The algorithm determines whether the current slice layer is inside or outside the volume by increasing and decreasing the amount of inward-facing and outward-facing mesh surfaces. For example, for a simple cube: in the front view, on the outside of the cube, both cube faces face the current view layer. The total amount of inward-facing faces is 2. For an even-numbered number of face increments, the algorithm determines that the area is outside the volume. If the current view layer is placed inside the cube and thus cuts the cube, the number of inward-facing faces is 1, which is an odd number, so it is evaluated as being inside the volume. The corresponding pixel in the slice will then be evaluated as being filled.
[0171] For example, a straight line slicing algorithm can be used that does not reconstruct the actual mesh of the .meso file before slicing it. The GPU slicing algorithm is used to create line projection cuts directly on the slice. The mesh reconstruction generates all implicit information from the explicit information in .meso as the mesh from .meso. This data is used to re-mesh the face culling slices. For direct line slicing, no mesh reconstruction of all implicit information is done before. When the wireframe line intersects the current slice layer, the decoding of this information is done "just in time" while the wireframe line is accurately sliced. In the case where the wireframe line intersects the slice layer, explicit wireframe line information such as diameter, twist angle, etc. is used to evaluate the projected cut of the line to be saved as pixels on the slice.
[0172] .meso direct wireframe slicing
[0173] The second slicing engine, direct wireframe slicing, is optimized for the internal .meso data format. Fig.14 An example process for slicing a wireframe representation according to various embodiments is shown. By considering that the .meso data format does not incorporate meshes and therefore surfaces, but is based on a more abstract description of the entire subject, so far, specifically focusing on wire-based structures, it is possible to bypass mesh reconstruction and mesh slicing techniques. The direct wire slicing engine uses a conceptual representation of the smallest building block within a .meso specified structure, the one-dimensional mathematical concept of a wire.
[0174] The linear algebra concept comes from the arrangement of one-dimensional lines in three-dimensional space. The engine uses this vector space to calculate all line intersections with the cutting plane through linear equations. Similarly, the cutting plane can be moved layer by layer in discrete steps, such as Fig.14 Model space shown. For each increment, all intersections between the 2D plane and all 1D lines are calculated, resulting in intersection points (temporarily). The orientation of these intersection points in 3D space can be described in the local reference coordinate system of the slice cutting plane (shown in red).
[0175] The .meso data format as described above contains information about each line, such as diameter, contour warp angle, etc., which is then used at this point (compare: used to reconstruct the model into a mesh before slicing for mesh reconstruction slicing). With the information of intersection points, start and end points of the line, and additional information of the contour, diameter, etc., the projected 2D plane can be calculated, which may be necessary to create the desired 3D volume output. For example, the mathematical description of the projection of a cylindrical circular contour line can be derived from the conical section cut as discussed above.
[0176] Combined with applicable parallel slicing (e.g., model reduction algorithms), this can improve the computational efficiency of slicing, especially for large model sizes. Direct wire slicing of .meso files, enabled by bypassing global model mesh reconstruction, allows running the slicing algorithm on local subpartitions of the .meso file, and combined with the on-the-fly participation of wire parameters in the final algorithm step, the algorithm is arbitrarily scalable and parallelizable for distributed slicing.
[0177] Parallel Slicing / Distributed Model Algorithms / Model Reduction
[0178] In some embodiments, a model reduction algorithm for parallel slicing is provided, which originates from the possibilities opened up by the direct line slicing method to parallelize the slicing algorithm within a single model. The standard data format follows a rather indirect approach to formulate volumes by defining a grid that may create a volume if it is completely closed. This not only leaves a lot of room for common and very frequent errors, such as unclosed grids and surfaces leading to a fail-safe and non-fail-safe behavior of the format with global errors, but also fails to convey information about the positioning, start and end points of the volumes and their local extents. Fig.15 An example process for processing portions of a 3D model in parallel is shown in accordance with various embodiments.
[0179] In some embodiments, the .meso format provides the start and end points of the volume, which is useful for partitioning the model into local sub-models and for partitioning computational tasks into multiple smaller sub-models. The model reduction algorithms provided herein can be categorized as so-called partitioning and obfuscation algorithms. In some embodiments, the inventors have recognized that a big data algorithm known as "map-reduce" can be used to process large 3D data models in a more efficient manner.
[0180] The core concept of the model reduction algorithm is to split a model that is too large for standard slicing into several smaller models, which can be processed in parallel in a distributed computer cluster architecture (or just multithreading or other processing entities as well). The key to the model data decomposition is the spatial correlation of the 3D data, which can be accessed in .meso due to the included line start and end points. Unfortunately, this information is not available in a standard format (such as .stl or .obj).
[0181] Based on the spatial positioning of all lines, the entire data set can be classified. For example, for parallel slicing, the classification criterion is the slicing direction (z-axis). According to this sorting order, the model can be separated into multiple locally completely independent sub-models, also called blocks. A thumb rule for accelerating slicing can be to separate the model into multiple blocks equal to the amount of processing cores available in the cluster (and / or other processing entities such as virtual processors, threads or other processing entities). In the fairly common case that the model does not have a clear / blank area for separating the model, for example, a line from the start of the global model to the end of the global model, there are several ways to handle it. One method is to copy and transfer those lines to each traversed block. Another method is to automatically reconstruct the data set by separating oversized / overlong lines into multiple smaller lines.
[0182] In some embodiments, each block is a completely self-sufficient meso sub-model with all the properties of the "parent" meso model. Therefore, each block can be sliced individually as its own instance. From one large .meso model that is too large for a single processing entity (e.g., GPU memory) to slice efficiently, the system can distribute the model to multiple meso sub-models (whose sizes are efficient for the processing entities to slice). Using the information of the arrangement and structure of the sub-models within the parent .meso model, the resulting slices of all the sub-models can be combined / fused / superimposed to the overall sliced result of the parent meso model.
[0183] By using the .meso format data which contains individual and discrete volume objects (see meso volume class) plus a node-based system, large models can be processed in an easily efficient and fast way. In contrast, traditional single mesh data files cannot be distributed into sub-models and space blocks in such a fast way.
[0184] In one embodiment, the spatial ordering of the sub-models / chunks may be accomplished using an algorithm such as the following: Chunks are defined in the meso parent model volume space (e.g., equidistant in the slice direction, e.g., four chunks of equal length in the y dimension). All nodes of the meso parent model are then internally assigned / labeled to the chunk they belong to, i.e., in which chunk they are spatially located (or in question, they are labeled for both chunks). For each chunk, a meso sub-model is created, in which all meso objects / lines are written that have nodes within that chunk (in addition, objects / lines in reach that have nodes located within a close distance to the chunk and whose volume radius can potentially reach into the chunk). The nodes for all sub-models may remain untouched, as in the parent model. All sub-models may now be sent completely independently to a virtually and / or physically separate processing entity (e.g., a slicing engine program / routine executing a workstation, GPU, cloud instance, etc.). After the sub-models are fully processed, the resulting slice data is merged into the global parent meso model volume space (e.g., simply appended in equidistant chunks along the slice direction).
[0185] The model reduction algorithm may be applied to parallelize the 3D slicing algorithm, but is not constrained or limited thereto. Other applications in 3D modeling, such as nearest neighbor searches or filtering operations, may also benefit from distributed and parallel computing.
[0186] Mesoscale printing should be treated as an interdisciplinary approach, and the quality of the print depends on various interdependent factors. Some of them are related to computational slicing. Other areas (such as machine settings, machine process control, resin material properties, etc.) not only decisively affect the print quality, but also interact with each other and with the slices. Therefore, different slice intensity filters can have various results about print quality and the resulting properties for different resins or machine settings. This is an interdisciplinary view of the entire process from virtual models to finished products during compilation. In some cases, many aspects of this compilation process are manually completed by manual and empirical human experience to adjust the settings and parameters for optimal printing.
[0187] DLP printing light intensity filtering
[0188] In some embodiments, the compilation process may also include post-processing of the image / bitmap data after each slicing step. In order to receive smoother transitions between individual layers, depth subsampling is applied by not only determining a single intersection cut between the slicing plane and the 3D model, but also slicing the model multiple times (parameterized by the desired degree of subsampling) (e.g., in equidistant steps) and then averaging the pixel intensities. Figures 16A to 16B The middle diagram shows depth subsampling. Figures 16A to 16BVarious embodiments of image post-processing with or without depth subsampling are shown.
[0189] This results in less sharp and distinct edges caused by cutting and producing the print layer by layer. By applying the depth subsampling method described here, undesired staircase approximations of tilts and slopes in the model geometry are prevented. The projected different grayscale pixel intensities produce a generally smoother surface of the print.
[0190] In addition to depth subsampling, anti-aliasing within the slice plane is performed by multi-sample anti-aliasing (MSAA). MSAA reduces pixel intensity gradients of sub-sampled slices and smoothes overly sharp corners and edges in the image data. Subsampling combined with multi-sampling maintains the ability to print at the highest pixel resolution, especially for slice and print angles that deviate from the standard 90 degrees, bottom-up and top-down.
[0191] A light intensity segment filter is then applied to optimize the quality of the print by adjusting the projected light intensity for optimal resin curing. This can include, for example, evaluating light refraction and light absorption during the curing process and optimization with respect to the resin used and the desired geometry. The first option for this post-processing step is the standard default setting, which will not change any pixel values and pass the pixel data after subsampling and multisampling slicing. Two other filter categories, gradient and hollow gradient filtering are provided in a square as well as radial alternating manner. These filters apply a customizable kernel to the grayscale bitmap data after slicing. For example, a square gradient intensity filter for a single active pixel (e.g. a small hair) will create a Fig.17A The results shown in .
[0192] A gradient filter is applied by computing a kernel of valid (not 0) pixels for the entire image. In addition to the filter range given in a number of pixels (half the side length of the square and the radius of the radial filter), a cut-off brightness and a minimum brightness can be defined for the filter. Fig. 17B In the example of a hollow gradient square kernel filter shown, the minimum brightness is set to 0.1 so that the core of the structure is not 0, but 0.1.
[0193] In case the filter is to set pixel values below this threshold, the minimum brightness is activated. The threshold for the minimum brightness is then set instead. Furthermore, the opposite cut-off brightness can be applied, having the effect of setting all pixel values below the defined threshold of the cut-off brightness to 0.
[0194] Fig.18A shows an example smoothing function for the corners of a 3D object, and Fig.18B An example of applying a light intensity hollow gradient filter is shown. Fig.18AIn , an example of a gradient intensity filter with a radial kernel and a filter range of 25 is given to illustrate the resulting effect of smoothing intensity corners. In addition, Fig.18B Shown is a hollow gradient filter applied with a radial kernel and a 25 pixel range. This is particularly useful for printing hollow structures or in combination with higher minimum brightness values applied to print larger solid-like and planar structures without complications. Fine tuning the intensity filter optimization for certain resins and model geometries can be a difficult task due to the large number of factors involved. Automation of this process allows for more advanced user input, such as customized material properties.
[0195] A typical application of intensity filtering optimized during slicing of the editing process is a hollow gradient filter to optimize the print quality with respect to light refraction within the resin for a computationally optimized uniform curing process. For example,
[0196] Fig.19 The processing of a slice without applying a filter is shown. Fig.19 As shown, without this filter, the light refraction in the resin results in the originally intended light refraction and scattering of the UV light and, therefore, scattering of the cured resin in the model. The areas surrounded by other cured areas receive more UV light through light refraction than the individual pixels being cured. Fig. 20 When compared to the effect of the hollow gradient radial filter shown in , the effect can be summarized as follows: the more activated neighbors there are, and the more intensely the activated neighbors are, the darker the pixel becomes. The overall result is that pixels surrounded by high intensity projections have already received UV curing light by refraction anyway, and do not need to be cured as much light as independent pixels that are cured. For the optimized case in this example, the amount of incoming light, consisting of directly projected light and refraction scattering, is uniform.
[0197] Design / Structure through Process
[0198] Simple fiber
[0199] The wireframe structure allows for efficient creation of a large number of fiber types.
[0200] Cone-shaped hairs
[0201]
[0202]
[0203] A simple example of a wire structure is a tapered hair. Fig.21A Example simple fibers that can be created using various embodiments are shown. Fig.21B Shows Fig.21A Example cross section of a simple fiber.
[0204] Reference Fig.21A and 21B , the cone-shaped hair is defined by nodes and a series of parameters.
[0205] The nodes determine the shape of the ridge. Thus, the hair passes through points n1, n2, n3, ..., n6, which refer to the coordinates listed under "Nodes". The ridge can be modified by referring to different nodes or by changing the coordinates of each node.
[0206] The parameters determine the detailed shape of the hair. The profile determines the cross-sectional shape of the hair. In this case, Fig. 22 "Square" is selected as shown, and the diameter of the hair gradually changes from 1.0mm at node n1 to 0.06mm at n6. The "Start" normal is set to the Z axis, so the bottom of the hair is flush with the bottom plane. The hair is not twisted, and all values in "Twist" are set to zero.
[0207] Other types of structures can be created, including but not limited to:
[0208] Node hairs (such as Fig.23A and 23B shown) and can be defined as:
[0209]
[0210] Twisted hair (such as Fig.24A and Fig. 24B shown) and can be defined as:
[0211]
[0212]
[0213] fur
[0214] Dense fur can be implemented in a variety of ways using the MESO file format, with different effects on fidelity and data efficiency. For example, each hair can be represented as a separate wireframe. In this case, each hair will have its own unique parameters that will allow for feature control over individual hairs. Alternatively, the format can represent a collection of hairs as a fill function of the hull faces. With this approach, only a small amount of geometric information is required to describe a larger collection of hairs. Multiple fill functions can be assigned to the same mesh face for overlapping effects. Fig.25 An example of applying multiple fill functions to the same mesh face is shown according to various embodiments. Fig.26 A uniform fill function showing hair being applied to a surface.
[0215] feather
[0216] Similar to the fur example above, highly detailed and dense structures can be created by representing all geometry as wireframes or using parametric functions supported by the .MESO format for compact data. In the case of feathers, branching functions can effectively encode fractal structures. Simple wireframes can branch to form feathers. This fractal branching can be repeated over several layers if the child wireframes also contain branching functions.
[0217] Fig. 27 The example in shows a feathered layout design containing 129 blended geometries, each containing a different weight for the parent geometry. Figures 28A to 28B The two parents shown in are lines that contain their own branching functions.
[0218] lattice
[0219] The mesh geometry can be generated by filling a box map with modular cells. The modular cells are captured in a box of the cell size, which is then remapped onto a series of boxes mapped by 8 nodes in the volume mapping function. Fig.29 It shows that one can use Fig.30 The lattice structure generated by the modular units shown.
[0220] Weaving
[0221] like Fig.31 The braided structure shown can be formed by combining braided unit modules (e.g. Fig.32 ) is mapped onto shells with different thicknesses and shell face sizes. In this case, the entire braided structure can be effectively represented by 6 lines and one shell.
[0222] Swab
[0223] Similar to Fig.34A and 34B The swab design shown in can be realized by collecting wire. The configuration of the spherical object can include 1) Fig.33A The internal 3D lattice structure shown provides structural rigidity and assists in fluid retention, 2) as Fig.33B The mesh structure that defines the overall shape and can absorb, 3) as shown Fig.33C The reinforcing element of the mesh structure that ensures the integrity of the spherical object as shown, and 4) as Fig.33D A spiral array of fine hairs is shown on a mesh structure. Each array of hairs is reinforced with thin ridges in their mid-section.
[0224] Figures 34A to 34BThe construction of the swab stem shown may be constructed using 1) parallel strands of wire bound together and reinforced by 2) loops and diagonal braces between each strand. Fig.35 In the example shown, the rod features breaking points achieved by reducing the diameter of the short section of the parallel strands at the breaking points. An alternative rod construction consists of 1) a gridded rod wall structure as the primary structure, 2) an internal shear reinforcement element, 3) a spiral texture curve as a finishing on the outer surface.
[0225] In such Fig.36A In an alternative construction of the rod shown, the rod includes 1) a primary structure comprised of wire elements in a cylindrical diamond grid pattern, 2) a secondary structure comprised of an inner spiral surface attached to the diamond grid that provides internal shear resistance, and 3) a textured finish comprised of thinner wire elements spiraled on the outside to provide a finish. Fig.36B The breaking point is shown, including a reduced diameter at the breaking point.
[0226] Regarding the construction of the ball, the wire elements of the grid and hair can be curled into an S shape to provide elasticity and compliance. The hardness of the ball can be determined by controlling a combination of these factors: hair spacing, hair diameter, hair curvature / S shape, density of primary and secondary mesh structures, and diameter of mesh wire. Generally, the denser the structure with elements close to each other, the harder the ball will be; the thicker the wire elements, the harder the ball will be.
[0227] The diameter of an example hair structure or mesh structure can vary, for example, from 300 μm to 50 μm. The openings of an example mesh structure can be varied to control fluid absorption and release. The opening size of the mesh can vary from 2 mm to 100 μm.
[0228] By varying the properties of the structure of the rod, different stiffnesses can be achieved. For example, the neck region of the rod has a smaller overall diameter. The diamond grid is elongated along the length of the shaft. The wire elements are thinner, while the inner helical surface is narrower. This results in flexible and soft areas of the rod that can bend around small radii. Vice versa, hard and rigid handle areas with opposite properties can be obtained.
[0229] A breaking point can be introduced anywhere along the rod. A breaking point is a narrow area of increased brittleness. This is achieved by reducing the wire element diameter and reducing the overall diameter. This creates an hourglass shaped area which also increases torsional forces. This area is visually emphasized using rings on both ends of the area for easy identification.
[0230] The indicator can be introduced at any point along the pole. The indicator is an enlarged area of the pole. Additional wire elements are added on top of the existing pole, rather than changing the structure of the pole. This helps maintain uniform stiffness of the pole. Additional wire elements arranged in a diamond grid pattern form the indicator structure.
[0231] Regarding the design workflow, the shape of the sphere can be freely defined by the bounding volume. Together with the length of the functional components and the location of the break points and / or indicators (if any) and the required diameter, this information is fed into the parametric modeling software, which builds the MESO structure and assigns corresponding values to each wire element.
[0232] like Figures 36C to 36D As shown, a swab created using at least some of the methods described herein, called InstaSwab, can outperform other types of swabs, such as those used for medical applications, such as flocked swabs and cotton swabs for mid-turbinate, anterior or nasopharyngeal swabs, to suit a variety of applications including home test kits. Laboratory results show that this swab has a higher liquid / solid separation rate than conventional cotton swabs and a higher microbial transfer efficiency than market-leading flocked swabs. Fig.36C A bacterial washout test is shown to evaluate how effectively a swab collects and releases a bacterial sample. A bacterial sample is collected using a swab. The sample is released into a medium, which is then diluted into a series of concentrations. From each concentration, the number of bacterial units (colony forming units, or CFU) that grow into viable colonies is counted. Fig.36C As shown, each bright spot on the agar plate is a bacterial colony. A good swab releases so many live bacteria that even after a large dilution, they can still be detected. This is one of the most important criteria for disease diagnosis: finding enough pathogens to test.
[0233] Cosmetic Applicators
[0234] Cosmetic applicators (e.g., mascara brushes, foam applicators, brushes, etc.) can be implemented with a collection of wires. The MESO format enables highly customized bristle characteristics unique to cosmetic applications, including 1) bristle diameter, 2) bristle spacing, 3) product retention, and 4) overall geometry.
[0235] Fig.37 The cosmetic applicator shown includes 1) a dense lattice core as a primary structure, 2) bristles of various lengths and diameters developed from the lattice core, 3) a reinforcing wire running between the middle portions of the bristles, 4) a rod handle composed of the dense lattice structure.
[0236] Customization of the design can be facilitated through the MESO file format, where a simplified representation of a line with basic curves is provided. The features of the applicator are procedurally generated by guiding the geometry through the following steps. 1) A lattice core of spheres and rods is created by offsetting the outer shell around a 3D free-form curve. 2) The wire structures grow outward from the central core at a specified range of angles around the rods of the core. 3) The free-form 3D boundary geometry defines the trim length of each wire structure. 4) The diameter and profile of each wire are individually defined in its MESO data. This enables a high degree of customization of the overall geometry.
[0237] Customization varies with the application. For example, in the case of a mascara brush, various parameters can be adjusted to suit the application of mascara. For example, the bristle spacing can be adjusted to control the deposition of the mascara fluid. For example, sparser spacing enables heavy application and vice versa. The location and thickness of the reinforcement lines control the retention of the fluid on the brush. Fig.38 Various cosmetic applicator designs are shown having different diameters, spacing profiles, and core shapes according to various embodiments. Figures 39A to 39C Various other types of cosmetic applicators are shown having different brush shapes in accordance with some embodiments.
[0238] False eyelashes
[0239] The production of false eyelashes is a highly labor-intensive operation. However, the inventors realized that the same or better product can be achieved through a collection of wires, and can be 3D printed. The wire structure can be used to represent a wire array with customizable curvature and thickness. In combination with the RAMP system, eyelash thicknesses from 0.05 to 0.15 mm can be obtained, which is similar to existing synthetic monofilament eyelashes.
[0240] In some embodiments, customization can be facilitated by the MESO file format, which has a simplified representation of lines with basic curves. Features of eyelashes can be generated programmatically by the following steps. 1) 3D freeform lines form the base strip. 2) A series of standardized values and vectors define the basic position and direction of each eyelash. 3) The 3D freeform lines are transposed to each position and aligned to the corresponding direction. Fig.40 An example design of eyelashes represented using a wireframe is shown. Fig.41 Variations of eyelash designs are shown according to some embodiments.
[0241] Bracket
[0242] Support structures are sacrificial structures that provide stability and anchoring points for the printed object. It is also provided that these structures are usually removed and discarded. Support structures use the same data structure as other geometric shapes, but are marked with a unique flag.
[0243] In some embodiments, there are three types of support structures, 1) column support, 2) frame support, and 3) leading edge support.
[0244] Column bracket
[0245] The post holder is a tapered wire that is typically anchored to a substrate / convenient location on the other printed component and contacts the printed component with a minimal footprint.
[0246] The post supports are mostly perpendicular to the resin level. This minimizes deflection under the slight buoyancy of the curing resin. In some embodiments, the diameter of the contact points is between 0.05 and 0.1 mm for varying degrees of attachment strength. The small contact points grow rapidly into the thicker rods. The rods are either anchored to the substrate with a large footprint or land on top of another print with minimal footprint.
[0247] Along the length of a long print, a gradient post support array can be used to account for the curvature of the resin web. Thinner supports are used toward the front of the print, which will collapse and deform when it reaches the bend at the bottom of the resin web, while thicker diagonally supported supports are used toward the ends of the print, which remain rigid. The stiffness gradient allows the support structure to collapse sequentially in a predictable manner. Fig.42 A column support technique is shown using a wireframe representation according to various embodiments.
[0248] Frame bracket
[0249] The frame support is a mesh structure formed by wires that provide anchor points for the hanging hairs.
[0250] Overhangs are parts of a print that are not built on previously printed layers. Overhangs of continuous surfaces can be handled by post supports, as smooth surfaces generally have a small number of vertices that need to be supported. However, fine, dense fur of an overhang cannot be supported by post supports, as this would create an equally dense array of post supports that would fuse into a larger solid, which is difficult to remove and uses a lot of resin.
[0251] The frame supports reciprocate the tips of the hairs of each dangling piece with each node of its mesh structure. This forms a cocoon around all the dangling hairs, and the cocoon is anchored with a tree-like structure. The perforations of the frame supports also minimize obstruction to the flow of resin. Fig.43 A frame support for anchoring suspended hairs is shown according to some embodiments.
[0252] Leading edge bracket
[0253] The leading edge supports are integrated lattice-like structures whose main purpose is to provide a good anchoring of the print at the beginning of the printing process.
[0254] In most traditional DLP / SLA printing methods, the printing direction is perpendicular to the resin level. Build platform adhesion is usually handled by building some kind of scaffolding structure perpendicularly from the build platform to the print. It holds the print in place against gravity and the pull from the newly solidified layers. This is also important for prints with irregular shapes that do not sit flush on the build platform. These attachment scaffolding structures also provide anchor points from which overhanging surfaces grow.
[0255] In contrast to conventional systems, OPT RAMPS uses a roll-to-roll cDLP structure with the resin level at an angle (typically 45 degrees) to the printing direction. For optimal print quality, it is also necessary to maintain a spacing between the substrate and the print. This introduces unique challenges to the "build platform adhesion" problem. The angle between the printing direction and the resin level exposes the adhesion scaffold structure to shear forces. The spacing also implies that most of the print is suspended and not in direct contact with the substrate.
[0256] Leading edge supports are an alternative structure to the print bed attachment structure in traditional vertical printing. The leading edge provides an anchoring area perpendicular to the printing direction but elevated from the substrate. The branching structure allows for ample resin flow while increasing support coverage and support density.
[0257] Cocoon Bracket
[0258] The quality of printed structures, especially small features and fine hairs, is highly dependent on print orientation. Structures perpendicular to the resin level produce the best results, while cantilevered structures and overhangs require a support structure. Typically, these conditions are addressed by a column support structure that provides anchoring for surface growth. However, column supports cannot be applied to fine hair structures that support each hair individually, which would produce inefficient dense structures. Many applications (such as, for example, brushes) have fine hair structures pointing in multiple / opposite directions. This cocoon support strategy can support a large number of fine hair structures with a thin porous grid, which in turn is supported by the columns. Fig.44 Example cocoon support strategies are shown in accordance with various embodiments.
[0259] Since the line direction and overhangs are easily detected by taking the dot product with the printing direction, which indicates parallelism, the generation of the cocoon support is uniquely achieved through the MESO file format. The mesh can also be extracted from the MESO line data, where the tips of the hairs form the nodes of the triangulated mesh.
[0260] Tiny support columns can grow from the grid intersecting the fine hair structure. The tapering of both the support and the hairs creates pinch points at their intersection, forming convenient breaking points for easy disassembly. These small hairs also absorb irregularities between adjacent hair lengths, resulting in a smoother cocoon grid.
[0261] The cocoon grid provides additional protection for all fine structures and facilitates correct shape formation. The cocoon acts as a flow shield that regulates the flow of the resin, thereby reducing local turbulence and enabling a smooth, natural recoating. It also increases the local resin temperature and promotes resin curing.
[0262] The cocoon structure also enables stacking of objects with delicate structures, and other objects that require support structures that can fall on top of each other. It prevents supports from above geometry from falling directly on the delicate structure. Instead, supports coming down from above will fall on the cocoon, and the load is transferred along the mesh structure. Fig.45A and 45B Examples of cocoon scaffolds and cross sections are shown, respectively.
[0263] The above embodiments may be implemented in any of a variety of ways. For example, the embodiments may be implemented using hardware, software, or a combination thereof. When implemented in software, the software code may be executed on any suitable processor or set of processors, whether provided in a single computer or distributed between multiple computers. It should be understood that any component or set of components that perform the above functions may generally be considered to be one or more controllers that control the above functions. One or more controllers may be implemented in a variety of ways, such as using dedicated hardware or using one or more processors programmed using microcode or software to perform the above functions.
[0264] In this regard, it should be understood that one implementation of an embodiment of the present invention includes at least one non-transitory computer-readable storage medium (e.g., computer memory, portable memory, optical disk, etc.) encoded with a computer program (i.e., multiple instructions), which performs the functions discussed above of an embodiment of the present invention when executed on a processor. The computer-readable storage medium can be transportable so that the program stored thereon can be loaded onto any computer resource to implement the various aspects of the present invention discussed herein. In addition, it should be understood that references to computer programs that perform the above functions when executed are not limited to applications running on a host computer. On the contrary, the term computer program is used herein in a general sense to reference any type of computer code (e.g., software or microcode) that can be used to program a processor to implement the aspects discussed above of the present invention.
[0265] The various aspects of the present invention may be used alone, in combination, or in various arrangements not specifically discussed in the previously described embodiments, and are therefore not limited in their application to the details and arrangements of the components set forth in the previous description or illustrated in the accompanying drawings. For example, aspects described in one embodiment may be combined in any manner with aspects described in other embodiments.
[0266] In addition, embodiments of the present invention may be implemented as one or more methods, examples of which have been provided. The actions performed as part of a method may be ordered in any suitable manner. Thus, embodiments may be constructed in which the actions are performed in a sequence different from the sequence shown, which may include performing some actions simultaneously, even though in the illustrative embodiments they are shown as sequential actions.
[0267] The use of ordinal terms such as "first," "second," "third," etc. in the claims to modify claim elements does not by itself imply any priority, precedence, or sequence of one claim element with respect to another, or a temporal order of the acts of performing a method. These terms serve merely as labels to distinguish one claim element with a particular name from another element with the same name (but using an ordinal term).
[0268] The phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of "including," "comprising," "having," "containing," "involving," and variations thereof, means to include the items listed thereafter and additional items.
[0269] Having described several embodiments of the present invention in detail, it will be readily apparent to those skilled in the art that various modifications and improvements are within the spirit and scope of the present invention. Therefore, the foregoing description is merely exemplary and not restrictive. The present invention is defined solely by the appended claims and their equivalents.
Claims
1. A computer program product, the computer program product being embodied in a non-transitory computer readable medium, for controlling 3D printing, the computer program product comprising computer readable code for a data structure representing a 3D object, the computer readable code when interpreted by a computer system causing the computer system to control a 3D printing operation of the 3D object in part in response to the data structure; in, The data structure includes: Node information, the node information identifying a plurality of 3D coordinates within the 3D wireframe object; line information, the line information identifying a plurality of nodes that collectively identify at least one line object within the 3D wireframe object; wherein the line information encoded in the data structure further identifies one or more attributes, the one or more attributes comprising at least a respective diameter associated with each of the plurality of nodes of the at least one line object forming a central spine object, the central spine object comprising a plurality of lines that collectively identify the at least one line object within the 3D wireframe object; and Shell information identifying a surface to which the line object is attached, wherein interpretation of the data structure is used to control a 3D printing operation.
2. The computer program product according to claim 1, wherein: The data structure also includes a fill function that defines repeated replication of the line object to a plurality of points on the surface.
3. The computer program product according to claim 1, wherein: The data structure further comprises a blending function adapted to blend at least two geometric shapes.
4. The computer program product of claim 1, wherein: The data structure also includes mesh information describing the geometry of the legacy mesh.
5. The computer program product of claim 1, wherein: The data structure also includes a branching function that describes one or more sub-objects attached to the line object.
6. The computer program product of claim 1, wherein: The data structure also includes parameters controlling at least one of thickness, shape, and / or distortion of the line object.
7. The computer program product of claim 1, wherein: The data structure, when received and interpreted by a computer system, renders a representation of the 3D object.
8. The computer program product of claim 1, wherein: The data structure is used to generate a 3D swab or applicator.
9. The computer program product of claim 1, wherein: The data structure is used to generate a hybrid design of at least two designs.
10. The computer program product of claim 1, wherein: The data structure also includes a volume mapping function.
11. The computer program product of claim 1 , wherein: The data structure also includes an array of vertices of the wireframe object.
12. The computer program product of claim 1, wherein: The data structure also includes information identifying vertices defining a central polyline spine of the line object.
13. The computer program product of claim 12, wherein: The data structure also includes a diameter of the line object at each of the vertices.
14. The computer program product of claim 1, wherein: The data structure also includes information identifying the direction of the normal of the starting face at the starting point.
15. The computer program product of claim 12, wherein: The data structure also includes rotation information of the line object along its vertices.
Citation Information
Patent Citations
Methods and Apparatus for Fabrication with a Movable Sheet
US20200070410A1
Method and system for rapid prototyping of complex structures
US20140031967A1
Modeling a digital design of a denture
US20180098829A1