SymSplitter
Coupe des fichiers LDraw suivant un plan de symétrie
(et plus encore !)

Mise à jour de la page : 20 mai 2015.
    
J.C. Tchang
Original Version
On Philo's Site
.

SymSplitter, écrit par Philo (Philippe Hurbain), est l'outil de choix pour exploiter les symétries d'un fichier au format LDraw, et réduire sa taille. Vous pouvez l'utiliser pour séparer les parties gauche/droite/milieu, couper les pièces par des plans, et ajuster les coordonnées de sommets d'éléments proches d'un plan au plan lui-même.

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

 

Navigation rapide

 

Téléchargement

 

Historique

 

Utilisation

Aide au lancement

Si vous lancez le programme sans paramètre, vous obtenez un message d'aide de l'usage du programme.

Description des options

Options de plan de coupe :

Nota : Avec ces options, il n'y a pas besoin de fichier de coupe SplitterFile.

Avec l'option -i, pas besoin d'inverser le sens des éléments dans le fichier SplitterFile. Cette option est aussi active avec les plans de coupe généraux, ainsi -i -x+ est identique à -x-.

Options à choix :

Fichiers :

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

 

Intégration dans LETGUI

Il est possible de lancer SymSplitter à partir d'une interface plus conviviale que la ligne de commande. LETGUI créé par Michael Heidemann est fait pour cela (depuis la version 1.5.0.0).

Utilisation de l'interface

Pour plus d'informations générales sur cette interface, allez sur la page LETGUI.

 

Intégration dans LD Part Editor

SymSplitter a été intégré dans l'éditeur de pièce LD Part Editor, voir la page : LD Part Editor, et particulièrement le chapitre Séparation de maillage : SymSplitter.

 

Comment le programme travaille

 

Exemples d'utilisation

Séparation droite/gauche/centre

C'est le but le plus simple de SymSplitter : Séparer une pièce symétrique en sa partie centrale, qui sera inclue dans le fichier principal de la pièce, et une des parties latérales qui sera mise dans un sous-fichier et symétrisée pour obtenir la pièce complète. L'exemple provient de la pièce 47406, et son fichier est originaire du "LEGO Universe Team". Après beaucoup de substitutions de primitives et d'ajustement de quadrilatères et triangles pour les relier, j'avais le fichier suivant (à gauche) avec la partie centrale, et un coté complet.
En utilisant simplement SymSplitter pour colorer les entités (à droite), on visualise la partie centrale, et ce qui deviendra le sous-fichier latéral.
Nous le séparerons par le plan Z=0, en supprimant les entités aux données Z<0. Puisque la séparation se fait sur un des plans cartésiens principaux, il n'y a pas besoin de fournir un fichier de coupe (SplitterFile), et nous utiliserons l'option -z- (signifie couper par le plan Z=0, en gardant les entités en Z<0. Les options -x- et -y+ sont similaires pour les plans X=0, et Y=0, en gardant les entités X<0 ou Y>0.

Ligne de commande :

Nous pouvons maintenant faire la séparation elle-même en deux temps. Utiliser l'option -dn supprime tout ce qui n'est pas dans la partie centrale, alors que les options -di -da gardent uniquement une des parties latérales, suivant le plan de coupe et son sens. Notez que bien qu'ils ne soient pas centrés, les tenons sont mis dans la partie centrale, pour éviter de les symétriser par la suite.

Lignes de commande :

 

Vérification de l'Auto-symétrie

Nous vérifions maintenant si des entités de la partie centrale sont auto-symétriques, en utilisant l'option -v, il apparait qu'une petite zone ne l'est pas, en la mettant en rose (Pink), et vert clair (Bright Green). Après une analyse fine, il apparait que cela est causé par des erreurs d'arrondis mineurs. En augmentant la valeur de la précision de 0.001 (par défaut) à 0.01, avec l'option -p 0.01, on supprime ce problème.

Notez que l'option -v a ses limitations : Les primitives ou sous-fichiers ne sont pas vérifiés. Vous pouvez essayer de les décomposer pour la vérification en utilisant l'option -s. Mais, il est possible que les quadrilatères et triangles forment ensemble une forme auto-symétrique alors que chaque composant pris individuellement ne le soit pas.

Lignes de commande :

 

Ajustement de coupe avec la fonction de projection

L'usage de coupe par projection de SymSplitter est le premier que j'ai testé (Dixit Philo) "en vrai grandeur". Le fichier du pneu 32003 (Tyre 68.8 x 24S) était en attente dans "LDraw Parts Tracker" depuis longtemps. Le sous-fichier de cette pièce a été créé "un poil" trop grand, et chaque segment de ce pneu chevauche le précédent (voir ci-dessus à gauche), empêchant l'usage approprié des lignes conditionnelles entre les sous-fichiers. Un fichier de coupe a été créé avec 2 triangles définissant un angle de 10° (le pneu a 36 segments). Nota : Ces triangles sont créés avec l'orientation de leurs faces internes "rouges" vers l'intérieur de la forme en "V" (voir ci-dessus au centre). Il a été appliqué au sous-fichier 32003a, avec des valeurs de précision croissantes. Pour p=0.1 les éléments du sous-fichier sont proprement projetés sur les plans de coupe. Le résultat est correct, sans avoir réellement coupé quoi que ce soit (voir ci-dessus à droite).

Avertissement important : La fonction de projection peut produire des quadrilatères non plans, ou même des trous, si la pièce initiale contient des jonctions en "T". Vérifiez avec soin !

Ligne de commande :

 

Ajustement plan d'un maillage

Les maillages créés avec un scanner 3D, comme celui de Philo : Scanner 3D, ou avec le DAVID laserscanner, ont souvent besoin d'être coupés par la moitié, ou modifiés pour avoir une vraie base plane. Le programme Intersector peut faire ce travail, mais des triangles souvent minuscules restent à cause de sommets très proches du plan de coupe, sans être dessus. Utiliser la fonction de projection sur le plan de SymSplitter avec un seuil de précision plutôt haut peut aider. Parfois, vous n'avez même pas besoin de couper quoi que ce soit !

L'exemple ci-dessus montre comment former une base plane sous le maillage de la grenouille saisie avec mon (Dixit Philo) Scanner 3D. La précision est augmentée petit à petit, et de plus en plus de sommets sont projetés sur le plan Y=0. Les éléments jaunes coupent le plan de base. Pour p=0.3 vous obtenez une base plane, sans rien qui traverse le plan. Naturellement la précision "p" doit rester assez basse, pour prévenir de déformations trop importantes.

Lignes de commande :

 

Coupe de maillage avec suppression des petits triangles

Pour couper le fichier de la grenouille, vous aurez besoin de couper des éléments pour obtenir un résultat propre. Spécifier une valeur de précision plus grande vous débarrasse de triangles minuscules et réduit le nombre d'éléments coupés.

L'exemple ci-dessus montre la zone proche de la tête de la grenouille, et la simplification lorsque "p" passe de 0 à 0.3.

Lignes de commande :

 

Droits et Copyright

Le programme SymSplitter 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.