J.C. Tchang |
Original Version On Philo's Site. |
L'utilitaire Unificator permet d'unifier les coordonnées des sommets proches dans un fichier de pièce LDraw afin qu'ils fusionnent et ferment ainsi parfaitement les petits espaces qui peuvent se présenter, ou supprimer les petits recouvrements. Ce petit outil dérive de l'unification des sommets que j'ai (Dixit Philo) introduit dans le programme SlicerPro. Les sommets d'éléments simples (lignes et surfaces) qui sont proches, jusqu'à une certaine tolérance, sont confondus avec leur centre de masse. Une autre tolérance contrôle la distance en dessous de laquelle les sommets s'accordent avec les sommets figés des sous-fichiers ou primitives.
C'est une simple application en ligne de commande. Le code source est fourni ci-dessous, pour celui qui voudrait l'intégrer dans une interface plus conviviale. Il est possible de l'utiliser sous Windows, grâce à l'interface LETGUI de Michael Heidemann, ce qui est hautement recommandé (voir plus bas).
Décompressez le fichier et mettez le programme
dans un simple dossier, comme vos autres utilitaires LDraw.
Exemple : c:\lego\unificator
Voici une copie d'écran d'une simple exécution du programme :
Il est possible de lancer Unificator à partir d'une interface
plus conviviale que la ligne de commande. LETGUI crée par Michael Heidemann
est fait pour cela.
Pour plus d'informations générales sur cette interface, allez sur la page LETGUI.
Unificator a été intégré dans l'éditeur de pièce LD Part Editor, voir la page : LD Part Editor, et particulièrement le chapitre Unifie les sommets de maillage : Unificator.
De gauche à droite :
Notez que le quadrilatère n'étant pas dans le même plan que le triangle et la primitive, l'unification a tordu ce quadrilatère et en conséquence n'est plus plan. Vous devez en tenir compte et utiliser PlanarCheck ou DATHeader pour corriger cela. Naturellement également, la forme du triangle et du quadrilatère ont été modifiés. C'est une chose à se souvenir lorsqu'on utilise de grandes valeurs de tolérance.
Ligne de commande :
Unificator -ut 1 u1.dat u1a.dat Unificator -s -us 1 -l c:\ldraw u1.dat u1b.dat Unificator -ut 1 -s -us 1 -l c:\ldraw u1.dat u1c.dat
Un cas plus pratique : La version initiale de la pièce du dôme facettisé 30208 avait beaucoup d'inexactitudes. Unificator résout facilement cette question (Notez que dans ce cas réel la résolution a été un peu plus difficile car la partie facettisée de la pièce était dans un sous-fichier et utilisé 6 fois. J'ai initialement utilisé SlicerPro pour réparer la pièce, et cela m'a induit à créer Unificator).
Ligne de commande :
Unificator -ut 0.5 30208.dat 30208o.dat
Un autre (presque) vrai cas exemple : Les dents de la fourche 4496 montraient un intervalle minuscule entre la primitive sphérique de la pointe et le reste de chaque dent de la fourche, à cause de l'arrondi à 3 décimales (le fichier exemple ici a été arrondi à 2 décimales pour rendre l'intervalle plus visible). Un accrochage autour de la sphère a fait l'affaire... Notez que cette méthode peut être utilisée pour réduire la taille du fichier de pièce qui mélange primitives et maillage triangulaire. En premier lieu réduisez drastiquement la précision, puis lancez Unificator sur le résultat pour clore les petits espaces qui apparaissent entre les primitives et le maillage.
Ligne de commande :
Unificator -s -us 0.03 -l c:\ldraw 4496s01.dat 4496s01o1.dat
Utilisez avec précaution les hauts seuils de tolérance ! Il résulte de trop hautes valeurs des formes déformées et donc mauvaises... Depuis que les surfaces dégénérées sont supprimées automatiquement, les lignes conditionnelles peuvent être erronées après usage de hautes valeurs de tolérance dans Unificator. Dans ce cas vous devez traiter le résultat avec Edger2.
Command line:
Unificator -ut 1 -s -us 1 -l c:\ldraw 4496s01.dat 4496s01o2.dat
Unificator peut être utilisé pour percer des trous dans un maillage triangulaire. Ici, la surface de base de la tête du chat Fabuland (pièce u9108) que nous avons besoin de percer suivant un cercle (4-4edge) pour implanter le cou (Une sorte de "marquage au fer rouge"). Avec une tolérance d'accrochage relativement haute, les sommets du maillage sont "attirés" par les sommets du cercle, et il en résulte une belle coupe. Notez que cette astuce fonctionne correctement seulement si les triangles sont à peu près de la même taille (ou plus petits) que les segments du cercle. Tout doit être également à peu près dans la même plan. Vous devrez seulement ensuite enlever les triangles (ici mis en rouge) se trouvant à l'intérieur du cercle...
Command line:
Unificator -s -us 3 -l c:\ldraw u9108.dat u9108o.dat
Cet exemple est basé sur le message de Philo sur le Forum de discussion de LDraw.org : Unificator as a shape tuning tool (en Anglais).
Comme vous savez (Dixit Philo), ou pas :-), la partie verticale à la base des pièces pentées LDraw (Slope, Wedge, ...) fait 4 LDU de haut, alors que sur les pièces LDD elle fait 5 LDU. La hauteur réelle est plus proche de 5 LDU, mais retravailler toutes ces pièces LDraw existantes serait un cauchemar. Donc, pour obtenir des pièces LDraw homogènes, à partir de fichiers LDD ou LUT cette partie doit être diminuée.
Voici la méthode que j'ai utilisé (toujours Dixit Philo) pour la création de la pièce 64225 :
Isoler les lignes à y=19, en utilisant MLCad et beaucoup de fonction "Cacher" (Hidden)
pour accéder à ces lignes. Nota : Les lignes sont beaucoup plus faciles à sélectionner si vous utilisez une épaisseur de trait de 3 dans le menu : Réglages / Général / Changer, onglet "Rendu", et sélectionner "3" dans le menu déroulant "Epaisseur des lignes". Ficher : 64225-isol.dat | |
Créer un sous-fichier de ces lignes (je les ai pincés un peu plus pour obtenir la forme définitive adéquate). Ficher : 64225-line2.dat | |
Inclure ce sous-fichier, le déplacer vers le bas de 1 LDU, pour avoir les lignes à y=20 LDU. Ficher : 64225-subpt.dat | |
Lancer Unificator avec attirance sur les sous-fichiers (snap on subfiles), et une tolérance
d'unification (threshold) de 3 LDU.
Automatiquement vous obtenez le résultat : Ficher : 64225-subptout.dat | |
Bien sûr plus d'une mise au point a été nécessaire, par exemple la même méthode a été utilisée avec 64225-side.dat comme sous-fichier pour redresser les côtés... mais vous avez l'idée ! | |
Pièce 64225.dat, avec la partie basse verticale faisant 4 LDU de haut. |
A partir de cette idée (Dixit J.C. Tchang), j'ai cherché une méthode plus "simple", en terme de sélection, et plus globale sur la déformation, avec l'usage du programme SymSplitter :
Déplacer toutes les entités de 19 LDU pour avoir le plan de coupe en y=0, et n'avoir pas à créer de fichier de plan pour SymSplitter. | |
Utiliser symsplitter, avec les options -y+ pour créer le fichier 64225-jc1yplus.dat de la partie basse. | |
Utiliser symsplitter, avec les options -y- pour créer le fichier 64225-jc1ymoins.dat de la partie haute. | |
Utiliser symsplitter, avec les options -y+ et -da pour créer le fichier 64225-jc1plane.dat de la partie contenu dans le plan de coupe. | |
Utiliser symsplitter, avec les options -y+ et -di pour créer le fichier 64225-jc1cross.dat de la partie traversant le plan de coupe. | |
Créer un nouveau fichier contenant les 4 sous-fichiers précédents : - 64225-jc1cross.dat à l'échelle 1, - 64225-jc1plane.dat à l'échelle 1 mais déplacé de 1 LDU en y, - 64225-jc1yplus.dat à l'échelle 0.8 (=4/5), - 64225-jc1ymoins.dat à l'échelle 1.05263158 (=20/19). | |
Après un "Inline" du sous-fichier 64225-jc1cross.dat à l'aide de LDDP,
lancer le programme Unificator avec attirance sur les sous-fichiers (snap on subfiles),
et une tolérance d'unification (threshold) de 3 LDU. Il sera malgré tout parfois nécessaire de reprendre manuellement les parties non traitées qui ne s'appuient sur aucun point des sous-fichiers. |
Nota : Cette méthode donne un résultat légèrement différent sur les parties courbes, puisque globalement déformées, par rapport à la méthode précédente où seuls les points proches du plan de coupe sont déplacés.
Le programme Unificator et son manuel d'utilisation appartient à (c) Philo (Philippe Hurbain).
Vous pouvez le retrouver sur son site et sa page des utilitaires LDraw, et sur la version d'origine en anglais de cette page.
Traduction et Adaptation : J.C. Tchang, avec l'aide de Philo :-).