FR3049213A1 - Dispositif de traitement de donnees pour la generation de microstructures a elasticite variable par fabrication additive - Google Patents

Dispositif de traitement de donnees pour la generation de microstructures a elasticite variable par fabrication additive Download PDF

Info

Publication number
FR3049213A1
FR3049213A1 FR1652497A FR1652497A FR3049213A1 FR 3049213 A1 FR3049213 A1 FR 3049213A1 FR 1652497 A FR1652497 A FR 1652497A FR 1652497 A FR1652497 A FR 1652497A FR 3049213 A1 FR3049213 A1 FR 3049213A1
Authority
FR
France
Prior art keywords
data
location
volume
voronoi cell
given location
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.)
Granted
Application number
FR1652497A
Other languages
English (en)
Other versions
FR3049213B1 (fr
Inventor
Jeremie Dumas
Sylvain Lefebvre
Jonas Martinez
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
Original Assignee
Institut National de Recherche en Informatique et en Automatique INRIA
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 filed Critical Institut National de Recherche en Informatique et en Automatique INRIA
Priority to FR1652497A priority Critical patent/FR3049213B1/fr
Publication of FR3049213A1 publication Critical patent/FR3049213A1/fr
Application granted granted Critical
Publication of FR3049213B1 publication Critical patent/FR3049213B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Materials Engineering (AREA)
  • Chemical & Material Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Manufacturing & Machinery (AREA)
  • Mechanical Engineering (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Optics & Photonics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Architecture (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Ceramic Capacitors (AREA)
  • Combined Means For Separation Of Solids (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Un dispositif agencé pour déterminer des données de fabrication additive de manière procédurale pour réaliser des objets par fabrication additive présentant des caractéristiques d'élasticité pouvant varier, en calculant des données de graines de cellules de Voronoi définissant entre elles des branches, le nombre de graines de cellules de Voronoi et l'épaisseur de chaque branche étant reliés aux caractéristiques d'élasticité recherchées.

Description

Dispositif de traitement de données pour la génération de microstructures à élasticité variable par fabrication additive L’invention concerne le domaine de la fabrication additive et en particulier la fabrication d’objets présentant une élasticité variable.
De nombreux travaux ont abordé la génération de structures permettant d’obtenir des objets présentant une élasticité variable. Ces travaux utilisent le principe d’une application d’un motif dont l’étude à grande échelle permet de valider les caractéristiques structurelles. Ainsi, un objet présentant une élasticité variable peut être fabriqué en réalisant plusieurs sous objets basés sur des motifs différents.
Cependant, ce type d’approche est complexe à mettre en œuvre dans le contexte de la fabrication additive car cette dernière impose des contraintes de fabrication fortes dépendant de la technologie (continuité verticales dans le cas du dépôt par couche, ou absence de poche dans le cas de l’utilisation de poudres). De plus, ce genre de technique génère des objets informatiques (maillages ou volumes) extrêmement volumineux, ce qui pose des problèmes avec les machines de fabrication additive actuelles. L’invention vient améliorer la situation. À cet effet, l’invention propose un dispositif de traitement de données pour fabrication additive, comprenant une mémoire agencée pour recevoir des données d’emplacement désignant un emplacement et un élément de volume contenant cet emplacement, et un générateur agencé pour déterminer des données de fabrication additive indiquant si un emplacement associé à des données d’emplacement est vide ou plein, dans lequel : - la mémoire est agencée pour recevoir des données de densité et des données de rayon, et en ce que - le générateur est agencé pour calculer, pour un emplacement donné désigné par des données d’emplacement, des données de graines de cellule de Voronoi désignant des emplacements de graines de cellule de Voronoi d’un jeu de graines de cellules de Voronoi associé à l’emplacement donné, - le générateur est agencé pour déterminer lesdits emplacements de graines de cellules de Voronoi dans une pluralité d’éléments de volumes comprenant l’élément de volume contenant l’emplacement donné et des éléments de volumes sélectionnés dans un voisinage de l’élément de volume contenant l’emplacement donné, en divisant chaque élément de volume de la pluralité d’éléments de volume en un ou plusieurs sous-éléments de volume dont le nombre est calculé à partir des données de densité et du volume de chaque élément de volume, en déterminant de manière pseudo-aléatoire en fonction des données d’emplacement et des données de densité des sous-éléments de volume recevant une graine de cellule de Voronoi, et en déterminant de façon pseudoaléatoire dans chaque sous- élément de volume recevant une graine de cellule de Voronoi des données de graine de cellule de Voronoi désignant un emplacement dans ce sous-élément de volume, - le générateur est en outre agencé pour définir au moins une branche à partir d’un triplet de graines de cellule de Voronoi choisies dans un jeu de graines de cellules de Voronoi associé à un emplacement donné dont l’une est la plus proche de l’emplacement donné, et pour définir des données de fabrication additive indiquant que l’emplacement donné est plein lorsque la distance entre ledit emplacement donné et sa projection sur une branche est inférieure à une distance tirée des données de rayon, et lorsque ladite graine de cellule de Voronoi la plus proche de l’emplacement donné est la plus proche de ladite projection parmi le jeu de graines de cellules de Voronoi associé à l’emplacement donné.
Dans d’autres modes de réalisation, le dispositif pourra présenter une ou plusieurs des caractéristiques supplémentaires suivantes : - le générateur est un modélisateur agencé pour recevoir un couple associant des données de densité et des données de rayon, pour déterminer un jeu de données de fabrication additive pour un objet de forme sensiblement cubique à partir de ce couple, et pour appliquer une méthode d’homogénéisation pour en tirer une donnée d’élasticité, - le modélisateur est agencé, pour un couple donné, pour déterminer plusieurs jeux de données de fabrication additive en faisant varier les déterminations pseudo-aléatoires, et pour réaliser une moyenne des données d’élasticité pour le couple donné, - le générateur est un constructeur agencé pour recevoir des données d’objet définissant la forme d’un objet à produire par fabrication additive et comprenant des données d’élasticité associées à des emplacements désignés par les données d’objet, et, pour certains au moins des emplacements des données d’objets, pour déterminer des données de rayon et des données de densité à partir des données d’élasticité associées, et déterminer des données de fabrication additive correspondantes, - le générateur détermine de manière procédurale les données de fabrication de chaque emplacement désigné par les données d’objet à partir des seules données d’objet dont sont tirées les données de densité et les données de rayon, - le générateur est agencé pour sélectionner des éléments de volume cubiques ayant un volume égal à celui de l’élément de volume contenant l’emplacement donné, lequel élément de volume est également cubique, le générateur est agencé pour diviser chaque élément de volume de la pluralité d’éléments de volumes en des sous-éléments cubiques et de taille identique entre eux, - le générateur est agencé, après avoir déterminé le jeu de graines de cellules de Voronoi pour un emplacement donné, pour déterminer la graine de cellule de Voronoi la plus proche de l’emplacement donné, et calculer un jeu de graines de cellules de Voronoi associé à l’emplacement de cette graine de cellule de Voronoi, - le générateur est agencé pour sélectionner des éléments de volume dans un voisinage de l’élément volume contenant l’emplacement donné qui sont contigus à cet élément de volume, ou qui sont contigus à un élément de volume contigu à cet élément de volume. L’invention concerne également un procédé de traitement de données pour fabrication additive comprenant les opérations suivantes : a. recevoir des données d’emplacement désignant un emplacement et un élément de volume contenant cet emplacement, des données de densité et des données de rayon, b. déterminer, pour un emplacement donné désigné par des données d’emplacement, des données de graines de cellule de Voronoi désignant des emplacements de graines de cellule de Voronoi d’un jeu de graines de cellules de Voronoi associé à l’emplacement donné, dans une pluralité d’éléments de volumes comprenant l’élément de volume contenant l’emplacement donné et des éléments de volumes sélectionnés dans un voisinage de l’élément de volume contenant l’emplacement donné, en divisant chaque élément de volume de la pluralité d’éléments de volume en un ou plusieurs sous-éléments de volume dont le nombre est calculé à partir des données de densité et du volume de chaque élément de volume, en déterminant de manière pseudo-aléatoire en fonction des données d’emplacement et des données de densité des sous- éléments de volume recevant une graine de cellule de Voronoi, et en déterminant de façon pseudo-aléatoire dans chaque sous- élément de volume recevant une graine de cellule de Voronoi des données de graine de cellule de Voronoi désignant un emplacement dans ce sous-élément de volume, c. définir au moins une branche à partir d’un triplet de graines de cellule de Voronoi choisies dans un jeu de graines de cellules de Voronoi associé à un emplacement donné dont l’une est la plus proche de l’emplacement donné, d. définir des données de fabrication additive indiquant que l’emplacement donné est plein lorsque la distance entre ledit emplacement donné et sa projection sur une branche est inférieure à une distance tirée des données de rayon, et lorsque ladite graine de cellule de Voronoi la plus proche de l’emplacement donné est la plus proche de ladite projection parmi le jeu de graines de cellules de Voronoi associé à l’emplacement donné.
Dans d’autres modes de réalisation, le procédé pourra présenter une ou plusieurs des caractéristiques supplémentaires suivantes : - le procédé comprend en outre les opérations suivantes : e. recevoir des données d’objet définissant la forme d’un objet à produire par fabrication additive et des données d’élasticité associées à des emplacements désignés par les données d’objet, f. pour certains au moins des emplacements des données d’objets, déterminer des données de rayon et des données de densité à partir des données d’élasticité associées, g. déterminer des données de fabrication additive correspondantes en exécutant les opérations a. à d., - le procédé comprend en outre l’opération suivante : h. commander une machine de fabrication additive avec les données de fabrication additive, - l’opération g. est réalisée de manière procédurale à partir des seules données d’objet dont sont tirées les données de densité, et données de rayon, - le procédé comprend en outre les opérations suivantes : i. pour un couple associant des données de densité et des données de rayon, exécuter les opérations a. à d. pour déterminer un jeu de données de fabrication additive pour un objet de forme sensiblement cubique à partir de ce couple, j. appliquer une méthode d’homogénéisation pour en tirer une donnée d’élasticité, - le procédé comprend en outre l’opération suivante : k. pour un couple donné, répéter les opérations i. et j. en faisant varier les déterminations pseudo-aléatoires de l’opération b., et réaliser une moyenne des données d’élasticité pour le couple donné. 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 invention, - la figure 2 représente un exemple de mise en œuvre d’une fonction par le modélisateur de la figure 1, - la figure 3 représente un exemple d’une fonction mise en œuvre par le modélisateur et le constructeur de la figure 1 pour calculer des graines de cellules de Voronoi, - la figure 4 représente un exemple d’une fonction mise en œuvre dans la fonction de la figure 3, - la figure 5 représente une fonction mise en œuvre par le dispositif de la figure 1 pour imprimer un objet, - la figure 6 représente un exemple de graphe de triplets produit par le modélisateur, et - les figures 7 et 8 représentent un exemple d’un objet fabriqué par le dispositif de l’invention, et ce même objet sous une contrainte.
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.
En outre, la description détaillée est augmentée de l'annexe A, qui donne la formulation de certaines formules mathématiques mises en œuvre dans le cadre de l'invention. Cette Annexe est mise à part dans un but de clarification, et pour faciliter les renvois. Elle est partie intégrante de la description, et pourra donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant.
La figure 1 représente un dispositif 2 selon l’invention dans son environnement. Le dispositif 2 comprend un constructeur 4, une imprimante 6 et une mémoire 8. Dans l’exemple décrit ici, le dispositif 2 comprend également un modélisateur 10 dont le fonctionnement sera décrit ci-après.
Dans le cadre de l’invention, la mémoire 8 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 8, 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 8 sont des triplets qui associent une valeur d’élasticité, une densité et un rayon. Dans l’exemple décrit ici, ces données sont calculées par le modélisateur 10. En variante, elles pourraient être obtenues différemment. Les données stockées dans la mémoire 8 pourraient également être agencées sous une autre forme que des triplets.
Le constructeur 4 et le modélisateur 10 sont des éléments accédant directement ou indirectement à la mémoire 8. 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é aux calculs décrits plus bas. 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.
Le dispositif 2 reçoit des données d’objet 12 Les données d’objet 12 comprennent une description de la forme tridimensionnelle qui est souhaitée pour l’objet à imprimer, ainsi qu’une indication de l’élasticité sous la forme d’un champ de valeurs variant au sein de l’objet, de manière continue ou discontinue. A partir des données d’objet 12, le constructeur 4 accède à la mémoire 8 et détermine un triplet pour chaque partie distincte de l’objet. Ensuite, à partir de la forme tridimensionnelle recherchée et du triplet obtenu, le constructeur 4 détermine de manière procédurale les emplacements de chaque couche devant être imprimés et commande l’imprimante 6 pour produire en sortie un objet 14 qui présente des caractéristiques d’élasticité et la forme tridimensionnelle dictées par les données d’objet 12.
Les objets réalisés au moyen du dispositif 2 peuvent être qualifiés de « mousses procédurales de Voronoi ». En effet, l’invention s’inspire des méthodes d’affichage en 3 dimensions dans lesquelles la texture d’un pixel donné est déterminée de manière procédurale, c’est à dire à partir d’un calcul appliqué de manière indépendante en tout point de l’objet.
Pour cela, le constructeur 4 détermine pour chaque couche de l’objet des graines de cellules de Voronoi dont la quantité est dictée par la densité du triplet tiré de la mémoire 8 à partir des données d’objet 12 pour la portion de l’objet en cours d’impression.
Ensuite, chaque point de cette portion pouvant être imprimé est considéré comme plein s’il se situe à une distance choisie des arêtes des cellules de Voronoi et vide sinon, la distance choisie correspondant au rayon du triplet tiré de la mémoire 8 à partir des données d’objet 12. La notion de distance doit être ici interprétée au sens large, il est donc possible de modifier la distance pour modifier la géométrie des arêtes de la mousse procédurale.
Ainsi, le constructeur 4 construit de proche en proche des branches qui correspondent aux arêtes des cellules de Voronoi, et qui présentent chacune une épaisseur choisie pour conférer à la structure une élasticité choisie.
La figure 2 représente un exemple d’une fonction mise en œuvre par le modélisateur 10 pour établir les triplets valeur d’élasticité, densité et rayon. Pour cela, le modélisateur 10 génère une grande quantité de mousses procédurales de Voronoi pour un grand nombre de couples densité-rayon, et détermine par une méthode d’homogénéisation une valeur d’élasticité associée à ce couple. En variante, et de manière optionnelle, le modélisateur 10 peut aussi déterminer un coefficient de Poisson à associer au triplet ainsi formé.
Le modélisateur 10 commence ainsi dans une opération 200 par exécuter une fonction Rand(), et stocke le résultat dans un tableau DR[], La fonction Rand() a pour objectif de générer un très grand nombre de couples densité-rayon, afin de pouvoir offrir une grande variété dans la construction des mousses procédurales de Voronoi qui seront produites par la suite. Cette fonction initialise également un indice i à 1, un indice g à 0, et un tableau ES[] à 0.
Ensuite, le modélisateur 10 exécute une double boucle. Cette double boucle parcourt les couples du tableau DR[], et, pour chaque couple, effectue une boucle dans laquelle un couple donné est utilisé un grand nombre de fois pour produire une mousse procédurale d’essai et pour en tirer une valeur d’élasticité (module de Young, et optionnellement le coefficient de Poisson) correspondante.
La double boucle commence donc par une opération 210 dans laquelle une fonction Pop() sort un couple du tableau DR[], Ensuite la deuxième boucle commence dans une opération 220 avec l’incrémentation d’un indice g. Cet indice est utilisé pour générer de la variété dans les mousses procédurales de Voronoi de la deuxième boucle.
Ensuite, dans une opération 230, une fonction Til() est exécutée qui reçoit comme arguments un pointeur vers une fonction GS, la densité d du couple densité-rayon (d,r) courant, et l’indice g. La fonction GS() a pour rôle la génération d’un jeu de N de graines de cellules de Voronoi qui définiront avec le rayon r la mousse procédurale de Voronoi de l’instance courante de la deuxième boucle. La figure 3 représente un exemple de mise en œuvre de la fonction GS() et sera décrite plus bas.
La fonction Til() génère une mousse procédurale de Voronoi en partant de données d’objet décrivant un bloc cubique qui est de dimension suffisante (environ 3cm3 dans l’exemple décrit ici) pour appliquer une méthode d’homogénéisation (voir « Shape optimization by the homogenization method » par Allaire, G. 2012, vol. 146. Springer Science & Business Media).
Pour chaque point p de ce cube, la fonction GS() est appelée avec la densité d et un point q obtenu en ajoutant au point p un vecteur égal à g fois un vecteur de déplacement choisi. Le jeu de N graines de cellules de Voronoi résultant et le rayon r sont alors utilisés pour déterminer si le point p est plein ou vide, comme cela sera décrit avec la figure 5. Une fois tous les points p du cube parcourus, il en résulte une mousse V.
Dans une opération 240, une fonction Hom(), est alors exécutée afin de déterminer la valeur d’élasticité E (et optionnellement le coefficient de Poisson S) de la mousse procédurale de Voronoi V reçue comme argument. L’élasticité de la mousse V est calculée en évaluant le tenseur d’élasticité homogénéisé (voir «Microstructures to control elasticity in 3D printing » par Schumacher, C., Bickel, B., Rys, J., Marschner, S., Daraio, C., and Gross, M., 2015, ACM Trans. Graph. 34, 4, 136:1-136:13). De la même manière, le coefficient de Poisson peut également être calculé et stocké à cette étape.
Ce résultat est stocké dans un tableau ES[] à l’indice i. Le tableau ES[] reçoit ainsi la liste des élasticités déterminées pour toutes les mousses associées à un couple (d,r) donné pour un indice i donné d’exécution de la première boucle.
Afin de déterminer si toutes les deuxièmes boucles ont été explorées, l’indice g est comparé à un seuil avgsd dans une opération 250. Si g est inférieur, alors la deuxième boucle est répétée à nouveau pour le même indice i de première boucle, avec l’incrémentation de l’indice g dans l’opération 220.
Sinon, alors la première boucle se termine pour l’indice i, avec l’exécution d’une fonction AvgO dans une opération 260. La fonction Avg() reçoit comme arguments la liste des élasticités ES[i], ainsi que la densité d et le rayon r. La fonction Avg() détermine l’élasticité moyenne des mousses qui ont été réalisées sur la base de toutes les deuxièmes boucles pour l’indice i. Il en résulte un triplet (E,d,r) qui est stocké dans une matrice EDR[], Le coefficient de Poisson peut également être moyenné lors de cette étape. Afin de déterminer une mesure de précision, il peut être avantageux de calculer également la déviation standard des élasticités pour un indice i donné.
Enfin, l’indice i de première boucle est incrémenté dans une opération 270, l’indice g est réinitialisé à 0 dans une opération 280, et la première boucle reprend avec l’opération 210.
Lorsque l’opération 210 détermine que tous les couples (d,r) du tableau DR[] ont été traités, la fonction se termine dans une opération 299.
La figure 3 va maintenant être décrite afin de mieux comprendre la fonction GS() de l’opération 230.
Comme on le verra avec la figure 5, la mousse procédurale de Voronoi est construite sur la base des arrêtes reliant les cellules de Voronoi calculées pour un emplacement donné en fonction de la densité choisie. Il s’agit donc ici de déterminer, pour un emplacement donné et la densité recherchée, quelles sont les cellules qui entourent l’emplacement donné et qui sont susceptibles de générer une arête de cellule de Voronoi contenant l’emplacement donné.
La fonction GS utilise une grille implicite en trois dimensions ayant au moins une graine de Voronoi dans chaque case. Ainsi, seules les cellules de Voronoi les plus proches de la case comprenant l’emplacement donné sont potentiellement pertinentes. Par grille implicite, on entend un prédécoupage cubique en cases de dimension fixe de l’espace, qui dans l’exemple décrit ici présente une dimension comprise entre 2mm et 5mm, et est défini de manière implicite, c’est-à-dire que seul l’indice d’une case est retenu, et que toutes les données y étant relatives sont calculées à la volée. En variante, l’espace pourrait être découpé de manière différente (e.g. grille rhombus, grille en nid d’abeille), et/ou avec des dimensions différentes, et/ou avec une définition explicite.
La fonction GS() commence dans une opération 300 avec la réception d’une densité d et d’un emplacement q comme arguments, ainsi qu’avec l’initialisation à 0 de vecteurs N et V. Comme on le verra, l’emplacement q joue un rôle important sur l’aléas dans la production des graines de cellules de Voronoi par la fonction GS(), et la variation de g permet donc de générer des mousses procédurales très variées pour une densité d fixée.
Après l’initialisation, une fonction TRN() est exécutée dans une opération 310. La fonction TRN() reçoit q comme argument, et va déterminer toutes les cases qui entourent la case comprenant l’emplacement q et qui sont susceptibles de contenir une graine de Voronoi qui pourrait influencer la cellule de Voronoi contenant l’emplacement q. La représentation de la situation sur une figure montre que la sélection de deux anneaux de cases autour de la case correspondant à l’emplacement q contient toutes ces cases. La fonction TRN() sélectionne donc toutes les cases qui entourent sur deux anneaux la case autour de q, ainsi que cette case. Le résultat est stocké dans un tableau T[] de cases à visiter. En variante, pour améliorer les performances au prix de défauts de géométrie mineurs, un sous-ensemble des cases formant un seul anneau de cases autour de q ainsi que la case contenant q peut être sélectionné, ou une combinaison de cases voisines directement ou indirectement de la case contenant q ainsi que cette case.
Ensuite, une première boucle est lancée afin de déterminer, pour chaque case du tableau T[] l’emplacement des graines de cellules de Voronoi pour ces cases pour la densité d.
Ainsi, la première boucle commence dans une opération 320 avec l’extraction d’une case c à visiter dans le tableau T[] au moyen d’une fonction Pop(). La case c est d’abord ajoutée au vecteur V dans une opération 330, puis une fonction SC() est exécutée dans une opération 340 avec comme arguments la densité d et la case c pour déterminer des graines de cellules de Voronoi pour la case c et la densité d.
Ensuite, la première boucle reprend avec l’opération 320, jusqu’à ce que toutes les cases du tableau T[] aient été visitées pour déterminer les graines de cellules de Voronoi correspondantes, et que celles-ci aient été entrées dans le vecteur N[],
Une deuxième boucle optionnelle mais préférée est alors initiée dans une opération 350, afin de déterminer toutes les graines de Voronoi dans un rayon de deux cases autour de la graine la plus proche de l’emplacement q. Ceci est nécessaire pour garantir que toutes les graines dont les cellules de Voronoi peuvent influencer l’emplacement q sont déterminées.
Ainsi, dans une opération 350, une fonction Cl() parcourt toutes les graines du vecteur N et détermine la graine s qui est la plus proche de l’emplacement donné q.
Ensuite, dans une opération 360, la fonction TRN() est répétée sur cette graine s, et le tableau T[] se voit retirer les cases du vecteur V, car ces dernières ont déjà été visitées pour générer des graines de cellule de Voronoi avec les opérations 320 à 340.
La deuxième boucle détermine ensuite les graines de cellules de Voronoi du tableau T[] résultant, qui contient donc toutes les cases entourant à deux anneaux la graine s, moins les cases qui entourent à deux anneaux l’emplacement q. Cela est réalisé par dans des opérations 370 et 380 identiques aux opérations 320 et 340. Les opérations 350 à 380 permettent d’obtenir de meilleurs résultats, mais elles pourraient être omises.
Enfin, la fonction GS() se termine avec l’opération 399.
La figure 4 représente un exemple de réalisation de la fonction SC(). Cette fonction a pour rôle, à partir d’une case c et d’une densité reçues en arguments, de générer les graines de cellules de Voronoi correspondant à la densité recherchée. Pour cela, la case c va être divisée de manière répétée en sous-cases, jusqu’à ce que la taille des sous-cases soit telle que chaque sous-case contienne environ une graine. Il est important de noter que différents appels de la fonction SC(d;c) vont toujours générer exactement le même ensemble de graines pour une même case c.
Pour cela, dans une opération 400, la case c et la densité d sont reçues comme argument, et un indice de profondeur h ainsi qu’un vecteur N recevant les graines de cellules de Voronoi sont initialisés à 0.
Ensuite, dans une opération 405, une fonction Cl() est exécutée pour déterminer les coordonnées de la case c. Cette détermination est importante pour la parallélisation de la fonction SC() comme on le verra plus bas.
La case c est alors divisée en sous-cases dans une boucle impliquant des opérations 410, 415 et 420. Dans l’opération 410, un nombre de graines théorique t est calculé en multipliant la densité d par une constante ccl correspondant à la taille des cases au plus haut niveau, laquelle constante est multipliée par deux à la puissance moins h, ce produit étant élevé au cube. En effet, dans l’exemple décrit ici, comme l’espace est découpé de manière cubique, chaque profondeur supplémentaire (quand h croit) divise le volume de la case par huit. Dans l’opération 415, t est comparé à 8. En effet, si t est inférieur à 8, alors il n’est plus nécessaire de découper la case en sous-cases, puisque chaque sous-case aura au maximum une graine de cellule de Voronoi. Sinon, dans une opération 420, une fonction Dwn() augmente les dimensions ijk afin de sous-diviser la case en huit sous-cases, puis l’opération 410 est répétée.
Dans l’exemple décrit ici, les cases sont cubiques et sont découpées de manière identique en sous-cases de volume identique, et toutes les cases de niveau le plus élevé ont un volume égal à celui de la case de niveau le plus élevé contenant l’emplacement q. En variante, les volumes des cases pourraient varier, les formes des cases et des sous-cases également, et le nombre de graines dans les sous-cases serait alors évalué en conséquence, de sorte que la somme du nombre de graines de Voronoi générées dans les sous-cases corresponde au nombre de graines de Voronoi calculé pour leur case parente, comme les sous-cases forment une partition du volume de cette dernière.
Lorsque la profondeur la plus basse utile pour la densité recherchée a été atteinte, une fonction Rand(ijk) est exécutée dans une opération 425. Cette fonction rentre dans un vecteur I[] huit indices dans un ordre pseudo-aléatoire, chaque indice désignant une sous-case. La fonction étant pseudo-aléatoire, le même tableau I[] est produit pour une même valeur de ijk.
Ensuite, un indice i est initialisé à 0 dans une opération 430. L’indice i est utilisé pour parcourir les sous-cases du vecteur I[] et leur attribuer une graine de cellule de Voronoi si nécessaire.
Une boucle est ainsi exécutée, dans laquelle une opération 435 détermine si suffisamment de graines ont été générées. En effet, t sera généralement une valeur non entière. L’indice i est donc comparé à t-1. Si i est inférieur à t-1, alors il faut encore produire une graine de cellule de Voronoi dans la case désignée par I[i],
Pour cela, une fonction RandSO est exécutée dans une opération 440. Cette fonction reçoit comme argument I[i] et détermine de manière pseudo-aléatoire un emplacement dans la case désignée par l’indice I[i], et le place dans le vecteur N de sorte qu’il occupe l’indice 0 s’il est plus proche de l’emplacement q que la graine de cellule de Voronoi occupant l’indice 0. L’aléa de cette fonction dépend au moins en partie de l’indice de la sous-case, ce qui signifie qu’à chaque fois que la fonction est exécutée avec cet indice, c’est la même graine de cellule de Voronoi qui est générée. Et lorsque l’indice change, une autre graine aléatoire est générée, etc. Ainsi, l’indice g de l’opération 230 fait varier les motifs de mousse procédurale produit, puisqu’il fait varier l’indice de la case pour laquelle les graines sont cherchées en décalant les points p concernés.
La graine de cellule de Voronoi correspondante est stockée dans le vecteur N, puis l’indice i est incrémenté dans une opération 445, puis le test de l’opération 435 est répété. Lorsque ce test est négatif, il faut générer une graine de cellule de Voronoi dans la prochaine sous-case, selon une probabilité correspondant à la partie décimale de t.
Pour cela, une fonction RandLS() est exécutée dans une opération 450 et reçoit comme argument I[i] et t. La fonction RandLS() est très similaire à la fonction RandS(), sauf qu’elle ne crée dans la sous-case restante (c’est-à-dire celles désignée par 1’ indice I[i]) qu’avec une probabilité égale à la partie décimale de t (c’est-à-dire t moins partie entière de t). Si une graine est ainsi générée, elle est également reçue dans le vecteur N.
Ensuite, dans une opération 455, une fonction Up() qui reçoit ijk comme argument est exécutée. Cette fonction détermine si la case ijk actuelle est la dernière case fille de la case parente de niveau supérieur, c’est-à-dire dans l’exemple ici décrit si ijk modulo (2,2,2) vaut (1,1,1). Si c’est le cas, alors les huit sous-cases de la case parente de niveau supérieur ont été traitées, et la fonction décrémente l’indice de profondeur h. La valeur ijk est alors mise à jour en gardant la partie entière d’une division par (2,2,2), obtenant ainsi l’indice de la case parente de niveau supérieur. Par exemple, si la profondeur h était égale à 3 et l’indice ijk égal à (3,7,7), le nouvel indice h est égal à 2, et l’indice ijk égal à (1,3,3), qui correspond à la case parente. Ce nouvel indice est lui-même testé pour déterminer si la case ijk actuelle est la dernière du niveau donné. L’opération est répétée jusqu’à déterminer une case ijk qui n’est pas la dernière case fille de son parent de niveau supérieur, ou qui est au niveau le plus élevé. Ainsi, lorsque la dernière sous-case du niveau le plus profond est traitée, la fonction Up() remonte jusqu’au niveau 0.
Ensuite, un test dans une opération 460 détermine si toutes les cases ont été traitées (c’est-à-dire si h a été décrémenté jusqu’à 0). S’il reste des sous-cases à parcourir, une fonction Nxt() qui reçoit ijk comme argument est exécutée dans une opération 465, et sinon la fonction SC() s’arrête dans une opération 499. La fonction Nxt() est agencée pour organiser le parcours des sous-cases ayant une même case parente. En effet, comme à chaque niveau une case donnée se sous-divise en huit sous-cases, la case ijk de niveau h est une parmi huit sous-cases de sa case parente. La fonction Nxt() ajuste ijk pour parcourir les sous-cases d’une même case parente selon un ordre garantissant que toutes les cases sont explorées, la dernière sous-case visitée ayant un indice ijk modulo (2,2,2) égal a (1,1,1). La boucle reprend alors avec l’opération 410, pour redescendre aussi profond que nécessaire dans la nouvelle case, etc.
Cet agencement est particulièrement avantageux, car il permet de paralléliser massivement les opérations de la fonction SC(), par exemple pour les exécuter sur un processeur graphique. En variante, la fonction SC() pourrait être programmée de manière récursive, ce qui est plus simple en termes de programmation, mais pose des problèmes pour un traitement parallélisé sur un GPU ou une architecture sans pile de données à l’exécution.
La figure 5 représente un exemple d’une fonction mise en œuvre par le constructeur 4 pour fabriquer l’objet 14 à partir des données d’objet 12.
La fabrication est une boucle dans laquelle les données d’objet 12, qui décrivent la forme de l’objet en trois dimensions, ainsi que l’élasticité recherchée pour chaque portion, sont progressivement dépilées pour construire chaque couche de l’objet 14.
Une première opération est exécutée pour récupérer toutes les informations relatives à une couche donnée. Ainsi dans une opération 500, les données d’objet 12 sont dépilées par une fonction Pop(), et stockées dans une variable Rg. Cette variable reçoit toutes les données d’élasticité de la couche courante à imprimer, ordonnées par position spatiale dans le plan correspondant.
Ensuite, dans une opération 505, une fonction Elast() extrait toutes les données d’élasticité et les range dans un vecteur e[]. Cette fonction peut être une simple copie ou comprendre une opération de normalisation ou d’homogénéisation pour tenir compte d’un contexte lié à un objet particulier.
Le vecteur e[] est exploité dans une opération 510 par une fonction Str() qui le reçoit comme argument, ainsi qu’un rayon rmin qui représente le rayon minimal d’impression de l’imprimante 6.
La fonction Str() est importante car son résultat est un champ de vecteurs r[] et d[] qui vont déterminer totalement la mousse procédurale de Voronoi qui sera imprimée comme cela a été expliqué précédemment. Pour cela, la fonction Str() accède à la mémoire 8 pour déterminer, pour chaque valeur d’élasticité du vecteur e[] un couple rayon r et densité d correspondant. Comme on l’a vu, ce triplet a été calculé précédemment par le modélisateur 10. La figure 6 représente un exemple de diagramme tridimensionnel reliant tous les triplets pour un type de matériau additif choisi, comme une résine photosensible commercialisée sous le nom « B9R-1-Cherry » par la société B9Creators (marque déposée).
Dans l’exemple décrit ici, les triplets ont été déterminés en appliquant la théorie de l’homogénéisation à un motif de mousse procédurale de Voronoi répliqué. La théorie de l’homogénéisation a été validée pour des objets réguliers, c’est-à-dire composés uniquement d’un seul motif répété. Cependant, le but recherché est précisément une hétérogénéité d’élasticité, et donc la mousse procédurale formant l’objet 14 ne sera par nature pas d’un seul motif répété.
Les travaux de la Demanderesse ont néanmoins montré que l’hypothèse d’homogénéité restait néanmoins valable dans le cas des mousses procédurales, avec une correspondance d’autant meilleure que la densité est élevée. Pour cette raison, la fonction Str() est prévue pour choisir en priorité un triplet dans lequel le rayon r vaut rmin, afin de maximiser la densité d. Lorsqu’une valeur n’est pas explicitement présente, elle peut-être extrapolée. Les données représentées sur la figure 6 peuvent aussi être approximées par un polynôme, afin d’impliciter encore plus les données. Lorsque que, pour une élasticité donnée, le rayon rmin nécessiterait une densité trop importante, c’est la prochaine épaisseur réalisable après rmin qui est retenue, etc.
Ensuite, une boucle est commencée, qui va parcourir chaque point de la couche courante correspondant à Rg, et déterminer de manière procédurale si l’imprimante 6 doit ajouter de la matière, ou pas. Dans une opération 515, un point q est extrait de Rg, et dans une opération 520, les graines de cellules de Voronoi correspondantes sont calculées au moyen de la fonction GS(), avec la densité d qui correspond au point q dans le tableau d[].
Une deuxième boucle est alors lancée qui parcourt chacune des graines de cellules de Voronoi, et il est cherché si l’emplacement q se situe à l’intérieur d’un espace situé autour d’une arrête de cellule de Voronoi ayant l’épaisseur du rayon r associé à q dans le tableau r[].
Pour cela, dans une opération 525, un marqueur d’impression pl est initialisé à 0 et un indice i est initialisé à 1 pour parcourir le vecteur N, en tant que référence, N[0] désignant la graine de la cellule de Voronoi la plus proche de l’emplacement q. Puis l’indice j est initialisé à la valeur i+1 dans une opération 530, et une fonction BLE() est exécutée dans une opération 535. La fonction BLE() a pour fonction de déterminer l’équation de l’arrête bl joignant les cellules de Voronoi de la cellule de la graine de cellule de Voronoi du vecteur N la plus proche de l’emplacement q (N[0j), de la cellule d’indice i dans N (N[ij) et de la cellule d’indice j dans N (N[j]).
Une fois cette arête déterminée, une fonction Dist() détermine la distance entre cette dernière et le point q dans une opération 540.
Si cette distance est plus grande que le rayon r, alors pl est inchangé et reste à 0, et la boucle se poursuit avec l’opération 545. Dans l’opération 545, l’indice j est testé pour déterminer s’il faut l’incrémenter. S’il reste encore des indices j à parcourir dans N, alors j est incrémenté dans une opération 550 et la boucle répétée avec l’opération 535. Sinon, alors c’est l’indice i qui est testé pour déterminer s’il faut l’incrémenter dans une opération 555. S’il reste encore des indices i à parcourir dans N, alors i est incrémenté dans une opération 560 et la boucle répétée avec l’opération 530. Sinon, alors pl est resté à 0 tout le long de la répétition des boucles, et l’emplacement q ne doit pas être recevoir de matière, donc l’opération 515 reprend pour traiter l’emplacement q suivant.
Si la distance calculée par la fonction Dist() est inférieure à r, alors pl est mis à 1. De manière optionnelle, la distance entre la projection de q sur l’arête bl et chacune des graines de N est calculée. Si une graine est plus proche de cette projection que la graine de la cellule de q, alors pl est remis à 0, sinon pl reste à 1. Dans ces deux cas, la boucle se poursuit dans une opération 565, dans laquelle une fonction Pnt() détermine si l’emplacement q doit être imprimé selon la valeur de pl, et commande l’imprimante 6 en conséquence. Ensuite, l’opération 515 reprend pour l’emplacement q suivant.
Une fois que toutes les couches Rg ont été traitées, l’objet 14 a été imprimé et la fonction s’arrête avec une opération 599.
Au vu de ce qui précède, les mousses procédurales de Voronoi sont donc construites : - de manière procédurale, puisque chaque emplacement est évalué, au moment de son impression, pour déterminer s’il est vide ou plein, - correspondent, dans l’objet final, aux arêtes des cellules de Voronoi, avec une densité d et une épaisseur qui correspond au rayon r particulier à chaque emplacement.
Les fonctions GS() et SC() sont donc particulièrement avantageuses car elles permettent de réduire fortement la quantité d’informations à stocker d’un bout à l’autre de la chaîne. En effet, les mousses procédurales sont intégralement définies par la densité et le rayon. Ainsi, de la production des triplets à leur consommation pour fabriquer les objets, trois paramètres suffisent à définir les mousses procédurales de Voronoi de l’invention. Cela permet d’économiser une quantité de données précédemment ingérable dans l’état de l’art, avec un coût de calcul raisonnable. De plus, il apparaît que le constructeur 4 comme le modélisateur 10 sont chacun un générateur de graines de cellules de Voronoi utilisées pour définir si un emplacement est plein ou vide dans un objet final, qu’il serve à une qualification d’élasticité ou dans un objet à fabriquer.
De nombreuses variantes peuvent être envisagées. En effet, concernant les emplacements correspondant à une surface de l’objet, le traitement peut être complété pour apporter une « peau » ou du moins offrir une surface régulière (nonobstant les trous). Pour cela, il est possible de rajouter une couche supplémentaire de matière le long de la surface de l’objet, d’épaisseur choisie, donnant ainsi un aspect lisse à celui-ci. Optionnellement cette couche peut être partiellement ajourée, selon un principe selon lequel un emplacement dans la couche est plein s’il est à une distance inférieure au rayon r d’une face du diagramme de Voronoi autour de cet emplacement. C’est cette option qui a été retenue pour l’objet des figures 7 et 8.
De même, lorsqu’il est détecté qu’un emplacement q est proche de deux arêtes sans être suffisamment proche compte tenu de leur rayon, il peut néanmoins être prévu d’imprimer l’emplacement correspondant, afin d’améliorer la tenue aux embranchements des arêtes entre elles. Il est également possible de produire une version filtrée (anti-crénelage) de la structure, qui considère un petit volume autour de l’emplacement q, et détermine quel pourcentage de ce volume est interne à la structure (par exemple par sur-échantillonnage). La création des triplets peut être modifiée pour tenir compte d’analyses de conformité de l’élasticité. Le coefficient de Poisson pourrait également être utilisé. De plus, dans certains endroits, des calculs pourraient être réutilisés. Par exemple, pour la fonction de la figure 5, pour les emplacements q d’une même cellule, les calculs des graines pourraient être réutilisés. Les mousses procédurales pourraient également être construites de manière différente qu’en déterminant la distance à chaque branche (ce qui revient à identifier l’appartenance à un cylindre), par exemple en définissant d’autres géométries pour les branches. Certains blocs de graines de cellules de Voronoi pourraient également être précalculés sous la forme de triplets (bloc de graines, densité, emplacement). Enfin, pour des raisons esthétiques il est possible d’utiliser une densité plus faible et un rayon plus fort pour une élasticité donnée, ou tout autre choix pour faire correspondre un rayon et une densité à l’élasticité choisie.

Claims (15)

  1. Revendications
    1. Dispositif de traitement de données pour fabrication additive, comprenant une mémoire (8) agencée pour recevoir des données d’emplacement désignant un emplacement et un élément de volume contenant cet emplacement, et un générateur (4) agencé pour déterminer des données de fabrication additive indiquant si un emplacement associé à des données d’emplacement est vide ou plein, caractérisé en ce que : - la mémoire (8) est agencée pour recevoir des données de densité et des données de rayon, et en ce que - le générateur (4, 10) est agencé pour calculer, pour un emplacement donné désigné par des données d’emplacement, des données de graines de cellule de Voronoi désignant des emplacements de graines de cellule de Voronoi d’un jeu de graines de cellules de Voronoi associé à l’emplacement donné, - le générateur est agencé pour déterminer lesdits emplacements de graines de cellules de Voronoi dans une pluralité d’éléments de volumes comprenant l’élément de volume contenant l’emplacement donné et des éléments de volumes sélectionnés dans un voisinage de l’élément de volume contenant l’emplacement donné, en divisant chaque élément de volume de la pluralité d’éléments de volume en un ou plusieurs sous-éléments de volume dont le nombre est calculé à partir des données de densité et du volume de chaque élément de volume, en déterminant de manière pseudo-aléatoire en fonction des données d’emplacement et des données de densité des sous-éléments de volume recevant une graine de cellule de Voronoi, et en déterminant de façon pseudoaléatoire dans chaque sous- élément de volume recevant une graine de cellule de Voronoi des données de graine de cellule de Voronoi désignant un emplacement dans ce sous-élément de volume, - le générateur (4, 10) est en outre agencé pour définir au moins une branche à partir d’un triplet de graines de cellule de Voronoi choisies dans un jeu de graines de cellules de Voronoi associé à un emplacement donné dont l’une est la plus proche de l’emplacement donné, et pour définir des données de fabrication additive indiquant que l’emplacement donné est plein lorsque la distance entre ledit emplacement donné et sa projection sur une branche est inférieure à une distance tirée des données de rayon, et lorsque ladite graine de cellule de Voronoi la plus proche de l’emplacement donné est la plus proche de ladite projection parmi le jeu de graines de cellules de Voronoi associé à l’emplacement donné.
  2. 2. Dispositif selon la revendication 1, dans lequel le générateur (4, 10) est un modélisateur (10) agencé pour recevoir un couple associant des données de densité et des données de rayon, pour déterminer un jeu de données de fabrication additive pour un objet de forme sensiblement cubique à partir de ce couple, et pour appliquer une méthode d’homogénéisation pour en tirer une donnée d’élasticité.
  3. 3. Dispositif selon la revendication 2, dans lequel le modélisateur (10) est agencé, pour un couple donné, pour déterminer plusieurs jeux de données de fabrication additive en faisant varier les déterminations pseudo-aléatoires, et pour réaliser une moyenne des données d’élasticité pour le couple donné.
  4. 4. Dispositif selon l’une des revendications 1 à 3, dans lequel le générateur (4,10) est un constructeur (4) agencé pour recevoir des données d’objet (12) définissant la forme d’un objet à produire par fabrication additive et comprenant des données d’élasticité associées à des emplacements désignés par les données d’objet, et, pour certains au moins des emplacements des données d’objets, pour déterminer des données de rayon et des données de densité à partir des données d’élasticité associées, et déterminer des données de fabrication additive correspondantes.
  5. 5. Dispositif selon la revendication 4, dans lequel le générateur (4, 10) détermine de manière procédurale les données de fabrication de chaque emplacement désigné par les données d’objet à partir des seules données d’objet dont sont tirées les données de densité et les données de rayon.
  6. 6. Dispositif selon l’une des revendications précédentes, dans lequel le générateur (4, 10) est agencé pour sélectionner des éléments de volume cubiques ayant un volume égal à celui de l’élément de volume contenant l’emplacement donné, lequel élément de volume est également cubique.
  7. 7. Dispositif selon l’une des revendications précédentes, dans lequel générateur (4, 10) est agencé pour diviser chaque élément de volume de la pluralité d’éléments de volumes en des sous-éléments cubiques et de taille identique entre eux.
  8. 8. Dispositif selon l’une des revendications précédentes, dans lequel le générateur (4, 10) est agencé, après avoir déterminé le jeu de graines de cellules de Voronoi pour un emplacement donné, pour déterminer la graine de cellule de Voronoi la plus proche de l’emplacement donné, et calculer un jeu de graines de cellules de Voronoi associé à l’emplacement de cette graine de cellule de Voronoi.
  9. 9. Dispositif selon l’une des revendications précédentes, dans lequel le générateur (4, 10) est agencé pour sélectionner des éléments de volume dans un voisinage de l’élément volume contenant l’emplacement donné qui sont contigus à cet élément de volume, ou qui sont contigus à un élément de volume contigu à cet élément de volume.
  10. 10. Procédé de traitement de données pour fabrication additive comprenant les opérations suivantes : a. recevoir des données d’emplacement désignant un emplacement et un élément de volume contenant cet emplacement, des données de densité et des données de rayon, b. déterminer, pour un emplacement donné désigné par des données d’emplacement, des données de graines de cellule de Voronoi désignant des emplacements de graines de cellule de Voronoi d’un jeu de graines de cellules de Voronoi associé à l’emplacement donné, dans une pluralité d’éléments de volumes comprenant l’élément de volume contenant l’emplacement donné et des éléments de volumes sélectionnés dans un voisinage de l’élément de volume contenant l’emplacement donné, en divisant chaque élément de volume de la pluralité d’éléments de volume en un ou plusieurs sous-éléments de volume dont le nombre est calculé à partir des données de densité et du volume de chaque élément de volume, en déterminant de manière pseudo-aléatoire en fonction des données d’emplacement et des données de densité des sous- éléments de volume recevant une graine de cellule de Voronoi, et en déterminant de façon pseudoaléatoire dans chaque sous- élément de volume recevant une graine de cellule de Voronoi des données de graine de cellule de Voronoi désignant un emplacement dans ce sous-élément de volume, c. définir au moins une branche à partir d’un triplet de graines de cellule de Voronoi choisies dans un jeu de graines de cellules de Voronoi associé à un emplacement donné dont l’une est la plus proche de l’emplacement donné, d. définir des données de fabrication additive indiquant que l’emplacement donné est plein lorsque la distance entre ledit emplacement donné et sa projection sur une branche est inférieure à une distance tirée des données de rayon, et lorsque ladite graine de cellule de Voronoi la plus proche de l’emplacement donné est la plus proche de ladite projection parmi le jeu de graines de cellules de Voronoi associé à l’emplacement donné.
  11. 11. Procédé selon la revendication 10, comprenant en outre les opérations suivantes : e. recevoir des données d’objet (12) définissant la forme d’un objet à produire par fabrication additive et des données d’élasticité associées à des emplacements désignés par les données d’objet, f. pour certains au moins des emplacements des données d’objets, déterminer des données de rayon et des données de densité à partir des données d’élasticité associées, g. déterminer des données de fabrication additive correspondantes en exécutant les opérations a. à d..
  12. 12. Procédé selon la revendication 11, comprenant en outre l’opération suivante : h. commander une machine de fabrication additive avec les données de fabrication additive.
  13. 13. Procédé selon l’une des revendications 11 à 12, dans lequel l’opération g. est réalisée de manière procédurale à partir des seules données d’objet dont sont tirées les données de densité, et données de rayon.
  14. 14. Procédé selon la revendication 10, comprenant en outre les opérations suivantes : i. pour un couple associant des données de densité et des données de rayon, exécuter les opérations a. à d. pour déterminer un jeu de données de fabrication additive pour un objet de forme sensiblement cubique à partir de ce couple, j. appliquer une méthode d’homogénéisation pour en tirer une donnée d’élasticité.
  15. 15. Procédé selon la revendication 14, comprenant en outre l’opération suivante : k. pour un couple donné, répéter les opérations i. et j. en faisant varier les déterminations pseudo-aléatoires de l’opération b., et réaliser une moyenne des données d’élasticité pour le couple donné.
FR1652497A 2016-03-23 2016-03-23 Dispositif de traitement de donnees pour la generation de microstructures a elasticite variable par fabrication additive Active FR3049213B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1652497A FR3049213B1 (fr) 2016-03-23 2016-03-23 Dispositif de traitement de donnees pour la generation de microstructures a elasticite variable par fabrication additive

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1652497A FR3049213B1 (fr) 2016-03-23 2016-03-23 Dispositif de traitement de donnees pour la generation de microstructures a elasticite variable par fabrication additive
FR1652497 2016-03-23

Publications (2)

Publication Number Publication Date
FR3049213A1 true FR3049213A1 (fr) 2017-09-29
FR3049213B1 FR3049213B1 (fr) 2020-04-03

Family

ID=56741122

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1652497A Active FR3049213B1 (fr) 2016-03-23 2016-03-23 Dispositif de traitement de donnees pour la generation de microstructures a elasticite variable par fabrication additive

Country Status (1)

Country Link
FR (1) FR3049213B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022200742A1 (fr) * 2021-03-24 2022-09-29 Institut National De Recherche En Informatique Et En Automatique Dispositif de traitement de donnees pour la generation de microstructures a proprietes deformables commandables

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140324204A1 (en) * 2013-04-18 2014-10-30 Massachusetts Institute Of Technology Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140324204A1 (en) * 2013-04-18 2014-10-30 Massachusetts Institute Of Technology Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
BRACKETT D J ET AL: "An error diffusion based method to generate functionally graded cellular structures", COMPUTERS AND STRUCTURES, vol. 138, 18 April 2014 (2014-04-18), pages 102 - 111, XP028649867, ISSN: 0045-7949, DOI: 10.1016/J.COMPSTRUC.2014.03.004 *
CHRISTIAN SCHUMACHER ET AL: "Microstructures to control elasticity in 3D printing", ACM TRANSACTIONS ON GRAPHICS (TOG), vol. 34, no. 4, 27 July 2015 (2015-07-27), US, pages 136:1 - 136:13, XP055292197, ISSN: 0730-0301, DOI: 10.1145/2766926 *
JONÀS MARTÍNEZ ET AL: "Procedural voronoi foams for additive manufacturing", ACM TRANSACTIONS ON GRAPHICS (TOG), ACM, US, vol. 35, no. 4, 11 July 2016 (2016-07-11), pages 1 - 12, XP058275807, ISSN: 0730-0301, DOI: 10.1145/2897824.2925922 *
JULIAN PANETTA ET AL: "Elastic textures for additive fabrication", ACM TRANSACTIONS ON GRAPHICS (TOG), vol. 34, no. 4, 27 July 2015 (2015-07-27), US, pages 135:1 - 135:12, XP055328125, ISSN: 0730-0301, DOI: 10.1145/2766937 *
LIN LU ET AL: "Build-to-last", ACM TRANSACTIONS ON GRAPHICS (TOG), ACM, US, vol. 33, no. 4, 27 July 2014 (2014-07-27), pages 1 - 10, XP058051982, ISSN: 0730-0301, DOI: 10.1145/2601097.2601168 *
STEVEN WORLEY: "A cellular texture basis function", COMPUTER GRAPHICS PROCEEDINGS. SIGGRAPH '96, ACM, NEW YORK, US, 1 August 1996 (1996-08-01), pages 291 - 294, XP058220106, ISBN: 978-0-89791-746-9, DOI: 10.1145/237170.237267 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022200742A1 (fr) * 2021-03-24 2022-09-29 Institut National De Recherche En Informatique Et En Automatique Dispositif de traitement de donnees pour la generation de microstructures a proprietes deformables commandables

Also Published As

Publication number Publication date
FR3049213B1 (fr) 2020-04-03

Similar Documents

Publication Publication Date Title
EP3292541B1 (fr) Procede des simplification de modele de geometrie
WO2015085435A1 (fr) Méthode et système de comparaison de modèles 3d
EP2805234B1 (fr) Procédé d'optimisation de traitement parallèle de données sur une plateforme matérielle.
EP0444183A1 (fr) Procede de modelisation d'une surface et dispositif pour sa mise en uvre.
WO2015004207A1 (fr) Procede d'optimisation de traitement parallele de donnees sur une plateforme materielle
FR2882171A1 (fr) Procede et dispositif de generation d'un arbre de classification permettant d'unifier les approches supervisees et non supervisees, produit programme d'ordinateur et moyen de stockage correspondants
WO2017001768A1 (fr) Dispositif de traitement de données pour fabrication additive
FR3049213A1 (fr) Dispositif de traitement de donnees pour la generation de microstructures a elasticite variable par fabrication additive
FR3066953B1 (fr) Dispositif de traitement de donnees pour la generation de microstructures a proprietes elastiques orthotropiques
EP3317782A1 (fr) Dispositif de traitement de donnees
FR3098367A1 (fr) Procédé et dispositif de codage d’une séquence d’hologrammes numériques
EP2591457B1 (fr) Dispositif de synthèse d'image
Sainte-Marie et al. Indices de Sobol généralisés aux variables dépendantes: tests de performance de l’algorithme HOGS couplé à plusieurs estimateurs paramétriques
EP2162829B1 (fr) Dispositif d'adressage pour processeur parallele
CA2813924C (fr) Procede et dispositif de prototypage rapide
EP3622445A1 (fr) Procede, mise en oeuvre par ordinateur, de recherche de regles d'association dans une base de donnees
EP2204775B1 (fr) Triangulation incrementale de polygone pour affichage numerique
FR2959328A1 (fr) Outil informatique a representation parcimonieuse
FR3134641A1 (fr) Procédé de détermination de paramètres pour un ensemble de sites de piégeage d’atomes en vue de former plusieurs réseaux de qubits
CA3230088A1 (fr) Procede de mise en relation d'une image candidate avec une image de reference
Barlet et al. Microsimulation and Agent Models: an Alternative Approach to the Assessment of Employment Policies
FR3133261A1 (fr) Essai de style avec Des GAN inversÉs
WO2012140024A1 (fr) Site pour gpu
BOUMEDINE et al. hybridation de deux algorithmes pour une détte
FR3098945A1 (fr) Site pour GPU

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20170929

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9