Varying density support structures for three-dimensional printed objects
Patent Information
- Application Number
- JP2021215418
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-01-22
- Filing Date
- 2021-12-29
- Publication Date
- 2025-01-07
- Estimated Expiration
- Not applicable · inactive patent
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical Field]
[0001] This disclosure relates to three-dimensional printing, and more specifically to a system and method for generating and printing support structures that conform to a changing density contour in order to improve the surface quality of three-dimensional printed objects. [Background technology]
[0002] In many three-dimensional (3D) printing approaches, support structures play a crucial role in the success of printing by supporting parts of the printed object (e.g., overhang areas) to prevent collapse of such parts, for example, as a result of gravity. While support structures can help support the printed object, these auxiliary structures can have undesirable effects, such as damaging the surface, reducing quality, and thereby resulting in visual and functional artifacts. Such artifacts are often unavoidable in widely used methods, such as the fused deposition modeling (FDM) process of a single material, as they can represent a delicate balance between the amount of support and the resulting surface quality.
[0003] Excessive use of supports, while providing additional protection from collapse, can often lead to adhesion of supports to one or more surfaces of the model, thereby potentially leaving defects on the surface. On the other hand, if an insufficient number of supports are implemented, sagging and deformation of other objects may occur, for example, between support points, due to increased bridging distances.
[0004] Many 3D printing applications available on the market provide automated means for designing support structures when printing 3D objects. However, supports designed and printed by existing applications, even for simple shapes, still result in support arrangements that can compromise surface quality. Furthermore, user involvement to mitigate quality issues in existing applications is generally at a very low level and is cumbersome, including manually specifying, for example, the placement of individual support pillars, local adjustments to support patterns, and the orientation and spacing of individual support structures. While such adjustments are often achievable for experienced designers, they waste time to achieve the desired behavior.
[0005] Currently available support structure models can generally be classified into two main categories: 1) fixed pattern supports and 2) tree-like supports. Fixed pattern supports (e.g., those used in commercially available slicers) primarily depend on the user to provide desired pattern parameters such as object and structure orientation and spacing. Tree-like supports typically offer easier removal from objects, but are more complex to design and implement than fixed pattern supports, even if these supports can be automatically generated based on acceptable overhang angles. Supports also typically perform poorly when supporting large, flat surfaces.
[0006] Both fixed pattern supports and tree-like supports rely on user involvement in generating a suitable support structure. Such user involvement is often complex and non-intuitive, as it involves, for example, knowledge of the internal structure of the underlying support generation methodology. [Overview of the project]
[0007] The inventors recognized that while it is desirable to improve the surface finish quality of three-dimensional ("3D") printed objects, it is also desirable to enable inexperienced users to print high-quality objects and to facilitate user convenience.
[0008] Embodiments of the present disclosure provide a system comprising a processor and a non-temporary computer-readable medium communicably connected to the processor. The non-temporary computer-readable medium stores instructions executable by the processor, determines an optimized build orientation based on an object and surface quality characteristics indicated by one or more users, generates a plurality of layers comprising one or more support polygons, each of which corresponds to a slice in a three-dimensional ("3D") printing process, generates a corresponding toolpath for each of the one or more support polygons, and the spacing between each generated toolpath is determined based on the surface quality characteristics indicated by the user.
[0009] By providing such a system, inexperienced users are relieved of the responsibility of designing and implementing 3D support structures, and can then obtain objects with the desired surface quality. Therefore, the user experience can be improved, and the time spent by users preparing 3D printed objects can be reduced.
[0010] Each generated toolpath may, at least partially, coincide with the contour of one or more supporting polygons.
[0011] The spacing between each generated toolpath can be reduced in areas with user-defined surface quality characteristics compared to areas without those characteristics.
[0012] The surface quality characteristics indicated by the user may correspond to the importance of surface finish in one or more areas of the object.
[0013] Generating a corresponding toolpath may include constructing a scalar density field and a bidirectional field based on interpolation of the support polygon boundary normals and a predetermined filling direction; integrating the bidirectional field to generate a set of streamlines, wherein the spacing between the streamlines is based on the scalar density field; integrating the bidirectional field to generate a toolpath corresponding to the support polygon, wherein the spacing between the streamlines is based on the scalar density field; and connecting the generated streamlines to form.
[0014] The operation may further include generating machine instruction files corresponding to the compilation of the generated toolpath.
[0015] At least one of the toolpaths may be curved over at least a portion of its length.
[0016] Determining an optimized build orientation may include determining one or more faces of an object such that each face corresponds to a first part of the object that extends at a certain angle to a second adjacent part; determining one or more supported overhangs between one or more faces such that the supported overhangs correspond to faces whose angle exceeds a predetermined threshold angle; and determining an object orientation that results in minimizing the number of support structures for supported overhangs within an object region having user-defined surface quality characteristics.
[0017] The system may include a molten deposit modeling 3D printer, and the generated toolpaths can be sent to the printer for execution.
[0018] The surface quality characteristics indicated by the user may be received from the user via a user interface that allows for direct user intervention in the digital representation of the object.
[0019] A further embodiment provides a method for three-dimensional printing of an object. This method includes determining an optimized build orientation having surface quality characteristics for an object and one or more users, generating each of a plurality of layers corresponding to slices in a three-dimensional ("3D") printing process, and for each of the layers of one or more support polygons, generating a corresponding toolpath for each of the corresponding toolpaths, wherein the spacing between each generated toolpath is determined based on the surface quality characteristics indicated by the users.
[0020] By providing such a method, inexperienced users are relieved of the responsibility of designing and implementing 3D support structures, and can then obtain objects with the desired surface quality. Thus, the user experience can be improved, and the time spent by users preparing 3D printed objects can be reduced.
[0021] Each generated toolpath may, at least partially, coincide with the contour of one or more supporting polygons.
[0022] The spacing between each generated toolpath can be reduced in areas with user-defined surface quality characteristics compared to areas without those characteristics.
[0023] The surface quality characteristics indicated by the user may correspond to the importance of surface finish in one or more areas of the object.
[0024] Generating a corresponding toolpath may include constructing a scalar density field and a bidirectional field based on interpolation of the support polygon boundary normals and a predetermined filling direction; integrating the bidirectional field to generate a set of streamlines, wherein the spacing between the streamlines is based on the scalar density field; integrating the bidirectional field to generate a toolpath corresponding to the support polygon, wherein the spacing between the streamlines is based on the scalar density field; and connecting the generated streamlines to form.
[0025] This method may further include generating machine instruction files corresponding to the compilation of the generated toolpath.
[0026] At least one of the toolpaths may be curved over at least a portion of its length.
[0027] Determining an optimized build orientation may include determining one or more faces of an object such that each face corresponds to a first part of the object that extends at a certain angle to a second adjacent part; determining one or more supported overhangs between one or more faces such that the supported overhangs correspond to faces whose angle exceeds a predetermined threshold angle; and determining an object orientation that results in minimizing the number of support structures for supported overhangs within an object region having user-defined surface quality characteristics.
[0028] This method may further include transmitting the generated toolpaths to a fused deposit modeling 3D printer for execution.
[0029] The surface quality characteristics indicated by the user may be received from the user via a user interface that allows for direct user intervention in the digital representation of the object.
[0030] Except where otherwise inconsistent, the elements described above and any combination thereof within this specification are intended to be possible.
[0031] Please understand that both the general description above and the detailed description below are illustrative and explanatory only, and do not limit this disclosure to any extent as claimed.
[0032] The accompanying drawings incorporated herein and constituting part thereof illustrate embodiments of the present disclosure and, together with this specification, serve to illustrate the principles thereof. [Brief explanation of the drawing]
[0033] [Figure 1] Embodiments of the present disclosure illustrate an exemplary system for printing three-dimensional ("3D") objects.
[0034] [Figure 2A] This is a diagram of a digital representation of an object ready to accept user input related to surface quality characteristics via an interface.
[0035] [Figure 2B] Figure 2A shows a representation of Figure 2A with an exemplary saturation map displayed on the object representation.
[0036] [Figure 2C] Figure 2A shows a representation where the quality field has user input with the desired surface quality characteristics of the object.
[0037] [Figure 3A] This is a diagram illustrating how to determine the overhang of a 3D printed object.
[0038] [Figure 3B] This is a schematic diagram of the digitized object in Figure 2 in the first orientation during preparation for printing, using exemplary slicing in 3D printing preparation.
[0039] [Figure 3C] This is a schematic diagram of a digitized object in an optimized orientation for 3D printing.
[0040] [Figure 4A] This is a schematic diagram of a digitized object 100 showing exemplary slicing into layers and corresponding supporting polygons.
[0041] [Figure 4B]Figure 4A shows an exemplary slice / layer including the completed streamlines / toolpaths that define the supporting layer.
[0042] [Figure 4C] Figure 4B highlights the "contour-formed" toolpaths at the boundaries of the supporting polygons shown.
[0043] [Figure 5] A flowchart is shown illustrating a method for generating a variable density support structure for 3D printed objects.
[0044] [Figure 6] This specification describes a computing device that may be specifically configured to perform one or more of the processes described herein. [Modes for carrying out the invention]
[0045] Hereinafter, an exemplary embodiment of the present disclosure is given in detail, and this embodiment is shown in the accompanying drawings. Wherever possible, the same reference numerals are used throughout the drawings to refer to the same or similar parts.
[0046] The disclosed embodiments may provide the features and benefits described above, as well as one or more of the various additional and / or alternative features and benefits revealed herein.
[0047] According to embodiments of this disclosure, a toolpath for three-dimensional ("3D") printing of an object is constructed as connected streamlines generated in a bidirectional field created within a support polygon. The streamlines are generated based on a variety of components, including, but not limited to, user-indicated surface quality characteristics and optimized print orientation. As used herein, the term "surface quality characteristics" is understood to mean a desired quality level in a region of the surface of the object 100 after printing. In other words, surface quality characteristics may represent a desired high-quality surface in some areas of the object 100, a low-quality surface in other areas of the object 100, and various other surface qualities in other areas of the object 100 based on user instructions. For example, high quality may correspond to a desired roughness in the range of ISO grades N4 to N6, and low quality may correspond to ISO grades N9 to N12.
[0048] Figure 1 is an exemplary system 10 for printing a three-dimensional ("3D") object 100 according to embodiments of the present disclosure, and Figure 5 shows a flowchart 200 illustrating a method for generating a variable density support structure for a 3D printed object. Figure 5 is referenced in conjunction with various other figures throughout the present disclosure to correlate the steps in Figure 5 with the process performed by system 10.
[0049] System 10 can be implemented on any suitable computing device, such as a personal computer. System 10 may comprise a processor and non-temporary memory, as will be described in more detail below, the memory storing instructions related to one or more software modules for performing the functions of the present disclosure. According to some embodiments, System 10 may include, among other things, a model input module 15, a user input module 20, a stellarity determination module 25, an orientation determination module 30, a support layer determination module 35, a digital rendering module 40, and a 3D printer communication module 45. System 10 may further comprise a display 170 and a 3D printer 180, such as a fusion filament manufacturing printer and / or a fused deposition modeling printer.
[0050] The model input module 15 may be configured to enable the reception and / or digitization of the object 100 to be 3D printed (step 202). The object 100 to be 3D printed may be any 3D object that the user wishes to print and may include various contours 110, overhangs 120, and other features that lead to a visually perceptible object. For the purposes of this disclosure, it is assumed that the user wishes to print a figure, for example, a game character figure, in three dimensions, and that the facial features and head region of the figure are desired to have surface quality characteristics corresponding to the highest surface quality, while the importance of the rest of the figure's surface quality is limited. In other words, the surface quality characteristics of the figure's regions vary based on the wishes of the user and the market audience.
[0051] According to embodiments of this disclosure, a digital representation of object 100 can be created for the purpose of printing additional objects 100 using a 3D scanner (not shown) that communicates with a model input module 15. In another example, object 100 can be designed in three dimensions using design software such as a computer-aided drafting (CAD) tool, and implemented by the model input module 15. Thus, a digital version of the 3D object to be printed can be generated by the user and subsequently manipulated in accordance with this disclosure. Those skilled in the art will understand that various methods exist for creating and / or obtaining digital versions of 3D objects, and any such method is intended to be within the scope of this disclosure.
[0052] Figure 2A shows a digitized representation of an object ready to accept user input related to surface quality characteristics via interface 175. The digital rendering module 40 is configured to display to the user, for example, via interface 175 on display unit 170, a digital representation of the object 100 to be 3D printed, and, in particular, an interface used by the user to indicate the desired surface quality characteristics of the object 100.
[0053] Interface 175 may include a variety of controls that allow the user to directly interact with the digital representation of object 100 to indicate the user's preferences and desires regarding the printing of the object. For example, interface 175 may include one or more checkboxes 280-288, sliders 262-264, text controls 270-278, and cursors 290 (e.g., mouse, touch, voice, eye, motion controls, etc.) that allow the user to change the view / appearance of the digital representation and input information related to the object 100 to be printed (e.g., desired quality information). The controls mentioned and described herein are illustrative only, and any other suitable control units for performing the described processes may be implemented without departing from the scope of this disclosure. For example, sliders may be interchangeable with knob-type controls, and checkboxes may be interchangeable with drop-down or list-selection type controls. Furthermore, without departing from the scope of this disclosure, more or fewer controls may be presented to interface 175, and the particular controls presented may be enabled or disabled as desired by the user to simplify the interface and / or printing procedure.
[0054] The brush size slider 262 may be configured to allow the user to adapt the size of the cursor 290 to include a general area when activating the cursor's features. For example, sliding the brush size slider 262 to the left can reduce the area of the cursor 290, while sliding it to the right can increase the area of the cursor 290. Such functionality may be useful, for example, to indicate areas of lower or higher quality on the digital representation of object 100.
[0055] The opacity slider 264 may, in particular, be configured to change the opacity of the "paint effect" used to display the saturation map 250 and / or surface quality fields, as defined by the user. For example, depending on the level of "opacity" indicated by the opacity slider 264, the area of the saturation map or user input quality characteristics may be made more opaque or more transparent for the representation of the object 100 displayed within the interface 175.
[0056] Therefore, by sliding the opacity slide 264 to the left (i.e., to a lower level), quality instructions made by the cursor 290 on or around object 100 may be less important (i.e., of lower quality relative to the surrounding area), while the opacity of the paint effect strokes on the displayed object 100 may also be reduced. Similarly, by sliding the opacity slide 264 to the right, quality instructions made by the cursor 290 on or around object 100 may correlate with higher importance and higher surface quality on the final printed object 100, while the opacity of the paint effect of the strokes may increase on the displayed object 100.
[0057] Text controls 270-278 may be configured to allow direct user input of variables used in relation to the performance of the operations performed herein and used as described below. For example, text controls 270-278 may allow control of variable values described below, among other things, related to the creation of optimized print orientation, support layout, and 3D printing capabilities. According to some embodiments, text controls 270-278 may be available based on user-selected preferences, for example, if the user is an experienced user, text controls 270-278 may be available for the user to enter data. In contrast, an inexperienced user may indicate that they desire to have variable data pre-filled with “typical” values to facilitate easy printing of object 100 with minimal user input.
[0058] The overhang threshold text control 270 is used, for example, in overhang calculations when determining the desired support area of the print object 100, and in the optimized print orientation of the object 100, by determining the threshold overhang angle φ. t It can be configured to accept an angular input indicating a threshold overhang angle, φ. According to some embodiments, the threshold overhang angle, φ t By default, this can be set to a value in the range of approximately 40-50 degrees, for example, 45 degrees. However, users may want to customize this value depending on the capabilities of the 3D printer being used, for example, to allow surfaces to be 3D printed without the need for support structures. In other words, the number of supports changes inversely proportional to the angle at which the implemented 3D printer can print without the need for support.
[0059] The maximum crosslinking text control 272 can be configured to receive user input regarding the maximum crosslinking distance of the determined support. Smaller spacing between support toolpaths (i.e., lower maximum crosslinking distance) can provide higher quality crosslinking, thereby resulting in better surface quality. However, smaller spacing increases the amount of material used for the support, as well as the overall printing time. Therefore, by allowing the user to customize this value, a desired balance between cost, printing time, and surface quality can be achieved. The maximum crosslinking can be set to a default value in the range of 3 to 10 mm, for example, 5 mm, and inexperienced users can choose to use the default value.
[0060] The layer height text control 274 may be configured to allow the user to set the layer height value of an object during the slicing operation. For example, object 100 may be cut into relatively thin slices, each representing a layer in a 3D printing operation, and the support path is calculated for each such layer. The layer height is then set for two consecutive layers S shown in Figure 4A. i and S i+1This can affect the distance between layers. Generally, the smaller the selected layer height, the higher the surface quality throughout the object. However, a smaller layer height may increase the printing time of the object, so the user can determine the desired balance based on these factors. The layer height may also vary depending on the type of printing hardware used and may be set initially based on such hardware. For example, according to one 3D printer that may be used, a default value in the range of approximately 0.100mm to 0.150mm, e.g., 0.125mm, may be set as the layer height.
[0061] The fill direction text control 276 may be configured to receive input as a 2D vector in xy Cartesian space, or as a degree of angle between the fill direction and the s-axis. Supporting toolpaths may be improved if such toolpaths are created orthogonal to the toolpaths they intend to support. Thus, using the fill direction information provided or set using the fill direction text control, the direction of the supporting toolpaths can be calculated so that the perpendicularity to the fill direction is maximized.
[0062] The weight ratio text control 278 may be configured to allow the user to input a desired weight ratio ω between 0 and 1. The weight ratio may default to 1 and may therefore be configured to provide the maximum surface quality corresponding to the quality characteristics indicated by the user, as described below. In other words, for a weight ratio ω of 0, the user's input quality characteristics may be completely ignored by the system when determining orientation and support layers. Conversely, if 1 is selected as the weight ratio ω, the system can adhere the user's input quality characteristics as closely as possible when determining orientation and support layers. In this way, the user can customize the weight ratio ω to a desired value to obtain the desired printing time and material cost, as it is balanced for the desired surface quality of the object.
[0063] In particular, the values associated with text controls 270-278 can change material costs (e.g., the amount of material used) and time costs (e.g., the estimated time required to print an object that may be provided to the user ("time to print, TTP")). For example, if the maximum crosslinking value, weight ratio, overhang threshold, etc., are changed, the material and time cost displays 190 may be updated to reflect the changes in material usage and printing time resulting from the changes to the text control values. In such an example, increasing the weight ratio ω toward 1 may increase printing time and material costs, while changing the weight ratio ω toward 0 may decrease printing time and material costs. Similarly, increasing the crosslinking distance may decrease material costs and printing time, while decreasing the crosslinking distance may have the opposite effect.
[0064] To enable changes to the view within interface 175, checkboxes 280-288 may be provided. For example, checkbox 286 may, when checked, allow the user to view and interact with a wireframe of object 100, while unchecked, object 100 may be displayed normally. Similarly, a point cloud checkbox 284 may be configured to allow the user to view and interact with a digital representation of object 100 as a point cloud (i.e., a set of data points in space defining object 100) when checked, and as a normal view when unchecked.
[0065] The oblique view checkbox 282 may be configured to allow the user to view and interact with the digital representation of an object in an oblique view when checked, and to display a two-dimensional plan view when unchecked.
[0066] The spleness checkbox 280 may allow the user to view a spleness map generated by the system 10 as a starting point for user input related to the quality characteristics of object 100, for example. For example, if the user does not check the spleness checkbox 280, step 204: No): In Figure 2A (step 210), a digital representation of object 100 may be provided without displaying the spleness map.
[0067] When the user checks the Striking Checkbox 280 (Step 204: Yes), the Striking Determination Module 25 may be configured to prepare a Striking Map based on the Striking Features of Object 100, based on the digital representation of Object 100 acquired by the Model Input Module 15 and displayed via the Interface 175 (Step 206). For the purposes of this disclosure, Striking Features refer to features that, under typical judgment, are significant to an object. For example, in a human face, the curvature of the eyes, the overhangs of the nose and eyebrows, and the shape of the face are typically considered Striking Features. Similarly, features that define the shape of a figure, such as curvature and overhangs, are considered Striking. Those skilled in the art will understand that other Striking Features, such as color and texture, may be considered for the purpose of preparing a Striking Map.
[0068] The distinctiveness determination module 25 can determine distinctiveness in any preferred manner, for example, based on the curve determination of the mesh at vertex v as shown below.
[0069] A curvature map C can be used to define a mapping from each vertex of a mesh to its mean curvature, for example, C(v) can represent the mean curvature of vertex v in the mesh. The neighborhood N(v,σ) of vertex v can be a set of points within distance σ. Several distance functions can be used to define neighborhoods such as geodesic or Euclidean distance. For the purposes of this disclosure, Euclidean distance is implemented, and thus x is a mesh point, and equation 1 can be used to define the neighborhood N(v,σ).
number
[0070] Next, the Gaussian weighted mean of the mean curvature G(C(v), σ) can be defined by Equation 2.
number
[0071] Next, as shown in Equation 3, the samplingness s of the vertex v can be calculated as the absolute difference between the Gaussian weighted averages.
number
[0072] According to some embodiments, the stellarity s can be determined at multiple different scales of object 100 using, for example, equation 4, where i corresponds to a specific scale level. i is the standard deviation of the Gaussian filter at scale i. Multiple saliencies can then be combined by summing the saliency maps across all determined scales. According to some embodiments, such multiscale calculations can be performed as described in Chang Ha Lee et al, "Saliency of Meshes," ACM SIGGRAPH, pp. 659–666 (2005), the contents of which are incorporated herein by reference.
number
[0073] The user input module 20 may be configured to receive user input in relation to a desired surface quality characteristic of a region / part of object 100, for example, and define a quality field Q on object 100 (step 212). Figure 2C shows a representation of Figure 2A with user input indicating a desired surface quality characteristic of a region of object 100 as the quality field Q. The user may interact with the digital representation of object 100 with or without using the saturation map 250 determined above to indicate, among other things, a desired surface quality characteristic of object 100. For example, the user may desire that a particular part of object 100 have a higher surface quality than other less important parts of object 100, and the quality field Q may thereby be defined with such user input.
[0074] Therefore, in addition to providing a visual representation of the 3D printed object 100, the interface 175 allows the user to directly interact with the visual representation via an input device, such as a mouse, keyboard, touchscreen, stylus, or drawing pad, to "mark up" areas of high importance with desired surface quality characteristics to form a quality field Q. For example, the user may use a mouse to point and click on areas of desired surface quality while leaving other less important areas of the object 100 unmarked. Alternatively, or additionally, the user may use their finger to highlight different parts of the object 100 shown in the digital representation via a touchscreen. Any preferred method for enabling the user to have desired surface quality characteristics on the representation of object 100 is intended to fall within the scope of this disclosure.
[0075] The quality field Q can be represented on object 100 within the interface, for example, as a "paint effect" in digital representation. In some examples, the paint effect may change along with its surface quality characteristics based on, for example, the number of passes over the area or the pressure applied to the area (e.g., a touchscreen). For example, a gradient of the "paint effect" can be represented on the object based on the pressure applied by a user's finger on a touchscreen, and the gradient corresponds to the quality field Q that defines the surface quality characteristics that change across the area of object 100.
[0076] In this example, greater pressure can be correlated with a darker portion of the gradient, thus corresponding to a higher desired surface quality in the indicated area of object 100. In another example, if the user inputs a desired surface quality characteristic via the mouse, more mouse passes and / or clicks across the area can be correlated with a darker gradient, thus corresponding to a higher desired surface quality for that area. Similarly, less pressure and / or fewer passes / strokes can be correlated with a lighter gradient, thus corresponding to a lower or less important surface quality. Those skilled in the art will recognize that the gradient of the "paint effect" can also be reversed as needed, i.e., a lighter gradient corresponding to a higher quality and a darker gradient corresponding to a lower quality. The gradient representation can also be reversed as needed via user preferences (e.g., checkboxes or menu preferences).
[0077] Furthermore, to create varying importance levels for surface quality areas within quality field Q, the user may activate one or more controls within interface 175 that allow for variations in intensity related to surface quality characteristics. For example, the opacity slider 264 and / or brush size slider 262 may allow the user to vary the intensity and / or "brush" size levels of a stroke having desired surface quality characteristics on one or more surfaces. For example, opacity corresponding to gradient density may also be controlled via sliders, either as an alternative or in addition to the pressure and stroke described above.
[0078] Once the user creates a desired quality field Q for object 100, the user can initiate a print operation to print object 100 based on the digital representation and quality field Q. In response, the system takes into account the user-defined surface quality characteristics defined by the quality field Q and begins preparing an optimized orientation for printing object 100 (step 214) and determining the corresponding support structure (step 216). Orientation optimization
[0079] The orientation determination module 30 may be configured to determine the print orientation of object 100, taking into account, among other things, material usage, user-specified quality characteristics, build time and cost, and mechanical properties. In particular, the orientation determination module 30 can balance these exemplary factors when determining the print orientation according to embodiments of the present disclosure.
[0080] Figure 3A is a diagram illustrating the determination of overhangs on a 3D printed object 100. A matrix V of vertices V present on object 100 and determined for the stellarity map 250 as described above is used to determine one or more overhangs 310, 320 of object 100 that may be desirable to support during 3D printing. In order to determine whether the overhang regions 310, 320 should be supported during printing, and therefore to include one or more support structures according to this disclosure, the orientation determination module 30 can first determine how much the overhang inclination φ from the build direction (i.e., the direction in which the layers of object 100 are printed) is. In Figure 3A, the build direction is shown as Z, and φ is measured relative to Z, and the threshold overhang angle φ t It can be compared with the threshold overhang angle φ. t If it is greater than the threshold overhang angle φ, the orientation determination module 30 may then determine that the overhangs 310, 320 currently being analyzed should be supported by the support structure during the printing process. In contrast, if the current overhang angle φ is greater than the threshold overhang angle φ t If it is smaller than this, the orientation determination module 40 may determine that no support structure is required. The orientation determination module 30 may iterate over the entire mesh of object 100 based on the vertex matrix V to determine a list of overhangs 310, 320 that have a support structure requirement.
[0081] In particular, based on the determination of the desired support of one or more overhangs 310, 320, the object 100 can be printed while being oriented to minimize the overhang surface area identified as the overhang having the desired support structure. This can be done by minimizing the contact surface area of the support on the surface of the object 100 and taking into account the user preference for the surface quality characteristics as defined by the quality field Q determined from the user input. Since the overhangs 310, 320 are defined on the mesh surface, as shown in Equation 5, the quality field Q can be mapped to the mesh surface based on the mesh vertices by averaging the vertices of each face. In Equation 5, q j is the average quality value of face j, n V is the number of vertices on the face, and k is the vertex index.
Number
[0082] [[ID=...]] To make the cost of orientation a coefficient, the cost function can be implemented as shown in Equation 6.
[0083]
Number
[0084] In Equation 6, θ = [α, β] represents the rotation about the z-axis and the x-axis, and the vertex v of the rotated mesh can be calculated as V r =R x (β)R z (α)V. In the formula, R z and R x are rotation matrices, and V is a matrix storing the vertex positions. A j ∈ [0, 1] is the normalization region of face j, p > 0 is the handling method coefficient, for example, a value between 2 and 4 (for example, 3) can be used, and ω ∈ [0, 1] is the weight ratio parameter selected by the user (for example, manually via the interface).
[0085] When ω is selected to be 0, the optimization can minimize the total contact area of the support structure with the surface of object 100 without considering the quality field Q input entered by the user. In contrast, when ω is selected as 1, the contact area of the support structure that overlaps with higher quality areas is minimized, as indicated in the quality field Q.
[0086] Figure 3B is a schematic diagram of the digitized object of Figure 2 in a first orientation, and Figure 3C is a schematic diagram of the digitized object in an optimized orientation for 3D printing. The optimization by the orientation determination module 30 can be configured to eliminate most, rather than all, support contacts in high-quality areas as shown within the user-defined quality field Q. For example, object 100 can be printed upside down as shown in Figure 3B, but this build orientation may be undesirable as the orientation shown in Figure 3C based on the user-defined quality field Q.
[0087] Therefore, the orientation determination module can determine the orientation using Equation 7. In the equation, n F This is the number of faces.
number
[0088] Based on this, as object 100 is reoriented, only the overhang angle j is recalculated for each desired evaluation, and the optimization can be found quickly and with reduced computational power using only two optimization variables.
[0089] Next, the orientation determination module 30 may be executed approximately 5,000 to 15,000 times (for example, 10,000 iterations) using a simulated annealing method, and the optimized orientation may be determined based on this. Determination of the supporting layer
[0090] Once the orientation is determined by the orientation determination module 30, the support layer determination module 35 can begin creating a support structure layer for object 100, which is represented as a toolpath (step 216). The toolpath defining the support layer can be generated by the support layer determination module 35, for example, as a continuous streamline generated in a bidirectional field B created inside the support polygon of each layer / slice of object 100. Figure 4A is a schematic diagram of a digitized object 100 showing exemplary slicing into layers and the corresponding support polygon S.
[0091] Figure 4B shows an exemplary slice / layer of Figure 4A, including the completed streamlines / toolpaths that define the support layer determined based on the following: The support layer determination module 35 defines the support polygon S i Target slice T of object 100 supported by i T is i+1 Support polygon S corresponding to layer i having i A set can be constructed. Quality requirement Q is defined by the quality field Q and corresponds to the i-th support layer. i This is first determined by the support layer determination module 35. For example, this can be done by taking a slab of Q between layers i and i+1, considering the i-th layer, and projecting the quality value onto each vertex v on the surface of the slab. This then gives a slice T with the corresponding scalar quality value. i+1 A set of samples is generated that surrounds and inside the object.
[0092] Next, bidirectional field B i and scalar density field D i Two fields can be constructed: scalar density field D i The above Q i This corresponds to the linear interpolation of quality samples determined by, i.e., derived from the user-input surface quality characteristics that form the quality field Q.
[0093] The bidirectional field targets the slice T. i+1Interpolation of the boundary normals and support polygon S based on a predetermined filling direction i It can be obtained based on the following. A predetermined filling direction may be provided to the user as an option (e.g., x-direction or y-direction) (e.g., via the interface), or it may be fixed within the interface as a user preference for all of the user's projects, via a menu item and / or application settings. Alternatively, the filling direction may be fixed for all projects, for example, based on the indicated user experience level.
[0094] A 3D object with n slices, i ∈ [0, n] (where i = 0 and i = n), corresponds to a bottom and top slice / layer starting at n-1, and the object can be processed up to i = 0. Within each layer, an empty set of supporting polygons C i =S i ∩T i+1 If these do not exist, to successfully 3D print, support toolpaths must be provided for these areas to support the upper layer's polygon S. i+1 The supporting toolpath should be aligned with the support polygon S. i+1 The streamlines of the upper layer are supported by the polygon S of the lower layer. i These carried-over streamlines then form the supporting polygon S of the slice. i For curvature map C i It can be trimmed based on the following: Then, support polygon S i New streamlines in the remaining region (i.e., streamlines supporting polygon S) i+1 These areas (which have not been carried over from) can be created. i =T i+1 ∩S i .
[0095] Bidirectional field B i To create this, a predetermined filling direction of object 100 is represented as f, and a vector perpendicular to the predetermined filling direction is represented as d. Supporting polygon S of a given slice i The streamlines generated within are supported by the slice / layer T i+1It should be perpendicular to both the surface and the surrounding of the internal filler. Therefore, the current slice E i A field should be constructed that follows the boundary normal to the boundary of d. For this purpose, the region of effective packing is the boundary E with respect to the current slice. i Offset inward to set the offset polygon O relative to the current slice. i This is determined by creating this offset polygon set O i Inside, bidirectional field B i Align them in a predetermined direction d. i On the boundary, the field is constrained to align with the normal.
[0096] E i and O i The region bounded by the boundary is the bidirectional field B i The orientation is obtained by linear interpolation. This gives the boundary E i It becomes possible to obtain the smooth field within and generate streamlines.
[0097] In the case of bidirectional field interpolation, each vector can be represented by the minimum angle produced by the examined vectors, having a predetermined fixed axis Γ.
[0098] Bidirectional field B i This allows for singularities in the neighborhood C where the bidirectional field rotates by π radians. This means that singularities can occur around Γ. To minimize the number of singularities in the resulting field, Γ can be selected along the packing direction f. i For possible interpolation between the boundary normals of and d, selecting Γ in this scheme allows us to keep the active interpolation region away from any problematic region.
[0099] Regarding slicing,
number
[0100] The spacing between adjacent streamlines is the density field D derived from the quality field Q. i It can be controlled locally using the bidirectional field B. Streamlines are bidirectional field B. i It can be generated by performing a numerical integration of . The support layer determination module determines the separation distance d from the existing streamlines. sep Select a seed point for the new streamline. Since a streamline is represented as a series of points (i.e., a multiline), this corresponds to offsetting the points along their alignment in the direction of their normal. Then, starting from the seed point, the new streamline will be 1) within the domain boundary (i.e., S i 1) until it merges with the boundary of, 2) until the field size reaches a single point close to 0, or 3) until it reaches a predetermined threshold distance d test It is repeatedly extended in both directions until it approaches another existing streamline. According to some embodiments, d test is, d sep It can be set as part of d. test The separation distance d is between 0.6 and 0.8. sep (For example, 0.7d) sep ) can be set to ).
[0101] If there are no further valid seed points, the generation of the stream can be stopped. In particular, the support layer determination module 35 can select any point on the boundary of E i as the starting seed point and initialize the process. To avoid leaving large gaps and skipping unconnected components of S i , the support layer determination module can implement additional seed points arranged on a regular grid created within the bounding box of the support polygon S i .
[0102] The support layer determination module 35 can adapt the local spacing between streamlines by determining d sep according to Equation 8. d sep = d min + (1 - D i (x, y))(d max - d min ) (8
[0103] In Equation 8, D i (x, y)) ∈ [0, 1] is the value of the density field D at the position (x, y), and d min and d max are, respectively, the minimum and maximum allowable intervals between streamlines. The maximum interval, d max , can be determined based on the object and / or process and can correspond to the maximum distance for successfully bridging the support (i.e., the maximum distance before the expected breakage / collapse of the part supported by the support structure). The minimum interval, d min , may be 0 corresponding to the solid filling of the support area, but in actual implementation, it saves materials and avoids an undesirable strong adhesion between the support layer and the object surface. d min can be a value greater than 0, for example, a value greater than 0.3 (d max ). Using a predetermined threshold d sep set as a percentage of D test can reduce the constraints on streaming generation and allow longer streamlines by increasing the minimum distance at which the integration of the streamlines will end. Setting of the test distance dtest Set to 0.7 of the separation distance d sep By doing so, a good balance can be provided between obtaining longer streamlines and exercising stricter control over the spacing between streamlines.
[0104] The integration of the streamlines can be performed by any suitable integration method. For example, according to some embodiments, each new point of the streamline is [Number] There is a fixed-step Euler integrator calculated as. Here, h is the integration step and p k is the last point of the streamline, [Number] is the unit direction vector at point p k and it is obtained from the bidirectional field B i from. Since B i is bidirectional, there are two possible directions to extend the streamline at any point p k . According to this embodiment, B i (p k ) = {+b, -b}, where b is a vector. Among the two possible directions, at least the direction deviating from the previous step is selected as shown in Equation 9. [Number]
[0105] To avoid making sudden variations that may not be supported by the printing tool head, the support determination module 35 [Number] the angle between and the last line segment of the streamline is, for example, greater than a certain threshold, and π / 3 radians can be selected as the threshold.
[0106] [Number] If so, the previous supporting polygon S i+1 The streamlines carried over from are streamlines E. i The streamlines can be elongated before starting to generate new ones. For this purpose, the endpoints of the carried-over streamlines can be used as seed points for integration. New seed points can then be created by offsetting the elongated streamlines.
[0107] Next, each supporting polygon S i The streamlines connect to adjacent channels, creating long, continuous paths, at least a portion of which conform to the contour of the printed object 100. To enable the connections and contour to the boundary of object 100, the streamlines are supported by a polygon S for one layer. i It can be trimmed to the boundary. Then, the supporting polygon S i Starting with the shortest streamline, the support determination module 35 determines each streamline l j Check them in order, and the streamline l that you checked j in close proximity (for example, 2 * d sep , 3 * d sep , or 4 * d sep Another unconnected streamline l (within approximately the same distance) k to, connecting streamline l c It can be connected by. The streamline l considered j and a nearby streamline l k A successful connection between l c To obtain this, the support layer determination module 35 can evaluate the following criteria: i) the examined streamlines l j The endpoint is adjacent to streamline l k (ii) The endpoint is sufficiently close, and the streamline l j and adjacent streamlines l k (iii) The path connecting to does not intersect with other streamlines or other connecting paths, (iii) the streamlines l considered j and adjacent streamlines l k The path connecting to the current support polygon S iNot being far from the boundary.
[0108] l j and l k A normal connection during l c Once established, k The connection can be extended from the opposite end until the valid connection defined above is lost.
[0109] The support layer determination module 35 has two types of connection paths l between the streamlines l: a straight path and a boundary (contour) following path l. c It is possible to create a straight path, the current streamline l j and adjacent streamlines l k Both connection endpoints are of the current supporting polygon S i It can be created when it is inside. In this case, each streamline l j , l k The endpoints are connected by straight lines without outlines.
[0110] The support layer determination module 35 uses streamlines l j and / or l k The connecting endpoints are supported by polygon S i boundary E i In this case, a contoured path can be created. In this case, the support layer determination module 35 can implement the shortest boundary segment that connects two points as a connecting path. This can enable the creation of connected streamlines corresponding to the toolpath supporting the periphery of object 100, while also maintaining boundary details. Figure 4C shows the support polygon S shown in Figure 4B. i boundary E i The exemplary portion 450 of such a “contoured” toolpath is highlighted.
[0111]
number
[0112] According to some embodiments, the support layer determination module 35 may be configured to use Laplacian smoothing to smooth the streamlines around the junction. This technique can be used to improve the support layer toolpath for fusion filament manufacturing type printing, for example, by limiting problems associated with accelerating / deceleration of the print toolhead at sharp corners. This can also improve print time. Toolpath Code Generation
[0113] The 3D printer communication module 45 may be configured to receive support layer information, including the streamlines described above, and to create machine instructions for the 3D printer that enable printing of the object 100 together with the support layer.
[0114] The 3D printer communication module 45 can compile machine instructions in the form of a generally accepted gcode, for example. Support toolpaths and target object toolpaths can both be compiled together for all layers. The 3D printer communication module 45 can use any preferred method for compiling toolpaths into gcode. For example, the open-source slicer gsSlicer can be implemented to convert all streamlines / toolpaths into gcode to generate toolpaths for target objects and to send to the desired 3D printer. Hardware and software
[0115] Figure 6 shows an exemplary computing device 600 that may be specifically configured to perform one or more of the processes described herein.
[0116] As shown in Figure 6, the computing device 600 may include a communication interface 602, a processor 604, a storage device 606, and an input / output ("I / O") module 608 that is communicably connected via a communication infrastructure 610. While an exemplary computing device 600 is shown in Figure 6, the components shown in Figure 6 are not intended to be limiting. Additional or alternative components may be used in other embodiments. The components of the computing device 600 shown in Figure 6 are described in further detail below.
[0117] The communication interface 602 may be configured to communicate with one or more computing devices. Examples of the communication interface 602 include, but are not limited to, wired network interfaces (such as network interface cards), wireless network interfaces (such as wireless network interface cards), modems, audio / video connections, and any other suitable interfaces.
[0118] The processor 604 generally represents any type or form of processing unit capable of processing data or interpreting, executing, and / or directing the execution of one or more of the instructions, processes, and / or operations described herein. The processor 604 may direct the execution of operations in accordance with one or more applications 612 or other computer-executable instructions that may be stored in the storage device 606 or another computer-readable medium.
[0119] The storage device 606 may include one or more data storage media, devices, or configurations, and any type, form, and combination of data storage media and / or devices may be used. For example, the storage device 606 may include, but is not limited to, a hard drive, a network drive, a flash drive, a magnetic disk, an optical disk, RAM, dynamic RAM, other non-volatile and / or volatile data storage units, or combinations or subcombinations thereof. Electronic data, including the data described herein, may be stored temporarily and / or permanently in the storage device 606. For example, data representing one or more executable applications 612 configured to instruct the processor 604 to perform any of the operations described herein may be stored in the storage device 606. In some examples, the data may be located in one or more databases residing in the storage device 606.
[0120] The I / O module 608 may include one or more I / O modules configured to receive user input and provide user output. Input may be received using one or more I / O modules. The I / O module 608 may include any hardware, firmware, software, or combination thereof that supports input and output capabilities. For example, the I / O module 608 may include hardware and / or software for capturing user input, including but not limited to a keyboard or keypad, a touchscreen component (e.g., a touchscreen display), a receiver (e.g., an RF or infrared receiver), a motion sensor, and / or one or more input buttons.
[0121] The I / O module 608 may include, but is not limited to, a graphics engine, a display (e.g., a display screen), one or more output drivers (e.g., display drivers), one or more audio speakers, and one or more audio drivers, one or more devices for presenting output to the user. In certain embodiments, the I / O module 608 is configured to provide graphic data to the display for presentation to the user. The graphic data may represent one or more graphical user interfaces and / or any other graphic content that can serve a particular form of implementation.
[0122] The model input module 15, user input module 20, prominentness determination module 25, orientation determination module 30, support layer determination module 35, digital rendering module 40, and 3D printer communication module 45 can be implemented in any preferred form using any preferred development tool. For example, the modules can be encoded in any preferred language, including but not limited to C, C++, Java, Basic, and Python. Furthermore, any preferred framework can be used to implement the modules, such as the .NET framework provided by Microsoft, the XCode framework provided by Apple, and / or the JRE framework provided by Oracle.
[0123] The modules implemented in this specification do not need to be implemented in a single, uniform language; certain modules may be implemented in a first language and / or framework, while other modules may be implemented in a second language and / or framework. For example, the user interface and module input module 15 may be implemented in C++, while the support layer determination module 35 may be implemented in Python.
[0124] Furthermore, one or more tools and / or APIs provided by such tools may be implemented to perform specific actions as defined in this disclosure. For example, a first tool providing an API for geometric actions may be used in combination with a second tool and may be implemented to perform interpolation and integration as described above to determine streamlines and connections between streamlines.
[0125] The number of implemented modules may be more or less than those described with respect to Figure 1. For example, the model input module 15 and the user input module 20 may be combined within a single module, while the sampling determination module 25, orientation determination module 30, and support layer determination module 35 may also be combined.
[0126] Throughout this specification, including the claims, the term “including” should be understood to be synonymous with “including at least one” unless otherwise specified. Furthermore, any scope described herein, including the claims, should be understood to include its final value unless otherwise specified. The specific values of the elements described should be understood to be within the manufacture or industrial tolerances known to those skilled in the art, and the use of the terms “substantially” and / or “approximately” and / or “generally” should be understood to mean within such tolerances.
[0127] Where references are made to national, international, or other standards of standardization bodies (e.g., ISO), such references are intended to refer to standards defined by the national or international standardization body as of the priority date of this specification. Substantial subsequent changes to such standards are not intended to modify the scope and / or definitions of this disclosure and / or claims.
[0128] This specification and the examples are intended to be considered illustrative only, and the true scope of this disclosure is given by the following claims.
Claims
1. 1. A system for three-dimensional printing of objects, comprising: A processor; A non-transitory computer-readable medium communicatively coupled to the processor and storing instructions that, when executed by the processor, cause the processor to: determining an optimized build orientation based on the object and one or more user indicated surface quality characteristics; generating a plurality of layers including one or more support polygons, each layer of the plurality of layers corresponding to a slice in a three-dimensional ("3D") printing process; generating a corresponding tool path for each of the one or more support polygons, wherein a spacing between each generated tool path is determined based on the user indicated surface quality characteristics; providing the generated corresponding toolpath to a 3D printer for execution; and a non-transitory computer-readable medium configured to cause the device to perform operations including: generating the corresponding tool path; constructing a scalar density field and a bidirectional field based on an interpolation of support polygon boundary normals and a predetermined fill direction; integrating the bidirectional field to generate a set of streamlines, the spacing between the streamlines being based on the scalar density field; and connecting the generated streamlines to form the corresponding toolpath for the support polygon. system.
2. The system of claim 1 , wherein each generated tool path conforms, at least in part, to a contour of the one or more support polygons.
3. The system of claim 1 , wherein the spacing between each generated tool path is reduced for areas having user-indicated surface quality characteristics compared to areas not having the user-indicated surface quality characteristics.
4. The system of claim 3 , wherein the user-indicated surface quality characteristic corresponds to an importance of surface finish in one or more regions of the object.
5. The system of claim 1 , further comprising generating a machine instruction file corresponding to a compilation of the generated tool path.
6. The system of claim 1 , wherein at least one of the tool paths is curved over at least a portion of its length.
7. said determining said optimized build orientation further comprising: determining one or more faces of the object, each face corresponding to a first portion of the object that extends at an angle relative to a second portion in a closest vicinity; determining one or more supported overhangs between the one or more faces, the supported overhangs corresponding to faces where the angle exceeds a predetermined threshold angle; and determining an object orientation that results in minimizing a number of support structures for the supported overhang in object regions having user indicated surface quality characteristics.
8. 10. The system of claim 1, further comprising a three-dimensional printer, the three-dimensional printer comprising a fused deposition modeling or fused filament manufacturing three-dimensional printer.
9. The system of claim 1 , wherein the user-indicated surface quality characteristics are received from a user via a user interface that enables direct intervention by the user in the digital representation of the object.
10. 1. A system for three-dimensional printing of objects, comprising: a three dimensional ("3D") printing printer; a processor coupled to the three-dimensional printer; A non-transitory computer-readable medium communicatively coupled to the processor and storing instructions that, when executed by the processor, cause the processor to: determining an optimized build orientation based on the object and one or more user indicated surface quality characteristics; generating a plurality of layers including one or more support polygons, each layer of the plurality of layers corresponding to a slice in a 3D printing process; generating a corresponding tool path for each of the one or more support polygons, wherein a spacing between each generated tool path is determined based on the user indicated surface quality characteristics; A non-transitory computer-readable medium configured to cause operations including: Including, generating the corresponding tool path; constructing a scalar density field and a bidirectional field based on an interpolation of support polygon boundary normals and a predetermined fill direction; integrating the bidirectional field to generate a set of streamlines, the spacing between the streamlines being based on the scalar density field; connecting the generated streamlines to form the corresponding toolpath for the support polygon; executing the corresponding tool path generated by the 3D printer; and Including, system.
11. The system of claim 10 , wherein each generated tool path conforms, at least in part, to a contour of the one or more support polygons.
12. The system of claim 10 , wherein the spacing between each generated tool path is reduced for areas having user-indicated surface quality characteristics compared to areas not having the user-indicated surface quality characteristics.
13. The system of claim 12 , wherein the spacing between each generated tool path is reduced for areas having user-indicated surface quality characteristics compared to areas not having the user-indicated surface quality characteristics.
14. The method of claim 10 , further comprising generating a machine instruction file corresponding to a compilation of the generated tool path.
15. The method of claim 10 , wherein at least one of the tool paths is curved over at least a portion of its length.
16. said determining said optimized build orientation further comprising: determining one or more faces of the object, each face corresponding to a first portion of the object that extends at an angle relative to a second portion in a closest vicinity; determining one or more supported overhangs between the one or more faces, the supported overhangs corresponding to faces where the angle exceeds a predetermined threshold angle; and determining an object orientation that results in minimizing a number of support structures for the supported overhang in object regions having user indicated surface quality characteristics.
17. The system of claim 10 , wherein the user-indicated surface quality characteristics are received from a user via a user interface that enables direct intervention by the user in the digital representation of the object.