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 de :
- 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 :
-
Algo modulaire : création d'une interface / patron d'implémentation pour les algorithmes.
-
Naïf : retourne simplement les sommets du maillage.
-
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.
- 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.
- 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.
- 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.
- 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)