J.C. Tchang |
Original Version On Philo's Site. |
Bien que mon (NdT : Dixit l'auteur Philo) Scanner 3D NXT soit plutôt réussi, il souffrait d'un grand inconvénient : Il était .........lent ! J'ai alors découvert le DAVID-3D laserscanner (en Anglais). Cette perle de logiciel permet de reconstruire une forme 3D avec un rayon laser et une petite caméra (Webcam). Encore mieux, la version libre est entièrement utilisable, avec quelques limitations : La résolution est basse, et il faut utiliser MeshLab pour assembler les différents scans et reconstruire la forme complète.
Bien que vous puissiez balayer le rayon laser sur la pièce à la main, vous obtiendrez un meilleur scan avec un balayage régulier et lent. J'ai construit un "truc" motorisé NXT pour cela.
Ici vous voyez le cœur de l'action. Le rayon laser rouge balaye lentement l'objet (ici la tête de l'agneau Fabuland). Derrière l'objet balayé, deux plans, avec un angle de 90°, fournissent une référence au programme de scan. Ils sont marqués de points noirs régulièrement espacés, qui servent durant le processus de calibration à informer le programme des caractéristiques de la webcam, son champ de vision, ses distorsions optiques, ... | |
Le mécanisme de balayage du laser. La vitesse du moteur NXT est réduite de 1/2880, ce qui donne un mouvement parfaitement lent. Les deux élastiques blancs maintiennent une tension sur les pignons, pour éviter un battement du au jeu de fonctionnement. Le code NXT permet de faire varier la vitesse de balayage en faisant varier la vitesse du moteur, et de déplacer le laser à sa vitesse maximum durant la phase de démarrage. En dessous du mécanisme, se trouve la caméra, une Logitech Pro 9000 webcam. Cette webcam de grande qualité donne de très bonnes images, donc des scans détaillés (Bien que j'aie fait mes premiers essais avec une webcam Trust meilleur marché). L'inconvénient de cette webcam est qu'elle ne possède pas de trou de vis pour l'installer. Voir ici comment j'en ai ajouté un (en anglais, mais les photos sont explicites. Evidemment pour la garantie....). | |
Le laser lui-même est actionné à partir d'un port de capteur du NXT. La petite carte interface, au milieu du câble, contient un transistor pour allumer/éteindre le laser (le même procédé que la LED du capteur lumineux NXT) et une diode en série pour baisser le voltage. Le laser est un module laser rouge, donnant un rayon concentré, que j'ai acheté sur le site : DealExtreme. | |
Gros plan sur la carte interface de contrôle du laser. | |
Vue de dessus du banc de scannage. Le second moteur NXT permet de faire tourner l'objet, pour scanner suivant plusieurs points de vue. Il serait nécessaire de faire basculer l'objet pour voir le dessus ou le dessous. Malheureusement, je n'ai pas trouvé de façon de faire sans encombrer le point de vue de la caméra sur les panneaux se trouvant derrière. En conséquence, je remplace le montage de l'axe droit par un montage contenant des connecteurs d'angle (Technic Angle Connector). |
Le programme NXC est très simple. Vous choisissez en premier la vitesse de balayage avant de presser le bouton orange pour aller sur l'écran principal du scannage. Le laser s'allume. Pressez ensuite la touche NXT droite ou gauche pour commencer le scan vers le haut ou vers le bas. Pressez la touche gauche ou droite pour passer un second basculement en vitesse rapide pour pré-positionner le rayon laser avant le scan réel. Pressez encore le bouton orange pour passer en mode rotation de l'objet, permettant de le faire tourner par pas de 45°. Le bouton orange encore une fois revient en mode scan. |
Voici quelques pièces LDraw que j'ai créé (Dixit Philo) avec l'aide de ce scanner laser.
Voici une vue d'ensemble très rapide du long et sinueux chemin pour passer d'une pièce LEGO physique à son modèle LDraw.
Si vous avez la version complète de DAVID, vous pouvez utiliser son utilitaire "ShapeFusion" pour reconstruire l'objet :
Si vous avez seulement la version libre de DAVID, ShapeFusion ne permet pas de sauvegarder le résultat reconstruit. Vous devrez utiliser MeshLab pour cela. J'ai décrit la méthode sur la page Scanner 3D NXT. Ce tutoriel est basé sur une ancienne version de MeshLab. La version plus récente fonctionne mieux (spécialement sur le choix de points des outils d'alignement). Vous devrez expérimenter un peu...
Un problème avec les pièces scannées est que les bords ne sont pas aussi nets qu'ils devraient être car :
Pour être capable de placer les bords LDraw du contour extérieur, vous avez besoin d'augmenter localement la finesse du maillage. Sculptris est très bien pour cela. Importez le maillage que vous avez obtenu précédemment comme un fichier .obj, et utilisez l'outil de plissage (crease tool) pour affiner les angles où c'est nécessaire. L'outil de lissage (smooth tool) peut être également utile si vous voyez de petites irrégularités dans une zone qui devrait être lisse.
L'étape suivante, est de diminuer l'échantillonnage du maillage. Le scan brut contient quelques 20000 triangles, et après le passage dans Sculptris ce chiffre peut passer à 1000000. La bonne valeur à atteindre dans la pratique pour un fichier LDraw est d'environ 3000 à 5000 triangles. L'outil de Meshlab "decimation filter" fonctionne bien pour cela.
Quand vous êtes content du résultat, c'est le moment de le convertir au format LDraw. Dans MeshLab, sauvegardez le fichier au format ".stl", sans oublier de décocher "Binary encoding", puis de convertir le fichier obtenu en fichier LDraw en utilisant l'utilitaire stl2dat. Après cela vous devez faire les opérations habituelles pour avoir un fichier correct comme si c'était une pièce LEGO Universe Team... (voir en français : Reprendre une pièce LEGO Universe Team).
Cette méthode et son manuel d'utilisation a été écrit par (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.