Dans un précédent article, je vous avais parlé de la numérisation d’un objet avec une Kinect (l’article est ici). C’est une technique peu couteuse qui reste efficace pour des objets sans trop de détails.
Il existe une autre technique, basée sur le traitement de photographies. Si ce procédé était hier plutôt réservé aux professionnels dans le cadre de prises de vues aériennes pour l’urbanisme, il se démocratise. Nos smartphones sont en effet maintenant capables de prendre des photos en haute résolution, et certains éditeurs proposent des solutions open source ou limitées de leurs produits, qui restent utilisables pour un usage privé.
Contraintes et mise en garde
Avant de regarder les solutions disponibles aujourd’hui, il faut avoir en tête certains points sur cette technique. Le principe est « relativement » simple : on prend une série de photos en se déplaçant autour de la zone (ou en faisant tourner l’objet). Chacune des photographies sera traitée pour identifier les relations entre 2 prises de vue successives et en « déduire » le positionnement de l’appareil de prise de vue. A partir de ce moment, chaque prise de vue pourra être positionnée dans l’espace et restituer ainsi une représentation 3D de l’espace. De ceci, il en découle que :
- trop peu d’images va rendre la reconstitution aléatoire,
- trop d’images va rendre le temps de traitement très long,
- trop de variation de lumière, de contraste, d’échelle dans les prises de vues risque de générer un rejet de certaines images,
- les objets brillants ou translucides ne pourront pas être numérisés correctement.
Une fois ces éléments pris en considération, nous allons pouvoir commencer.
Pour cet article, j’ai choisi de « tenter » la numérisation d’un simple galet, d’environ 10 cm dans sa plus grande dimension.
Afin de capturer les images dans les meilleurs conditions possible, je vais positionner mon galet dans une boite à lumière, sur un plateau tournant, et positionner mon téléphone sur un pied. L’intérêt est de maitriser l’éclairage, d’éviter les zones d’ombre et de toujours avoir une même distance par rapport au centre de rotation.
Regardons maintenant les solutions logicielles disponibles.
Il existe des solutions gratuites et payantes, faciles ou non d’utilisation. Je vous propose de rester sur « le gratuit ». Je vais donc tester la version Free de 3D Zéphyr (https://www.3dflow.net/3df-zephyr-free/) et MeshRoom qui est totalement open-source (https://meshroom.fr.uptodown.com/windows/telecharger)
3D Zéphyr
La version gratuite limite le traitement de 50 photos avec un seul processeur graphique. Il y aura aussi des limitations dans les formats d’export et l’absence de certains outils. Mais cette version reste parfaitement utilisable pour numériser de petites objets en vue de leur impression 3D.
Même si l’interface utilisateur est très riche, le processus de découverte reste simple et classique :
- on importe les photos,
- on applique optionnellement un masque afin de réduire la zone de traitement,
- le logiciel aligne les photos,
- le logiciel créé un nuage de points, qui va permettre de créer un maillage,
- on repose la texture sur le maillage,
- on exporte le fichier pour traitement d’impression 3D par exemple.
Ci-dessous le résultat avec mon galet.
Avec 14 photos, le logiciel a identifié un nuage de 184 841 points, et à généré un maillage de 369 843 triangles. Une fois exporté en format .obj (très peu de choix sur cette version free), je peux sans problème l’importer dans mon slicer.
Meshroom
Même mode opératoire avec MeshRoom, mais encore en plus simple .
On colle les images dans la partie prévue. Et on clique sur le bouton Start.
Il est toujours possible de modifier l’ensemble des paramètres et des fonctions réalisées, le logiciel présentant les opérations sous forme de graphe.
A noter que le logiciel ne propose aucune option d’exportation de fichier. Il faut accéder au répertoire de travail de MeshRoom pour récupérer directement le fichier .obj nativement créé.
Remarque importante :
Le logiciel est prévu pour fonctionner avec une carte NVidia. Pénalisant pour les possesseurs de matériel à base de carte AMD Radéon par exemple.
Heureusement, il existe une option qui permet de se passer de carte NVidia, mais avec une qualité obtenue un peu dégradée.
Il faut passer par le menu fichier et choisir un pipeline différent du pipeline par défaut.
En conclusion
Des solutions qui fonctionnent pour numériser des pièces, mais qui restent difficiles à mettre en place en raison des contraintes liées aux prises de vues : lumière constante et diffuse pour éviter les ombres, pas de reflet, pas de pièces transparentes, etc.