# CloudCompare

CloudCompare est un logiciel d'édition et de traitement de nuages de points 3D (ainsi que de maillages surfaciques triangulaires).
Il a été initialement créé pour effectuer des comparaisons entre deux nuages de points 3D denses (tels que ceux obtenus avec des scanners laser) ou entre un nuage et un maillage. Il est basé sur une structure octree particulière optimisée pour ce type d'application. Il est aussi conçu pour traiter et afficher de très gros nuages de points (plus de 10 millions de points typiquement).

## Historique

Le projet CloudCompare a démarré en 2003, lors de la thèse de Daniel Girardeau-Montaut ayant comme sujet la détection de changement sur des données géométriques tridimensionnelles et dans le cadre d'une collaboration entre Telecom ParisTech et la division R&D d'EDF. À l'époque, ce projet avait pour but principal de permettre la détection rapide de différences entre des nuages de points 3D denses issus de relevés laser effectués dans des complexes industriels (comme des centrale électriques) ou sur des chantiers de construction. Le projet à ensuite évolué vers une plateforme plus générale d'édition et de traitement de données 3D. C'est désormais un projet indépendant, libre et gratuit.

## Fonctionnalités

CloudCompare fournit un ensemble d'outils standard pour éditer et visualiser des données 3D (nuages ou maillages principalement). Il offre aussi de nombreuses fonctions avancées permettant entre autres d'effectuer :
* des projections (projection selon un axe principal, développée sur un cylindre ou un cône, etc.)
* du recalage (ICP, etc.)
* des calculs de distances (distance au plus proche voisin entre deux nuages ou entre un nuage et un maillage, etc.)
* des calculs statistiques (test du χ² spatial, etc.)
* des segmentations automatiques (extraction des composantes connexes, segmentation par propagation d'un front, etc.)
* et de l'estimation de propriétés géométriques (densité, courbure, rugosité, orientation géologique, etc.)
CloudCompare peut gérer un nombre illimité de champs scalaires par nuage de points. De nombreux algorithmes sont dédiés au traitement de ces champs scalaires (lissage, gradient statistiques, etc.) et un système de représentation dynamique des valeurs sous forme de couleurs permet une visualisation optimale de ces champs scalaires. On peut donc aussi utiliser CloudCompare pour visualiser des données multidimensionnelles (4-D ou plus).
L'utilisateur a la possibilité de segmenter interactivement des entités 3D (en dessinant une polyligne à l'écran), d'appliquer interactivement une transformation rigide (rotation + translation) à une ou plusieurs entités 3D, de sélectionner interactivement des points particuliers, des paires de points (pour mesurer leur écart) ou des triplets de points (pour mesure leur angle et la normale du plan passant par ces trois points). Enfin, la dernière version permet la création d'étiquettes 2D associées à des points ou de définir des zones rectangulaires avec annotation associée.
CloudCompare est disponible sur Windows, Linux et Mac OS X, pour des architectures 32 ou 64 bits. Le projet est développé en C++ avec Qt.

## Entrées/Sorties

CloudCompare permet de lire et de sauvegarder les formats suivants :
* BIN (format binaire propre à CloudCompare)
* ASCII (nuage sauvé avec une ligne par point, type "X Y Z ...") [wizard]
* PLY (nuage ou maillage) [wizard]
* OBJ (maillages)
* VTK (nuage ou maillage)
* STL (maillage)
* E57 (format issu du standard ASTM E2807 - nuages et photos calibrées)
* LAS et LAZ (nuages)
* PCD (nuages issus de la bibliothèque PCL)
* FBX (maillage)
* PTX (nuage)
* OFF (maillage)
* Shapefiles (polylignes, etc.)
* FLS/FWS (nuages scanners Faro)
* DP (nuages scanners DotProduct)
* RDB / RDBX / RDS (nuages scanners Riegl)
* PSZ (Photoscan)
* Divers formats de polylignes
De plus, grâce à une collaboration avec le Pr. Irwin Scollar (créateur de AirPhoto SE, un programme permettant la rectification géométrique d'images aériennes et la génération d'orthophotos à partir de plusieurs images), CloudCompare est capable d'importer les fichiers de sortie (.out) issus de l'outil Bundler de Noah Snavely. CloudCompare peut générer des versions ortho-rectifiées des images (soit directement sous forme d'images, soit sous forme de nuages de points) ainsi qu'un MNT approximatif (généré à partir des key-points de Bundler) et coloré avec les images.
CloudCompare peut aussi importer d'autres formats secondaires comme des scripts PDMS (primitives supportées: cylindre, plan, boite, cone, tore, dish, snout et profils extrudés), des fichiers provenant des vieux scanners Soisic de Mensi (SOI) ainsi que des formats propres (PN, PV, POV, ICM, etc.). Il peut aussi exporter des fichiers Maya au format ASCII (MA).

## Plugins

Un système de plugin permet d'étendre encore plus les capacités de base de CloudCompare. Deux types de plugins sont disponibles :
* des plugins standards correspondant à des portages d'algorithmes issus soit du monde académique (ShadeVis, HPR, reconstruction de maillage de type Poisson, opérations booléennes sur des maillages, etc.) ou issus de bibliothèques externes (PCL) ou autres (génération de vidéos avec qAnimation)
* des plugins OpenGL correspondant à des shaders évolués (EyeDome Lighting, SSAO, etc.)