EP3317783A1 - Dispositif de traitement de données pour fabrication additive - Google Patents

Dispositif de traitement de données pour fabrication additive

Info

Publication number
EP3317783A1
EP3317783A1 EP16747818.9A EP16747818A EP3317783A1 EP 3317783 A1 EP3317783 A1 EP 3317783A1 EP 16747818 A EP16747818 A EP 16747818A EP 3317783 A1 EP3317783 A1 EP 3317783A1
Authority
EP
European Patent Office
Prior art keywords
voxel
data
graph
edge
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP16747818.9A
Other languages
German (de)
English (en)
Inventor
Sylvain Lefebvre
Jérémie DUMAS
An LU
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institut National de Recherche en Informatique et en Automatique INRIA
Universite de Lorraine
Original Assignee
Institut National de Recherche en Informatique et en Automatique INRIA
Universite de Lorraine
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institut National de Recherche en Informatique et en Automatique INRIA, Universite de Lorraine filed Critical Institut National de Recherche en Informatique et en Automatique INRIA
Publication of EP3317783A1 publication Critical patent/EP3317783A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B29WORKING OF PLASTICS; WORKING OF SUBSTANCES IN A PLASTIC STATE IN GENERAL
    • B29CSHAPING OR JOINING OF PLASTICS; SHAPING OF MATERIAL IN A PLASTIC STATE, NOT OTHERWISE PROVIDED FOR; AFTER-TREATMENT OF THE SHAPED PRODUCTS, e.g. REPAIRING
    • B29C64/00Additive manufacturing, i.e. manufacturing of three-dimensional [3D] objects by additive deposition, additive agglomeration or additive layering, e.g. by 3D printing, stereolithography or selective laser sintering
    • B29C64/30Auxiliary operations or equipment
    • B29C64/386Data acquisition or data processing for additive manufacturing
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B29WORKING OF PLASTICS; WORKING OF SUBSTANCES IN A PLASTIC STATE IN GENERAL
    • B29CSHAPING OR JOINING OF PLASTICS; SHAPING OF MATERIAL IN A PLASTIC STATE, NOT OTHERWISE PROVIDED FOR; AFTER-TREATMENT OF THE SHAPED PRODUCTS, e.g. REPAIRING
    • B29C64/00Additive manufacturing, i.e. manufacturing of three-dimensional [3D] objects by additive deposition, additive agglomeration or additive layering, e.g. by 3D printing, stereolithography or selective laser sintering
    • B29C64/30Auxiliary operations or equipment
    • B29C64/386Data acquisition or data processing for additive manufacturing
    • B29C64/393Data acquisition or data processing for additive manufacturing for controlling or regulating additive manufacturing processes
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B33ADDITIVE MANUFACTURING TECHNOLOGY
    • B33YADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
    • B33Y50/00Data acquisition or data processing for additive manufacturing
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B33ADDITIVE MANUFACTURING TECHNOLOGY
    • B33YADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
    • B33Y50/00Data acquisition or data processing for additive manufacturing
    • B33Y50/02Data acquisition or data processing for additive manufacturing for controlling or regulating additive manufacturing processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/17Mechanical parametric or variational design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2113/00Details relating to the application field
    • G06F2113/10Additive manufacturing, e.g. 3D printing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/18Manufacturability analysis or optimisation for manufacturability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Definitions

  • the invention relates to the field of texturing and in particular the field of printing in three dimensions.
  • the invention proposes a data processing device for additive manufacturing, comprising a memory for receiving voxel data from a surface of an object to be manufactured, each voxel indicating a full or empty location, a generator capable of to compute a first graph from the voxel data by defining each voxel as a node, connecting together by edges the nodes that correspond to respective voxels that share a corner, and assigning to each edge a weight calculated at from the distance between the centers of the voxels corresponding to the nodes associated with it, an arranged extractor, to define a second graph by defining nodes from a subset of nodes of the graph comprising nodes corresponding to voxels indicating a full location, and to interconnect the nodes of the second graph with first edges and second edges, a first edge being defined as representing a path within the first graph between two nodes of the second graph, each node of the first graph connecting these two nodes corresponding to a voxel
  • This device is particularly advantageous because it allows to offer an object whose mechanical strength is safe, while offering aesthetic possibilities previously inaccessible.
  • the device may have one or more of the following characteristics:
  • the extractor determines in a first operation the first edges by associating with each node of the first graph corresponding to a voxel indicating a full location a marker of a node of said subset, the markers being propagated from each of the nodes of said subassembly by choosing, from a marked node, that of the nodes which is directly connected to it by an edge in the first graph, which corresponds to a voxel indicating a full location and whose edge has the lowest weight a first edge being created when the propagation involves marking a node already having a marker of a node of said subset,
  • the extractor determines the second edges by associating with each node of the first graph a marker of a node of said subset, the markers being propagated from each of the nodes of said subset by choosing, from a marked node, that of the nodes which is directly connected to it by an edge in the first graph, whose edge has the least weight, and which does not belong to a first edge, a second edge edge being created when propagation involves marking a node already having a marker of a node of said subset,
  • the stiffener executes a recursive loop in
  • the stiffener performs a loop in
  • the memory further receives three-dimensional surface data (22), projection data and pattern data
  • the device further comprises a sorter capable of selecting for voxel input voxels surrounding the voxel. which correspond to the three-dimensional surface data, an estimator capable of calculating a similarity value between a first voxel associated with first projection data and a second voxel associated with second projection data by calculating the projection of the data of three-dimensional surface associated with the first voxel and three-dimensional surface data associated with the second voxel, respectively on a first surface defined by the first projection data and on a second surface defined by the second data of projection on which the pattern data are plated, and calculating a value derived from the difference between the projection of the first voxel on the first surface and the second surface on the one hand, and the difference between the projection of the second voxel on the first surface and the second surface, on the other hand, a selector capable, for a given voxel and from a
  • the estimator determines the value derived from the difference between the projection of a voxel on the first surface and the second surface from the texture difference resulting from the plating of the pattern data on the first surface and the second surface. for these projections, the estimator determines the value of similarity further from a value derived from the value of the angle formed by the normal to the plane defined by the three-dimensional surface data on the one hand, and by the normal to the projection plan on the other hand,
  • the similarity value is strictly positive and indicates a similarity that is all the better if the similarity value is small
  • the propagator associates at least some of the plurality of higher resolution voxels with randomly selected projection data
  • the projection data comprises a surface identifier selected from a set of planes and transformation data indicating a translation and / or a rotation of the reference of the surface designated by the surface identifier for the plating of the pattern data,
  • the projection data are independent of the three-dimensional surface data
  • the area defined by the projection data is a plane
  • the three-dimensional surface data associated with a given voxel comprise an average of the normals of a surface portion associated with the given voxel
  • the pattern data are of a stochastic and repetitive nature
  • the pilot calls the selector so as to select only projection data such that the voxel data concerned will indicate a full location after treatment
  • stiffener and the driver are looped until the stiffener no longer modifies voxel data.
  • FIG. 1 represents a schematic diagram of a device according to the invention
  • FIG. 2 represents an example of implementation of a function by the sorter of FIG. 1
  • FIG. 3 represents an exemplary implementation of a function by the estimator of FIG. 1
  • FIG. 4 represents an exemplary implementation of a function by the selector of FIG. 1,
  • FIG. 5 represents an exemplary implementation of a function by the propagator of FIG. 1,
  • FIG. 6 represents an exemplary implementation of a function by the pilot of FIG. 1,
  • FIG. 7 represents an exemplary implementation of the device of FIG. 1;
  • FIG. 8 represents an example of implementation of a function by the extractor of FIG. 1;
  • FIG. 9 represents an exemplary implementation of a function by the stiffener of FIG. 1, and
  • FIG. 10 shows an example of implementation of a variant of a function by the selector of Figure 1, during a specific loop.
  • FIG. 1 represents a schematic diagram of a device 2 according to the invention.
  • the device 2 comprises a memory 4, a sorter 6, an estimator 8, a selector 10, a propagator 12, a driver 14, a generator 16, an extractor 18, and a stiffener 20.
  • the memory 4 can be any type of data storage suitable for receiving digital data: hard disk, hard disk with flash memory (SSD), flash memory in any form, RAM, magnetic disk, distributed storage locally or in the cloud, etc.
  • the data calculated by the device can be stored on any type of memory similar to or on memory 2. This data can be erased after the device has completed its tasks or stored.
  • the data stored in the memory 4 are of several types.
  • the memory 4 receives three-dimensional surface data 22, pattern data 24, and work data 26.
  • the three-dimensional surface data 22 describes the object on which it is desired to apply a texture. These data can be directly usable, that is to say have already been voxelized, or be raw data. In this case, an unrepresented element can perform the voxelization. Voxelization is not the subject of the invention, it will be considered in the following that the three-dimensional surface data 22 have already been voxelized. In the example described here, the three-dimensional surface data 22 contain for each voxel the average of the normals of the surface of the object associated with this voxel.
  • the three-dimensional surface data 22 could contain the data of the surface as such, or any other data which makes it possible to describe the portion of the surface of an object that is associated with a voxel.
  • the three-dimensional surface data 22 thus make it possible to define the object by voxels associated with portions of the surface of the object.
  • the pattern data 24 represents the pattern with which it is desired to texture the three-dimensional surface data 22. In the example described here, the goal is to produce a "black and white" pattern, which represents the full and the empty in the three-dimensional object to print. For this, the pattern data 24 can directly define a bit pattern. When the pattern data 24 is not of the binary type, it can be the subject of a specific processing for this purpose.
  • the pattern data 24 can be colorized to texture the object in color, for example for a three-dimensional multi-color printing.
  • the pattern data 24 may optionally define a relief on the solid portions.
  • the work data 26 includes all the data used to carry out the data processing according to the invention. This data includes data associating three-dimensional surface data with the data defining the voxels, projection data, similarity value data and other values described below.
  • the projection data define on the one hand a projection plane (that is to say a pair of non-collinear vectors), and on the other hand a transformation in this plane.
  • the pattern data 24 will be transformed in a plane according to the transformation data of this plane to texture the latter, then the center of the voxel concerned is projected and can receive a texture associated with its projection in the textured plane. It is possible from a limited number of planes (26 in the example described here) and a number of transformations to define a very large number of possible projection planes. Once the projection data thus defined, it is therefore to choose the best plan / transformation pairs for each voxel. Alternatively, the pattern data 24 may be plated on the portion of the surface data corresponding to the voxel, and this textured surface may be projected onto the plane and then transformed according to the transformation data.
  • the sorter 6, the estimator 8, the selector 10, the propagator 12, the driver 14, the generator 16, the extractor 18 and the stiffener 20 are elements accessing directly or indirectly the memory 4. They can be made under the form of an appropriate computer code executed on one or more processors. By processors, it should be understood any processor adapted to the calculation of projection of textures on plans and treatments related to voxels.
  • Such a processor can be made in any known manner, in the form of a microprocessor for a personal computer, a dedicated FPGA or SoC chip ("system on chip"), a computing resource on a grid, a microcontroller, or any other form to provide the computational power necessary for the embodiment described below.
  • a processor can also be realized in the form of specialized electronic circuits such as an ASIC.
  • a combination of processor and electronic circuits can also be considered.
  • the invention achieves good texturing by finding the right planar / transformation pairs to be applied to each element of the three-dimensional surface data (voxels) and the pattern data. More specifically, the invention applies a method of resolution descent to determine these pairs.
  • the problem is solved for a given resolution, and that one will seek to solve this same problem for a higher resolution, that is to say whose grain is finer.
  • the result of the given resolution is propagated to the higher resolution, by cutting each of the voxels of the given resolution into voxels of higher resolution, and by applying to these voxels the solution found for the given resolution.
  • the problem is solved by optimizing the plan / transformation pairs thus assigned to the higher resolution. For this, each voxel of the higher resolution is tested with all the known plane / transformation pairs for the given resolution, and a similarity value is determined according to the pairs plan / transformation of the neighbors of this voxel.
  • each voxel adopts the plan / transformation pair which indicates the best similarity with its neighbors to define the solution for the higher resolution.
  • These operations are performed by the sorter 6 whose role is to select the voxels that are the neighbors of a given voxel, the estimator 8 whose role is to calculate a similarity value between two voxels and their associated plan / transformation combination , the selector 10 which uses the sorter 6 and the estimator 8 to determine the best plan / transformation combination for a given voxel, the propagator 12 which propagates the solution of a given resolution at a higher resolution, and the driver 14, which selectively activates the selector 10 and the propagator 12 to propagate the resolution result in resolution, and to call the selector 10 on the resulting voxels to calculate the solution for each higher resolution.
  • the projection of the voxels corresponding to the surface data on the planar / transformation pairs combined with the pattern data 24 produces result data 28.
  • the generator 16, the extractor 18 and the stiffener 20 process the result data 28 to make the corresponding physical structure stable from a mechanical point of view.
  • FIGS. 2 to 6 and 7 to 9 Although synergetic to provide a device which starts from surface data and pattern data to give a three-dimensional printing object of an original nature, are quite independent. each other.
  • Figures 2-6 describe an original device for producing advantageous plated pattern data
  • Figures 7-9 describe an original device for producing a three-dimensional printing object that is mechanically sound.
  • a variable whose name is all caps means in most cases a list containing several elements, while a variable whose name is lowercase designates a single element.
  • FIG. 2 represents an example of a function implemented by the sorter 6 to determine the neighboring voxels of a given voxel.
  • a voxel is said to be close to another when it is included in a cube whose edge measures five voxels and whose center is the other voxel.
  • the voxels by coordinates of type (x; y; z) where x, y and z are multiples of one voxel dimension, two coordinate voxels (xl; yl; zl) and (x2; y2; z2) are neighbors when x1-x2, y1-y2 and z1-z2 have an absolute value less than or equal to 2.
  • y1-y2 and z1-z2 have an absolute value less than or equal to 2.
  • only those voxels that correspond to surface data 22 are of interest.
  • the sorter 6 begins in an operation 260 with three-dimensional surface data O, a neighbor size variable n_s, an input voxel v and a neighbors list N initialized to 0 (i.e. empty ).
  • the neighborhood size variable n_s is set to 5 to denote a cube-shaped neighborhood of length voxels.
  • the neighborhood could have a different shape, as well as different dimensions.
  • a function Ngb () is called with the input voxel v, and the neighbor size n_s as variables.
  • the function Ngb () selects all the voxels that surround the voxel v in a cube of dimension n_s and centered on the voxel v, and stores them together in the list P.
  • the voxels that are associated with surface data 22 is associated with projection data 26.
  • the list P receives both the neighboring voxels, but also the projection data 26 associated with them.
  • the correspondence between these voxels and the corresponding projection data is maintained outside the list P.
  • List P contains all the neighbors of voxel v, including voxels that do not correspond to surface data 22. Therefore, it is useless to keep these voxels, since they can not be used to project the data of 24.
  • a loop is started in an operation 226, in which the list P is unstacked in a pair (x; p_dx) which receives the first voxel of the list P as well as the projection data 26 associated therewith .
  • the projection data p_dx are tested: if they are empty, this means that the voxel x does not correspond to surface data 22, and vice versa.
  • FIG. 3 represents an example of a function implemented by the estimator 8 to calculate a similarity value between a first voxel v1 associated with first projection data p_dl, and a second voxel v2 associated with second projection data p_d2.
  • the estimator 8 receives a first voxel v1, a second voxel v2, first projection data p_d1, second projection data p_d2, the pattern data t, the three-dimensional surface data O , and a similarity value variable initialized to 0.
  • two textures t1 and tl 2 are calculated by means of a function ProjQ, so that:
  • the texture tl 1 receives the texture of the projection of the center of the first voxel v 1 on the plane defined by the first projection data p_d1 and textured according to the latter with the pattern data 24, and
  • the texture tl2 receives the texture of the projection of the center of the first voxel v1 on the plane defined by the second projection data p_d2 and textured according to the latter with the pattern data 24. Then, or in parallel according to the variants, in a operation 312, two textures t21 and t22 are calculated by means of a function Proj (), so that:
  • the texture t21 receives the texture of the projection of the center of the second voxel v2 on the plane defined by the first projection data p_dl and textured according to the latter with the pattern data 24, and
  • the texture t22 receives the texture of the projection of the center of the second voxel v2 on the plane defined by the second projection data p_d2 and textured according to the latter with the pattern data 24.
  • the similarity value returned d is calculated as the sum of the difference between the textures tl 1 and t! 2 on the one hand and between the textures t21 and t22 on the other hand.
  • the difference between the textures is calculated by means of a function L2 () which calculates the Euclidean norm of the pixel-by-pixel color difference of the respective textures.
  • FIG. 4 represents an example of a function implemented by the selector 10 to determine the projection data that are most suitable for a given voxel given its surroundings.
  • the selector 10 receives in an operation 400 the voxel v concerned, the projection data p_dv associated therewith, a projection data set that can improve the situation P_D, the pattern data t, the surface data in three O dimensions, and a value value of best similarity dm initialized to 0.
  • the similarity between the voxel v and its neighborhood is calculated for the projection data p_dv associated with it.
  • the selector 10 calls the sorter 6 which stores the result in a list N.
  • a loop is performed in which the list N is depilated in an operation 410.
  • the selector 10 calls the estimator 8 with on the one hand the voxel v and its associated projection data p_dv, and on the other hand, each neighbor voxel x depilated and its associated projection data p_dx.
  • the variable of best similarity dm receives each time the similarity value thus calculated.
  • the best similarity variable dm has been initialized with the sum of the similarity values between the given voxel with its associated projection data p_dv and its neighbors with their associated projection data.
  • the selector 10 initializes another loop in which each of the projection data of the projection data set P_D will be applied to the given voxel v, to determine whether they are a better match with the voxels of the vicinity of the voxel v and their data. associated projection.
  • a similarity value variable d is initialized to 0 in an operation 426, then the set P_D is pared in an operation 425. Then, the same loop as for the operations 410 and 415 is performed with the unstacking operations 430 and calculating the similarity 435 between the voxel given v and the voxels of its neighborhood. However, in the operation 435, the voxel v is not called with the projection data p_dv associated with it, but with the projection data p_dy which has been depilated in the operation 425.
  • the values d and dm are compared. If d is less than dm, this means that the projection data p_dy, associated with the voxel v, are closer to the voxels in the vicinity of the voxel v than the projection data p_dv. In this case, the value dm receives the value d as a new value of best similarity in an operation 445, and the projection data p_dv receive the projection data p_dy in an operation 450. Thus, the pair dm and p_dv permanently contains the value of best similarity between the voxel v and the voxels of its neighborhood, as well as the corresponding projection data.
  • the unstacking loop of the set P_D resumes with the operation 426 and the zeroing of the variable d.
  • the selector 10 returns the projection data p_dv which best match the voxel v given its vicinity.
  • Many variants are directly conceivable, such as performing operations 445 and 450 in parallel, the parallelization of the calculation loops of the similarity value.
  • some similarity value calculation loops for different p_dy projection data could also be performed in parallel, and the best candidate selected at the end.
  • the Applicant has identified the fact that the similarity value between the given voxel and its neighborhood for given projection data may optionally depend on an additional value, which derives from the angle formed between the normal to the plane defined by the projection data given and the normal to the three-dimensional surface data associated with the given voxel. Indeed, if this angle is large, the projection of the pattern data can be strongly distorted, despite a good similarity with the voxels of the neighborhood. Thus, after calculating the neighbor similarity, a value derived from the dot product of the normal to the three-dimensional surface data associated with v with the normal to the projection data plane can be added.
  • the Applicant has also identified the fact that the similarity value between the given voxel and its neighborhood for given projection data may optionally depend on a position in the pattern, to encourage or discourage the use of certain portions of the pattern. This can for example be used when the pattern is repeated on the projection plane, to prevent visual discontinuities due to junctions between the edges of the pattern from appearing on the surface.
  • the voxels that select a projection showing this portion of the pattern are penalized by an increase in the similarity values.
  • Figure 5 shows an example of a function implemented by the propagator 12 to propagate the solution of a given resolution to a higher resolution.
  • the propagator 12 receives an input voxel v, associated projection data p_dv, three-dimensional surface data O, a resolution sampling size s, and a list of higher resolution voxels V initialized to 0.
  • the propagator 12 calls a function Up () with the voxel v and the sampling size s.
  • the Up () function returns an X list of voxels of higher resolution, depending on the sampling size s.
  • the sample size is set to 2, so that the list X contains 8 voxels that together correspond to voxel v.
  • the propagator 12 executes a loop in which the voxels of the X list are popped in an operation 526, and then tested in an operation 525 to determine if these voxels correspond to three-dimensional surface data. If this is not the case, then the voxel is stored without associated projection data in the V list in an operation 540. Otherwise, the voxel is stored with the projection data p_dv in the V list in one operation. 550. Finally, when the list X is empty, the propagator 12 returns the list V in an operation 560.
  • operation 550 could introduce variety enhancing noise by randomly assigning separate projection data from the projection data p_dv to some of the at least higher resolution voxels that correspond to three-dimensional surface data. Alternatively, the variety is not added randomly, but deterministically.
  • FIG. 6 shows an example of a function implemented by the driver 14 to calculate the result data 22 from the three-dimensional surface data 22, the pattern data 24 and a projection data set. In an operation 600, the driver 14 receives these data along with the desired resolution level r, the sampling size s and initializes a resolution loop variable i to 0.
  • the driver 14 executes an Init () function to initiate the operations.
  • the function of this function is to determine the first coarse resolution voxel that includes the three-dimensional surface data, as well as the corresponding projection data. In the example described here, there is only one first voxel, but there could be several. In addition, the projection data associated with this first voxel are chosen randomly. Alternatively, the function Init () could calculate these projection data.
  • the pilot 14 starts a series of loops of index i until the resolution r is reached (operation 610).
  • a list Z associating voxels and projection data is initialized to 0 in an operation 615.
  • the list of resolution voxels corresponding to the previous iteration V is popped up in an operation 626.
  • Each voxel x and its projection data p_dx are then propagated by calling the propagator 12 in an operation 625 and the resulting list is stored in a list W.
  • the projection data set P_D used to operate the selector is then initialized to 0 in an operation 630, and a loop traverses the list W with an operation 635 and an operation 640 in order to fill the list P_D with the projection data associated with the voxels of the list W.
  • a function Rand adds a selected number of projection data to the list PD to promote the exploration of new solutions.
  • the variety may not be added randomly but deterministically.
  • the list W is traversed by a loop, starting from an operation 650.
  • the selector 10 is called in an operation 655 with each voxel of the list W in order to find the best projection data p_dy of the list P_D considering from his neighborhood.
  • the result is stored in the list Z which constitutes the result data 22 for the current index resolution i.
  • the index i is incremented in an operation 670.
  • the loop of the operations 630 to 660 can be repeated a chosen number of times, or a number of times depending on a convergence criterion, in order to ensure that the exploration of new solutions has been optimized within each resolution.
  • the driver When the resolution r is reached, the driver returns the list V containing the result data in an operation 675.
  • FIG. 7 represents an exemplary implementation of the device 2 for transforming the previously calculated voxel data into three-dimensional printable object data.
  • the data produced by the pilot 14 are not necessarily "reliable" structurally.
  • the ears of the rabbit although corresponding to the ideal projection of the pattern data, are not attached to the rest of the body. Under these conditions, you can not print an object.
  • the object of FIGS. 7 to 9 is also applicable in the case where the voxel data are not obtained as described above.
  • the device 2 shares in an operation 700 of voxel data V.
  • This voxel data describes a three-dimensional object blank: either the voxel designates a solid location, or it designates an empty space.
  • the generator 16 transforms the voxel data V into a first graph G.
  • the graph G is constructed as follows:
  • each voxel of the voxel data V forms a node
  • the weight of the edge in the graph is the length of the edge, defined as the distance between the centers of the two voxels connected by the edge.
  • the invention proposes two methods that can be combined to evaluate the mechanical strength of an object corresponding to the voxel data.
  • the number of nodes in the first graph G is too important to be able to calculate anything. Indeed, for the additively manufactured object to be aesthetic, it takes a large number of voxels to have a good print resolution, which makes the simulation very complex.
  • the graph G is "simplified" into a second graph A by means of a function Conn ().
  • the function Conn () is performed by the extractor 18, and FIG. 8 represents an example of implementation of this function.
  • the first graph G is sampled Poisson to define a sampled graph S of voxels each corresponding to a full location.
  • the extractor 18 starts from the data of the first graph G, the sampled graph S, as well as from a graph of markers T and a second graph A which are both initialized to 0.
  • the purpose of the function Conn () is to connect all the nodes of the sampled graph S by first edges and second edges.
  • the first edges are "solid” edges, while the second edges are "non-solid” edges. This is achieved by the propagation of markers in the graph of markers T, starting from the nodes of the sampled graph S.
  • the marker graph T is initialized by means of an Exs () function which receives the sampled graph S and the first graph G as arguments.
  • the function Exs () proceeds by selecting, for each node of the graph S, the nodes of the first graph G with which it shares an edge, and to mark with a marker identifying the respective node of the graph S that of the selected nodes which designates a location full and whose ridge has the lowest weight. In other words, by iterating this process it is a matter of propagating the graph S in the solid candidates of the graph G according to a geodesic distance based on the weight of the edges.
  • Operation 805 can be viewed as an initialization operation. Indeed, after this one, two loops will follow one another. The first loop will determine the first edges and the second loop will determine the second edges. The first loop begins with an operation 810 in which the Exs () function is called again to propagate the markers. For this, the marker graph T is used as argument of the function ExsQ (instead of the sampled graph S of the operation 805). Thus, it is the nodes that were marked at the previous iteration of the loop that are propagated, and the result is reinjected into the graph of markers T.
  • an Edg () function tests the T marker graph to identify whether a solid edge has been detected by the propagation.
  • a solid edge is detected when two different markers are associated with the same voxel of the first graph G. In fact, this means that this voxel is directly connected by a voxel path designating a solid location between two nodes of the second graph which designate them. even a solid location.
  • a function Fill () determines if all the nodes of the marker graph have been propagated in an operation 825. If it remains possible to propagate markers, the loop resumes in 810.
  • the second loop starts in an operation 830 with the execution of an Ex () function.
  • the Ex () function is similar to the Exs () function, except that marker propagation can be done to all voxels in the first G graph, and not only to those that indicate a full location.
  • the Ex () function also differs from the Exs () function in that the propagation excludes the voxels associated with a first edge.
  • the rest of the second loop is similar with operations 835, 840, and 845 that are identical to operations 815, 820, and 825.
  • the extractor 18 could implement the Conn () function differently, for example by detecting the first edges and the second edges simultaneously, or by using a non-geodesic distance or determined differently.
  • the stiffener 20 starts from the second graph A and analyzes whether an object corresponding to this graph would be mechanically stable. For this, the stiffener 20 uses two methods that can be used alone or in combination. These methods correspond to two distinct physical simulations that determine whether one or more edges exceed a threshold that is synonymous with structural rigidity.
  • the first method is a method based on a finite element simulation and Figure 9 represents an example of implementation of this method by the stiffener 20. This function analyzes the second edges, called "non-solid" and redefines some of they are solid heads if necessary to make the object mechanically rigid.
  • the stiffener 20 starts from the second graph A. Then, in an operation 910, a loop starts.
  • This loop begins with a simulation by finite element methods of the object defined by the second graph A. This simulation is performed by a function FE () which also has access to the parameters of mechanical simulation (that is to say the boundary conditions to be met by the printed object for a desired manipulation).
  • the result of the function FE () is a list of second edges W in which the second edges are classified in order of decreasing simulated stress, each of these edges having been determined to have a stress exceeding a constraint threshold in view of the conditions at limits.
  • This ranking in order of decreasing stress value is important because the principle of the method applied by the stiffener 20 is to make solid the most constrained edge, then the second most constrained edge which is at a given distance from the edge previous, etc.
  • an operation 940 it is tested if the list W still contains an edge. If so, then the corresponding y edge is tested by a Dist () function in a 950 operation to determine if it is at a sufficient distance from the newly-made x edge. If it is not, then operation 940 is repeated, until a non-solid edge sufficiently far from the edge x is found in W or the list is empty. Thus, all the edges are not systematically made solid when they are neighbors, which makes it possible to better respect the original form of the object of the second graph A. If such an edge is found, then it is made solid in an operation. 960 identical to operation 930, and in an operation 970, the edge is stored therein as the previous edge x for the repetition of the loop with operation 940.
  • the loop is repeated. If the list W is empty, then none of the non-solid edges has a stress value that is too large given the boundary conditions, and the function ends with the operation 980, in which all the voxels of the first corresponding graph G the edges that have been made solid are also made solid.
  • neighboring voxels that are also made solid could be selected differently (for example on a geometric and non-geodesic criterion), or neighboring voxels might not be changed.
  • the second method that the stiffener 20 can apply is a geometric method.
  • the stiffener 20 traverses each of the non-solid edges of the second graph A and calculates the ratio between the Euclidean distance between the two nodes of each edge and the geodesic distance through the solid edges that separates them. If this ratio exceeds a chosen threshold, then the edge is made solid, as well as optionnally the neighbors of the voxels that compose it in the first graph as described above.
  • the mechanical method and the geometric method can be used separately or in combination. The Applicant's work brings her in the current state of her research to consider that their combination is particularly advantageous, although it may appear redundant to the skilled person.
  • the object can be printed on the basis of the voxels corresponding to the second graph A and the voxels of the first graph G thus modified.
  • the Applicant has discovered that it was advantageous, after the execution of the stiffener 20, to recall the image processing on the voxels that have been redefined. For this, the driver 14 performs the function of Figure 5 again, only on modified voxels, for a smaller number of resolutions, and a slightly different way.
  • the pilot 14 determines for each modified voxel the list of parent voxels for a chosen number of lower resolutions, that is to say what are the voxels that the propagator 12 has transformed into these voxels, and this for a size corresponding to that of the lowest resolution sought.
  • the number of resolutions chosen is 2, but it could be higher.
  • the propagator 12 doubles the resolution at each execution (eight times more voxels), then: - the lowest resolution will include a voxel,
  • the intermediate resolution will have 8 voxels, and the resolution corresponding to the voxels of the second graph A will include 64 voxels.
  • the execution of the driver 14 will be carried out from each of the lowest resolution voxels which has a son which has been modified by the stiffener 20.
  • the driver 14 indicates whether a voxel corresponds to a voxel that has been modified. When this is not the case, the selector 10 is executed identically. On the other hand, if the voxel in question corresponds to a voxel that has been modified, then the function performed by the selector 10 is slightly modified according to FIG. 10 to select as projection data 26 only those which will also designate a full location. Thus, the execution of the driver 14 does not degrade the mechanical structure, and only visually harmonize the object so that it better corresponds to the pattern data 24.
  • FIG. 10 the operations identical to those of FIG. 4 have been represented with an identical numerical suffix, so that the operation 410 and the operation 1010 are identical, and so on.
  • only one operation 1042 has been added, which is a test to determine whether projection data p_dy likely to improve the image processing correspond to a solid location, or not.
  • the generator 16, the extractor 18 and the stiffener 20 are again applied to the resulting voxel data.
  • the invention can also be defined as a data processing method for additive manufacturing, comprising the following operations: a) receiving voxel data from a surface of an object to be manufactured, each voxel indicating a full or empty location,
  • a second graph by defining nodes from a subset of nodes of the graph comprising nodes corresponding to voxels indicating a full location, and to interconnect the nodes of the second graph with first edges and nodes; second edges, a first edge being defined as representing the shortest path in terms of weight within the first graph between two nodes of the second graph, each node of the first graph connecting these two nodes corresponding to a voxel indicating a full location, and the sum of the weights of the edges of the first graph connecting the two nodes associated with the first edge defining the weight of this first edge, a second edge being defined as representing the shortest path in terms of weight within the first graph between two nodes of the second graph which can not be connected by a first edge, d) determine a list of second ar are exceeding a threshold on the basis of a physical simulation of an object corresponding to the second graph, and redefine at least some of these second edges as first edges, and to redefine at least some of the voxels corresponding to
  • operation c) comprises the following operation:
  • cl determining the first edges by associating with each node of the first graph corresponding to voxel indicating a full location a marker of a node of said subset, the markers being propagated from each of the nodes of said subset by choosing, from a marked node, that of the nodes which is directly connected to it by an edge in the first graph, which corresponds to a voxel indicating a full location and whose edge has the lowest weight, a first edge being created when the propagation involves the marking of a node already having a marker of a node of said subset,
  • operation c) further comprises the following operation:
  • c2) determining the second edges by associating with each node of the first graph a marker of a node of said subset, the markers being propagated from each of the nodes of said subset by choosing, from a marked node, the one of the nodes which is directly connected to it by an edge in the first graph, whose edge presents the weakest weight, and which does not belong to a first edge, a second edge being created when the propagation involves the marking of d a node already having a marker of a node of said subset,
  • the operation d) comprises a recursive loop comprising the following operations: d1) to simulate by finite elements from the second graph a stress field for each of the edges of the second graph,
  • operation d comprises a loop comprising the following operations:
  • dl determining a ratio between the distance in terms of weight between the nodes of each second edge and the Euclidean distance between these same nodes, d2) redefining each second edge whose upper ratio is at a threshold chosen as the first edge,
  • the method also comprises the following operations:
  • gl defining a projection data set comprising firstly the projection data associated with the plurality of resultant voxel data, and secondly a non-zero quantity of other projection data
  • g2 for at least some of the projection data from the operation gl), and for at least some voxels neighboring the given voxel, and to calculate a similarity value between the given voxel and each neighboring voxel concerned, from projecting the three-dimensional surface data associated with the given voxel and three-dimensional surface data associated with the neighboring voxel, respectively on a first surface defined by projection data of the project data set and on a second surface defined by the projection data of the neighbor voxel on which the pattern data is plated, by calculating a value derived from the difference between the projection of the given voxel on the first surface and the second surface on the one hand, and the difference between the projection neighbor voxel on the first surface and the second surface on the other hand,
  • operation g) comprises determining the value derived from the difference between the projection of a voxel on the first surface and the second surface from the texture difference resulting from the plating of the pattern data on the first surface. and on the second surface for these projections,
  • operation g) comprises determining the similarity value from a value derived from the value of the angle formed by the normal to the plane defined by the data three-dimensional surface on one hand, and by the normal to the projection plane on the other hand,
  • the similarity value is strictly positive and indicates a similarity that is all the better as the similarity value is small
  • the operation f) comprises the association of at least some of the plurality of voxels of higher resolution with randomly selected projection data
  • the projection data comprises a surface identifier selected from a set of planes and transformation data indicating a translation and / or a rotation of the reference of the surface designated by the surface identifier for the plating of the pattern data,
  • the projection data are independent of the three-dimensional surface data
  • the area defined by the projection data is a plane
  • the pattern data is of a stochastic and repetitive nature.
  • the similarity value is strictly positive and indicates a similarity that is all the better if the similarity value is small
  • the operation g3) is repeated so as to select only projection data such that the relevant voxel data will indicate a full location
  • the invention may also be defined as a computer program product comprising portions of program code for implementing the device or method as described above when said program is run on a computer.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Materials Engineering (AREA)
  • Theoretical Computer Science (AREA)
  • Manufacturing & Machinery (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Mechanical Engineering (AREA)
  • Optics & Photonics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Generation (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)

Abstract

Un dispositif pour fabrication additive traite des voxels représentant un objet à fabriquer de manière additive en déterminant deux graphes selon que les voxels indiquent des emplacements pleins ou vides, et redéfinit certains des voxels indiquant un emplacement vide en emplacement plein afin d'assurer une stabilité mécanique.

Description

Dispositif de traitement de données pour fabrication additive
L'invention concerne le domaine de la texturisation et en particulier le domaine de l'impression en trois dimensions.
L'application d'une texture à un objet est un domaine qui est mûr. Avec l'augmentation des résolutions disponibles, de nouveaux besoins se font sentir pour améliorer la qualité du plaquage des textures ainsi que le temps nécessaire, en particulier dans le cas de textures représentant un motif, avec lesquelles les irrégularités sont encore plus voyantes.
Ces problématiques sont encore plus présentes dans le domaine de l'impression en trois dimensions. Actuellement, les possibilités de personnalisation des objets imprimés en trois dimensions sont assez limitées. En effet, il n'est possible d'utiliser qu'une seule matière pour l'impression, ce qui limite grandement la créativité. Pour contourner ce problème, des techniques ont été développées pour personnaliser les impressions en trois dimensions en appliquant un motif qui définit du vide et du plein dans l'objet imprimé. Mais la tenue mécanique de tels objets est complexe à garantir. L'invention vient améliorer la situation. A cet effet, l'invention propose un dispositif de traitement de données pour fabrication additive, comprenant une mémoire pour recevoir des données de voxels d'une surface d'un objet à fabriquer, chaque voxel indiquant un emplacement plein ou vide, un générateur capable de calculer un premier graphe à partir des données de voxels en définissant chaque voxel comme formant un nœud, en reliant entre eux par des arêtes les nœuds qui correspondent à des voxels respectifs qui partagent un coin, et en affectant à chaque arête un poids calculé à partir de la distance entre les centres des voxels correspondant aux nœuds qui lui sont associés, un extracteur agencé, pour définir un deuxième graphe en définissant des nœuds à partir d'un sous- ensemble de nœuds du graphe comprenant des nœuds correspondant à des voxels indiquant un emplacement plein, et pour relier entre eux les nœuds du deuxième graphe par des premières arêtes et des deuxièmes arêtes, une première arête étant définie comme représentant un chemin au sein du premier graphe entre deux nœuds du deuxième graphe, chaque nœud du premier graphe reliant ces deux nœuds correspondant à un voxel indiquant un emplacement plein, et la somme des poids des arêtes du premier graphe reliant les deux nœuds associés à la première arête définissant le poids de cette première arête, une deuxième arête étant définie comme représentant un chemin au sein du premier graphe entre deux nœuds du deuxième graphe qui ne peuvent pas être reliés par une première arête, un raidisseur agencé, pour déterminer une liste de deuxièmes arêtes dépassant un seuil sur la base d'une simulation physique d'un objet correspondant au deuxième graphe, pour redéfinir certaines au moins de ces deuxièmes arêtes en tant que premières arêtes, et pour redéfinir certains au moins des voxels correspondant aux nœuds du premier graphe appartenant au voisinage de ces arêtes redéfinies comme correspondant à un emplacement plein, et un pilote agencé pour appeler le générateur, l'extracteur et le raidisseur pour produire des données d'objet à imprimer.
Ce dispositif est particulièrement avantageux car il permet d'offrir un objet dont la tenue mécanique est sûre, tout en offrant des possibilités esthétiques inaccessibles précédemment.
Selon les variantes de réalisation, le dispositif pourra présenter une ou plusieurs des caractéristiques suivantes :
- l'extracteur détermine dans une première opération les premières arêtes en associant à chaque nœud du premier graphe correspondant à un voxel indiquant un emplacement plein un marqueur d'un nœud dudit sous-ensemble, les marqueurs étant propagés à partir de chacun des nœuds dudit sous-ensemble en choisissant, à partir d'un nœud marqué, celui des nœuds qui lui est directement relié par une arête dans le premier graphe, qui correspond à un voxel indiquant un emplacement plein et dont l'arête présente le poids le plus faible, une première arête étant créée lorsque la propagation implique le marquage d'un nœud présentant déjà un marqueur d'un nœud dudit sous- ensemble,
- après la première opération, l'extracteur détermine les deuxièmes arêtes en associant à chaque nœud du premier graphe un marqueur d'un nœud dudit sous-ensemble, les marqueurs étant propagés à partir de chacun des nœuds dudit sous-ensemble en choisissant, à partir d'un nœud marqué, celui des nœuds qui lui est directement relié par une arête dans le premier graphe, dont l'arête présente le poids le plus faible, et qui n'appartient pas à une première arête, une deuxième arête étant créée lorsque la propagation implique le marquage d'un nœud présentant déjà un marqueur d'un nœud dudit sous-ensemble,
- le raidisseur exécute une boucle récursive en
a) simulant par éléments finis à partir du deuxième graphe un champ de contrainte pour chacune des arêtes du deuxième graphe,
b) déterminant une liste de secondes arêtes présentant une contrainte supérieure à un seuil de contrainte,
c) sélectionnant la seconde arête de la liste présentant la plus grande contrainte en première arête,
d) redéfinissant cette seconde arête en tant que première arête si elle est à une distance choisie en termes de poids de la dernière arête redéfinie dans la boucle en cours, et en répétant l'opération c) sinon,
e) recommençant la boucle en a) lorsque la liste ne contient plus d'arête, jusqu'à ce que la boucle ne redéfinisse plus aucune arête,
- le raidisseur exécute une boucle en
a) déterminant un ratio entre la distance en termes de poids entre les nœuds de chaque deuxième arête et la distance euclidienne entre ces mêmes nœuds, b) redéfinissant chaque seconde arête dont le ratio supérieur est à un seuil choisi en tant que première arête,
- la mémoire reçoit en outre des données de surface en trois dimensions (22), des données de projection et des données de motif, et le dispositif comprend en outre un trieur capable de sélectionner pour un voxel d'entrée des voxels entourant le voxel d'entrée qui correspondent aux données de surface en trois dimensions, un estimateur capable de calculer une valeur de similarité entre un premier voxel associé à de premières données de projection et un second voxel associé à de secondes données de projection en calculant la projection des données de surface en trois dimensions associées au premier voxel et des données de surface en trois dimensions associées au deuxième voxel, respectivement sur une première surface définie par les premières données de projection et sur une deuxième surface définie par les deuxièmes données de projection sur lesquelles les données de motif sont plaquées, et en calculant une valeur tirée de la différence entre la projection du premier voxel sur la première surface et la deuxième surface d'une part, et de la différence entre la projection du deuxième voxel sur la première surface et la deuxième surface d'autre part, un sélectionneur capable, pour un voxel donné et à partir d'un jeu de données de projection, de déterminer celles des données de projection dudit jeu qui indiquent la meilleure similarité avec des voxels voisins du voxel donné, à partir d'une valeur tirée des valeurs de similarité obtenues en appelant l'estimateur de manière répétée avec d'une part le voxel donné comme premier voxel et des données de projection du jeu comme premières données de projection et d'autre part avec certains au moins des voxels tirés de l'appel du trieur avec le premier voxel en tant que deuxième voxel, et des données de projection qui leur sont associées comme deuxièmes données de projection, et pour associer au voxel donné les données de projection déterminées, un propagateur capable, à partir d'un voxel d'une résolution donnée et de données de projection qui lui sont associées, de définir une pluralité de voxels de résolution supérieure à la résolution donnée, et pour associer à certains au moins de cette pluralité de voxels les données de projection associées au voxel de résolution donnée, un pilote agencé pour appeler le propagateur avec des données de surface en trois dimensions, un voxel et des données de projection associées, et pour appeler le sélectionneur avec certains au moins de la pluralité de voxels résultante auxquels sont associées des données de projection en tant que voxel donné, ainsi qu'avec un jeu de données de projection comprenant d'une part les données de projection associées à la pluralité de données de voxels résultante, et d'autre part une quantité non nulle d'autres données de projection, le pilote étant en outre agencé pour répéter l'appel du propagateur avec certains au moins des voxels associés aux données de projection déterminées par le sélectionneur, ainsi que l'appel du sélectionneur sur certains au moins de la pluralité de voxels résultante jusqu'à atteindre une résolution choisie,
- l'estimateur détermine la valeur tirée de la différence entre la projection d'un voxel sur la première surface et sur la deuxième surface à partir de la différence de texture résultant du plaquage des données de motif sur la première surface et sur la deuxième surface pour ces projections, - l'estimateur détermine la valeur de similarité en outre à partir d'une valeur tirée de la valeur de l'angle formé par la normale au plan défini par les données de surface en trois dimensions d'une part, et par la normale au plan de projection d'autre part,
- la valeur de similarité est strictement positive et indique une similarité d'autant meilleure que la valeur de similarité est faible,
- le propagateur associe certains au moins des voxels de la pluralité de voxels de résolution supérieure avec des données de projection choisies aléatoirement,
- les données de projection comprennent un identifiant de surface choisi parmi un jeu de plans et des données de transformation indiquant une translation et/ou une rotation du repère de la surface désignée par l'identifiant de surface pour le plaquage des données de motif,
- les données de projection sont indépendantes des données de surface en trois dimensions,
- la surface définie par les données de projection est un plan,
- les données de surface en trois dimensions associées à un voxel donné comprennent une moyenne des normales d'une portion de surface associée au voxel donné,
- les données de motif sont de nature stochastique et répétitive,
- les données de voxels déterminées par le pilote sont utilisées par le générateur,
- le pilote est appelé avec les données de voxels modifiées par le raidisseur,
- pour les données de voxels modifiées par le raidisseur, le pilote appelle le sélectionneur de manière à ne sélectionner que des données de projection telles que les données de voxels concernées indiqueront un emplacement plein après traitement, et
- le raidisseur et le pilote sont appelés en boucle jusqu'à ce que le raidisseur ne modifie plus de données de voxels.
D'autres caractéristiques et avantages de l' invention apparaîtront mieux à la lecture de la description qui suit, tirée d'exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels :
- la figure 1 représente un diagramme schématique d'un dispositif selon l'invention, - la figure 2 représente un exemple de mise en œuvre d'une fonction par le trieur de la figure 1 , - la figure 3 représente un exemple de mise en œuvre d'une fonction par l'estimateur de la figure 1 ,
- la figure 4 représente un exemple de mise en œuvre d'une fonction par le sélectionneur de la figure 1 ,
- la figure 5 représente un exemple de mise en œuvre d'une fonction par le propagateur de la figure 1 ,
- la figure 6 représente un exemple de mise en œuvre d'une fonction par le pilote de la figure 1 ,
- la figure 7 représente un exemple de mise en œuvre du dispositif de la figure 1, - la figure 8 représente un exemple de mise en œuvre d'une fonction par l'extracteur de la figure 1 ,
- la figure 9 représente un exemple de mise en œuvre d'une fonction par le raidisseur de la figure 1, et
- la figure 10 représente un exemple de mise en œuvre d'une variante d'une fonction par le sélectionneur de la figure 1, lors d'une boucle spécifique.
Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant.
La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d'auteur et/ou le copyright. Le titulaire des droits n'a pas d'objection à la reproduction à l'identique par quiconque du présent document de brevet ou de sa description, telle qu'elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits.
La figure 1 représente un diagramme schématique d'un dispositif 2 selon l'invention. Le dispositif 2 comprend une mémoire 4, un trieur 6, un estimateur 8, un sélectionneur 10, un propagateur 12, un pilote 14, un générateur 16, un extracteur 18, et un raidisseur 20.
Dans le cadre de l'invention, la mémoire 4 peut être tout type de stockage de données propre à recevoir des données numériques : disque dur, disque dur à mémoire flash (SSD en anglais), mémoire flash sous toute forme, mémoire vive, disque magnétique, stockage distribué localement ou dans le cloud, etc. Les données calculées par le dispositif peuvent être stockées sur tout type de mémoire similaire à la mémoire 2, ou sur celle-ci. Ces données peuvent être effacées après que le dispositif ait effectué ses tâches ou conservées.
Les données stockées dans la mémoire 4 sont de plusieurs natures. Ainsi, la mémoire 4 reçoit des données de surface en trois dimensions 22, des données de motif 24, et des données de travail 26.
Les données de surface en trois dimensions 22 décrivent l'objet sur lequel on souhaite appliquer une texture. Ces données peuvent être directement utilisables, c'est-à-dire avoir déjà fait l'objet d'une voxelisation, ou être des données brutes. Dans ce cas, un élément non représenté pourra réaliser la voxelisation. La voxelisation n'étant pas l'objet de l'invention, il sera considéré dans la suite que les données de surface en trois dimensions 22 ont déjà fait l'objet d'une voxelisation. Dans l'exemple décrit ici, les données de surface en trois dimensions 22 contiennent pour chaque voxel la moyenne des normales de la surface de l'objet associé à ce voxel. En variante, les données de surface en trois dimensions 22 pourraient contenir les données de la surface en tant que telle, ou toutes autres données qui permettent de décrire la portion de la surface d'un objet qui est associée à un voxel. Les données de surface en trois dimensions 22 permettent donc de définir l'objet par des voxels associés à des portions de la surface de l'objet. Les données de motif 24 représentent le motif avec lequel on souhaite texturer les données de surface en trois dimensions 22. Dans l'exemple décrit ici, le but est de produire un motif de type « noir et blanc », qui représente du plein et du vide dans l'objet en trois dimensions à imprimer. Pour cela, les données de motif 24 peuvent directement définir un motif binaire. Lorsque les données de motif 24 ne sont pas de type binaire, elles peuvent faire l'objet d'un traitement spécifique à cette fin. Enfin, dans le cas où il n'est pas recherché de produire un objet en trois dimensions composé de vide et de plein, les données de motifs 24 peuvent être colorisées afin de texturer l'objet en couleurs, par exemple pour une impression tridimensionnelle multi-couleurs. Les données de motifs 24 peuvent optionnellement définir un relief sur les parties pleines. Les données de travail 26 comprennent toutes les données servant à réaliser les traitements de données selon l'invention. Ces données incluent les données associant les données de surface en trois dimensions aux données définissant les voxels, des données de projection, des données de valeur de similarité et d'autres valeurs décrites dans la suite. Dans l'exemple décrit ici, les données de projection définissent d'une part un plan de projection (c'est-à-dire un couple de vecteurs non colinéaires), et d'autre part une transformation dans ce plan.
Ainsi, les données de motif 24 seront transformées dans un plan selon les données de transformation de ce plan pour texturer ce dernier, puis le centre du voxel concerné est projeté et peut recevoir une texture associée à sa projection dans le plan texturé. 11 est possible à partir d'un nombre limité de plans (26 dans l'exemple décrit ici) et d'un certain nombre de transformations de définir un très grand nombre de plans de projection possibles. Une fois les données de projection ainsi définies, il s'agit donc de choisir les meilleures paires plan/transformation pour chaque voxel. En variante, les données de motif 24 peuvent être plaquées sur la portion des données de surface correspondant au voxel, et cette surface texturée peut être projetée sur le plan puis transformée selon les données de transformation.
Dans certaines variantes, il est possible d'utiliser d'autres surfaces de projection qu'un plan, comme des cylindres ou des sphères, ou toute autre surface qui pourra être avantageuse sur certaines géométries d'objet.
Bien que l'exemple décrit ici utilise des plans comme surface de projection, il est possible d'utiliser d'autres surfaces de projection comme des cylindres ou des sphères selon les géométries des objets. Le trieur 6, l'estimateur 8, le sélectionneur 10, le propagateur 12, le pilote 14, le générateur 16, l'extracteur 18 et le raidisseur 20 sont des éléments accédant directement ou indirectement à la mémoire 4. Ils peuvent être réalisés sous la forme d'un code informatique approprié exécuté sur un ou plusieurs processeurs. Par processeurs, il doit être compris tout processeur adapté au calcul de projection de textures sur des plans et de traitements liés aux voxels. Un tel processeur peut être réalisé de toute manière connue, sous la forme d'un microprocesseur pour ordinateur personnel, d'une puce dédiée de type FPGA ou SoC (« system on chip » en anglais), d'une ressource de calcul sur une grille, d'un microcontrôleur, ou de toute autre forme propre à fournir la puissance de calcul nécessaire à la réalisation décrite plus bas. Un ou plusieurs de ces éléments peuvent également être réalisés sous la forme de circuits électroniques spécialisés tel un ASIC. Une combinaison de processeur et de circuits électroniques peut également être envisagée. Comme mentionné plus haut, l'invention réalise une bonne texturisation en trouvant les bons couples plans/transformation à appliquer à chaque élément des données de surface en trois dimensions (voxels) et aux données de motifs. Plus précisément, l'invention applique une méthode par descente de résolution pour déterminer ces couples. Pour cela, il est procédé en considérant que le problème est résolu pour une résolution donnée, et que l'on va chercher à résoudre ce même problème pour une résolution supérieure, c'est-à-dire dont le grain est plus fin. Pour cela, dans un premier temps, le résultat de la résolution donnée est propagé à la résolution supérieure, en découpant chacun des voxels de la résolution donnée en voxels de résolution supérieure, et en appliquant à ces voxels la solution trouvée pour la résolution donnée. Puis, le problème est résolu en optimisant les couples plan/transformation ainsi affectés à la résolution supérieure. Pour cela, chaque voxel de la résolution supérieure est testé avec tous les couples plan/transformation connus pour la résolution donnée, et une valeur de similarité est déterminée en fonction des couples plan/transformation des voisins de ce voxel. Finalement, chaque voxel adopte le couple plan/transformation qui indique la meilleure similarité avec ses voisins pour définir la solution pour la résolution supérieure. Ces opérations sont réalisées par le trieur 6 dont le rôle est de sélectionner les voxels qui sont les voisins d'un voxel donné, l'estimateur 8 dont le rôle est de calculer une valeur de similarité entre deux voxels et leur combinaison plan/transformation associée, le sélectionneur 10 qui utilise le trieur 6 et l'estimateur 8 pour déterminer la meilleure combinaison plan/transformation pour un voxel donné, le propagateur 12 qui propage la solution d'une résolution donnée à une résolution supérieure, et le pilote 14, qui active sélectivement le sélectionneur 10 et le propagateur 12 pour propager le résultat de résolution en résolution, et pour appeler le sélectionneur 10 sur les voxels résultants afin de calculer la solution pour chaque résolution supérieure.
Ces opérations sont décrites en rapport avec les figures 2 à 6.
Une fois que la résolution souhaitée est obtenue, la projection des voxels correspondant aux données de surface sur les couples plan/transformation combinés aux données de motifs 24 produit des données de résultat 28.
Ensuite, le générateur 16, l'extracteur 18 et le raidisseur 20 traitent les données de résultat 28 afin de rendre la structure physique correspondante stable d'un point de vue mécanique.
Ces opérations sont décrites en rapport avec les figures 7 à 9.
Comme cela apparaît, les opérations des figures 2 à 6 et 7 à 9, bien que synergiques pour fournir un dispositif qui part de données de surface et de données de motif pour donner un objet à imprimer en trois dimensions de nature originale, sont assez indépendantes les unes des autres. Ainsi, les figures 2 à 6 décrivent un dispositif original pour produire des données de motif plaqué avantageux, tandis que les figures 7 à 9 décrivent un dispositif original pour produire un objet à imprimer en trois dimensions qui est mécaniquement solide. Dans les figures décrites ci-dessous, une variable dont le nom est tout en majuscule désigne dans la majorité des cas une liste contenant plusieurs éléments, tandis qu'une variable dont le nom est en minuscule désigne un élément seul. La figure 2 représente un exemple d'une fonction mise en œuvre par le trieur 6 pour déterminer les voxels voisins d'un voxel donné. Dans l'exemple décrit ici, un voxel est dit voisin d'un autre lorsqu'il est inclus dans un cube dont l'arête mesure cinq voxels et dont le centre est l'autre voxel. En d'autres termes, si on définit les voxels par des coordonnées de type (x ;y ;z) où x, y et z sont des multiples d'une dimension de voxel, deux voxels de coordonnées (xl ; yl ; zl) et (x2 ; y2 ; z2) sont voisins lorsque xl -x2, yl -y2 et zl-z2 ont une valeur absolue inférieure ou égale à 2. Cependant, seuls les voxels qui correspondent à des données de surface 22 sont intéressants.
Le trieur 6 commence dans une opération 260 avec des données de surface en trois dimensions O, une variable de taille de voisinage n_s, un voxel d'entrée v et une liste de voisins N initialisée à 0 (c'est-à-dire vide). Comme on l'a vu plus haut, dans le cadre de l'exemple décrit ici, la variable de taille de voisinage n_s a pour valeur 5, pour désigner un voisinage en forme de cube de longueur 5 voxels. En variante, le voisinage pourrait avoir une forme différente, ainsi que des dimensions différentes.
Dans une opération 210, une fonction Ngb() est appelée avec le voxel d'entrée v, et la taille de voisinage n_s comme variables. La fonction Ngb() sélectionne tous les voxels qui entourent le voxel v dans un cube de dimension n_s et centré sur le voxel v, et les stocke ensemble dans la liste P. Comme on le verra par la suite, les voxels qui sont associés à des données de surface 22 sont associés à des données de projection 26. Dans l'exemple décrit ici, la liste P reçoit à la fois les voxels voisins, mais également les données de projection 26 qui leur sont associées. En variante, la correspondance entre ces voxels et les données de projection correspondantes sont maintenues en dehors de la liste P. La liste P contient tous les voisins du voxel v, y compris les voxels qui ne correspondent pas aux données de surface 22. Par conséquent, il ne sert à rien de conserver ces voxels, puisqu'ils ne peuvent pas servir à projeter les données de motif 24. Pour cela, une boucle est lancée dans une opération 226, dans laquelle la liste P est dépilée dans un couple (x ;p_dx) qui reçoit le premier voxel de la liste P ainsi que les données de projection 26 qui lui sont associées. Dans une opération 230, les données de projection p_dx sont testées : si elles sont vides, cela signifie que le voxel x ne correspond pas à des données de surface 22, et inversement. Ainsi, si les données de projection p_dx sont présentes, alors le voxel x et ses données de projection p_dx sont entrées dans la liste N dans une opération 240. Ensuite, ou lorsque le voxel x n'est pas associé à des données de surface 22, la boucle reprend avec l'opération 226. La boucle se termine lorsque la liste P est vidée, et la liste N est retournée dans une opération 250. La figure 3 représente un exemple d'une fonction mise en œuvre par l'estimateur 8 pour calculer une valeur de similarité entre un premier voxel v l auquel sont associées des premières données de projection p_dl , et un deuxième voxel v2 auquel sont associées des deuxièmes données de projection p_d2. Les travaux de la Demanderesse l'ont amenée à considérer que la similarité entre deux voxels s'apprécie au fait que leurs projections sur les plans associés respectivement aux premières et aux deuxièmes données de projection sont assez similaires.
Dit autrement, si l'on projette les données de motifs plaquées sur les données de surface 22 du premier voxel d'une part avec les premières données de projection et d'autre part avec les deuxièmes données de projection, les textures résultantes doivent être similaires, et il en va de même avec le deuxième voxel.
Ainsi, dans une opération 300, l'estimateur 8 reçoit un premier voxel v l , un deuxième voxel v2, des premières données de projection p_dl, des deuxièmes données de projection p_d2, les données de motif t, les données de surface en trois dimensions O, et une variable de valeur de similarité initialisée à 0. Dans une opération 310, deux textures tl l et tl 2 sont calculées au moyen d'une fonction ProjQ, de sorte que :
- la texture tl l reçoit la texture de la projection du centre du premier voxel v l sur le plan défini par les premières données de projection p_dl et texturé selon ces dernières avec les données de motif 24, et
- la texture tl2 reçoit la texture de la projection du centre du premier voxel vl sur le plan défini par les deuxièmes données de projection p_d2 et texturé selon ces dernières avec les données de motif 24. Ensuite, ou en parallèle selon les variantes, dans une opération 312, deux textures t21 et t22 sont calculées au moyen d'une fonction Proj(), de sorte que :
- la texture t21 reçoit la texture de la projection du centre du deuxième voxel v2 sur le plan défini par les premières données de projection p_dl et texturé selon ces dernières avec les données de motif 24, et
- la texture t22 reçoit la texture de la projection du centre du deuxième voxel v2 sur le plan défini par les deuxièmes données de projection p_d2 et texturé selon ces dernières avec les données de motif 24.
Enfin, dans une opération 330, la valeur de similarité retournée d est calculée comme la somme de la différence entre les textures tl 1 et t!2 d'une part et entre les textures t21 et t22 d'autre part. Dans l'exemple décrit ici, la différence entre les textures est calculée au moyen d'une fonction L2() qui calcule la norme euclidienne de la différence de couleur pixel par pixel des textures respectives. La figure 4 représente un exemple d'une fonction mise en œuvre par le sélectionneur 10 pour déterminer les données de projection qui sont les plus adaptées pour un voxel donné compte tenu de son entourage.
Pour cela, le sélectionneur 10 reçoit dans une opération 400 le voxel v concerné, les données de projection p_dv qui lui sont associées, un jeu de données de projection pouvant améliorer la situation P_D, les données de motif t, les données de surface en trois dimensions O, et une variable de valeur de meilleure similarité dm initialisée à 0. Dans une première boucle, la similarité entre le voxel v et son voisinage est calculée pour les données de projection p_dv qui lui sont associées. Ainsi, dans une opération 405, le sélectionneur 10 appelle le trieur 6 qui stocke le résultat dans une liste N.
Ensuite, une boucle est effectuée dans laquelle la liste N est dépilée dans une opération 410. Ensuite, dans une opération 415, le sélectionneur 10 appelle l'estimateur 8 avec d'une part le voxel v et ses données de projection p_dv associées, et d'autre part chaque voxel voisin x dépilé et ses données de projection associées p_dx. La variable de meilleure similarité dm reçoit à chaque fois la valeur de similarité ainsi calculée.
Lorsque la liste N est vide, la variable de meilleure similarité dm a été initialisée avec la somme des valeurs de similarité entre le voxel donné avec ses données de projection associées p_dv et ses voisins avec leurs données de projection associées.
Ensuite, le sélectionneur 10 initialise une autre boucle dans laquelle chacune des données de projection du jeu de données de projection P_D vont être appliquées au voxel donné v, pour déterminer si elles constituent une meilleure correspondance avec les voxels du voisinage du voxel v et leurs données de projection associées.
Pour cela, une variable de valeur de similarité d est initialisée à 0 dans une opération 426, puis le jeu P_D est dépilé dans une opération 425. Ensuite, la même boucle que pour les opérations 410 et 415 est réalisée avec les opérations de dépilage 430 et de calcul de la similarité 435 entre le voxel donné v et les voxels de son voisinage. Cependant, dans l'opération 435, le voxel v n'est pas appelé avec les données de projection p_dv qui lui sont associées, mais avec les données de projection p_dy qui ont été dépilées dans l'opération 425.
Ensuite, dans une opération 440, les valeurs d et dm sont comparées. Si d est inférieure à dm, cela signifie que les données de projection p_dy, associées au voxel v, sont plus proches des voxels du voisinage du voxel v que les données de projection p_dv. Dans ce cas, la valeur dm reçoit la valeur d comme nouvelle valeur de meilleure similarité dans une opération 445, et les données de projection p_dv reçoivent les données de projection p_dy dans une opération 450. Ainsi, le couple dm et p_dv contient en permanence la valeur de meilleure similarité entre le voxel v et les voxels de son voisinage, ainsi que les données de projection correspondantes. Ensuite, ou si d est supérieure à dm, la boucle de dépilage du jeu P_D reprend avec l'opération 426 et la mise à zéro de la variable d. Enfin, lorsque le jeu P_D est vide, le sélectionneur 10 retourne les données de projection p_dv qui correspondent le mieux au voxel v compte tenu de son voisinage. De nombreuses variantes sont directement envisageables, comme la réalisation des opérations 445 et 450 en parallèle, la parallélisation des boucles de calcul de la valeur de similarité. De plus, certaines boucles de calcul de la valeur de similarité pour des données de projection p_dy différentes pourraient être également réalisées en parallèle, et le meilleur candidat sélectionné à la fin.
Par ailleurs, la Demanderesse a identifié le fait que la valeur de similarité entre le voxel donné et son voisinage pour des données de projection données peut optionnellement dépendre d'une valeur supplémentaire, qui découle de l'angle formé entre la normale au plan défini par les données de projection données et la normale aux données de surface en trois dimensions associées au voxel donné. En effet, si cet angle est grand, la projection des données de motif peut être fortement distordue, malgré une bonne similarité avec les voxels du voisinage. Ainsi, après le calcul de la similarité avec les voisins, une valeur tirée du produit scalaire de la normale aux données de surface en trois dimensions associées à v avec la normale au plan des données de projection peut être ajoutée.
La Demanderesse a également identifié le fait que la valeur de similarité entre le voxel donné et son voisinage pour des données de projection données peut optionnellement dépendre d'une position dans le motif, pour encourager ou décourager l'utilisation de certaines portions du motif. Ceci peut par exemple être utilisé lorsque le motif est répété sur le plan de projection, pour empêcher des discontinuités visuelles dues aux jonctions entre les bords du motif d'apparaître sur la surface. Les voxels qui sélectionnent une projection faisant apparaître cette portion du motif sont pénalisés par un accroissement des valeurs de similarité.
La figure 5 représente un exemple d'une fonction mise en œuvre par le propagateur 12 pour propager la solution d'une résolution donnée à une résolution supérieure.
Dans une opération 500, le propagateur 12 reçoit un voxel d'entrée v, des données de projection associées p_dv, des données de surface en trois dimensions O, une taille d'échantillonnage de résolution s, et une liste de voxels de résolution supérieure V initialisée à 0.
Dans une opération 510, le propagateur 12 appelle un fonction Up() avec le voxel v et la taille d'échantillonnage s. La fonction Up() renvoie une liste X de voxels de résolution supérieure, selon la taille d'échantillonnage s. Dans l'exemple décrit ici, la taille d'échantillonnage a pour valeur 2, de sorte que la liste X contient 8 voxels qui correspondent ensemble au voxel v.
Ensuite, le propagateur 12 exécute une boucle dans laquelle les voxels de la liste X sont dépilés dans une opération 526, puis testés dans une opération 525 pour déterminer si ces voxels correspondent à des données de surface en trois dimensions. Si ce n'est pas le cas, alors le voxel est stocké sans données de projection associées dans la liste V dans une opération 540. Dans le cas contraire, le voxel est stocké avec les données de projection p_dv dans la liste V dans une opération 550. Enfin, lorsque la liste X est vide, le propagateur 12 retourne la liste V dans une opération 560.
En variante, l'opération 550 pourrait introduire du bruit améliorant la variété en affectant de manière aléatoire des données de projection distinctes des données de projection p_dv à certains au moins des voxels de résolution supérieure qui correspondent à des données de surface en trois dimensions. En variante, la variété n'est pas ajoutée de manière aléatoire, mais de manière déterministe. La figure 6 représente un exemple d'une fonction mise en œuvre par le pilote 14 pour calculer les données de résultat 22 à partir des données de surface en trois dimensions 22, des données de motifs 24 et d'un jeu de données de projection. Dans une opération 600, le pilote 14 reçoit ces données ainsi que le niveau de résolution r recherché, la taille d'échantillonnage s et initialise une variable de boucle de résolution i à 0.
Dans une opération 605, le pilote 14 exécute une fonction Init() pour lancer les opérations. Cette fonction a pour rôle de déterminer le premier voxel de résolution la plus grossière qui englobe les données de surface en trois dimensions, ainsi que les données de projection correspondantes. Dans l'exemple décrit ici, il n'y a qu'un seul premier voxel, mais il pourrait y en avoir plusieurs. De plus, les données de projection associées à ce premier voxel sont choisies de manière aléatoire. En variante, la fonction Init() pourrait calculer ces données de projection.
Ensuite, le pilote 14 entame une série de boucles d'indice i jusqu'à ce que la résolution r soit atteinte (opération 610). Dans chaque boucle, une liste Z associant des voxels et des données de projection est initialisée à 0 dans une opération 615. Ensuite, la liste de voxels de résolution correspondant à l'itération précédente V est dépilée dans une opération 626.
Chaque voxel x et ses données de projection p_dx sont ensuite propagées en appelant le propagateur 12 dans une opération 625 et la liste résultante est stockée dans une liste W. Le jeu de données de projection P_D utilisé pour faire fonctionner le sélectionneur est alors initialisé à 0 dans une opération 630, et une boucle parcourt la liste W avec une opération 635 et une opération 640 afin de remplir la liste P_D avec les données de projection associées aux voxels de la liste W.
Ensuite, dans une opération 645, une fonction Rand() ajoute un nombre choisi de données de projection à la liste P D afin de favoriser l'exploration de nouvelles solutions. Ici encore, la variété peut ne pas être ajoutée de manière aléatoire, mais de manière déterministe.
Enfin, la liste W est parcourue par une boucle, à partir d'une opération 650. Le sélectionneur 10 est appelé dans une opération 655 avec chaque voxel de la liste W afin de trouver les meilleures données de projection p_dy de la liste P_D compte tenu de son voisinage. Le résultat est stocké dans la liste Z qui constitue les données de résultat 22 pour la résolution d'indice courant i. Lorsque toute la liste V a été propagée et optimisée, elle est mise à jour dans une opération 665 avec la liste Z résultante, qui représente la solution pour la résolution d'indice i, puis l'indice i est incrémenté dans une opération 670.
On notera qu'afin d'explorer tous les possibles et d'enrichir l'exploration, la boucle des opérations 630 à 660 peut être répétée un nombre choisi de fois, ou un nombre de fois dépendant d'un critère de convergence, afin de s'assurer que l'exploration de nouvelles solutions a été réalisée de manière optimale au sein de chaque résolution.
Lorsque la résolution r est atteinte, le pilote retourne la liste V contenant les données de résultat dans une opération 675.
La figure 7 représente un exemple de mise en œuvre du dispositif 2 pour transformer les données de voxels calculées précédemment en données d'objet imprimable en trois dimensions.
En effet, les données produites par le pilote 14 ne sont pas forcément « fiables » structurellement. Par exemple, si l'on regarde les données de résultat 22, il apparaît que les oreilles du lapin, bien que correspondant à la projection idéale des données de motif, ne sont pas attachées au reste du corps. Dans ces conditions, impossible d'imprimer un objet. L'objet des figures 7 à 9 trouve son application également dans le cas où les données de voxels ne sont pas obtenues comme décrit ci-avant. Ainsi, le dispositif 2 part dans une opération 700 de données de voxels V. Ces données de voxels décrivent une ébauche d'objet en trois dimensions : soit le voxel désigne un emplacement plein, soit il désigne un emplacement vide. Ensuite, dans une opération 720, le générateur 16 transforme les données de voxels V en un premier graphe G. Dans l'exemple décrit ici, le graphe G est construit comme suit :
- chaque voxel des données de voxels V forme un nœud,
- deux voxels sont considérés comme voisins et reliés par une arête si et seulement si ils partagent un coin,
- le poids de l'arête dans le graphe est la longueur de l'arête, définie comme la distance entre les centres des deux voxels reliés par l'arête.
L'invention propose deux méthodes pouvant être combinées pour évaluer la tenue mécanique d'un objet correspondant aux données de voxels. Dans les deux cas, le nombre de nœuds dans le premier graphe G est trop important pour réussir à calculer quoi que ce soit. En effet, pour que l'objet fabriqué de manière additive soit esthétique, il faut un nombre important de voxels pour avoir une bonne résolution d'impression, ce qui rend la simulation très complexe.
Pour simplifier les calculs, dans une opération 740, le graphe G est « simplifié » en un deuxième graphe A au moyen d'une fonction Conn(). La fonction Conn() est réalisée par l'extracteur 18, et la figure 8 représente un exemple de mise en œuvre de cette fonction.
Au préalable, dans l'opération 720, le premier graphe G fait l'objet d'un échantillonnage de Poisson, afin de définir un graphe échantillonné S de voxels qui correspondent chacun à un emplacement plein. Dans une opération 800, l'extracteur 18 part des données du premier graphe G, du graphe échantillonné S, ainsi que d'un graphe de marqueurs T et d'un deuxième graphe A qui sont tous deux initialisés à 0. Le but de la fonction Conn() est de relier tous les nœuds du graphe échantillonné S par des premières arêtes et des deuxièmes arêtes. Les premières arêtes sont des arêtes « solides », tandis que les deuxièmes arêtes sont des arêtes « non solides ». Cela est réalisé par la propagation de marqueurs dans le graphe de marqueurs T, en partant des nœuds du graphe échantillonné S.
Dans une opération 805, le graphe de marqueurs T est initialisé au moyen d'une fonction Exs() qui reçoit le graphe échantillonné S et le premier graphe G comme arguments. La fonction Exs() procède en sélectionnant, pour chaque nœud du graphe S, les nœuds du premier graphe G avec lesquels il partage une arête, et pour marquer avec un marqueur identifiant le nœud respectif du graphe S celui des nœuds sélectionnées qui désigne un emplacement plein et dont l'arête présente le poids le plus faible. En d'autres termes, en itérant ce processus il s'agit de propager le graphe S dans les candidats solides du graphe G suivant une distance géodésique basée sur le poids des arêtes.
L'opération 805 peut être vue comme une opération d'initialisation. En effet, après celle-ci, deux boucles vont se succéder. La première boucle va déterminer les premières arêtes et la seconde boucle va déterminer les deuxièmes arêtes. La première boucle commence avec une opération 810 dans laquelle la fonction Exs() est à nouveau appelée pour propager les marqueurs. Pour cela, le graphe de marqueurs T est utilisé comme argument de la fonction ExsQ (au lieu du graphe échantillonné S de l'opération 805). Ainsi, ce sont les nœuds qui ont été marqués à l'itération précédente de la boucle qui sont propagés, et le résultat est réinjecté dans le graphe de marqueurs T.
Ensuite, dans une opération 815, une fonction Edg() teste le graphe de marqueurs T pour identifier si une arête solide a été détectée par la propagation. Une arête solide est détectée lorsque deux marqueurs différents sont associés à un même voxel du premier graphe G. En effet, cela signifie que ce voxel est directement relié par un chemin de voxels désignant un emplacement solide entre deux nœuds du deuxième graphe qui désignent eux-mêmes un emplacement solide. Si une ou plusieurs arêtes sont identifiées par la fonction Edg(), celles-ci sont introduites dans le deuxième graphe A dans une opération 820. Ensuite, ou lorsqu' aucune arête solide n'est détectée, une fonction Fill() détermine si tous les nœuds du graphe de marqueurs ont été propagés dans une opération 825. S'il reste possible de propager des marqueurs, la boucle reprend en 810.
Sinon, la deuxième boucle commence dans une opération 830 avec l'exécution d'une fonction Ex(). La fonction Ex() est similaire à la fonction Exs(), à l'exception du fait que la propagation des marqueurs peut se faire à tous les voxels du premier graphe G, et non plus uniquement à ceux qui indiquent un emplacement plein. La fonction Ex() diffère également de la fonction Exs() en ce que la propagation exclut les voxels associés à une première arête. Le reste de la deuxième boucle est similaire avec des opérations 835, 840 et 845 qui sont identiques aux opérations 815, 820 et 825. Lorsque tous les marqueurs ont été propagés dans la deuxième boucle, la fonction Conn() se termine dans une opération 850. Il en résulte un deuxième graphe A qui contient un ensemble de nœuds qui correspondent à un échantillonnage de Poisson de voxels indiquant un emplacement plein, et qui sont reliés entre eux par des arêtes qui reflètent le fait que les chemins de voxels entre ces nœuds indiquent des emplacements pleins ou vides.
L'extracteur 18 pourrait mettre en œuvre la fonction Conn() différemment, par exemple en détectant les premières arêtes et les deuxièmes arêtes de manière simultanée, ou en utilisant une distance non géodésique ou déterminée différemment.
Le raidisseur 20 part du deuxième graphe A et analyse si un objet correspondant à ce graphe serait mécaniquement stable. Pour cela, le raidisseur 20 utilise deux méthodes qui peuvent être utilisées seules ou en combinaison. Ces méthodes correspondent à deux simulations physiques distinctes qui déterminent si une ou plusieurs arêtes dépassent un seuil synonyme de rigidité structurelle. La première méthode est une méthode basée sur une simulation par éléments finis et la figure 9 représente un exemple de mise en œuvre de cette méthode par le raidisseur 20. Cette fonction analyse les deuxièmes arêtes, dites « non solides » et redéfinit certaines d'entre elles en tant qu'arêtes solides si cela est nécessaire pour rendre l'objet mécaniquement rigide.
Dans une opération 900, le raidisseur 20 part du deuxième graphe A. Ensuite, dans une opération 910, une boucle commence. Cette boucle commence par une simulation par méthodes des éléments finis de l'objet défini par le deuxième graphe A. Cette simulation est réalisée par une fonction FE() qui a par ailleurs accès aux paramètres de simulation mécanique (c'est-à-dire les conditions aux limites que doit respecter l'objet imprimé pour une manipulation recherchée).
Le résultat de la fonction FE() est une liste de deuxièmes arêtes W dans laquelle les deuxièmes arêtes sont classées par ordre de contrainte simulée décroissante, chacune de ces arêtes ayant été déterminée comme présentant une contrainte excédant un seuil de contrainte compte tenu des conditions aux limites.
Ce classement par ordre de valeur de contrainte décroissante est important car le principe de la méthode appliquée par le raidisseur 20 est de rendre solide l'arête la plus contrainte, puis la deuxième arête la plus contrainte qui est à une distance donnée de l'arête précédente, etc.
Par conséquent, dans une opération 920, la première arête x de la liste W est extraite, et celle-ci est rendue solide par une fonction Hrd() dans une opération 930.
Ensuite, dans une opération 940, il est testé si la liste W contient encore une arête. Si c'est le cas, alors l'arête y correspondante est testée par une fonction Dist() dans une opération 950 pour déterminer si elle est à une distance suffisante de l'arête x qui vient d'être rendue solide. Si ce n'est pas le cas, alors l'opération 940 est répétée, jusqu'à ce qu'une arête non solide suffisamment éloignée de l'arête x soit trouvée dans W ou que la liste soit vide. Ainsi, toutes les arêtes ne sont pas systématiquement rendues solides lorsqu'elles sont voisines, ce qui permet de mieux respecter la forme originelle de l'objet du deuxième graphe A. Si une telle arête est trouvée, alors elle est rendue solide dans une opération 960 identique à l'opération 930, et dans une opération 970, l'arête y est stockée comme arête précédente x pour la répétition de la boucle avec l'opération 940.
Lorsque la liste W est vide, une nouvelle simulation est exécutée avec l'opération 910, afin de déterminer si les modifications ont été suffisantes pour rendre l'objet mécaniquement rigide.
Si la liste W n'est pas vide, alors la boucle est répétée. Si la liste W est vide, alors aucune des arêtes non-solides ne présente une valeur de contrainte trop importante compte tenu des conditions aux limites, et la fonction se termine avec l'opération 980, dans laquelle tous les voxels du premier graphe G correspondant aux arêtes qui ont été rendues solides sont également rendus solides. Dans l'exemple décrit ici, les 3 voisins au sens géodésique de chaque voxel de l'arête, de part et d'autre de celle-ci sont également rendus solides. En variante, les voxels voisins qui sont également rendus solides pourraient être sélectionnés différemment (par exemple sur un critère géométrique et non géodésique), ou les voxels voisins pourraient ne pas être changés.
La deuxième méthode que le raidisseur 20 peut appliquer est une méthode géométrique. Pour cela, le raidisseur 20 parcourt chacune des arêtes non-solides du deuxième graphe A et calcule le ratio entre la distance euclidienne entre les deux nœuds de chaque arête et la distance géodésique au travers des arêtes solides qui les sépare. Si ce ratio excède un seuil choisi, alors l'arête est rendue solide, ainsi qu'optionnellement les voisins des voxels qui la composent dans le premier graphe comme décrit ci-dessus. Comme mentionné plus haut, la méthode mécanique et la méthode géométrique peuvent être utilisées séparément ou en combinaison. Les travaux de la Demanderesse l'amènent dans l'état actuel de ses recherches à considérer que leur combinaison est particulièrement avantageuse, bien qu'elle puisse paraître redondante à l'homme du métier.
Une fois que le raidisseur 20 a redéfini les arêtes non-solides, l'objet peut être imprimé sur la base des voxels correspondant au deuxième graphe A et des voxels du premier graphe G ainsi modifiés.
La Demanderesse a néanmoins identifié que cette modification des arêtes, bien qu'efficace mécaniquement, peut limiter l'efficience du traitement d'image présenté avec les figures 2 à 5.
Pour corriger cela, la Demanderesse a découvert qu'il est possible d'exécuter le raidisseur 20 et la fonction de traitement d'image en boucle afin d'obtenir un résultat visuel optimal tout en maintenant une bonne tenue mécanique.
Pour cela, la Demanderesse a découvert qu'il était avantageux, après l'exécution du raidisseur 20, de rappeler le traitement d'image sur les voxels qui ont été redéfinis. Pour cela, le pilote 14 exécute à nouveau la fonction de la figure 5, uniquement sur les voxels modifiés, pour un nombre plus restreint de résolutions, et d'une manière légèrement différente.
Ainsi, dans un premier temps, le pilote 14 détermine pour chaque voxel modifié la liste des voxels parents pour un nombre choisi de résolutions inférieures, c'est-à-dire quels sont les voxels que le propagateur 12 a transformés en ces voxels, et ce pour une taille correspondant à celle de la résolution la plus faible recherchée.
Dans l'exemple décrit ici, le nombre de résolutions choisi est 2, mais il pourrait être supérieur. Par exemple, si le nombre de résolutions choisi est de 2, et que le propagateur 12 double la résolution à chaque exécution (huit fois plus de voxels), alors : - la résolution la plus faible comportera un voxel,
la résolution intermédiaire comportera 8 voxels, et la résolution qui correspond aux voxels du deuxième graphe A comportera 64 voxels.
L'exécution du pilote 14 sera réalisée à partir de chacun des voxels de résolution la plus basse qui présente un fils qui a été modifié par le raidisseur 20.
Dans chaque résolution, le pilote 14 indique si un voxel correspond à un voxel qui a été modifié. Lorsque ce n'est pas le cas, le sélectionneur 10 est exécuté à l'identique. En revanche, si le voxel en question correspond à un voxel qui a été modifié, alors la fonction exécutée par le sélectionneur 10 est légèrement modifiée conformément à la figure 10 pour ne sélectionner comme données de projection 26 que celles qui désigneront également un emplacement plein. Ainsi, l'exécution du pilote 14 ne vient pas dégrader la structure mécanique, et seulement harmoniser visuellement l'objet afin qu'il corresponde mieux aux données de motif 24.
Sur la figure 10, les opérations identiques à celles de la figure 4 ont été représentées avec un suffixe numérique identique, de sorte que l'opération 410 et l'opération 1010 sont identiques, etc. Comme on peut le voir sur cette figure, seule une opération 1042 a été ajoutée, qui est un test pour déterminer si des données de projection p_dy susceptibles de venir améliorer le traitement d'image correspondent à un emplacement solide, ou non.
Une fois que le pilote 14 a fini ce traitement, le générateur 16, l'extracteur 18 et le raidisseur 20 sont à nouveau appliqués sur les données de voxels résultantes. La boucle se termine lorsque le raidisseur 20 ne modifie aucune arête, et donc aucun voxel.
Ensuite, les opérations de fabrication additive, y compris la génération du support peuvent être réalisées comme cela est connu. L'invention peut également être définie comme un procédé de traitement de données pour fabrication additive, comprenant les opérations suivantes : a) recevoir des données de voxels d'une surface d'un objet à fabriquer, chaque voxel indiquant un emplacement plein ou vide,
b) calculer un premier graphe à partir des données de voxels en définissant chaque voxel comme formant un nœud, en reliant entre eux par des arêtes les nœuds qui correspondent à des voxels respectifs qui partagent un coin, et en affectant à chaque arête un poids calculé à partir de la distance entre les centres des voxels correspondant aux nœuds qui lui sont associés,
c) calculer un deuxième graphe en définissant des nœuds à partir d'un sous-ensemble de nœuds du graphe comprenant des nœuds correspondant à des voxels indiquant un emplacement plein, et pour relier entre eux les nœuds du deuxième graphe par des premières arêtes et des deuxièmes arêtes, une première arête étant définie comme représentant le chemin le plus court en termes de poids au sein du premier graphe entre deux nœuds du deuxième graphe, chaque nœud du premier graphe reliant ces deux nœuds correspondant à un voxel indiquant un emplacement plein, et la somme des poids des arêtes du premier graphe reliant les deux nœuds associés à la première arête définissant le poids de cette première arête, une deuxième arête étant définie comme représentant le chemin le plus court en termes de poids au sein du premier graphe entre deux nœuds du deuxième graphe qui ne peuvent pas être reliés par une première arête, d) déterminer une liste de deuxièmes arêtes dépassant un seuil sur la base d'une simulation physique d'un objet correspondant au deuxième graphe, et redéfinir certaines au moins de ces deuxièmes arêtes en tant que premières arêtes, et pour redéfinir certains au moins des voxels correspondant aux nœuds du premier graphe appartenant au voisinage de ces arêtes redéfinies comme correspondant à un emplacement plein. Ce procédé tel peut présenter une ou plusieurs des caractéristiques suivantes :
- l'opération c) comprend l'opération suivante :
cl) déterminer les premières arêtes en associant à chaque nœud du premier graphe correspondant à voxel indiquant un emplacement plein un marqueur d'un nœud dudit sous-ensemble, les marqueurs étant propagés à partir de chacun des nœuds dudit sous-ensemble en choisissant, à partir d'un nœud marqué, celui des nœuds qui lui est directement relié par une arête dans le premier graphe, qui correspond à un voxel indiquant un emplacement plein et dont l'arête présente le poids le plus faible, une première arête étant créée lorsque la propagation implique le marquage d'un nœud présentant déjà un marqueur d'un nœud dudit sous-ensemble,
- l'opération c) comprend en outre l'opération suivante :
c2) déterminer les deuxièmes arêtes en associant à chaque nœud du premier graphe un marqueur d'un nœud dudit sous-ensemble, les marqueurs étant propagés à partir de chacun des nœuds dudit sous-ensemble en choisissant, à partir d'un nœud marqué, celui des nœuds qui lui est directement relié par une arête dans le premier graphe, dont l'arête présente le poids le plus faible, et qui n'appartient pas à une première arête, une deuxième arête étant créée lorsque la propagation implique le marquage d'un nœud présentant déjà un marqueur d'un nœud dudit sous-ensemble,
- l'opération d) comprend une boucle récursive comprenant les opérations suivantes : dl) simuler par éléments finis à partir du deuxième graphe un champ de contrainte pour chacune des arêtes du deuxième graphe,
d2) déterminer une liste de secondes arêtes présentant une contrainte supérieure à un seuil de contrainte,
d3) sélectionner la seconde arête de la liste présentant la plus grande contrainte en première arête,
d4) redéfinir cette seconde arête en tant que première arête si elle est à une distance choisie en termes de poids de la dernière arête redéfinie dans la boucle en court, et en répétant l'opération d3) sinon,
d5) recommençant la boucle en a) lorsque la liste ne contient plus d'arête, jusqu'à ce que la boucle ne redéfinisse plus aucune arête,
- l'opération d) comprend une boucle comprenant les opérations suivantes :
dl) déterminer un ratio entre la distance en termes de poids entre les nœuds de chaque deuxième arête et la distance euclidienne entre ces mêmes nœuds, d2) redéfinir chaque seconde arête dont le ratio supérieur est à un seuil choisi en tant que première arête,
- le procédé comprend également les opérations suivantes :
e) recevoir des données de surface en trois dimensions, des données de voxel associées, des données de projection et des données de motif,
f) à partir d'un voxel d'une résolution donnée et de données de projection qui lui sont associées, définir une pluralité de voxels de résolution supérieure à la résolution donnée, et associer à certains au moins de cette pluralité de voxels les données de projection associées au voxel de résolution donnée,
g) pour certains au moins de la pluralité de voxels résultante auxquels sont associées des données de projection en tant que voxel donné:
gl) définir un jeu de données de projection comprenant d'une part les données de projection associées à la pluralité de données de voxels résultante, et d'autre part une quantité non nulle d'autres données de projection,
g2) pour certaines au moins des données de projection issues de l'opération gl), et pour certains au moins des voxels voisins du voxel donné, et pour calculer une valeur de similarité entre le voxel donné et chaque voxel voisin concerné, à partir de la projection des données de surface en trois dimensions associées au voxel donné et des données de surface en trois dimensions associées au voxel voisin, respectivement sur une première surface définie par des données de projection du jeu de données de projetion et sur une deuxième surface définie par les données de projection du voxel voisin sur lesquelles les données de motif sont plaquées, en calculant une valeur tirée de la différence entre la projection du voxel donné sur la première surface et la deuxième surface d'une part, et de la différence entre la projection du voxel voisin sur la première surface et la deuxième surface d'autre part,
g3) déterminer celles des données de projection dudit jeu qui indiquent la meilleure similarité,
h) Répéter les opérations f) et g) avec certains au moins des voxels résultants, jusqu'à atteindre une résolution choisie,
- l'opération g) comprend la détermination de la valeur tirée de la différence entre la projection d'un voxel sur la première surface et sur la deuxième surface à partir de la différence de texture résultant du plaquage des données de motif sur la première surface et sur la deuxième surface pour ces projections,
- l'opération g) comprend la détermination de la valeur de similarité à partir d'une valeur tirée de la valeur de l'angle formé par la normale au plan défini par les données de surface en trois dimensions d'une part, et par la normale au plan de projection d'autre part,
- dans l'opération g), la valeur de similarité est strictement positive et indique une similarité d'autant meilleure que la valeur de similarité est faible,
- l'opération f) comprend l'association de certains au moins des voxels de la pluralité de voxels de résolution supérieure avec des données de projection choisies aléatoirement,
- les données de projection comprennent un identifiant de surface choisi parmi un jeu de plans et des données de transformation indiquant une translation et/ou une rotation du repère de la surface désignée par l'identifiant de surface pour le plaquage des données de motif,
- les données de projection sont indépendantes des données de surface en trois dimensions,
- la surface définie par les données de projection est un plan,
- les données de motif sont de nature stochastique et répétitive.
- la valeur de similarité est strictement positive et indique une similarité d'autant meilleure que la valeur de similarité est faible,
- les données de voxels de l'opération a) sont obtenues par l'application des opérations e) à h),
- les opérations e) à h) sont répétées avec les données de voxels modifiées dans l'opération d),
- pour les données de voxels modifiées dans l'opération d), l'opération g3) est répétée de manière à ne sélectionner que des données de projection telles que les données de voxels concernées indiqueront un emplacement plein,
- les opérations a) à d) et e) à h) sont répétées en boucle jusqu'à ce que l'opération d) ne modifie plus de données de voxels.
L'invention peut également être définie comme un produit de programme d'ordinateur comprenant des portions de code de programme pour mettre en œuvre le dispositif ou le procédé tels que décrit plus haut lorsque ledit programme est exécuté sur un ordinateur.

Claims

Dispositif pour fabrication additive, comprenant :
une mémoire (4) pour recevoir des données de voxels d'une surface d'un objet à fabriquer, chaque voxel indiquant un emplacement plein ou vide,
un générateur (16) capable de calculer un premier graphe (G) à partir des données de voxels en définissant chaque voxel comme formant un nœud, en reliant entre eux par des arêtes les nœuds qui correspondent à des voxels respectifs qui partagent un coin, et en affectant à chaque arête un poids calculé à partir de la distance entre les centres des voxels correspondant aux nœuds qui lui sont associés,
un extracteur (18) agencé, pour définir un deuxième graphe (A) en définissant des nœuds à partir d'un sous-ensemble de nœuds du graphe comprenant des nœuds correspondant à des voxels indiquant un emplacement plein, et pour relier entre eux les nœuds du deuxième graphe (A) par des premières arêtes et des deuxièmes arêtes, une première arête étant définie comme représentant un chemin au sein du premier graphe (G) entre deux nœuds du deuxième graphe (A), chaque nœud du premier graphe (G) reliant ces deux nœuds correspondant à un voxel indiquant un emplacement plein, et la somme des poids des arêtes du premier graphe (G) reliant les deux nœuds associés à la première arête définissant le poids de cette première arête, une deuxième arête étant définie comme représentant un chemin au sein du premier graphe (G) entre deux nœuds du deuxième graphe (A) qui ne peuvent pas être reliés par une première arête,
- un raidisseur (20) agencé, pour déterminer une liste de deuxièmes arêtes dépassant un seuil sur la base d'une simulation physique d'un objet correspondant au deuxième graphe (A), pour redéfinir certaines au moins de ces deuxièmes arêtes en tant que premières arêtes, et pour redéfinir certains au moins des voxels correspondant aux nœuds du premier graphe (G) appartenant au voisinage de ces arêtes redéfinies comme correspondant à un emplacement plein, et un pilote (14) agencé pour appeler le générateur ( 16), l'extracteur (18) et le raidisseur (20) pour produire des données d'objet à imprimer (30).
Dispositif selon la revendication 1, dans lequel l'extracteur (18) est agencé pour déterminer dans une première opération les premières arêtes en associant à chaque nœud du premier graphe (G) correspondant à un voxel indiquant un emplacement plein un marqueur d'un nœud dudit sous-ensemble, les marqueurs étant propagés à partir de chacun des nœuds dudit sous-ensemble en choisissant, à partir d'un nœud marqué, celui des nœuds qui lui est directement relié par une arête dans le premier graphe (G), qui correspond à un voxel indiquant un emplacement plein et dont l'arête présente le poids le plus faible, une première arête étant créée lorsque la propagation implique le marquage d'un nœud présentant déjà un marqueur d'un nœud dudit sous-ensemble.
Dispositif selon la revendication 2, dans lequel l'extracteur (18) est agencé pour déterminer, après la première opération, les deuxièmes arêtes en associant à chaque nœud du premier graphe (G) un marqueur d'un nœud dudit sous- ensemble, les marqueurs étant propagés à partir de chacun des nœuds dudit sous- ensemble en choisissant, à partir d'un nœud marqué, celui des nœuds qui lui est directement relié par une arête dans le premier graphe (G), dont l'arête présente le poids le plus faible, et qui n'appartient pas à une première arête, une deuxième arête étant créée lorsque la propagation implique le marquage d'un nœud présentant déjà un marqueur d'un nœud dudit sous-ensemble.
Dispositif selon l'une des revendications précédentes, dans lequel le raidisseur (20) est agencé pour exécuter une boucle récursive en
a) simulant par éléments finis à partir du deuxième graphe (A) un champ de contrainte pour chacune des arêtes du deuxième graphe (A),
b) déterminant une liste de secondes arêtes présentant une contrainte supérieure à un seuil de contrainte,
c) sélectionnant la seconde arête de la liste présentant la plus grande contrainte en première arête, d) redéfinissant cette seconde arête en tant que première arête si elle est à une distance choisie en termes de poids de la dernière arête redéfinie dans la boucle en cours, et en répétant l'opération c) sinon,
e) recommençant la boucle en a) lorsque la liste ne contient plus d'arête, jusqu'à ce que la boucle ne redéfinisse plus aucune arête.
Dispositif selon l'une des revendications précédentes, dans lequel le raidisseur (20) est agencé pour exécuter une boucle en
a) déterminant un ratio entre la distance en termes de poids entre les nœuds de chaque deuxième arête et la distance euclidienne entre ces mêmes nœuds,
b) redéfinissant chaque seconde arête dont le ratio supérieur est à un seuil choisi en tant que première arête.
Dispositif selon l'une des revendications précédentes, dans lequel la mémoire (4) reçoit en outre des données de surface en trois dimensions (22), des données de projection (26) et des données de motif (24), et le dispositif comprend en outre : un trieur (6) capable de sélectionner pour un voxel d'entrée des voxels entourant le voxel d'entrée qui correspondent aux données de surface en trois dimensions,
un estimateur (8) capable de calculer une valeur de similarité entre un premier voxel associé à de premières données de projection et un second voxel associé à de secondes données de projection en calculant la projection des données de surface en trois dimensions associées au premier voxel et des données de surface en trois dimensions associées au deuxième voxel, respectivement sur une première surface définie par les premières données de projection et sur une deuxième surface définie par les deuxièmes données de projection sur lesquelles les données de motif sont plaquées, et en calculant une valeur tirée de la différence entre la projection du premier voxel sur la première surface et la deuxième surface d'une part, et de la différence entre la projection du deuxième voxel sur la première surface et la deuxième surface d'autre part, un sélectionneur (10) capable, pour un voxel donné et à partir d'un jeu de données de projection (26), de déterminer celles des données de projection dudit jeu qui indiquent la meilleure similarité avec des voxels voisins du voxel donné, à partir d'une valeur tirée des valeurs de similarité obtenues en appelant l'estimateur (10) de manière répétée avec d'une part le voxel donné comme premier voxel et des données de projection du jeu comme premières données de projection et d'autre part avec certains au moins des voxels tirés de l'appel du trieur (6) avec le premier voxel en tant que deuxième voxel, et des données de projection (26) qui leur sont associées comme deuxièmes données de projection (26), et pour associer au voxel donné les données de projection déterminées,
un propagateur (12) capable, à partir d'un voxel d'une résolution donnée et de données de projection (26) qui lui sont associées, de définir une pluralité de voxels de résolution supérieure à la résolution donnée, et pour associer à certains au moins de cette pluralité de voxels les données de projection associées au voxel de résolution donnée,
un pilote (14) agencé pour appeler le propagateur (12) avec des données de surface en trois dimensions (22), un voxel (26) et des données de projection associées, et pour appeler le sélectionneur (10) avec certains au moins de la pluralité de voxels résultante auxquels sont associées des données de projection en tant que voxel donné, ainsi qu'avec un jeu de données de projection (26) comprenant d'une part les données de projection associées à la pluralité de données de voxels résultante, et d'autre part une quantité non nulle d'autres données de projection, le pilote (14) étant en outre agencé pour répéter l'appel du propagateur (12) avec certains au moins des voxels associés aux données de projection déterminées par le sélectionneur (10), ainsi que l'appel du sélectionneur ( 10) sur certains au moins de la pluralité de voxels résultante jusqu'à atteindre une résolution choisie. Dispositif selon la revendication 6, dans lequel l'estimateur (10) est agencé pour déterminer la valeur tirée de la différence entre la projection d'un voxel sur la première surface et sur la deuxième surface à partir de la différence de texture résultant du plaquage des données de motif sur la première surface et sur la deuxième surface pour ces projections.
8. Dispositif selon la revendication 6 ou 7, dans lequel l'estimateur (10) est agencé pour déterminer la valeur de similarité à partir d'une valeur tirée de la valeur de l'angle formé par la normale au plan défini par les données de surface en trois dimensions d'une part, et par la normale au plan de projection d'autre part.
9. Dispositif selon l'une des revendications 6 à 8, dans lequel l'estimateur (10) est agencé pour déterminer une valeur de similarité strictement positive et indiquant une similarité d'autant meilleure que la valeur de similarité est faible.
10. Dispositif selon l'une des revendications 6 à 9, dans lequel le propagateur ( 12) est agencé pour associer certains au moins des voxels de la pluralité de voxels de résolution supérieure avec des données de projection (26) choisies aléatoirement.
11. Dispositif selon l'une des revendications 6 à 10, dans lequel la mémoire (4) est agencée pour recevoir des données de projection (26) qui comprennent un identifiant de surface choisi parmi un jeu de plans et des données de transformation (26) indiquant une translation et/ou une rotation du repère de la surface désignée par l'identifiant de surface pour le plaquage des données de motif (24).
12. Dispositif selon l'une des revendications 6 à 1 1, dans lequel la mémoire (4) est agencée pour recevoir des données de projection (26) indépendantes des données de surface en trois dimensions (22).
13. Dispositif selon l'une des revendications 6 à 12, dans lequel la mémoire (4) est agencée pour recevoir des données de projection définissant une surface qui est un plan.
14. Dispositif selon l'une des revendications 6 à 13, dans lequel la mémoire (4) est agencée pour recevoir des données de motif (24) de nature stochastique et répétitive.
15. Dispositif selon l'une des revendications 6 à 14, dans lequel le générateur (16) est agencé pour utiliser les données de voxels déterminées par le pilote (14).
16. Dispositif selon l'une des revendications 6 à 15, dans lequel le pilote (14) est agencé pour être appelé avec les données de voxels modifiées par le raidisseur (20).
17. Dispositif selon la revendication 16, dans lequel le pilote (14) est agencé, pour les données de voxels modifiées par le raidisseur (20), pour appeler le sélectionneur (10) de manière à ne sélectionner que des données de projection (26) telles que les données de voxels concernées indiqueront un emplacement plein après traitement.
18. Dispositif selon la revendication 17, dans lequel le raidisseur (20) et le pilote (14) sont agencés pour être appelés en boucle jusqu'à ce que le raidisseur (20) ne modifie plus de données de voxels.
19. Procédé de traitement de données pour fabrication additive, comprenant les opérations suivantes :
a) recevoir des données de voxels d'une surface d'un objet à fabriquer, chaque voxel indiquant un emplacement plein ou vide,
b) calculer un premier graphe (G) à partir des données de voxels en définissant chaque voxel comme formant un nœud, en reliant entre eux par des arêtes les nœuds qui correspondent à des voxels respectifs qui partagent un coin, et en affectant à chaque arête un poids calculé à partir de la distance entre les centres des voxels correspondant aux nœuds qui lui sont associés,
c) calculer un deuxième graphe (A) en définissant des nœuds à partir d'un sous- ensemble de nœuds du graphe comprenant des nœuds correspondant à des voxels indiquant un emplacement plein, et pour relier entre eux les nœuds du deuxième graphe (A) par des premières arêtes et des deuxièmes arêtes, une première arête étant définie comme représentant le chemin le plus court en termes de poids au sein du premier graphe (G) entre deux nœuds du deuxième graphe (A), chaque nœud du premier graphe (G) reliant ces deux nœuds correspondant à un voxel indiquant un emplacement plein, et la somme des poids des arêtes du premier graphe (G) reliant les deux nœuds associés à la première arête définissant le poids de cette première arête, une deuxième arête étant définie comme représentant le chemin le plus court en termes de poids au sein du premier graphe (G) entre deux nœuds du deuxième graphe (A) qui ne peuvent pas être reliés par une première arête,
d) déterminer une liste de deuxièmes arêtes dépassant un seuil sur la base d'une simulation physique d'un objet correspondant au deuxième graphe (A), et redéfinir certaines au moins de ces deuxièmes arêtes en tant que premières arêtes, et pour redéfinir certains au moins des voxels correspondant aux nœuds du premier graphe (G) appartenant au voisinage de ces arêtes redéfinies comme correspondant à un emplacement plein.
20. Produit de programme d'ordinateur comprenant des portions de code de programme pour mettre en œuvre le dispositif selon l'une des revendications 1 à 18 ou le procédé selon la revendication 19 lorsque ledit programme est exécuté sur un ordinateur.
EP16747818.9A 2015-06-30 2016-06-28 Dispositif de traitement de données pour fabrication additive Withdrawn EP3317783A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1556188A FR3038254B1 (fr) 2015-06-30 2015-06-30 Dispositif de traitement de donnees pour fabrication additive
PCT/FR2016/051603 WO2017001768A1 (fr) 2015-06-30 2016-06-28 Dispositif de traitement de données pour fabrication additive

Publications (1)

Publication Number Publication Date
EP3317783A1 true EP3317783A1 (fr) 2018-05-09

Family

ID=55361571

Family Applications (1)

Application Number Title Priority Date Filing Date
EP16747818.9A Withdrawn EP3317783A1 (fr) 2015-06-30 2016-06-28 Dispositif de traitement de données pour fabrication additive

Country Status (4)

Country Link
US (1) US10751947B2 (fr)
EP (1) EP3317783A1 (fr)
FR (1) FR3038254B1 (fr)
WO (1) WO2017001768A1 (fr)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740802A (zh) * 2016-01-28 2016-07-06 北京中科慧眼科技有限公司 基于视差图的障碍物检测方法和装置及汽车驾驶辅助系统
US10399280B1 (en) * 2016-04-29 2019-09-03 The Administrators Of The Tulane Educational Fund Method and system for rapid and efficient three-dimensional printing
FR3066953B1 (fr) * 2017-06-01 2019-08-02 Inria Institut National De Recherche En Informatique Et En Automatique Dispositif de traitement de donnees pour la generation de microstructures a proprietes elastiques orthotropiques
US10926467B2 (en) * 2019-04-15 2021-02-23 Zhejiang Xunshi Technology Co., Ltd 3D printer with multiple light sources and its controlling method

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356272B1 (en) * 1996-08-29 2002-03-12 Sanyo Electric Co., Ltd. Texture information giving method, object extracting method, three-dimensional model generating method and apparatus for the same
US8579620B2 (en) * 2011-03-02 2013-11-12 Andy Wu Single-action three-dimensional model printing methods
US10354018B2 (en) * 2014-06-20 2019-07-16 Autodesk, Inc. Generating tubes within three-dimensional models
US20160096318A1 (en) * 2014-10-03 2016-04-07 Disney Enterprises, Inc. Three dimensional (3d) printer system and method for printing 3d objects with user-defined material parameters
US10354442B2 (en) * 2014-11-12 2019-07-16 Autodesk Inc. Generative modeling framework for deferred geometry generation

Also Published As

Publication number Publication date
US10751947B2 (en) 2020-08-25
FR3038254A1 (fr) 2017-01-06
US20180264736A1 (en) 2018-09-20
FR3038254B1 (fr) 2021-02-12
WO2017001768A1 (fr) 2017-01-05

Similar Documents

Publication Publication Date Title
US10748324B2 (en) Generating stylized-stroke images from source images utilizing style-transfer-neural networks with non-photorealistic-rendering
EP3292541B1 (fr) Procede des simplification de modele de geometrie
Battiato et al. Digital mosaic frameworks‐An overview
EP3070678B1 (fr) Procédé de génération d'une séquence vidéo cyclique
FR2974433A1 (fr) Evaluation de la qualite d'image
WO2017001768A1 (fr) Dispositif de traitement de données pour fabrication additive
EP3080782A1 (fr) Méthode et système de comparaison de modèles 3d
EP3317782A1 (fr) Dispositif de traitement de donnees
CN117635418B (zh) 生成对抗网络的训练方法、双向图像风格转换方法和装置
FR2907246A1 (fr) Procede et dispositifs de projection de motifs bidimensionels sur des surfaces complexes d'objets tridimensionnels
Ioannou et al. Depth-aware neural style transfer using instance normalization
EP2591457B1 (fr) Dispositif de synthèse d'image
WO2021123209A1 (fr) Procédé de segmentation d'une image d'entrée représentant un document comportant des informations structurées
EP3631589B1 (fr) Dispositif de traitement de donnees pour la generation de microstructures a proprietes elastiques orthotropiques
EP3918576A1 (fr) Procédé dynamique d'imagerie tridimensionnelle
FR3049213A1 (fr) Dispositif de traitement de donnees pour la generation de microstructures a elasticite variable par fabrication additive
Dobbs Art Authentication in an Untagged Art Database
WO2024088914A1 (fr) Dispositif de génération d'objet tridimensionnel encodant des données par fabrication additive
EP3268963B1 (fr) Dispositif de traitement d'image
FR3133261A1 (fr) Essai de style avec Des GAN inversÉs
Prakash Using appearance to efficiently render and edit captured scenes
Mitsouras et al. U-Sketch: An Efficient Approach for Sketch to Image Diffusion Models
EP2204775B1 (fr) Triangulation incrementale de polygone pour affichage numerique
CN113486908A (zh) 目标检测方法、装置、电子设备及可读存储介质
Mohammed Mesh Visual Quality based on the combination of convolutional neural networks

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20180115

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20210503

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

P01 Opt-out of the competence of the unified patent court (upc) registered

Effective date: 20230608

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20231117