De la donnée 3D à un modèle 3D
De la donnée 3D à un modèle 3D : Revue des concepts et des technologies
Introduction
Pour bien comprendre les défis méthodologiques et technologiques à relever lorsque vient le temps de passer de la donnée 3D à un modèle 3D, nous allons dans cette section présenter les concepts de base nécessaires au processus de modélisation 3D (i.e. la construction du modèle 3D) ainsi qu’aux fonctionnalités connexes telles que la gestion, l’analyse et le partage des modèles 3D. Nous ferons aussi le point sur les normes en vigueur et sur les géotechnologies qui permettent le stockage et le traitement de données géométriques (0D à 3D).
La construction des modèles géométriques 3D
Comme nous l’avons mentionné au chapitre 1, un processus de modélisation consiste à construire un modèle, c’est-à-dire, une représentation simplifiée d’une réalité. Cette modélisation peut s’effectuer par la représentation des propriétés spatiales, thématiques et/ou temporelles. Le processus qui consiste à représenter les propriétés géométriques dont la position, la forme, la taille et l’orientation des objets d’une réalité se nomme modélisation géométrique (OQLF). En modélisation géométrique 3D, on s’intéresse donc à représenter plus spécifiquement les propriétés géométriques volumiques d’objets spatiaux 3D. Selon ISO 19107, (2002) un objet géométrique est un objet utilisé pour représenter les caractéristiques spatiales d’une abstraction d’un phénomène du monde réel. Dans cet ouvrage, nous utiliserons le terme objet spatial en référence à l’objet du monde réel (le bâtiment) et objet géométrique pour référer par exemple au polygone servant à sa représentation. Larrivée et al., (2006) proposent de bien distinguer la notion de dimension associée à l’objet lui-même et la dimension de l’univers dans lequel cet objet est positionné. Par exemple, la représentation d’un bâtiment pourrait être réalisée par un point associé à son centre géométrique (objet géométrique ponctuel), par une ligne associée à sa façade (objet géométrique linéaire), par un polygone associé à son assise (objet géométrique surfacique) et par un polyèdre associé à son volume (objet géométrique volumique). Ces différentes représentations pourraient être placées dans un univers 1D, 2D et 3D. Par exemple, le polygone associé à son assise (objet surfacique) pourrait être positionné sur une carte topographique (univers 2D). On pourrait aussi positionner ce même objet surfacique dans un univers 3D comme un modèle 3D de la ville dans lequel le bâtiment se situe. Étant donné cette situation potentiellement problématique, nous avons convenu de parler d’objets 3D ponctuels, linéaires, surfaciques ou encore volumiques pour faire référence à la représentation de ces objets positionnés dans un univers 3D (i.e. un modèle 3D). Dans le cas d’objets spatiaux 2D, on ferait alors référence à des objets ponctuels, linéaires et surfaciques positionnés dans un univers 2D comme une carte par exemple.
Structures géométriques 3D
Pour bien comprendre le processus de construction des modèles 3D et les éléments constitutifs des différentes structures de modélisation géométrique 3D, nous allons d’abord présenter les principales structures géométriques. En cartographie, une structure géométrique correspond à la disposition relative de fins éléments graphiques identiques, simples ou complexes, régulièrement répétés (OQLF, 1970). Elle est donc en quelque sorte le schéma ou le plan décrivant l’organisation logique des données géométriques (vectorielles ou matricielles) au sein d’une application. Cette structure géométrique est en général étroitement liée à un système de stockage particulier nécessaire à la persistance des données.
En géomatique, on distingue généralement deux catégories de structure géométrique, l’une dite vectorielle et l’autre matricielle (Longley et al., 2001; Rigaud et al., 2002). L’approche vectorielle (dite orientée-objets) implique des primitives géométriques de type point (0D), ligne (1D), polygone (2D) ou polyèdre (3D). Les objets de la réalité peuvent alors être représentés à partir des coordonnées des points et arêtes décrivant leur position et leur forme. Des polygones ou des volumes représentant les limites des objets peuvent aussi être construits à partir d’arrêtes formant une boucle fermée. De son côté, l’approche matricielle (dite orientée-espace) représente la réalité de manière continue et implique des structures où le concept d’objet n’est pas explicite, mais accessible à travers le regroupement des mailles discrétisant l’espace géographique. On nomme raster, grid ou image, le fichier contenant des données matricielles. Un fichier raster peut être vu comme un tableau rectangulaire de cellules carrées identiques appelées pixel dont chacun d’eux se voit associer une valeur numérique ou nulle. Une fois un raster géoréférencé, la position d’un pixel dans le tableau permet de lui attribuer une coordonnée x,y et la valeur numérique contenue dans le pixel peut être utilisée pour le stockage de la hauteur (valeur z) ou toute autre valeur comme par exemple la mesure du rayonnement électromagnétique acquise par télédétection. En 3D, on parlera plutôt de cellules volumiques (par exemple cubiques) appelées voxels géoréférencées en x,y,z.
En plus de cette distinction entre structures vectorielle et matricielle, un autre concept fondamental, celui de la topologie, doit être pris en compte. La topologie peut être définie comme la branche des mathématiques traitant des relations de voisinage qui s’établissent entre des figures géométriques, et qui ne sont pas altérées par la déformation des figures (OQLF, 2005). Elle fait référence aux relations de voisinage entre les primitives géométriques formant un objet d’un modèle et entre les objets eux-mêmes (micro et macro-topologie). Son application permet d’assurer la cohérence des données géométriques et facilite leur utilisation et leur stockage en éliminant la redondance au niveau des primitives géométriques. Elle vient aussi faciliter l’analyse spatiale puisque celle-ci fait généralement intervenir les relations entre les objets et les primitives spatiales d’un modèle (ex : est-ce que l’objet A se trouve à l’intérieur de l’objet B?) et ce sont spécifiquement ces relations qui sont stockées dans une structure dite topologique. Lorsque la topologie n’est pas explicitement stockée, elle doit être déduite et calculée à partir de la géométrie lors des traitements.
En 3D, la classification vectorielle/matricielle est toujours présente même si plusieurs auteurs ont proposé d’autres catégorisations (Billen, 2002; Breunig, 2001; De La Losa, 2000; Li, 1994; Pouliot et al, 2006a; Ramos, 2003; Raper, 1992 ; Shapiro, 1997; Van Den Bergen, 2004). Dans le cadre de l’application de type SIG 3D qui nous intéresse, il sera important de distinguer le type de primitives utilisées pour la représentation de volumes (objets 3D volumiques). C’est pourquoi nous proposons de regrouper et de présenter les structures selon trois niveaux de complexité basés sur le type de primitives utilisés pour construire les objets :
1. les structures basées sur des points et des lignes (fil de fer),
2. les structures basées sur des surfaces (B-Rep, TIN, …),
3. les structures basées sur des solides (CSG, Voxel, …)
La description que nous en ferons prend pour hypothèse que les objets sont des manifolds puisqu’il existe tout un monde de modélisation pour le non-manifold. Un manifold est un espace topologique localement euclidien i.e. autour de chaque point, il existe un voisinage qui est topologiquement le même que la sphère unitaire ouverte dans Rn. (http://mathworld.wolfram.com). Les objets non Manifold ne respectent pas cette règle.
Structures de modélisation basées sur des points et des lignes
La structure de modélisation basée sur des points et des lignes, appelée fil de fer, consiste à créer des objets à l’aide de nœuds et d’arrêtes formant le squelette de leurs frontières. Ce type de modèle est, parmi ceux de nos trois niveaux de complexité, le plus simple et le moins gourmand côté espace de stockage. Par contre, cette simplicité n’a pas que de bons côtés puisqu’elle ne lui permet pas de représenter sans ambigüité n’importe quels objets. En effet, le même objet peut être interprété différemment selon que l’on considère fermés ou ouverts les plans implicitement créés par les segments composant les limites de l’objet. Cette méthode n’est donc pas très efficace pour la représentation de volumes puisque la surface des objets n’est pas fermée et leur contenu est vide. Cela a aussi pour effet de compliquer les calculs d’analyse spatiale puisqu’il n’y a pas de topologie entre les différents objets (seulement au niveau micro i.e. les segments adjacents partagent les mêmes points) et le calcul de volume doit être effectué à partir des coordonnées des primitives formant le squelette de la frontière des objets. Au niveau de sa capacité à représenter l’irrégularité des formes, cette structure peut être qualifiée de performante puisqu’il suffit d’introduire plus de nœuds au niveau des lignes pour représenter plus précisément les objets et les phénomènes.
Structures de modélisation basées sur des surfaces
Le deuxième niveau de complexité implique l’utilisation de surfaces pour former les limites des objets ce qui permet de régler le problème d’ambigüité du modèle fils de fer. Toutefois, le contenu des objets surfaciques ainsi créés reste vide, ce qui complique encore une fois le calcul du volume qui doit être obtenu à partir de la géométrie des surfaces le composant.
Les surfaces d’un modèle surfacique peuvent être planes ou courbes. Les modèles composés de surfaces planes sont souvent appelés « polygon mesh » et sont généralement composés de faces triangulaires (TIN), quadrilatères ou d’autres polygones convexes simples afin de simplifier le rendu graphique. Ces faces peuvent être de formes régulières ou irrégulières et sont composées de vertex (points) et de edges (lignes). Le stockage d’un polygon mesh consiste minimalement en le stockage des coordonnées de chaque vertex du mesh et de la liste de ses vertex adjacents. Afin de facilité la représentation des faces lors du rendue graphique, on préfère généralement stocker explicitement les faces en tant que liste des vertex qui les composent. Afin d’offrir une plus grande flexibilité lorsque des changements sont apportés dynamiquement au modèle, on peut aussi stocker les mesh suivant la méthode appelée Winged-edge (Baumgart, 1975). Cette méthode consiste à enregistrer explicitement pour chaque surface, ses vertex, ses faces, mais aussi chaque edge. Pour chacun de ces edges, ses deux vertex, les deux faces qui le bordent de chaque côté ainsi que les deux edges sens horaires et sens anti-horaires les plus près de chaque extrémité sont aussi stockés.De leur côté, les surfaces courbes sont obtenues par l’application d’algorithmes comme les Splines, le plus souvent des NURBS, sur les edges composants les faces des surfaces permettant ainsi d’obtenir des courbes lisses et harmonieuses. Pour créer une telle surface on peut partir d’une surface simple (ex : surface plane) laquelle on déforme librement en déplaçant des points de contrôle se trouvant le long des edges composant la surface. On peut aussi partir d’une courbe lissée à l’aide d’une Spline à laquelle on applique une technique comme le balayage. Le balayage consiste en le déplacement d’un objet 2D comme une courbe ou une surface par exemple, le long d’une trajectoire pour créer un objet. Cette méthode permet de facilement stocker les objets puisque seulement l’objet 2D ainsi que la formule de sa trajectoire doivent être enregistrés. Cette méthode n’est toutefois pas adaptée pour la modélisation d’objet de forme irrégulière puisque le déplacement d’une forme 2D le long d’une trajectoire implique obligatoirement une certaine régularité.Qu’on traite de surfaces planes ou courbes, l’utilisation de « mesh » est souvent suffisante pour la visualisation de ces modèles surfaciques. Toutefois, pour certains modèles plus complexes représentant par exemple des objets surfaciques 3D troués ou contenant d’autres objets 3D, il devient parfois nécessaire de stocker l’orientation de chacune des faces composant sa coquille (shell) afin de pouvoir distinguer l’intérieur de l’extérieur de l’objet.
Boundary Representation (B-Rep)La structure de modélisation basée sur des surfaces la plus connue est appelée B-Rep (Boundary Representation). Cette technique largement implémentée au niveau des outils CAO et DAO est l’une des deux techniques de modélisation géométrique 3D, avec le CSG, les plus répandues. Un B-Rep permet de représenter des objets volumiques 3D seulement par l’assemblage des faces formant sa surface. Un B-Rep est essentiellement une structure en Graph dont les nœuds correspondent aux faces, aux edges et au vertex et dont l’assemblage forme les frontières d’un solide. Les liens entre les nœuds représentent la connectivité entre les primitives assurant la consistance topologique et les coordonnées liées à chaque vertex correspondent à l’information géométrique. Dans un B-Rep, une face est une portion d’une surface fermée et orientée contenant sa frontière représentée par des edges. Un edge est une partie d’une courbe contenant sa frontière (des vertex) et un vertex correspond à un point. Pour créer, manipuler et éditer les faces, edges et vextex d’un B-Rep, on utilise généralement les opérateurs d’Euler. Les opérateurs d’Euler sont au B-Rep ce que les opérations booléennes sont au CSG. Ils permettent d’assurer l’intégrité des frontières du modèle (fermeture, étanchéité, présence d’undershoot et d’overshoot) et offrent un mécanisme pour en vérifier la validité. Le principal avantage du B-Rep est sa grande capacité à représenter des solides de forme irrégulière. Il est aussi relativement simple de transformer un B-Rep en une représentation fil de fer, souvent utilisée pour des raisons de simplicité lors de l’affichage graphique. Par contre, le B-Rep a tendance à prendre beaucoup d’espace pour le stockage spécialement dans le cas des modèles complexes. Aussi, même s’il permet la visualisation d’objet 3D comme s’il s’agissait de solide, le B-Rep ne gère pas réellement des solides, mais seulement leur frontière. Pour cette raison, le calcul de certaines analyses spatiales topologiques pourrait s’avérer complexe. Toutefois, lorsque le B-Rep est orienté, i.e. l’intérieur et l’extérieur des objets sont distingués, le B-Rep se rapproche beaucoup de la gestion d’objets volumiques. Il est aussi relativement facile de calculer le volume d’un B-Rep à partir des faces composant sa surface lorsque celles-ci sont planes (De La Losa, 2000).
Structures de modélisation basées sur des solides
La structure de modélisation basée sur des solides consiste en la représentation d’un solide par ses frontières, mais aussi par son intérieur. En effet, cette approche implique la création d’objets par un assemblage de primitives volumiques simples de manière à remplir l’intérieur des objets en plus de représenter leur frontière. De cette façon, il n’existe plus d’ambigüité tant au niveau de l’interprétation visuelle qu’au niveau de la connaissance de l’intérieur et de l’extérieur des objets. Dans une telle structure, la représentation des solides doit être suffisamment complète pour faciliter le calcul automatique et non ambigu des propriétés géométriques bien connues comme le volume ou le centre de masse (Requisha et Voelcker, 1982).
Constructive Solid Geometry (CSG)
Il existe plusieurs structures géométriques basées sur des solides. La plus populaire, le CSG, permet la construction de modèles par l’application d’opération d’union, d’intersection et de différence sur des solides élémentaire paramétrable tels que des cubes, sphères, cylindres, cônes, etc. Ces solides élémentaires sont générés à partir de formes de base (cercles, rectangles, carrés…) et de certains paramètres de construction (diamètre, largeur, hauteur…) puis sont déplacés dans l’espace par des translations et des rotations. Les solides élémentaires utilisés pour la construction d’un modèle, leurs paramètres, leurs transformations ainsi que la séquence des opérations appliquées sont généralement stockés sous la forme d’un Graph ou d’un arbre, soit une structure de données hiérarchique composée de nœuds (les primitives géométriques) et de relations entre eux (les opérations).
Le CSG est une structure relativement simple à implémenter. L’étanchéité ou la fermeture du solide final créé est aussi facilement atteinte lorsque l’ensemble des primitives le composant le sont elles aussi. Par contre, étant donné la géométrie des solides de base mis à disposition, il peut être très difficile de représenter des objets irréguliers comme par exemple le relief du territoire. Le CSG est bien adaptée lorsque l’on veut offrir à l’usager, la possibilité de construire son modèle de façon intuitive par combinaison et assemblage de primitives volumiques de base. Toutefois, même si plusieurs systèmes permettent de construire des solides en se basant sur le concept du CSG, cette approche seule n’est souvent pas suffisante puisque la forme des objets à représenter est complexe et ne peut pas alors se limiter à un assemblage de primitives de base (Ramos, 2003; Haala et al., 2006; Tsuzuki et al., 2007). En effet, la représentation d’un objet 3D suivant cette structure ne correspond pas à la frontière explicite de l’objet, aucune information sur la connectivité entre les primitives ainsi assemblées n’est présente, et sur l’existence même du solide ainsi créé en tant qu’entité à part entière puisque la définition de l’objet ne repose uniquement que sur son Graph. Pour ces raisons, il est souvent nécessaire dans les systèmes actuels de combiner la structure CSG à celle du B-Rep et diverses méthodes sont présentées pour calculer les frontières d’un solide CSG (Requicha, 1996; Benouamer et Michelucci, 1997;Tsuzuki et al., 2007; Hoffmann, 1992; Ramos, 2003).
Primitive Instancing
Une autre structure géométrique, appelée Primitive Instancing, adopte aussi une approche constructive comme le CSG, mais utilise plutôt des primitives complexes paramétrables pour représenter des objets. Ce type de modélisation consiste à instancier la primitive générique complexe de base et d’adapter cette instanciation en faisant varier des paramètres prédéfinis. Par exemple, dans un ensemble d’engrenage, chacune des pièces sera créée à partir d’une roue de base en spécifiant sa largeur, son rayon et le nombre de dents. Cette approche peut être avantageuse lorsque plusieurs objets du même type doivent être créés. Par contre, si les objets à modéliser sont tous très différents, l’utilisation de cette approche n’est plus justifiée puisque chaque objet demande la création d’une nouvelle primitive (de la Losa, 2000).
Voxel et Octree
La structure géométrique basée sur des solides appelée Voxel consiste en le découpage de façon régulière de la totalité de l’espace à l’aide de cubes élémentaires nommés voxels (« volumetric elements ») d’une manière semblable au modèle raster et au pixel 2D. Chacun de ces voxels composant l’espace de modélisation, se retrouve soit occupé ou inoccupé par une partie du solide. Le solide ainsi représenté consiste donc en l’ensemble des voxels occupés de l’espace tridimensionnel. Ce modèle permet difficilement de représenter exactement la forme des objets, mais plutôt des approximations qui sont dépendantes de la taille et de la quantité de voxels mise en œuvre. Une grande quantité de voxels plus petits permettra de représenter plus exactement les limites des objets, mais générera un volume de données plus grand. C’est pourquoi cette structure géométrique est généralement considérée comme très gourmande en espace disque et en mémoire. L’analyse spatiale ne peut pas non plus être très élaborée puisqu’elle ne peut compter que sur l’adjacence des voxels. Les calculs de volumes sont par contre très simples et peuvent être réalisés en faisant la somme des voxels contenus dans les objets.
Afin de diminuer la quantité de données d’un modèle de voxels, on opte souvent pour la structure appelée Octree qui permet de regrouper des voxels adjacents faisant partie de la même entité pour former des cubes plus gros. L’espace se retrouve donc découpé en cubes de tailles variables qui sont stockés dans un arbre possédant une racine (représentant l’espace total), des nœuds (cubes découpés en huit) et des feuilles stockant l’information « espace occupé » ou non. Ceci permet donc une certaine forme de compression tout en facilitant l’accès aux données proches en se basant sur le modèle du Quadtree en 2D (de la Losa, 2000).
|
Table des matières
Chapitre 1 Introduction
1.1 Mise en contexte
1.2 Problématique
1.3 Hypothèse
1.4 Objectifs de la recherche
1.5 Méthodologie
1.6 Cadre expérimental, tests et validation
Chapitre 2. De la donnée 3D à un modèle 3D : Revue des concepts et des technologies 22
2.1 Introduction
2.2 La construction des modèles géométriques 3D
2.2.1 Structures géométriques 3D
2.2.2 La standardisation des structures géométriques
2.3 La gestion des données et des modèles 3D
2.4 L’analyse spatiale 3D
2.4.1 Rappel des concepts
2.4.2 Standardisation des opérateurs spatiaux
2.5 Le partage des modèles 3D
2.5.1 Les services Web
2.5.2 Limites et solutions pour la diffusion en 3D
2.5.3 Le Geography Markup Language
2.5.4 Les spécifications de services Web standards de l’OGC
2.6 Inventaire des géotechnologies 3D
2.6.1 Les outils CAO
2.6.2 Les DAO
2.6.3 Les SIG
2.6.4 Les visualisateurs de globes virtuels
2.6.5 Les SGBD spatiaux
2.6.6 Recensement des projets de recherche sur le SIG 3D
2.7 Conclusion du chapitre
Chapitre 3. Proposition d’une architecture de SIG 3D orientée service Web
3.1 Les composantes fondamentales d’un SIG 3D
3.2 Stratégies de développement d’une solution SIG 3D
3.3 Choix d’une stratégie de développement
3.4 Architecture du SIG 3D proposé
3.4.1 Le serveur
3.4.2 Le Web Feature Service (WFS) 3D
3.4.3 Le client
3.4.4 Le Datastore
3.4.5 L’analyse spatiale
Chapitre 4 Implémentation et validation dans un contexte de modélisation géologique
4.1 Besoins liés à la modélisation géologique 3D
4.2 Architecture du Web Geological Feature Server (WGFS)
4.3 Choix des technologies
4.3.1 Le client
4.3.2 Le serveur
4.3.3 La base de données
4.4 Développement côté client
4.4.1 Le plug-in Gocad
4.4.2 Le traducteur de données
4.4.3 La structure Gocad versus GML
4.5 Développement de l’application serveur
4.6 Implémentation de la base de données
4.7 Le WGFS en action
4.7.1 Fonctionnalité « Voir la liste des modèles 3D disponibles »
4.7.2 Fonctionnalité « Importer un modèle »
4.7.3 Fonctionnalité « Requêter les propriétés descriptives d’un modèle »
4.7.4 Fonctionnalité « Exporter un modèle vers la base de données »
4.8 Évaluation du WGFS
4.8.1 Description des tests réalisés
4.8.2 Résultats
4.9 Limites du système et travaux futurs
Chapitre 5 Conclusion
5.1 Bilan et apports de l’étude
5.2 Travaux futurs
Bibliographie
Annexe A Diagrammes de classe du schéma spatial ISO 19107
Annexe B Représentation d’objets volumiques sous format GML
Annexe C Détails des spécifications de service Web de L’OGC
Annexe D Inventaires des géotechnologies : Détails techniques des logiciels
Outils CAO : Autocad, Microstation et Gocad
Outils DAO : 3D Studio Max, Maya et Blender
SIG : ArcGIS, MapInfo et Geomedia
Visualisateur de globes virtuels: Google Earth, Virtual Earth et ArcGIS Explorer
SGBD Spatiaux: Oracle Spatial, SQL Server et PostGIS
Autres technologies 3D: Plateformes et langages de développement Web
Annexe E Inventaire des géotechnologies : Justification détaillée du tableau comparatif….
Annexe F Extrait du code source des classes ajoutées ou modifiés pour gérer le 3D dans Deegree
Télécharger le rapport complet