Unificator
Unifie les sommets dans un fichier LDraw

Mise à jour de la page : 26 octobre 2011.
    Set 700/1 de 1950
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).

 

Téléchargement

 

Historique du programme

 

Installation

Décompressez le fichier et mettez le programme dans un simple dossier, comme vos autres utilitaires LDraw.
Exemple : c:\lego\unificator

 

Utilisation

Voici une copie d'écran d'une simple exécution du programme :

 

Liste des options

 

Intégration de Unificator dans LETGUI

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.

 

Comment Unificator travaille

 

Exemples

Exemple explicatif

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 : 

 

Exemple concret sur la pièce 30208

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 : 

 

Exemple concret sur la pièce 4496

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 : 

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: 

 

Exemple de création de trou dans un maillage

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: 

 

Exemple de mise au point de forme

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.

 

Droits et Copyright

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 :-).