Brevet FR3038254A1 (20170106)
REVENDICATIONS1. 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 noeud, en reliant entre eux par des arêtes les noeuds 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 noeuds qui lui sont associés, - un extracteur (18) agencé, pour définir un deuxième graphe (A) en définissant des noeuds à partir d'un sous-ensemble de noeuds du graphe comprenant des noeuds correspondant à des voxels indiquant un emplacement plein, et pour relier entre eux les noeuds 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 noeuds du deuxième graphe (A), chaque noeud du premier graphe (G) reliant ces deux noeuds correspondant à un voxel indiquant un emplacement plein, et la somme des poids des arêtes du premier graphe (G) reliant les deux noeuds 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 noeuds 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 noeuds du premier graphe (G) appartenant au voisinage de ces arêtes redéfinies comme correspondant à un emplacement plein, et 3038254 31 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).\n<CLM>\1\tDispositif selon la revendication 1, dans lequel l'extracteur (18) est agencé pour 5 déterminer dans une première opération les premières arêtes en associant à chaque noeud du premier graphe (G) correspondant à un voxel indiquant un emplacement plein un marqueur d'un noeud dudit sous-ensemble, les marqueurs étant propagés à partir de chacun des noeuds dudit sous-ensemble en choisissant, à partir d'un noeud marqué, celui des noeuds qui lui est directement relié par une 10 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 noeud présentant déjà un marqueur d'un noeud dudit sous-ensemble. 15\n<CLM>\1\tDispositif 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 noeud du premier graphe (G) un marqueur d'un noeud dudit sous-ensemble, les marqueurs étant propagés à partir de chacun des noeuds dudit sous-ensemble en choisissant, à partir d'un noeud marqué, celui des noeuds qui lui est 20 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 noeud présentant déjà un marqueur d'un noeud dudit sous-ensemble. 25\n<CLM>\1\tDispositif 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 30 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, 3038254 32 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, 5 jusqu'à ce que la boucle ne redéfinisse plus aucune arête.\n<CLM>\1\tDispositif 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 10 noeuds de chaque deuxième arête et la distance euclidienne entre ces mêmes noeuds, b) redéfinissant chaque seconde arête dont le ratio supérieur est à un seuil choisi en tant que première arête. 15\n<CLM>\1\tDispositif 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 20 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 25 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 30 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, 3038254 33 - 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 5 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 10 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 15 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 20 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 25 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. 30\n<CLM>\1\tDispositif 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 3038254 34 résultant du plaquage des données de motif sur la première surface et sur la deuxième surface pour ces projections.\n<CLM>\1\tDispositif selon la revendication 6 ou 7, dans lequel l'estimateur (10) est agencé 5 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.\n<CLM>\1\tDispositif selon l'une des revendications 6 à 8, dans lequel l'estimateur (10) est 10 agencé pour déterminer une valeur de similarité strictement positive et indiquant une similarité d'autant meilleure que la valeur de similarité est faible.\n<CLM>\1\tDispositif 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 15 résolution supérieure avec des données de projection (26) choisies aléatoirement.\n<CLM>\1\tDispositif 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 20 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). 25\n<CLM>\1\tDispositif selon l'une des revendications 6 à 11, 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).\n<CLM>\1\tDispositif selon l'une des revendications 6 à 12, dans lequel la mémoire (4) est 30 agencée pour recevoir des données de projection définissant une surface qui est un plan. 3038254\n<CLM>\1\tDispositif 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. 5\n<CLM>\1\tDispositif 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).\n<CLM>\1\tDispositif 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 10 raidisseur (20).\n<CLM>\1\tDispositif 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 15 projection (26) telles que les données de voxels concernées indiqueront un emplacement plein après traitement.\n<CLM>\1\tDispositif 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 20 raidisseur (20) ne modifie plus de données de voxels.\n<CLM>\1\tProcé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 25 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 noeud, en reliant entre eux par des arêtes les noeuds 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 30 correspondant aux noeuds qui lui sont associés, c) calculer un deuxième graphe (A) en définissant des noeuds à partir d'un sous- ensemble de noeuds du graphe comprenant des noeuds correspondant à des voxels 3038254 36 indiquant un emplacement plein, et pour relier entre eux les noeuds 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 noeuds du deuxième graphe (A), chaque noeud du 5 premier graphe (G) reliant ces deux noeuds correspondant à un voxel indiquant un emplacement plein, et la somme des poids des arêtes du premier graphe (G) reliant les deux noeuds 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 noeuds du deuxième 10 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 noeuds du premier graphe 15 (G) appartenant au voisinage de ces arêtes redéfinies comme correspondant à un emplacement plein.\n<CLM>\1\tProduit de programme d'ordinateur comprenant des portions de code de programme pour mettre en oeuvre le dispositif selon l'une des revendications 1 à 20 18 ou le procédé selon la revendication 19 lorsque ledit programme est exécuté sur un ordinateur.