Projet Argos - Analyses des besoins
Etudiants : - Cedric SAZOS - Clement BINET - Erwann BRICET - Victor BOURGAUD - Xavier BAUBET
1. Contexte du projet
Le projet vise à développer un ensemble d’outils logiciels en C++ permettant la conversion entre différentes représentations 3D :
- Maillage 3D (Mesh)
- Nuage de points (Point Cloud)
- Vidéo → reconstruction en nuage de points
L’objectif final est d’obtenir un pipeline capable de : - Transformer une acquisition vidéo en nuage de points exploitable.
L’environnement actuel repose sur Blender (scripts Python) pour la visualisation.
2. Parties prenantes
Clients
Chercheurs - Doctorant
Utilisateurs souhaitant comparer des algorithmes de conversion 3D
Potentiellement intégration dans pipeline scientifique
Attentes : - Résultats fiables - Comparaison claire des performances - Visualisation des résultats - Simplicité d’utilisation (documentation) - Modularité des algorithmes - Build simplifié (CMakeLists)
3. Contour fonctionnel du logiciel
Objectif principal
Créer un framework de conversion 3D modulaire, permettant : - Lire un fichier .obj - Le convertir en : - Maillage - Nuage de points - Reconvertir dans l’autre sens - Comparer plusieurs algorithmes pour chaque transformation - Affichage graphique des résultats
4. Jalon technique
Jalon 1 - Maillage → Nuage de points
Objectif : Échantillonnage de surface d’un maillage 3D.
Tâches : 1. Algo modulaire : création d'une interface / patron d'implémentation pour les algorithmes. 2. Naïf : retourne simplement les sommets du maillage. 3. Centroid : - Découpe des faces en triangle (éventaille) - Ajout du centroïde de chaque triangle - resultat : on découpe chaque face en triangle, on ajoute un point au centre de chaque triangle, on retourne la liste des points centroides. 4. UniformAreaSampler : - Nombre N de points demandé - Répartition proportionnelle à l’aire des triangles - Échantillonnage uniforme de surface - ex : l'utilisateur demande 10 points, l'objet possède 2 faces, une face représente 80% de la surface global de l'objet et l'autre face 20%, on retourne un nuage de points avec 8 points sur la première face et 2 points sur la deuxième. 5. UniformPerface : - Nombre N de points demandé - Répartition proportionnelle par face - Échantillonnage uniforme par face - ex : l'utilisateur demande 10 points, l'objet possède 5 faces, on retourne un nuage de points avec 2 points par face. 5. UniformPerFace 2 : - Nombre N de points par face demandé - Répartition proportionnelle par face - Échantillonnage uniforme par face - ex : l'utilisateur demande 10 points par face, l'objet possède 5 faces, on retourne un nuage de points avec 10 points par face. 6. DensitySampler : - Densité d demandé - Échantillonnage uniforme par unité de surface - ex : l'utilisateur demande d = 5, on applique 5 points sur l'objet par unité de surface et on retourne la listes des points appliquées.
Sortie : - Nuage de points (format standard interne) - Export possible (ex : .obj) - Affichage dans blender
Remarques : - les algorithmes travaillent sur des faces qui sont découpés en triangles (transformation d'un face en éventaille). - l'ajout des points est aléatoire dans les faces parcourues (hormis pour les algorithmes Naif et Centroid).
Jalon 2 - Nuage de points → Maillage
Objectif : Reconstruire une surface à partir d’un ensemble de points.
Algorithmes potentiels : - Triangulation Delaunay - Alpha Shapes
Contraintes : - Gestion du bruit - Gestion des trous
Jalon 3 — Vidéo → Nuage de points
Non définie
6. Fonctionnalités détaillées
Import / Export
- Lecture .obj
- Conversion vers structure interne
- Export maillage / nuage
Conversion
- Mesh → Point Cloud
- Point Cloud → Mesh
- Vidéo → Point Cloud
Benchmark
- Mesure temps d’exécution
- Comparaison mémoire
- Comparaison densité / qualité
- Export résultats CSV
Visualisation
- Affichage 3D intégré OU
- Visualisation via Blender (script Python) (solution visée)