Skip to content

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 :

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