Partie2_Interface.tex 72 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920
  1. \chapter{Interface}
  2. \label{cha:Interface}
  3. \section{Fenêtre principale}
  4. \label{section:mainWindow}
  5. La fenêtre principale de \emph{CloudCompare} est constituée des éléments
  6. suivants :\\
  7. \begin{center}
  8. \includegraphics[width=0.9\textwidth]{images/Partie2_Interface/MainWindow}\\
  9. \end{center}
  10. \par
  11. \textbf{\textcolor{red}{1}} : \index{menus, barre de}Barre de menus de l'application\\
  12. Cette barre permet d'accéder à la majorité des fonctions de \emph{CloudCompare} ainsi qu'aux paramètres
  13. de l'application et à divers outils de gestion de l'interfaçe graphique. En fonction des objets sélectionnés,
  14. certains des menus ou sous-menus ne sont pas accessibles (par exemple, les menus << Edit >> et << Tools >>
  15. restent inactifs tant qu'aucun objet n'est sélectionné et le sous-menu << Scalar fields >> du menu << Edit >>
  16. ne sera accessible que si l'entité sélectionnée possède au moins un champ scalaire).\\
  17. \par
  18. \textbf{\textcolor{red}{2-5}} : \index{outils, barre de}Barres d'outils\\
  19. Les différentes icônes de ces barres permettent d'accéder
  20. rapidement aux fonctions principales de \emph{CloudCompare}. Ces fonctions sont généralement aussi
  21. accessibles via les menus situés au dessus (voir \textbf{\textcolor{red}{1}}) mis à part les deux
  22. outils de modifiation interfactive des entités 3D (segmentation et transformation) et certains
  23. outils de modification de l'affichage 3D (zoom, centre de rotation, points de vue prédéfinis, etc.).
  24. \begin{itemize}
  25. \item la barre \textbf{\textcolor{red}{2}} (\emph{Main tools}) contient des icônes des fonctions de traitement
  26. des entités 3D.
  27. \item la barre \textbf{\textcolor{red}{3}} (\emph{Scalar field tools}) contient des icônes de fonctions de
  28. traitement des champs scalaires.
  29. \item la barre \textbf{\textcolor{red}{4}} (\emph{Plugins}) contient les icônes des plugins. La première partie est
  30. consacrée aux plugins de type \emph{OpenGL filters} (shaders) et la seconde aux plugins standards (algorithmes). Cette
  31. barre est remplie dynamiquement en fonction des plugins chargés par le programme au lancement.
  32. \item la barre \textbf{\textcolor{red}{5}} (\emph{Viewing tools}) permet de modifier les paramètres de visualisation 3D.
  33. \\
  34. \end{itemize}
  35. Toutes ces barres sont déplaçables (par \emph{glisser-déplacer} ou \emph{drag \& drop} en anglais).
  36. Leur visibilité peut être modifiée via le sous-menu << Display > Toolbars >>.\\
  37. \par
  38. \textbf{\textcolor{red}{6}} : \index{Arbre de navigation|see{navigation}}Arbre de navigation\\
  39. Dans cette zone apparaît une représentation graphique de la \emph{base de données} actuellement en mémoire. Elle permet de visualiser sous forme d'arborescence l'ensemble des entités chargées ou créées par l'application (voir section \ref{Arbre-de-navigation}). Il est notamment possible de sélectionner une ou plusieurs entités en cliquant sur leur nom dans cet arbre (l'autre manière de sélectionner des entités est de cliquer sur leur représentation dans la vue 3D associée - voir \textbf{\textcolor{red}{8}}). Lorsque une entité est sélectionnée, des informations et options sont affichées dans la vue \textbf{\textcolor{red}{7}} (voir ci-dessous).\\
  40. \par
  41. \textbf{\textcolor{red}{7}} : \index{propriétés, fenêtre de}Fenêtre de propriétés\\
  42. Si une seule entité est sélectionnée, cette vue contient des informations et certaines
  43. options d'affichage notamment (voir section \ref{Fenetre_proprietes}).\\
  44. \par
  45. \textbf{\textcolor{red}{8}}: \index{Vues 3D}Vues 3D\\
  46. Ces vues permettent de visualiser en trois dimensions les entités géométriques
  47. (nuages, maillages, etc.). \emph{CloudCompare} offre la possibilité de créer plusieures vues
  48. 3D à la fois. Ces vues peuvent être gérées via le menu dédié << 3D Views >>. Chaque entité
  49. peut-être affectée à une vue 3D particulière via ses propriétés (voir la liste déroulante
  50. \emph{Current Display} des propriétés communes en section \ref{subsection:commonProperties}).\\
  51. \par
  52. \textbf{\textcolor{red}{9}} : \index{console}console\\
  53. Cette zone contient l'historique des informations liées à l'exécution de \emph{CloudCompare}
  54. (typiquement des informations supplémentaires non estentielles délivrées par les algorithmes).
  55. Elle peut être affichée ou masqué via la commande \emph{Console} du menu << Display >>
  56. (raccourci clavier : F8).\\
  57. \par
  58. Dans la suite de cette section, nous allons détailler les fonctionnalités relatives à la manipulation et à la visualisation des différentes entités de la base de données de \emph{CloudCompare}. L'utilisateur pourra se référer directement au chapitre suivant (Chapitre~\ref{cha:Fonctions}) pour obtenir des informations détaillées sur les fonctions et algorithmes applicables à ces entités.\\
  59. \section{Base de données}
  60. \subsection{Arbre de navigation\label{Arbre-de-navigation}\index{navigation, fenêtre de}}
  61. \begin{center}
  62. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/DBTree}
  63. \end{center}
  64. \par
  65. Comme nous l'avons vu précédemment, \emph{CloudCompare} affiche l'ensemble des entités disponibles
  66. (chargées ou créees par l'application) dans l'arbre de navigation qui se trouve par défaut dans la
  67. partie supérieure gauche de la fenêtre principale.\\
  68. \par
  69. On peut y trouver les éléments suivants :\\
  70. \begin{tabular}{>{\raggedright}m{0.05\textwidth}>{\raggedright}m{0.95\textwidth}}
  71. \includegraphics[height=15px]{images/Partie2_Interface/hObjectSymbol} & Un groupe d'entités.
  72. Cet élément peut correspondre par exemple à un fichier ouvert (auquel cas il contient toutes les entités
  73. chargées à partir de ce fichier). Il peut aussi être créé et peuplé manuellement (voir plus bas).\tabularnewline
  74. \includegraphics[height=15px]{images/Partie2_Interface/CloudSymbol} & Un nuage de points.\tabularnewline
  75. \includegraphics[height=15px]{images/Partie2_Interface/MeshSymbol} & Un maillage triangulaire simple.\tabularnewline
  76. \includegraphics[height=15px]{images/Partie2_Interface/MeshGroupSymbol} & Un ensemble de maillages triangulaires partageant
  77. les mêmes sommets (qui sont alors contenus dans un seul nuage de points, qu'on retrouve toujours plus bas dans l'arborescence
  78. sous le nom << vertices >>).\tabularnewline
  79. \includegraphics[height=15px]{images/Partie2_Interface/OctreeSymbol} & Une structure de type \textit{octree}.\tabularnewline
  80. \includegraphics[height=15px]{images/Partie2_Interface/SensorSymbol} & Un objet de type capteur laser terrestre.\tabularnewline
  81. \includegraphics[height=15px]{images/Partie2_Interface/ImageSymbol} & Une photo non calibrée.\tabularnewline
  82. \includegraphics[height=15px]{images/Partie2_Interface/calibratedImageSymbol} & Une photo calibrée.\tabularnewline
  83. \includegraphics[height=15px]{images/Partie2_Interface/labelSymbol} & Une étiquette 2D standard (associée à un ou plusieurs point).\tabularnewline
  84. \includegraphics[height=15px]{images/Partie2_Interface/rectLabelSymbol} & Une étiquette \textit{zone 2D} (associée à un point de vue).\tabularnewline
  85. \includegraphics[height=15px]{images/Partie2_Interface/dbSymbol} & Un tableau de données partagé par plusieurs entités (des normales par exemple).\tabularnewline
  86. \includegraphics[height=15px]{images/Partie2_Interface/materialSymbol} & Un ensemble de matériaux (généralement associé à un ou plusieurs maillages).\tabularnewline
  87. \includegraphics[height=15px]{images/Partie2_Interface/viewportSymbol} & Un point de vue 3D (avec les paramètres de visualisation associés).\tabularnewline
  88. \end{tabular}\\
  89. \par
  90. De manière classique, l'\index{arborescence|see{navigation}}arborescence peut être
  91. développée ou repliée en cliquant respectivement sur les boutons \includegraphics{images/Partie2_Interface/Button+}
  92. et \includegraphics{images/Partie2_Interface/Button-} situés à gauche des jonctions de l'arbre.\\
  93. \par
  94. La case à cocher située à gauche du nom d'un élément permet elle d'activer ou de désactiver la branche de l'arbre qui en part. La notion de désactivation est plus forte qu'un simple affichage/masquage de l'entité (toute entité affichable dans une vue 3D possède une propriété générique \emph{Visible} qui permet de gérer ceci - voir plus loin). La désactivation d'une entité s'applique à l'entité elle-même et à toutes les entités qui lui sont ratachées dans l'arboresence). Ces entités ne sont pas affichées et ne sont pas non plus concernées par certaines opérations (comme la segmentation graphique interactive, voir section\ref{subsection:graphicalSegmentation}).\\
  95. \par
  96. Remarque : les groupes d'entités sont juste des \emph{conteneurs}. Ils n'aggrégent pas les caractéristiques des éléments qu'ils contiennent (un groupe de nuage n'est pas considéré comme un nuage). Typiquement, un groupe ne peut pas être utilisé comme entrée pour les fonctions de \emph{CloudCompare} : il ne sert que de classeur.\\
  97. \subsection{Sélectionner des entités\index{sélectionner!des entités}}
  98. Pour sélectionner une entité, deux possibilités s'offrent à l'utilisateur : cliquer avec le bouton gauche de la souris soit sur l'entrée correspodante dans l'arbre de navigation, soit sur sa représentation dans la vue 3D (ceci est vraie pour certaines entités seulement : nuages, maillages et étiquettes 2D). Dans les deux cas, l'entrée correspondante dans l'arbre de navigation apparaît surlignée et l'entité est entourée d'une \index{boîte englobante} boîte englobante dans \index{Vue 3D}la vue 3D où apparaît l'entité. Lorsqu'un élément est sélectionné,
  99. les informations qui s'y rapportent apparaissent dans la fenêtre de propriétés (voir section \ref{Fenetre_proprietes}).\\
  100. \par
  101. Il est possible de sélectionner plusieurs entités en ayant recours aux méthodes classiques de \index{sélection multiple|see{sélectionner}}sélection multiple :
  102. \begin{itemize}
  103. \item sélection des entités une par une en cliquant dessus (dans l'arbre de navigation ou dans une vue 3D) tout en maintenant la touche CTRL enfoncée. Pour dé-sélectionner un objet tout en conservant ceux qui ont déjà été sélectionnés, il faut cliquer une nouvelle fois dessus tout en maintenant la touche CTRL enfoncée.
  104. \item sélection d'une série continue d'entités avec la touche MAJ (dans l'arbre de navigation uniquement) : sélectionner la première entité, presser et maintenir la touche MAJ enfoncée tout en sélectionnant la dernière entité.
  105. \item toujours dans l'arbre de navigation, on peut enfin survoler les objets à sélectionner en maintenant le bouton gauche de la souris enfoncé.\\
  106. \end{itemize}
  107. \par
  108. La plupart des fonctions de \emph{CloudCompare} ne s'appliquent qu'aux entités sélectionnées.
  109. Les entrées des menus correspondantes ne sont d'ailleurs actives que lorsque l'utilisateur a sélectionné
  110. le type et le nombre d'entités appropriés (par exemple, deux nuages ou un nuage et un maillage pour le
  111. calcul de distances).\\
  112. \subsection{Intéractions avancées avec l'arbre de navigation}
  113. Il est possible de déplacer les entités dans l'arbre de navigation par \emph{drag \& drop} (pour les regrouper dans un même << groupe >> par exemple). Les << groupes >> sont crées automatiquement lors du chargement depuis un fichier (auquel cas le groupe prend le nom du fichier) mais ils peuvent aussi être créés par clic sur un élément de l'arbre de navigation (ou dans une partie vide pour créer le groupe à la racine).\\
  114. Attention : déplacer ainsi les entités change leurs relations hiérarchiques (ce qui peut avoir des conséquences importantes lors de certaines actions, comme la sauvegarde ou la suppression de l'entité parente). De plus les entités ne peuvent pas être déplacées n'importe où pour maintenir la cohérence interne de la base de données.\\
  115. \begin{center}
  116. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/contextMenuRightClick}
  117. \end{center}
  118. \par
  119. Un clic droit sur un élément de l'arbre de navigation fait apparaitre un menu contextuel (dont le contenu dépend de l'entité). On retrouve toujours les entrées suivantes :
  120. \begin{itemize}
  121. \item \emph{Toggle} - inverse l'état d'activation de l'entité
  122. \item \emph{Delete} - supprime l'entité
  123. \item \emph{Add empty group} - rajoute un << groupe >> (sous l'entité)\\
  124. \end{itemize}
  125. \par
  126. Si l'entité est affichable en 3D (nuage, maillage, étiquette 2D, etc.), des options supplémentaires permettent d'inverser l'état de \emph{visibilité} de l'entité elle-même et de ses composantes éventuelles (couleurs, normales, champ scalaire, etc.).\\
  127. \par
  128. Enfin, si l'entité possède plusieurs sous-entités dans l'arbre, des options permettant la réorganisation
  129. de ces sous-entités peuvent apparaitre (tri automatique par nom, ou tri par type).\\
  130. \subsection{Entités particulières}
  131. \subsubsection{L'octree}\index{octree}
  132. L'octree est une structure destinée à accélérer les traitements sur des données spatiales.
  133. Il s'agit d'un découpage récursif et hiérarchique de l'espace (en \emph{cubes}).
  134. \emph{CloudCompare} associe les nuages de points avec une telle structure dans de très nombreux cas pour accélerer ses traitements. C'est un type d'octree particulier qui est particulièrement rapide à construire, et optimisé pour la recherche de plus proches voisins (\textit{ce n'est par contre pas un octree efficace pour l'affichage de type L.O.D. - level of detail - typiquement}).\\
  135. \par
  136. D'un point de vue général, l'octree est défini par \emph{niveaux de subdivison} :
  137. \begin{itemize}
  138. \item Le premier niveau (niveau 0) est le plus petit cube englobant entièrement
  139. le nuage de points (une version \textit{cubifiée} de la boite englobante).
  140. \item Au niveau $N+1$, l'octree est construit en subdivisant chacun des cubes du
  141. niveau $N$ en 8 sous-cubes de même taille (en pratique on ne se souvient que des
  142. sous-cubes contenant au moins un point).\\
  143. \end{itemize}
  144. \par
  145. Il n'est pas inintéressant pour l'utilisateur de comprendre le principe de cette structure, puisqu'elle occupe une place centrale dans \emph{CloudCompare}.\\
  146. \par
  147. Plus le niveau d'octree est élevé :
  148. \begin{itemize}
  149. \item plus le nombre de cubes à traiter est élevé : potentiellement $8^{N}=2^{3N}$
  150. cubes au niveau $N$. Pour un ordre d'idées, et bien que cela soit très peu probable, on peut donc
  151. avoir jusqu'à $2^{21}=2~097~152$ de cubes au niveau 7 de l'octree. Au niveau 10, on a
  152. $2^{30}$ cubes, soit un peu plus d'un milliard ! (là encore, cela est extrêmement peu
  153. probable ... d'autant plus qu'il faudrait au moins autant de points). En pratique, beaucoup
  154. de cubes sont vides et ne sont donc pas conservés en mémoire, d'où une structure
  155. généralement beaucoup plus compacte. Enfin, \emph{CloudCompare} utilise un codage spécial
  156. de l'octree qui fait que sa taille est toujours égale au nombre de points du
  157. nuage, et ne dépend donc pas de la répartition spatiale de celui-ci. \textbf{C'est aussi pour cette
  158. raison que le niveau maximal d'un octree est fixé à 10 dans la version actuelle de \emph{CloudCompare}} (ce qui permet de coder la position de chaque point et pour tous les niveaux de l'octree sur 3*10 = 30 bits, ce qui tient dans une valeur entière de 4 octets = 32 bits, soit un codage par point pas trop gourmand en mémoire).
  159. \item plus les cubes sont petits : si $a_{N}$ est la taille d'une arête
  160. du cube au niveau $N$ (donc $a_{0}$ est la taille du cube initial), $a_{N}=\frac{a_{0}}{2^{N}}$.
  161. En effet, par construction, on divise par deux la taille des cubes selon chaque dimension lorsque l'on descend d'un niveau. Par exemple, les cellules de l'octree au niveau 5 d'un octree sont 32 fois plus petites que la cellule initiale englobant tout le nuage (au niveau 0).
  162. \item plus le nombre de points par cube est faible : intuitivement, les cubes étant plus petits, ils contiennent (statistiquement) moins de points.
  163. \item plus l'enveloppe de l'octree (la surface globale qui serait formée par l'ensemble des surfaces externes des cubes) est proche du nuage de points originale.\\
  164. \end{itemize}
  165. \begin{figure}[!htb]
  166. \begin{center}
  167. \includegraphics[width=0.3\textwidth]{images/Partie2_Interface/OctreeLevel1}\hfill{}\includegraphics[width=0.3\textwidth]{images/Partie2_Interface/OctreeLevel3}\hfill{}\includegraphics[width=0.3\textwidth]{images/Partie2_Interface/OctreeLevel6}\\
  168. \caption{\label{fig:octreeLevel}Cellules à différents niveaux d'octree : niveau
  169. 1 (gauche), 3 (milieu) et 6 (droite).}
  170. \end{center}
  171. \end{figure}
  172. Les 3 captures d'écran de la figure~\ref{fig:octreeLevel} donnent un aperçu de la répartition
  173. et de la taille des cellules d'octree à differents niveaux de subdivision.\\
  174. Beaucoup de traitements sur les nuages de points ont recours à un octree. Lorsque cela est possible, le niveau d'octree optimal pour les calculs à effectuer est déterminé de manière automatique par \emph{CloudCompare}. Toutefois, certains algorithmes peuvent demander à l'utilisateur de spécifier un niveau spcifique à utiliser. Dans ces situations, il s'agit généralement pour l'utilisateur de trouver un niveau qui aboutisse au meilleur compromis entre le nombre de cubes à traiter (qu'on ne veut généralement pas trop grand, donc une valeur de niveau pas trop élevée) et le nombre moyen de points par cube (qu'on ne veut généralement le plus petit possible, donc une valeur de niveau ... pas trop faible). Trouver le bon niveau peut parfois nécessiter une certaine expérience.\\
  175. \subsubsection{Etiquettes 2D et annotation graphique\index{etiquettes}\label{etiquettes_2D}}
  176. CloudCompare permet d'annoter\index{annotation} un ensemble d'entités 3D via des étiquettes (\textit{2D labels}) de différents types.\\
  177. \par
  178. Remarque : ces étiquettes peuvent être sauvées via le format binaire propre à CloudCompare (BIN).\\
  179. \par
  180. \textbf{Etiquette standard}\label{subsection:standardLabel}\\
  181. \begin{figure}[!htb]
  182. \begin{centering}
  183. \includegraphics[width=0.8\textwidth]{images/Partie2_Interface/standardLabels}
  184. \caption{\label{fig:standardLabels}Etiquettes standards}
  185. \end{centering}
  186. \end{figure}
  187. Le premier type, \emph{2D label}, correspond aux étiquettes (mobiles) rattachées à un ou plusieurs points :
  188. \begin{itemize}
  189. \item un point : l'étiquette continent les coordonnées du point, son indice dans le nuage et les valeurs de ses différents champs (couleur, normale, champ scalaire affiché)
  190. \item deux points (segment) : l'étiquette contient les coordonnées de chaque point et leur indice respectif dans le(s) nuage(s) ainsi que la distance entre les deux points
  191. \item trois points (triangle) : l'étiquette contient les coordonnées de chaque point et leur indice respectif dans le(s) nuage(s), l'aire du triangle ainsi défini, la normale au triangle, et enfin l'angle au niveau du premier point (\textsl{l'ordre de sélection des points est donc important})\\
  192. \end{itemize}
  193. \par
  194. La représentation graphique des étiquettes standards peut être modulée en fonction des besoins : leur titre peut être affiché en 3D à côté du ou des points auxquelles elles sont associées, tandis que leur représentation 2D peut être soit affichée totalement, soit affichée de manière condensée soit encore cachée. La représentation 2D a de plus une transparence réglable (via les paramètres d'affichage généraux de CloudCompare - voir section\ref{subsection:displaySettings}). A l'instar des nuages de points ou les maillages, les étiquettes standards peuvent être sélectionnées à l'écran (sélection multiple ou individuelle).\\
  195. \par
  196. Les étiquettes rattachées à un unique point peuvent être créées très facilement (\textit{à la volée}) par un simple clic sur le point en maintenant la touche SHIFT enfoncée. Autrement, tous les autres type d'étiquettes peuvent être crées avec l'outil 'Point Picking' (Cf. section \ref{subsection:pointPicking}).\\
  197. \par
  198. \textbf{Etiquette \emph{zone 2D}}\label{subsection:zoneLabel}\\
  199. \begin{figure}[!htb]
  200. \begin{centering}
  201. \includegraphics[width=0.5\textwidth]{images/Partie2_Interface/zoneLabels}
  202. \caption{\label{fig:standardLabels}Etiquettes \emph{zone 2D}}
  203. \end{centering}
  204. \end{figure}
  205. \par
  206. Le second type d'étiquette, \emph{2D area label}, correspond aux étiquettes fixes rattachées à un point de vue. Ce sont des zones rectangulaires (définies par l'utilisateur à l'écran) associées à un commentaire textuel.\\
  207. \par
  208. Etant donné que ce qui apparaît dans la zone délimitée par l'étiquette dépend du point de vue (orientation de la caméra, etc.), l'étiquette n'apparait que lorsque la caméra est dans la même position (et avec les mêmes paramètres) que lorsqu'elle a été créée (seuls certains paramètres peuvent être compensés automatiquement, comme le zoom ou le panning en mode orthographique). Pour simplifier la tâche de l'utilisateur, les étiquettes \emph{zone 2D} sont donc capables de rétablir ces paramètres dans la vue 3D associée (un bouton \emph{Apply} se trouve dans les propriétés de l'étiquette - voir section \ref{subsection:zoneLabelProp}).
  209. \section{Affichage des entités}
  210. \subsection{Vues 3D\label{Contexte-graphique}\index{Vue 3D}}
  211. \subsubsection{Présentation}
  212. Les vues 3D (voir figure~\ref{fig:Context3D}) sont les sous-fenêtres dans lesquelles sont affichées les entités.
  213. Elles possèdent un fond (qui peut-être un dégradé de couleur ou une couleur unique - voir les paramètres d'affichage
  214. généraux en section \ref{subsection:displaySettings}), par dessus lequel sont affichées les entités 3D (nuages, maillages,
  215. etc.) et encore par dessus, des éléments d'interface ou des entités 2D (étiquettes, échelle de couleur, etc.).\\
  216. Voici les éléments standards qui composent une vue 3D :
  217. \begin{itemize}
  218. \item \textbf{\textcolor{red}{1}} : les entités 3D, éventuellement encadrées par leur boite englobante\footnote{Aussi appellée \textit{bounding-box}. Il s'agit du plus petit parallélépipède rectangle aligné avec les axes principaux (X,Y,Z) et qui contienne l'intégralité des entités sélectionnées} si elles sont sélectionnées).
  219. \item \textbf{\textcolor{red}{2}} : l'\index{echelle@échelle!de distances}échelle fournit une référence pour
  220. l'estimation des dimensions. Sa longueur est exprimée dans l'unité \textit{impliticte} courante (i.e. l'unité implicite des coordonnées de la ou des entités affichées, telles qu'elles ont été chargées depuis leur fichier d'origine - \emph{CloudCompare} n'utilise pas d'unité explicite).
  221. \item \textbf{\textcolor{red}{3}} : le \index{trièdre d'orientation}trièdre d'orientation représente l'orientation
  222. courante des trois axes principaux : X (rouge), Y (vert) et Z (bleu).
  223. \item \textbf{\textcolor{red}{4}} : nom du \index{champ scalaire}champ scalaire actif et sa
  224. \index{rampe de couleurs}\index{echelle@échelle!de couleurs|see{rampe de couleurs}}rampe de couleurs associée.
  225. \item \textbf{\textcolor{red}{5}} : informations temporaires concernant l'affichage ou l'action en cours. Il peut s'agir de la dimension courante de la vue 3D (en pixels - après un redimensionnement de la fenêtre), du type de projection utilisé, etc.
  226. \item \textbf{\textcolor{red}{6}} : \index{étiquette 2D}étiquette 2D standard (ici associée à un point 3D d'un nuage). Ces étiquettes s'affichent toujours par dessus les objets 3D (leur transparence est réglable). Pour plus d'information, Cf. section\ref{etiquettes_2D}.
  227. \item \textbf{\textcolor{red}{7}} : \index{Annotation}étiquette \textit{zone 2D}. Ces étiquettes particulières
  228. permettent d'annoter une zone précise de l'écran et sont donc liées à un point de vue (qu'elles sont capable de rétablir sur demande) et non à une entité.\\
  229. \end{itemize}
  230. \begin{figure}[!htb]
  231. \begin{centering}
  232. \includegraphics[width=0.8\textwidth]{images/Partie2_Interface/View3D}
  233. \caption{\label{fig:Context3D}Eléments standards d'une vue 3D}
  234. \end{centering}
  235. \end{figure}
  236. Seuls l'échelle et le trièdre d'orientation sont visibles en permanence.
  237. Les autres informations dépendent de l'état courant de l'application.\\
  238. \subsubsection{Interagir avec une vue 3D\label{subsection:Interactivité}}
  239. Vous pouvez intéragir avec une vue 3D en utilisant la\index{souris} souris (figure \ref{fig:mouseButtons}) :\\
  240. \begin{figure}[!htb]
  241. \begin{centering}
  242. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/Souris}
  243. \caption{\label{fig:mouseButtons}Commandes via la souris (L : [SELECTION/ROTATION], M : [ZOOM], R : [PAN])}
  244. \end{centering}
  245. \end{figure}
  246. \begin{itemize}
  247. \item \textbf{\textcolor{red}{L}} - clic gauche court : [SELECTION] cliquez sur un objet
  248. dans la vue 3D pour le sélectionner.
  249. \item \textbf{\textcolor{red}{L}} - clic gauche maintenu : [ROTATION] maintenez le bouton gauche
  250. de la souris enfoncé et déplacez la souris pour effectuer une rotation
  251. du point de vue autour du \textit{pivot} courant (cf. sections
  252. \ref{subsection:centeredPerspective} et \ref{subsection:viewerPerspective} ou encore
  253. les paramètres caméras en section \ref{subsection:cameraSettings} ou enfin l'outil de
  254. picking du centre de rotation en section \ref{Options-affichage}).
  255. \item \textbf{\textcolor{red}{M}} - roulement : [ZOOM] faites rouler la molette
  256. vers l'avant (ou vers \og le haut \fg{}) pour effectuer un \index{zoom}zoom positif
  257. dans la vue 3D et inversement, faites rouler la molette vers l'arrière (ou \og le
  258. bas \fg{}) pour effectuer un zoom négatif.
  259. \item \textbf{\textcolor{red}{R}} - clic droit court : sur les étiquettes 2D, un clic droit court
  260. permet de la condenser ou inversement de rétablir son extension maximale.
  261. \item \textbf{\textcolor{red}{R}} - clic droit maintenu : [PANNING] maintenez le bouton droit
  262. de la souris enfoncé et déplacez la souris pour effectuer une translation du point de vue
  263. dans le plan écran.\\
  264. \end{itemize}
  265. Par défaut, la visualisation se fait selon une projection orthographique (sans perspective) et le
  266. centre de rotation est positionné sur le centre de la boite englobant toutes les entités affichées
  267. dans la vue 3D. Lors du changement de point de vue (rotation, translation), les gros
  268. nuages de points ou les gros maillages sont temporairement sous échantillonnés de manière à permettre
  269. le rendu interactif des mouvements (ce comportement est paramètrable - voir section\ref{subsection:displaySettings}).\\
  270. \subsubsection{Utiliser plusieurs vues 3D\label{Environnement-multi-contextes}}
  271. Dans CloudCompare, un nombre quelconque de vues 3D peut être créé, et chaque entité peut être
  272. assignée séparémment à une vue 3D particulière.\\
  273. Pour créer une nouvelle vue 3D, cliquez sur la commande
  274. \emph{New} dans le menu << 3D views >>, ou utilisez le raccourci clavier
  275. CTRL+F3. Une nouvelle fenêtre apparaît alors (par défaut elle sera maximisée).\\
  276. \par
  277. Pour partager l'espace d'affichage entre les différentes vues 3D,
  278. différents choix s'offrent à l'utilisateur :
  279. \begin{itemize}
  280. \item \emph{Tile} (partitionnement) : chaque fenêtre occupe une portion
  281. "équivalente de l'espace disponible, les fenêtres ne se chevauchent pas.
  282. \item \emph{Cascade} : chaque fenêtre occupe la même portion d'espace
  283. prédéfinie, elles sont décalées de manière régulière en se chevauchant.
  284. \item redimensionnement manuel : de manière classique chaque vue 3D
  285. peut-être déplacée et redimensionnée, en s'aidant notamment des boutons \includegraphics{images/Partie2_Interface/ReduceContext}(minimiser
  286. la vue) et \includegraphics{images/Partie2_Interface/MinimizeContext}(réduire
  287. la vue) disponibles en haut à droite de chaque fenêtre.\\
  288. \end{itemize}
  289. \par
  290. Il est aussi possible de naviguer entre les différentes vues via les commandes
  291. \emph{Next} et \emph{Previous} du menu << 3D views >>, ou en accédant directement
  292. à la vue désirée en cliquant sur son nom dans ce même menu.\\
  293. \par
  294. Pour fermer une vue 3D, utilisez l'entrée \emph{Close} du menu << 3D views >> (après
  295. avoir activé cette fenêtre en cliquant dessus) ou plus simplement utilisez le bouton \includegraphics{images/Partie2_Interface/CloseContext} de la fenêtre.\\
  296. \par
  297. Enfin, pour changer la \index{afficher!des objets}vue 3D dans laquelle une entité
  298. apparaît, sélectionnez cette entité puis modifiez la valeur courante de la liste
  299. déroulante \emph{Current Display} dans la fenêtre de propriétés.
  300. \begin{center}
  301. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/ChangeContext}
  302. \par
  303. \end{center}
  304. Remarque : il est possible de n'afficher une entité dans aucune vue 3D en choisissant
  305. \emph{None} comme \textit{contexte} de destination.\\
  306. \subsubsection{Camera link\label{subsection:cameraLink}}
  307. Les vues 3D sont indépendantes les unes des autres, et les changements de point de vue dans une vue 3D particulière n'ont a priori aucune répercussion sur les autres vues 3D. Toutefois, il est possible de synchroniser les mouvements de caméra pour qu'ils soient appliqués à toutes les \index{Vues 3D} vues 3D en même temps. Pour ce faire il suffit de cocher l'option
  308. \emph{Camera link} située juste sous l'arbre de navigation.
  309. \begin{center}
  310. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/CameraLink}\\
  311. \par\end{center}
  312. \subsection{Options d'affichage\label{Options-affichage}}
  313. \subsubsection{Barre d'outils \textit{Viewing Tools}}
  314. Un certain nombre d'icônes et d'outils permettent à l'utilisateur de contrôler l'affichage courant.
  315. La majeure partie d'entre eux sont accessibles via la \index{outils, barre de}barre d'outils \emph{Viewing tools} :
  316. \begin{center}
  317. \begin{tabular}{>{\centering}m{0.05\textwidth}>{\raggedright}m{0.95\textwidth}}
  318. \multicolumn{2}{c}{\includegraphics[height=21px]{images/Partie2_Interface/ViewToolBar}}\tabularnewline
  319. \includegraphics[height=15px]{images/Partie2_Interface/cc_settings} & Changer les paramètres \index{eclairage@éclairage}d'affichage généraux (couleurs, matériaux, taille de la police, précision numérique des valeurs affichées, etc. - voir section\ref{subsection:displaySettings}).\tabularnewline
  320. \includegraphics[height=15px]{images/Partie2_Interface/Camera} & Changer les paramètres de caméra de la fenêtre 3D courante (orientation et centre de rotation, etc. - voir section\ref{subsection:cameraSettings}).\tabularnewline
  321. \includegraphics[height=15px]{images/Partie2_Interface/ZoomGlobal} & \index{zoom}Zoomer et recentrer la \index{point de vue}caméra pour rendre visibles toutes les entités affichées dans la vue 3D courante.\tabularnewline
  322. \includegraphics[height=15px]{images/Partie2_Interface/cc_pickCenter} & Sélection du centre de rotation par picking d'un point à l'écran.\tabularnewline
  323. \includegraphics[height=15px]{images/Partie2_Interface/ZoomCenter} & Zoomer et recentrer la caméra sur la ou les entités sélectionnées. Aucun effet si aucun objet n'est sélectionné.\tabularnewline
  324. \includegraphics[height=15px]{images/Partie2_Interface/ChangeView} & Les 6 derniers boutons permettent de basculer entre différents points de vue prédéfinis (dans l'ordre où les boutons apparaissent : haut, avant, gauche,
  325. arrière, droit, bas). Ces points de vue sont définis par rapport au \index{trièdre d'orientation}trièdre d'orientation. \tabularnewline
  326. \end{tabular}\\
  327. \end{center}
  328. \subsubsection{Menu \textit{Display}}
  329. D'autres fonctionnalités relatives à l'affichage sont accessibles via le menu \emph{Display} :
  330. \begin{itemize}
  331. \item \emph{Full screen} : basculer la fenêtre principale entre l'affichage standard et l'affichage \index{plein écran}plein
  332. écran (raccourci clavier: F11).
  333. \item \emph{Refresh} : forcer l'actualisation de l'affichage (raccourci clavier : F5).
  334. \item \emph{Test frame rate} : lancer un test d'estimation du \index{rafraîchissement, taux de}taux de rafraîchissement
  335. (exprimé en 'f.p.s' = \textit{frame per second} ou images par seconde en français) pour la vue 3D courante. En théorie, plus il y a de triangles ou de points à afficher, plus le taux de rafraîchissement devrait être faible. Il est admis qu'en deçà d'une vingtaine d'images par seconde, l'humain perçoit l'affichage comme étant saccadé (au delà de 24 f.p.s, l'affichage est perçu comme étant fluide).
  336. \item \emph{Toggle centered perspective} : basculer entre la projection par défaut (parallèle orthographique) et la projection perspective avec le centre de rotation de la caméra placé par défaut sur le centre de la boite englobant toutes les entités affichées (raccourci clavier : F3).
  337. \item \emph{Toggle viewer based perspective} : basculer entre la projection par défaut (parallèle orthographique) et la projection perspective avec le centre de rotation de la caméra placé par défaut en son centre optique (l'oeil virtuel de l'utilisateur) (raccourci clavier : F4).
  338. \item \emph{Light > Toggle sun light} : activer ou \index{eclairage@éclairage}désactiver
  339. la lumière globale (raccourci clavier : F6).
  340. \item \emph{Light > Toggle custom light }: activer ou désactiver
  341. la lumière personnalisée (raccourci clavier : F7). Cette source de lumière peut être déplaçée en maintenant la touche CTRL
  342. enfoncée tout en faisant un \emph{pan} avec la souris à l'écran - voir section\ref{subsection:Interactivité}).\\
  343. \end{itemize}
  344. \par
  345. Remarque : les effets d'ombrage permis par les normales d'un nuage ou d'un maillage ne sont visibles que si au moins une source lumineuse est active.\\
  346. \subsubsection{Taille des points 3D\label{pointSizeModification}}
  347. La taille des points affichés dans une vue 3D est modifiable via des \textit{interacteurs} qui apparaissent
  348. directement en surimpression de la vue lorsque la souris survole son coin haut-gauche.
  349. \begin{center}
  350. \includegraphics[width=0.3\textwidth]{images/Partie2_Interface/PointSizeDlg}
  351. \par\end{center}
  352. Pour modifier la \index{taille des points}taille d'affichage des points, il suffit de cliquer sur '-' ou '+'. Un point de référence à la taille courante apparaît entre les deux interacteurs.\\
  353. \section{Fenêtre de propriétés}\index{propriétés, fenêtre de}\label{Fenetre_proprietes}
  354. La fenêtre de propriétés contient toutes les informations sur l'entité sélectionnée, ainsi que des options modifiables par l'utilisateur (visiblité de certains composants, etc.).
  355. \subsection{Propriétés communes des entités affichables}\label{subsection:commonProperties}
  356. Certains champs sont communs à (presque) toutes les entités affichables. On les retrouve dans la section \emph{CC Object} :
  357. \begin{center}
  358. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/CommonProperties}
  359. \par\end{center}
  360. \begin{itemize}
  361. \item \emph{Name} : \index{renommer}nom de l'entité. Il peut être modifié en cliquant sur l'entrée correspondant à l'entité dans l'arbre de navigation (voir \ref{Arbre-de-navigation}) ou encore en utilisant le raccourci clavier F2.
  362. \item \emph{Unique ID} : toutes les entités CloudCompare sont représentées en interne par un identifiant unique.
  363. \item \emph{Children} : le nombre de sous-éléments (ou \textit{enfants}) rattachés à cette entité. Dans la capture ci-dessus par exemple, l'objet sélectionné est un groupe de maillages regroupant 758 sous-maillages, un nuage de points et un tableau de normales compressées, soit 760 sous-entités au total).
  364. \item \emph{Visible} : spécifie si l'entité doit être affichée dans la vue 3D associée ou non. La propriété 'Visible' n'est pas héréditaire (contrairement à l'état d'activation de l'entité, qui correspond à la case à cocher présente au niveau de l'arbre de navigation et qui concerne toutes les entités présentes dans le reste de la branche). Si l'entité est sélectionnée, la boite englobante reste visible même si la propriété \emph{Visible} est désactivée.
  365. \item \emph{Colors} (optionnelle) : si l'entité sélectionnée possède des couleurs, une case à cocher \emph{Colors} apparait ici. Elle permet de spécifier si ces couleurs doivent être utilisées lors de l'affichage de l'entité ou non. Remarque : la propriété \emph{Scalar field} (voir ci-dessous) est toujours prioritaire par rapport à \emph{Colors}.
  366. \item \emph{Normals} (optionnelle) : si l'entité sélectionnée possède des normales, une case à cocher \emph{Normals} apparait ici. Elle permet de spécifier si ces normales doivent être utilisées lors de l'affichage de l'entité ou non. Les normales\index{normales}\index{eclairage@éclairage} permettent d'obtenir un rendu visuel semi-réaliste des objets en faisant varier la teinte des points ou facettes associéess en fonction de la position de l'éclairage. Si les normales sont désactivées, la surface de l'objet est affichée dans une couleur uniforme (effet \og silhouette \fg{}, avec une perte de la perception des profondeurs). \textit{Le plugin \emph{qEDL} (voir section\ref{qEDL}) est une excellente alternative aux normales. Il simule en temps réel un éclairage encore plus réaliste, sans information autre que la position des points ou des objets.}
  367. \item \emph{Scalar field} (optionnelle) : si l'entité sélectionnée possède un ou plusieurs champs scalaires, une case à cocher \emph{Scalar field} apparait ici. Elle permet de spécifier si le champ scalaire couramment affiché (voir la liste déroulante \emph{Current} dans la section \emph{Scalar field} des proprités) doit être utilisé lors de l'affichage de l'entité ou non. Si un champ scalaire courant est défini dans la liste déroulante \emph{Current}, alors ce champ scalaire sera toujours affiché en priorité par rapport aux éventuelles couleurs de l'entité.
  368. \item \emph{Current display} : cette liste déroulante permet de choisir la vue 3D dans laquelle l'objet sera affiché
  369. (cf. section \ref{Environnement-multi-contextes}).
  370. \item \emph{Box dimensions} : les dimensions de la boite englobante de l'entité.
  371. \item \emph{Box center} : le centre de la boite englobante de l'entité.\\
  372. \end{itemize}
  373. \par
  374. \subsection{Propriétés propres aux nuages de points}\label{subsection:pointCloudProperties}
  375. La section \emph{Cloud} est réservée aux nuages de points. Elle contient les champs suivants :
  376. \begin{itemize}
  377. \item \emph{Points} : le nombre de points du nuage.
  378. \item \emph{Global shift}\index{centrage automatique au chargement} : la translation qui a été éventuellement appliquée au chargement du nuage par CloudCompare (généralement pour rammener ses coordonnées à des valeurs compatibles avec un stockage en flottant sur 32 bits). C'est typiquement le cas des nuages exprimés dans des systèmes de coordonnées à l'échelle d'un pays (UTM, etc.), avec des valeurs dépassant les millions. Dans ce cas, CloudCompare propose à l'utilisateur de recentrer automatiquement l'entité. Cette translation est conservée tout au long de la vie de l'entité puis elle sera éventuellement ré-appliquée aux points lors la sauvegarde de l'entité (si le format le permet).
  379. \\
  380. \end{itemize}
  381. \begin{center}
  382. \includegraphics[width=0.5\textwidth]{images/Partie2_Interface/PointCloudProperties}
  383. \end{center}
  384. \subsection{Propriétés propres aux maillages ou groupes de maillages}\label{propMaillages}
  385. \begin{center}
  386. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/MeshProperties}\\
  387. \end{center}
  388. \index{maillage}
  389. Les entités maillages ou groups de maillages deux types d'entités partagent les mêmes propriétés :
  390. \begin{itemize}
  391. \item \emph{Faces} : le nombre de facettes composant le maillage. Dans le cas d'un groupe de maillages, ce nombre correspond au nombre total de facettes de tous les sous-maillages rattachés à ce groupe.
  392. \item \emph{Wireframe} : \index{fil de fer, rendu}\index{WireFrame|see{fil de fer}}permet
  393. d'activer le rendu en \og fil de fer \fg{} du maillage (seules les arrêtes des triangles sont affichées et non l'intérieur - voir figure \ref{fig:MeshWireframeRendering}).\\
  394. \end{itemize}
  395. \begin{figure}[!htb]
  396. \begin{center}
  397. \includegraphics[width=0.6\textwidth]{images/Partie2_Interface/MeshWireframeRendering.png}
  398. \caption{\label{fig:MeshWireframeRendering}Exemple de rendu en \textit{fil de fer} d'un maillage}
  399. \end{center}
  400. \end{figure}
  401. \subsection{Propriétés communes aux nuages et maillages}
  402. \subsubsection{Champs scalaires (Scalar fields)\label{Champs-scalaires}\index{champ scalaire}}
  403. Certains traitements effectués sur les nuages de points permettent d'associer à chaque point une valeur numérique (un \textit{scalaire}). L'ensemble de ces valeurs scalaires constitue une structure appelée \emph{Champ Scalaire}
  404. (ou \emph{Scalar field}). Les champs scalaires sont toujours rattachés à un nuage de points. Néanmoins, pour une meilleure ergonomie, les maillages dont les sommets portent des champs scalaires se comportent comme s'ils portaient eux-même ces champs scalaires (ils sont d'ailleurs aussi capables de les utiliser lors de leur affichage 3D). Les propriétés propres à ces champs scalaires apparaissent donc de la même manière au niveau d'un nuage de point qu'au niveau d'un maillage dont les sommets portent un champ scalaire.\\
  405. \begin{center}
  406. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/SFProperties}\\
  407. \end{center}
  408. Il est possible de rattacher plusieurs champs scalaires à un même nuage, mais un seul peut être actif (i.e. \textit{affiché}) à un instant donné. Le nombre de champs scalaires associés à une entité correspond d'ailleurs à la première entrée (\emph{Number}) de la section \emph{Scalar Field}.
  409. \par
  410. En dessous se trouve une liste déroulante (\emph{Current}) permettant de spécifier le champ scalaire actif. Chaque champ scalaire à un nom unique. Celui-ci peut-être modifié par l'utilisateur via la commande << Edit > Scalar fields > Rename >> (Cf. section\ref{subsection:sfRename}).
  411. \par
  412. Ensuite vient l'entrée \emph{Color ramp} permettant de choisir la rampe de couleur\index{rampe!de couleurs} utilisée pour l'affichage du champ scalaire sous forme de fausses couleurs (voir la section suivante pour plus de détails). Elle est suivie de l'entrée \emph{Color ramp steps} qui permet de spécifier le nombre de couleurs différentes utilisées pour l'affichage en fausses couleurs. Par exemple, utiliser un nombre très faible de couleurs sur une entité dense permet d'obtenir un effet \textit{lignes de niveau}.
  413. \par
  414. Enfin, la dernière entrée de la section \emph{Scalar Field} est la case à cocher \emph{Postive} qui permet de spécifier si le champ scalaire doit être considéré comme strictement positif (auquel cas toutes les valeurs négatives sont considérées comme étant des valeurs invalides, de type \emph{NaN} = \textit{not a number}). Sinon, CloudCompare considère toutes les valeurs comme étant valides. Cette propriété influe directement sur la manière dont la correspondance \textit{valeur scalaire - couleur} est calculée (voir ci-dessous).
  415. \subsubsection{Rampe de couleurs (SF Scale)\label{Rampe-de-couleurs}\index{Rampe de couleur}}
  416. La section \emph{SF Scale} est consacrée à l'affichage du champ scalaire actif en fausses couleurs. Elle est en pratique toujours présente si un champ scalaire est activé (i.e. sélectionné dans la liste déroulante \emph{Current} - voir ci-dessus).\\
  417. Différentes \index{rampes de couleurs} rampes de couleurs (ou encore \textit{échelles de couleurs}) sont disponibles. Chacune correspond à un dégradé de couleurs, la première couleur étant associée à la valeur minimale \emph{de saturation} du champ scalaire et la dernière couleur à la valeur maximale \emph{de saturation}. Les couleurs intermédiaires sont associées aux valeur scalaires équivalentes de manière linéaire.\\
  418. \par
  419. Remarque : dans le cas d'un champ scalaire non strictement positif, il est possible de spécifier une échelle de couleur avec saturation \emph{absolue}, auquel cas l'échelle de couleur courante est coupée en deux et est utilisée de manière symétrique pour les valeurs négatives ou positives (voir plus bas).
  420. \begin{center}
  421. \begin{tabular}{>{\raggedright}p{0.15\textwidth}>{\centering}p{0.8\textwidth}}
  422. & valeur minimale\hfill{}valeur maximale\tabularnewline
  423. Bleu à rouge : & \includegraphics[angle=270,width=0.7\textwidth]{images/Partie2_Interface/ScalarRampBlueRed}\tabularnewline
  424. Niveaux de gris : & \includegraphics[angle=270,width=0.7\textwidth]{images/Partie2_Interface/ScalarRampGrey}\tabularnewline
  425. Rouge à jaune : & \includegraphics[angle=270,width=0.7\textwidth]{images/Partie2_Interface/ScalarRampYellowRed}\tabularnewline
  426. Rouge à blanc : & \includegraphics[angle=270,width=0.7\textwidth]{images/Partie2_Interface/ScalarRampRedWhite}\tabularnewline
  427. \end{tabular}
  428. \par
  429. \end{center}
  430. \emph{CloudCompare} permet à l'utilisateur de paramétrer finement \index{plage!de saturation}\index{plage!d'affichage} la manière dont les valeurs du champ scalaire courant sont affichées en fausses couleurs (et ce de manière dynamique). Quatre valeurs clés sont modifiables interactivement :
  431. \begin{center}
  432. \includegraphics[width=1\textwidth]{images/Partie2_Interface/SFViewerCursors}
  433. \par\end{center}
  434. \begin{itemize}
  435. \item \textbf{\textcolor{red}{1}} : \index{min!displayed value|see{plage d'affichage}}
  436. Valeur minimale affichée (\textsl{min displayed value}). Toutes les valeurs scalaires inférieures sont ignorées (et sont alors considérées comme étant de type \emph{NaN} - voir plus bas).
  437. \item \textbf{\textcolor{red}{2}} : \index{min!saturation value|see{plage de saturation}}
  438. Valeur minimale de saturation (\textit{min saturation value}). Tous les valeurs inférieures (et donc comprises entre \textit{min displayed} et \textit{min saturation}) sont affichées avec la (même) couleur, \og la
  439. plus faible \fg{} de la rampe (ici en bleu).
  440. \item \textbf{\textcolor{red}{3}} : \index{max!saturation value|see{plage de saturation}}
  441. Valeur maximale de saturation (\textit{max saturation value}). Tous les valeurs supérieures (et donc comprises entre \textit{max saturation} et \textit{max displayed}) sont affichées avec la (même) couleur, \og la
  442. plus forte \fg{} de la rampe (ici en rouge).
  443. \item \textbf{\textcolor{red}{4}} : \index{max!displayed value|see{plage d'affichage}}
  444. Valeur maximale affichée (\textit{max displayed value}). Toutes les valeurs scalaires supérieures sont ignorées (et sont alors considérées comme étant de type \emph{NaN} - voir plus bas).\\
  445. \end{itemize}
  446. \par
  447. La manière dont sont traitées les \index{NaN|see{valeurs ignorées}}\index{valeurs ignorées}valeurs de type \emph{NaN} (valeurs invalides ou volontairement ignorées par l'utilisateur via le réglagle des valeurs \textit{min displayed} \textbf{\textcolor{red}{(1)}} et \textit{max displayed}) \textbf{\textcolor{red}{(4)}} se règle via la case à cocher \emph{Nan in grey}. Si celle-ci est cochée, les points associés à ces valeurs scalaires sont affichés avec une couleur grise par défault. Sinon ces points ne sont pas affichés.\\
  448. Les quatre valeurs clés présentées précédemment permettent donc de définir plusieurs plages :
  449. \begin{itemize}
  450. \item les valeurs affichables, pour lesquelles les points sont effectivement affichés en fausses couleurs. Le comportement en dehors de cette plage dépend de la propriété \emph{Nan in grey}.
  451. \item la plage de saturation, en dehors de laquelle la variation des couleurs est désactivée. La borne inférieure de cet intervalle est associée à la première couleur de l'échelle, la borne supérieure à la dernière
  452. couleur, et le reste des couleurs est réparti linéairement entre ces bornes.\\
  453. \end{itemize}
  454. \par
  455. \emph{CloudCompare} vérifie en permanence la cohérence des valeurs saisies : on ne peut pas avoir \textbf{\textcolor{red}{(1)}}~$>$~\textbf{\textcolor{red}{(4)}} ni \textbf{\textcolor{red}{(2)}}~$>$~\textbf{\textcolor{red}{(3)}}. Toute modification valide d'une de ces valeurs est immédiatement répercutée sur l'affichage, de manière interactive.Par défaut les valeurs de saturation ne peuvent donc pas sortir des bornes 'min displayed value' \textbf{\textcolor{red}{(1)}} et 'max displayed value' \textbf{\textcolor{red}{(4)}}, et ces bornes sont imposées par les données elles-même (\emph{CloudCompare} calcule automatiquement ces bornes à partir des valeurs effectives du champ scalaire). Or, il arrive que pour des raisons esthétiques ou pratiques l'utilisateur veuille voir apparaitre des bornes différentes (en particulier au niveau de la représentation graphique de l'échelle de couleur dans la vue 3D), ou une saturation qui commence par exemple à partir de 0 dans tous les cas de figure. Il existe donc la propriété \emph{release boundaries} qui permet une fois activée de modifier manuellement les bornes 'min displayed' et 'max displayed' (il suffit pour cela de modifier manuellement les valeurs textuelles correspondantes en les remplaçants par les nouvelles bornes désirées).\\
  456. \par
  457. D'autres options sont disponibles :
  458. \begin{itemize}
  459. \item l'option \emph{log scale} permet d'afficher les fausses couleurs (et les valeurs textuelles correspondantes à l'écran) selon une échelle logarithmique.
  460. \item comme évoqué plus haut, dans le cas d'un champ scalaire non strictement positif, une option \emph{absolute saturation} apparait. Si l'utlisateur la coche, alors les valeurs 'min staturation' \textbf{\textcolor{red}{(2)}} et 'max saturation' \textbf{\textcolor{red}{(3)}} changent de sens : elles deviennent forcément positives et concernent à la fois les valeurs négatives et les valeurs positives (par symétrie). La variation automatique des couleurs ne se passera donc qu'entre -'max saturation' et -'min stauration' et entre +'min stauration' et +'max stauration'. Les couleurs stagneront en dessous de -'max saturation' (couleur \textit{minimale} de la rampe - \textbf{bleu} typiquement), entre -'min stauration' et +'min stauration' (couleur \textit{centrale} de la rampe - \textbf{vert} typiquement) et enfin au dessus de +'max saturation' (couleur \textit{maximale} de la rampe - \textbf{rouge} typiquement).\\
  461. \end{itemize}
  462. \par
  463. Enfin, la rampe de couleurs avec les valeurs numériques remarquables associées (min, max, valeurs de saturation, etc.) peut être affichée à côté des entités dans la même vue 3D (cf. figure de la section \ref{Contexte-graphique}). Il faut cocher la case \emph{display scale} en fin de section \emph{SF scale}. Une seule rampe de couleur peut-être affichée à la fois. De plus, si l'entité associée est cachée ou désactivée, la rampe de couleur ne sera pas affichée.
  464. \par
  465. \subsection{Propriété de l'octree\index{octree, propriétés}\label{subsection:octreeProp}}
  466. L'octree est indissociable du nuage de points auquel il est rattaché. Il s'agit d'une structure abstraite, disponible dans l'interface de \emph{CloudCompare} et affichable uniquement à titre informatif (elle peut aussi être supprimée pour libérer de la mémoire si besoin). L'affichage de la structure proposé par \emph{CloudCompare} ne permet de visualiser qu'un niveau à la fois. Vous pouvez changer le \index{octree}niveau d'affichage de l'octree en incrémentant/décrémentant le champ \emph{Display level} de la section \emph{Octree}.
  467. \begin{center}
  468. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/OctreeDisplayLevel}\\
  469. \par
  470. \end{center}
  471. Les niveaux qui peuvent être affichés vont de 1 à 10. Le niveau 0 ne peut être sélectionné (il n'est dailleurs en pratique jamais utilisé, pas même pour les calculs, puisque l'octree au niveau 0 correspond ni plus ni moins au nuage dans son intégralité, contenu dans une unique cellule).\\
  472. \par
  473. Il se peut que l'affichage ralentisse considérablement au delà d'un certain niveau de subdivision (en fonction des capacités de l'ordinateur sur lequel le programme s'exécute), à cause du nombre conséquent d'éléments à afficher.\\
  474. \par
  475. L'octree peut être visualisé sous différentes formes :
  476. \begin{itemize}
  477. \item Fil de fer (Wire) : \index{fil de fer, rendu}seules les arrêtes des cubes sont représentées (attention : lourd).
  478. \item Points : chaque cube est représenté par le centre de gravité des points qui y sont inclus.
  479. \item Surfacique (Plain cubes) : la surface des cubes est affichée intégralement (attention : très lourd).\\
  480. \end{itemize}
  481. Le mode d'affichage courant de l'octree est controllé par la liste déroulante \emph{Display type}.
  482. \begin{center}
  483. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/OctreeDisplayType}\\
  484. \par
  485. \end{center}
  486. \subsection{Popriétés des étiquettes standards\index{etiquette standard, propriétés}\label{subsection:stdLabelProp}}
  487. Les étiquettes 2D \textit{standards} sont des étiquettes graphiques qui s'affichent en surimpression de la vue 3D et qui peuvent être associées à un ou plusieurs points (voir section \ref{subsection:standardLabel}).\\
  488. \begin{center}
  489. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/StandardLabelProperties}\\
  490. \end{center}
  491. Outre les options standards des objets affichables dans les vues 3D (voir section \ref{subsection:commonProperties}), ces étiquettes possèdent plusieurs champs regroupés dans la section \emph{Label} :
  492. \begin{itemize}
  493. \item \emph{Body} - le corps de l'étiquette (généré automatiquement). Pour information (et pour export, via copier-coller, si nécessaire).
  494. \item \emph{Show 2D label} - permet de cacher la partie 2D de l'étiquette
  495. \item \emph{Show 3D legend(s)} - permet de cacher la rappel du nom de l'étiquette à côté du ou des points associés en 3D
  496. \end{itemize}
  497. \subsection{Popriétés des étiquettes zone 2D\index{etiquette zone, propriétés}\label{subsection:zoneLabelProp}}
  498. Les étiquettes \textit{zone 2D} sont des étiquettes graphiques qui s'affichent en surimpression de la vue 3D et qui sont associée à un point de vue (voir section \ref{subsection:zoneLabel}).\\
  499. \begin{center}
  500. \includegraphics[width=0.4\textwidth]{images/Partie2_Interface/ZoneLabelProperties}\\
  501. \end{center}
  502. Les étiquettes \textit{zones 2D}, outre leur nom (qui apparaît en dessous du rectangle correspondant à l'étiquette - ce nom est d'ailleurs modifiable comme pour toute entité) n'ont qu'un bouton \emph{Apply} dans leurs propriétés. Celui-ci provoque l'application des paramètres de caméra associés à l'étiquette dans la vue 3D (et donc cela force l'apparition de l'étiquette, qui ne se dessine à l'écran que si les paramètres de caméra courants coïncident avec ceux de la caméra lors de la création de l'étiquette).
  503. \subsection{Popriétés des points de vues\index{point de vue, propriétés}\label{subsection:viewportProp}}
  504. Il est possible à tout moment de sauver le point de vue courant (avec tous les paramètres de visualisation associés, comme la taille des points, etc.) via la commande << Display > Save viewport as object >> ou le raccourci clavier Ctrl+V. L'objet correspondant \textit{Viewport} se comporte exactement comme une étiquette zone (mis à part qu'il n'a pas de représentation associée).\\
  505. \subsection{Popriétés des images\index{image}\label{subsection:imageProp}}
  506. Des images (calibrées ou non) peuvent être associées aux entités 3D. Dans le cas des images calibrées (i.e. pour lesquelles on dispose de toutes les informations de calibrage intrinsèques et extrinsèques par rapport aux données) il est possible de les afficher en surimpression de la vue 3D.\\
  507. \par
  508. Ces images peuvent être importées via les formats E57, ICM ou encore via l'import de fichiers Bundler (OUT).\\
  509. \begin{figure}[!htb]
  510. \begin{center}
  511. \includegraphics[width=0.9\textwidth]{images/Partie2_Interface/CalibratedImageGlobal}
  512. \caption{\label{fig:CalibratedImageFig}Vue d'une image calibrée en surimpression d'un nuage}
  513. \end{center}
  514. \end{figure}
  515. \par
  516. Les images ont toutes en commun la section \emph{Image} :
  517. \begin{itemize}
  518. \item \emph{Width} - largeur de l'image (en pixels)
  519. \item \emph{Height} - hauteur de l'image (en pixels)
  520. \item \emph{Alpha} - curseur permettant de régler la transparence (entre 0 et 100\%)
  521. \end{itemize}
  522. \par
  523. La section \emph{Calibrated Image} est par contre reservée aux images calibrées :
  524. \begin{itemize}
  525. \item \emph{Apply viewport} - change les paramètres de la vue 3D associée à l'image pour coïncider avec ceux de l'appareil
  526. \item \emph{f.o.v.} - \textit{field of view} ou ouverture angulaire (en degrés)
  527. \item \emph{Optical center} - centre optique
  528. \item \emph{Orientation} - direction de visée
  529. \item \emph{Angle} - Angle de rotation autour de l'axe de visée (en degrés)\\
  530. \end{itemize}
  531. \subsection{Popriétés des capteurs laser (terrestres)\index{capteur, propriétés}\label{subsection:sensorProp}}
  532. Les objets capteurs terrestres (\textit{Ground Based Lidar sensor}) ont une représentation \textit{in situ} symbolique (un cube sur un trépied). Ils ont aussi une section propre dans la fenêtre de propriétés (section \emph{GBL sensor}) :
  533. \begin{itemize}
  534. \item \emph{dPhi} - le pas angulaire selon l'axe de rotation principal (en radians)
  535. \item \emph{dTheta} - le pas angulaire selon l'axe de rotation secondaire (en radians)
  536. \item \emph{Uncertainty} - l'incertitude en profondeur (utilisée lors de la comparaison de nuages de points)
  537. \item \emph{Display scale} - échelle relative de la représentation symbolique
  538. \end{itemize}
  539. \begin{figure}[!htb]
  540. \begin{center}
  541. \includegraphics[width=0.8\textwidth]{images/Partie2_Interface/gblSensorProperties}\\
  542. \caption{\label{fig:gblSensorPropertiesFig}Représentation symbolique d'un capteur laser terrestre}
  543. \end{center}
  544. \end{figure}
  545. \section{Modification interactive des entités}
  546. \subsection{Segmentation manuelle}\index{segmentation manuelle}
  547. \label{subsection:graphicalSegmentation}
  548. L'outil \textit{segmentation manuelle} (ou \textit{segmentation graphique interactive}) est accesible via l'icône \includegraphics[height=15px]{images/Partie2_Interface/BtnSegment.png} de la barre d'outils supérieure (\textit{Main toolbar}). Il permet de "découper" manuellement à l'écran la ou les entités sélectionnées.
  549. \\
  550. \par
  551. Cet outil permet en effet de définir un contour à l'écran (voir figure~\ref{fig:graphicalSegmentationExample}), puis de choisir si l'ont veut "garder" les points ou les triangles présents à l'intérieur ou à l'extérieur de
  552. ce contour. Le processus est répétable à volonté, et les points/triangles rejetés sont cachés au fur et à mesure.
  553. Si l'utilisateur valide sa segmentation, les entités sélectionnées sont chacune divisées en deux : une partie correspondant aux points/triangles sélectionnés et l'autre avec les points/triangles restants.\\
  554. \par
  555. Note : dans le cas des maillages, les triangles présents sur la frontière du contour ne sont pas \textit{découpés} à proprement parler (on ne garde que les triangles dont les 3 sommets sont totalement inclus dans la frontière, et les autres triangles sont considérés comme étant \textit{à l'extérieur}).\\
  556. \par
  557. Deux types de contours sont disponibles :
  558. \begin{itemize}
  559. \item contour de type 'polyligne' : l'utilisateur peut définir les sommets successifs d'une polyligne par clics gauches successifs à l'écran. Une fois le premier clic effectué, CloudCompare fait apparaitre en temps réel la forme de la polyligne en suivant le pointeur de la souris comme si celui-ci correspondait à un nouveau sommet. Un clic droit permet de figer le contour (nécessaire pour effectuer une segmentation - voir ci-dessous). Enfin, tout clic gauche intervenant après que le contour ait été figé réinitialise celui-ci.
  560. \item contour de type 'rectangle' : ce mode permet de définir des contours rectangulaires à l'écran. Un simple clic droit permet de définir le premier coin du contour puis un second le coin opposé. Il n'est pas nécessaire de maintenir le bouton enfonçé entre les deux clics.\\
  561. \end{itemize}
  562. \begin{figure}[!htb]
  563. \begin{centering}
  564. \includegraphics[width=0.8\textwidth]{images/Partie2_Interface/graphicalSegmentation.jpg}
  565. \caption{\label{fig:graphicalSegmentationExample}Outil de segmentation manuelle}
  566. \end{centering}
  567. \end{figure}
  568. \par
  569. En pratique, l'outil s'active dans la vue 3D courante (d'ailleurs seules les entités affichées dans cette vue sont pris en compte par CloudCompare). L'interface principale de CloudCompare est \textit{gelée} (la plupart des icônes et menus ne sont plus accessibles, mis à part les options d'affichage). Celle-ci est rétablie quand l'utilisateur quitte l'outil (dernière icône à droite en forme de croix rouge).\\
  570. Une barre d'icônes apparaît dans le coin haut-droit de la vue 3D :
  571. \begin{itemize}
  572. \item la première icône permet de mettre en pause la segmentation (ce qui permet de récupérer le comportement normal de la souris et de faire tourner les entités 3D entre deux phases de contourage/découpe par exemple). Attention, si la segmentation est mise en pause, le contour actuellement dessiné disparaît. Et si une segmentation est validée (voir plus bas), le processus est automatiquement mis en pause.
  573. \item l'icône suivante permet de choisir le mode de sélection (polyligne - par défaut - ou rectangulaire). En mode 'polyligne' il est toujours possible de définir un contour rectangulaire en maintenant la touche CTRL et le bouton gauche de la souris enfoncés.
  574. \item l'icône suivante permet d'appliquer la segmentation selon le contour courant et en gardant affichés les points \emph{à l'intérieur} du contour. Les autres points sont alors cachés et la segmentation est mise en pause. Le contour doit être fermé.
  575. \item l'icône suivante permet d'appliquer la segmentation inverse (en gardant affichés les points \emph{à l'extérieur} du contour).
  576. \item l'icône suivante correspond à une réinitialisation complète de la sélection (tous les points redeviennent
  577. visibles).
  578. \item l'avant dernière icône permet de valider la segmentation globale et de quitter (les entités sélectionnées seront chacune scindées en deux).
  579. \item enfin la dernière icône permet d'annuler la segmentation et de quitter (aucune opération ne sera effectuée).\\
  580. \end{itemize}
  581. \subsection{Rotation/translation manuelle}\index{translation manuelle}\index{rotation manuelle}
  582. \label{subsection:graphicalTransformation}
  583. L'outil \textit{transformation manuelle} (ou \textit{transformation graphique interactive}) est accessible via l'icône \includegraphics[height=15px]{images/Partie2_Interface/BtnMove.png}. Il permet d'appliquer une rotation et/ou une translation manuelle aux entités sélectionnées.\\
  584. \par
  585. A l'instar de l'outil de segmentation interactive (voir ci-dessus), l'outil s'active dans la vue 3D courante (et seules les entités affichées dans cette vue sont pris en compte par CloudCompare). L'interface principale de CloudCompare est aussi \textit{gelée}. Trois icônes apparaissent en haut à droite de la vue 3D :
  586. \begin{center}
  587. \includegraphics[width=0.15\textwidth]{images/Partie2_Interface/BtnTranslateRotate}\\
  588. \end{center}
  589. \begin{itemize}
  590. \item la première permet de réinitialiser la transformation appliquées aux entités sélectionnées.
  591. \item la seconde permet de valider la transformation et de quitter.
  592. \item la dernière permet d'annuler la transformation et de quitter.\\
  593. \end{itemize}
  594. \par
  595. La transformation se fait interactivement avec la souris, en utilisant les mêmes conventions que pour la
  596. transformation du point de vue (Cf. section~\ref{subsection:Interactivité}) : le bouton gauche permet de tourner les entités (par rapport au centre de gravité des boites englobantes de toutes les unités sélectionnées)
  597. et le bouton droit permet de translater les entités dans le plan de l'écran. Dans ce mode, seules les entités sélectionnées bougeront, les autres restant fixes. \\
  598. \par
  599. Note: si le processus est validé par l'utilisateur, la transformation effectivement appliquée est affichée dans la console (sous forme textuelle). \textit{Cette information peut-être récupérée par copier-coller.}
  600. \section{Barres de progression}\index{progression, barre de}
  601. Certains traitements ou opérations de \emph{CloudCompare} nécessitent un temps de traitement relativement long,
  602. pouvant aller de quelques secondes à quelques minutes selon les capacités de l'ordinateur sur lequel l'application s'exécute, ainsi que le paramétrage de la fonction et la complexité inhérente au traitement effectué. La barre de progression est une fenêtre apparaissant durant les calculs non immédiats, donnant un aperçu de l'état d'avancement du traitement.\\
  603. \begin{center}
  604. \includegraphics[width=0.2\textwidth]{images/Partie2_Interface/ProgressBar}\\
  605. \end{center}
  606. Parmi les commandes affichant une barre de progression, certaines laissent la possibilité d'arrêter\index{arrêter un calcul} le calcul en cours d'exécution, via un bouton \emph{Cancel} (l'arrêt du processus n'est pas forcément immédiat, le système ne prenant en compte l'appui sur le bouton que lorsqu'il est suffisamment "disponible"). Lorsque ce bouton n'est pas visible, le traitement ne peut être interrompu avant la fin.
  607. \section{Barres d'outils\index{outils, barre de}}
  608. Vous trouverez ci dessous la liste des boutons disponibles dans les
  609. diverses barres d'outils de \emph{CloudCompare}.
  610. \begin{center}
  611. \begin{longtable}{|>{\centering}m{0.07\textwidth}|>{\raggedright}m{0.4\textwidth}|>{\raggedright}m{0.5\textwidth}|}
  612. \hline
  613. \textbf{Bouton} & \textbf{Commande} & \textbf{Description}\tabularnewline
  614. \hline
  615. \endhead
  616. \hline
  617. \textbf{Bouton} & \textbf{Commande} & \textbf{Description}\tabularnewline
  618. \hline
  619. \endfirsthead
  620. \hline
  621. \hline
  622. \multicolumn{3}{|c|}{Barre d'outils \emph{Main tools}}\tabularnewline
  623. \multicolumn{3}{|c|}{\includegraphics[height=21px]{images/Partie2_Interface/MainToolBar}}\tabularnewline
  624. \hline
  625. \includegraphics[height=15px]{images/Partie2_Interface/BtnOpen} & \index{ouvrir des objets}Open & cf. section \ref{subsection:openFile} \tabularnewline
  626. \hline
  627. \includegraphics[height=15px]{images/Partie2_Interface/BtnSave} & Save & cf. section \ref{subsection:saveFile} \tabularnewline
  628. \hline
  629. \includegraphics[height=15px]{images/Partie2_Interface/pointPickingBtn} & Point picking & cf. section \ref{subsection:pointPicking}\tabularnewline
  630. \hline
  631. \includegraphics[height=15px]{images/Partie2_Interface/pointListPickingBtn} & Point list picking & cf. section \ref{subsection:pointListPicking}\tabularnewline
  632. \hline
  633. \includegraphics[height=15px]{images/Partie2_Interface/BtnClone} & Clone & cf. section \ref{subsection:clone}\tabularnewline
  634. \hline
  635. \includegraphics[height=15px]{images/Partie2_Interface/BtnFuse} & Fuse & cf. section \ref{subsection:fuse}\tabularnewline
  636. \hline
  637. \includegraphics[height=15px]{images/Partie2_Interface/BtnDelete} & Delete & Supprimer les objets sélectionnés\tabularnewline
  638. \hline
  639. \includegraphics[height=15px]{images/Partie2_Interface/BtnRegister} & Register & cf. section \ref{subsection:register} \tabularnewline
  640. \hline
  641. \includegraphics[height=15px]{images/Partie2_Interface/BtnAlign} & Align & cf. section\ref{subsection:align} \tabularnewline
  642. \hline
  643. \includegraphics[height=15px]{images/Partie2_Interface/BtnSubsample} & Subsample & cf. section \ref{subsection:subsample}\tabularnewline
  644. \hline
  645. \includegraphics[height=15px]{images/Partie2_Interface/BtnSamplePts} & Sample points & cf. section \ref{subsection:samplePoints} \tabularnewline
  646. \hline
  647. \includegraphics[height=15px]{images/Partie2_Interface/BtnCCDist} & Cloud/Cloud distance & cf. section \ref{subsection:cloud2cloudDist} \tabularnewline
  648. \hline
  649. \includegraphics[height=15px]{images/Partie2_Interface/BtnCMDist} & Cloud/Mesh distance & cf. section \ref{subsection:cloud2meshDist} \tabularnewline
  650. \hline
  651. \includegraphics[height=15px]{images/Partie2_Interface/BtnStatTest} & Statistical test & cf. section \ref{subsection:statisticalTest} \tabularnewline
  652. \hline
  653. \includegraphics[height=15px]{images/Partie2_Interface/BtnLabel} & Label connected components & cf. section \ref{subsection:labelConnectedComponents} \tabularnewline
  654. \hline
  655. \includegraphics[height=15px]{images/Partie2_Interface/BtnSegment} & Segment & cf. section \ref{subsection:graphicalSegmentation} \tabularnewline
  656. \hline
  657. \includegraphics[height=15px]{images/Partie2_Interface/BtnMove} & Translate/Rotate & cf. section \ref{subsection:graphicalTransformation} \tabularnewline
  658. \hline
  659. \hline
  660. \multicolumn{3}{|c|}{Barre d'outils \emph{Scalar Field Tools}}\tabularnewline
  661. \multicolumn{3}{|c|}{\includegraphics[height=21px]{images/Partie2_Interface/SFToolBar}}\tabularnewline
  662. \hline
  663. \includegraphics[height=15px]{images/Partie2_Interface/BtnHisto} & Show histogram & Afficher l'histogramme\index{histogramme} du champ scalaire courant\tabularnewline
  664. \hline
  665. \includegraphics[height=15px]{images/Partie2_Interface/BtnComputeStat} & Compute statistical parameters & cf. section \ref{subsection:computeStatParams} \tabularnewline
  666. \hline
  667. \includegraphics[height=15px]{images/Partie2_Interface/BtnFilterValue} & Filter by value & cf. section \ref{subsection:scalarFieldFilterByValue} \tabularnewline
  668. \hline
  669. \includegraphics[height=15px]{images/Partie2_Interface/BtnGradient} & Gradient & cf. section \ref{subsection:scalarFieldGradient} \tabularnewline
  670. \hline
  671. \includegraphics[height=15px]{images/Partie2_Interface/BtnGaussianFilter} & Gaussian filter & cf. section \ref{subsection:scalarFieldGaussianFilter} \tabularnewline
  672. \hline
  673. \includegraphics[height=15px]{images/Partie2_Interface/BtnSFRemove} & Delete current scalar field & Supprimer le champ scalaire actif du nuage sélectionné\tabularnewline
  674. \hline
  675. \includegraphics[height=15px]{images/Partie2_Interface/BtnDiff} & Difference & cf. section \ref{subsection:scalarFieldDiff}\tabularnewline
  676. \hline
  677. \hline
  678. \multicolumn{3}{|c|}{Barre d'outils \emph{Plugins}}\tabularnewline
  679. \multicolumn{3}{|c|}{\includegraphics[height=21px]{images/Partie2_Interface/PluginToolBar}}\tabularnewline
  680. \multicolumn{3}{|c|}{\textit{peut contenir des éléments différents que ceux listés ici (en fonction des plugins disponibles)}}\tabularnewline
  681. \hline
  682. \includegraphics[height=15px]{images/Partie2_Interface/cc_qEDL} & Eye Dome Lighting (shader) & cf. section \ref{subsection:qHPR} \tabularnewline
  683. \hline
  684. \includegraphics[height=15px]{images/Partie2_Interface/cc_qSSAO} & Screen Space Ambient Occlusion (shader) & cf. section \ref{subsection:qSSAO} \tabularnewline
  685. \hline
  686. \includegraphics[height=15px]{images/Partie2_Interface/cc_qHPR} & Hidden Points Removal & cf. section \ref{subsection:qHPR} \tabularnewline
  687. \hline
  688. \includegraphics[height=15px]{images/Partie2_Interface/cc_qKinect} & Kinect Cloud Capture & cf. section \ref{subsection:qKinect} \tabularnewline
  689. \hline
  690. \includegraphics[height=15px]{images/Partie2_Interface/cc_qPCL} & PCL bridge & cf. section \ref{subsection:qPCL} \tabularnewline
  691. \hline
  692. \includegraphics[height=15px]{images/Partie2_Interface/cc_qPCV} & ShadeVis Ambient Occlusion & cf. section \ref{subsection:qPCV} \tabularnewline
  693. \hline
  694. \includegraphics[height=15px]{images/Partie2_Interface/cc_qPoissonRecon} & Poisson Surface Reconstruction & cf. section \ref{subsection:qPoissonRecon} \tabularnewline
  695. \hline
  696. \includegraphics[height=15px]{images/Partie2_Interface/cc_qRANSAC_SD} & Ransac Shape Detection & cf. section \ref{subsection:qRansacSD} \tabularnewline
  697. \hline
  698. \hline
  699. \multicolumn{3}{|c|}{Barre d'outils \emph{Viewing Tools}}\tabularnewline
  700. \multicolumn{3}{|c|}{\includegraphics[height=21px]{images/Partie2_Interface/ViewToolBar}}\tabularnewline
  701. \multicolumn{3}{|c|}{\textit{cette barre d'outils est présentée en détail en section \ref{Options-affichage}}}\tabularnewline
  702. \hline
  703. \end{longtable}
  704. \par\end{center}
  705. Les barres d'outils peuvent être affichées ou cachées via le sous-menu << Display > Toolbars >>.
  706. \section{Raccourcis clavier\index{raccourcis clavier}}
  707. Voici les raccourcis clavier disponibles dans \emph{CloudCompare} :
  708. \begin{center}
  709. \begin{longtable}{|>{\raggedright}p{0.1\textwidth}|>{\raggedright}p{0.15\textwidth}|>{\raggedright}p{0.45\textwidth}|>{\raggedright}p{0.15\textwidth}|}
  710. \hline
  711. \textbf{Touche(s)} & \textbf{Commande} & \textbf{Action} & \textbf{Remarque}\tabularnewline
  712. \hline
  713. \endhead
  714. \hline
  715. \textbf{Touche(s)} & \textbf{Commande} & \textbf{Action} & \textbf{Remarque}\tabularnewline
  716. \hline
  717. \endfirsthead
  718. \hline
  719. F1 & Help & \index{aide}affiche l'aide de \emph{CloudCompare} & \tabularnewline
  720. \hline
  721. F2 & Rename & \index{renommer}renomme l'entité sélectionnée & l'entité doit être sélectionnée dans l'arbre de navigation\tabularnewline
  722. \hline
  723. F3 & Toggle centered perspective & \index{point de vue}active / désactive la projection prespective avec centre de rotation au niveau des entités & cf. section \ref{Options-affichage}\tabularnewline
  724. \hline
  725. CTRL~+~F3 & New 3D View & ouvrir une nouvelle vue 3D & \tabularnewline
  726. \hline
  727. F4 & Toggle viewer based perspective & \index{point de vue}active / désactive la projection prespective avec centre de rotation confondu avec l'oeil de l'utilisateur & cf. section \ref{Options-affichage}\tabularnewline
  728. \hline
  729. CTRL~+~F4 & \index{Vue 3D}Close 3D View & fermer la vue 3D courante & \tabularnewline
  730. \hline
  731. F5 & Refresh & rafraîchir l'affichage & \tabularnewline
  732. \hline
  733. F6 & Toogle sun light & \index{eclairage@éclairage}active / désactive la source lumineuse globale & cf. section \ref{Options-affichage}\tabularnewline
  734. \hline
  735. F7 & Toggle custom light & active / désactive la source lumineuse secondaire & cf. section \ref{Options-affichage}\tabularnewline
  736. \hline
  737. F8 & Toggle console& \index{console}affiche / cache la console & \tabularnewline
  738. \hline
  739. F11 & Full screen & \index{plein écran}active / désactive l'affichage en plein écran & \tabularnewline
  740. \hline
  741. CTRL~+~O & Open & \index{ouvrir un fichier}pour ouvrir un fichier & cf. section \ref{subsection:openFile} \tabularnewline
  742. \hline
  743. CTRL~+~S & Open & \index{sauver un fichier}pour sauver les entités sélectionnées & cf. section \ref{subsection:saveFile} \tabularnewline
  744. \hline
  745. ALT~+~C & Set Unique Color & pour appliquer une couleur unique aux entités sélectionnées & cf. section \ref{subsection:setUniqueColor} \tabularnewline
  746. \hline
  747. CTRL~+~V & Save Viewport & \index{sauver un point de vue}créé un objet \emph{Point de vue} correspondant au point de vue actuel (vue 3D active) & cf. section \ref{subsection:viewportProp} \tabularnewline
  748. \hline
  749. V & Toggle entity visibility & inverse l'état d'affichage des entités sélectionnées & cf. section \ref{subsection:commonProperties} \tabularnewline
  750. \hline
  751. N & Toggle normals visibility & inverse l'état d'affichage des normales des entités sélectionnées & cf. section \ref{subsection:commonProperties} \tabularnewline
  752. \hline
  753. C & Toggle normals visibility & inverse l'état d'affichage des couleurs des entités sélectionnées & cf. section \ref{subsection:commonProperties} \tabularnewline
  754. \hline
  755. S & Toggle normals visibility & inverse l'état d'affichage du champ scalaire (courant) des entités sélectionnées & cf. section \ref{subsection:commonProperties} \tabularnewline
  756. \hline
  757. Del/Suppr & Delete & \index{supprimer}supprime les entités sélectionnées & \tabularnewline
  758. \hline
  759. SHIFT~+~left clic & Create 2D Label & \index{etiquette, créer}créé une étiquette 2D standard associée au point désigné par le clic gauche (dans la vue 3D) & cf. section \ref{subsection:standardLabel} \tabularnewline
  760. \hline
  761. \end{longtable}
  762. \par\end{center}