Memoire_final

261 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
261
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10
Actions
Partages
0
Téléchargements
3
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Memoire_final

  1. 1. ´ECOLE DOCTORALE DES SCIENCES EXACTES ET DE LEURS APPLICATIONS ED 211 Visualisation interactive 3D pour un ensemble de donn´ees g´eographiques de tr`es grande taille TH`ESE pr´esent´ee et soutenue publiquement le 12 juillet 2011 pour l’obtention du Doctorat de l’Universit´e de Pau et des Pays de l’Adour (sp´ecialit´e informatique) par Thanh Vu Lˆe Composition du jury Pr´esident : Rapporteurs : Christian Bouville, Bunraku Team, IRISA Eric Saux, IRENav, ´Ecole navale et groupe des ´ecoles du Poulmic Examinateur : Robert Laurini, LIRIS, INSA de Lyon Th`ese dirig´ee par : Mauro Gaio, LIUPPA, Universit´e de Pau et des Pays de l’Adour Laboratoire d’Informatique de l’Universit´e de Pau et des Pays de l’Adour — EA 3000
  2. 2. Mis en page avec la classe thloria.
  3. 3. Remerciements Je suis très heureux de pouvoir finalement arriver jusqu’au bout de ma thèse, quatre ans est court mais il est temps de mettre le point final de cette aventure. Je tiens à remercier aux membres du jury : M. Bouville, M. Saux et M. Laurini d’avoir accepté d’être mes rapporteurs et de vos remarques constructives de mon mémoire. Je remercie à M. Gaio de m’avoir aidé à terminer cette aventure, je vous remercie aussi pour la motivation et la confiance que vous m’avez confits durant mes moments difficiles. Je remercie également à M. Jobard qui m’a aidé à initialiser dans la recherche, vous m’avez donné une bonne base ainsi vous m’avez appris l’exigence d’un travail de recherche. Je vous remercie également pour la confiance, la motivation et la responsabilité que vous m’avez donnés au long de cette aventure. Merci de m’avoir laissé grandir. Merci beaucoup à M. Etchelecou à qui j’ai toujours trouvé de bonnes inspirations et de bons conseils. Je remercie à toi Damien, tu m’as accompagné aux moments de bonheur et surtout aux moments où j’étais en difficulté. Merci d’être un bon ami. Je te remercie également pour tes conseils, ton écoute, tes corrections de fautes orthographes de mon mémoire, ... Merci aussi à toi Christophe, tu m’as toujours apporté un bon souris pour démarrer ma journée :-) I also would like to thank you my sweet heart, thank you for motivate me to finish what I have started. Thanks for warming my heart when I fell lonely. Thanks for helping me fell good of being myself when I am with you. We’ll soon be next to each other and I’ll do my best to make it comes true. Jag elsker dig ... Je remercie à tous les enseignants du département informatique de Pau et ceux de l’IUT de Bayonne, la racine où j’ai démarré mon aventure il y avait neuf ans. Je n’oublierai jamais mes premiers jours en France avec vous ! Je souhaite beaucoup de courages aux thésards du laboratoire pour terminer leurs aventures. Excusez moi d’être si discret et ne pas pouvoir vous connaˆıtre le mieux que j’ai pu faire, mais mon souhait vient de mon cœur. Bon courage à vous : Julien, Tien, Duc, Nhan, Camille, Nour, Youssef, Ehsan, Hui ! Chacun de vous va écrire par vous même votre propre histoire, et je vous souhaite une aventure inoubliable. Et finalement, je dédie cette thèse à ma famille, grâce à la quelle je suis arrivé aujourd’hui. Con cảm ơn ba mẹ luôn mãi bên cạnh con và giúp đỡ con những lúc gian nang. Cảm ơn ba mẹ luôn động viên, khuyến khích và hy sinh vì con. Cảm ơn Nội, ba, mẹ, Út, các cậu, dì, bác luôn là nguồn sống của con. Anh Vũ mong Út cũng như anh Vũ sẽ bắt đầu cuộc phiêu lưu thú vị của Út trong một ngày gần đây. Cảm ơn Quý, Long, Huy, An, Trân, Toàn, Thủy, Tuấn vẫn ở bên cạnh Vũ và tin vào Vũ. 9 năm không phải là một khoảng thời gian ngắn nhưng Vũ vẫn luôn cảm thấy ấm lòng khi gặp lại các bạn. i
  4. 4. Tưởng nhớ đến Nội Sáu ... ii
  5. 5. "Je n’aime pas les spécialistes. Pour moi, se spécialiser, c’est rétrécir d’autant son univers." Claude Debussy iii
  6. 6. iv
  7. 7. Table des matières Table des figures 1 Liste des tableaux 5 Liste des Algorithmes Partie I Introduction et état de l’art 9 Chapitre 1 Introduction 1.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 Système d’information géographique (SIG) . . . . . . . . . . . . . . . . . 13 1.2.1 Définition d’un SIG . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.2 Représentations des objets géographiques . . . . . . . . . . . . . . 13 1.2.3 Modèle Numérique de Terrain (MNT) . . . . . . . . . . . . . . . 14 1.3 L’évolution matérielle des cartes graphiques . . . . . . . . . . . . . . . . 16 1.4 Problématique et objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Chapitre 2 État de l’art 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2 Visualisation de grandes images . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.1 Mipmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.2 Mipmap amélioré – BigView de la NASA . . . . . . . . . . . . . 21 2.2.3 Quadtrees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 v
  8. 8. Table des matières 2.2.4 Clipmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3 Visualisation de terrains . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.2 Niveaux de détails basés sur clusters de triangulation . . . . . . . . 24 2.3.2.1 Niveaux de détails continus . . . . . . . . . . . . . . . . 24 2.3.2.2 Niveaux de détails statiques . . . . . . . . . . . . . . . 27 2.3.3 Gestion de données hors mémoire centrale . . . . . . . . . . . . . 31 2.3.3.1 Systèmes basés sur les tuiles de terrain . . . . . . . . . . 31 2.3.3.2 Organisation de données efficace pour utiliser directe- ment la pagination du système d’exploitation . . . . . . 32 2.3.3.3 Systèmes qui utilisent des grappes de triangulations . . . 33 2.3.4 Optimisation de mémoire cache GPU . . . . . . . . . . . . . . . . 35 2.3.5 Gestion de jointures entre les patchs de données . . . . . . . . . . 38 2.3.6 Géomorphose . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.3.6.1 Génération de maillages intermédiaires . . . . . . . . . 42 2.3.6.2 Coefficient de morphose . . . . . . . . . . . . . . . . . 46 2.3.7 Augmentation de la qualité de rendu du terrain . . . . . . . . . . . 47 2.3.7.1 Illumination statique . . . . . . . . . . . . . . . . . . . 47 2.3.7.2 Illumination dynamique . . . . . . . . . . . . . . . . . 48 2.4 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Partie II Contribution 55 Chapitre 3 Rendu interactif de terrain de grande taille 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.2 Architecture générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.3 Gestions des niveaux de détails en out-of-core . . . . . . . . . . . . . . . 59 3.3.1 Structure de données de type quadtree . . . . . . . . . . . . . . . 59 3.3.2 Marquer les noeuds visibles . . . . . . . . . . . . . . . . . . . . . 62 3.3.3 Charger les nœuds de fac¸on parallèle et non-synchronisée . . . . . 64 3.3.4 Sélectionner les nœuds affichables . . . . . . . . . . . . . . . . . 66 3.4 Affichage indépendant de chaque nœud du quadtree . . . . . . . . . . . . 69 vi
  9. 9. 3.4.1 Transformation de données en 2D vers un maillage continu en 3D . 70 3.4.2 Illumination du terrain . . . . . . . . . . . . . . . . . . . . . . . . 75 3.4.3 Géomorphose . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.4.3.1 Illustration de la géomorphose d’une ligne brisée . . . . 81 3.4.3.2 Géomorphose dépendant du temps d’une ligne brisée . . 82 3.4.3.3 Géomorphose de grilles régulières . . . . . . . . . . . . 88 3.4.3.4 Géomorphose de terrain . . . . . . . . . . . . . . . . . 89 3.4.3.5 Géomorphose sur le GPU . . . . . . . . . . . . . . . . 91 3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Partie III Implémentation et Performances 93 Chapitre 4 Implémentation et Performances 4.1 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.1.2 Structure de données . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.1.3 Structure du programme . . . . . . . . . . . . . . . . . . . . . . . 96 4.1.3.1 Gestion des données rasters 2D sur CPU . . . . . . . . . 97 4.1.3.2 Affichage en 3D des données rasters sur GPU . . . . . . 98 4.1.4 API 3D et les bibliothèques utilisées . . . . . . . . . . . . . . . . 100 4.2 Performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.2.2 Scénarios de tests . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.2.3 Plusieurs paramètres influent sur la performance : . . . . . . . . . 107 4.2.4 Contrôler FPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 4.3 Conclusion et résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Partie IV Conclusion et perspectives 119 Chapitre 5 Conclusion vii
  10. 10. Table des matières 5.1 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.2 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 5.2.1 Visualisation des données vectorielles sur le terrain . . . . . . . . 124 5.2.2 Notre proposition pour la visualisation les données vectorielles . . 126 5.2.3 Polylignes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 5.2.4 Polygones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Bibliographie 133 viii
  11. 11. Table des figures 1.1 Les différents types de données dans un système d’information géographique. . 13 1.2 Modèle Numérique de Terrain (MNT) . . . . . . . . . . . . . . . . . . . . . . 15 1.3 Rendu en 3D d’un MNT de Tithonium Chasma . . . . . . . . . . . . . . . . . 15 1.4 Representation graphique de la loi d’Amdahl. . . . . . . . . . . . . . . . . . . 17 2.1 Exemple d’une image mipmap. . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2 Principe utilisé par le visualiseur BigView de la NASA. . . . . . . . . . . . . . 21 2.3 Principe de la décomposition de texture par un quadtree. . . . . . . . . . . . . 22 2.4 Principe de fonctionnement des Clipmaps de SGI (figure extraite de [TMJ98]). 23 2.5 Principe de construction de vertex hierachy . . . . . . . . . . . . . . . . . . . 25 2.6 Lindstrom1 - génération de maillage par longest edge bisection. . . . . . . . . . 26 2.7 Construction d’arbre binaire de ROAM. . . . . . . . . . . . . . . . . . . . . . 26 2.8 Construction maillage de type triangle strip d’un noeud quadtree par un parcours de graphe hamiltonien (figure extraite de [Paj98]). . . . . . . . . . . . . . . . . 27 2.9 Principe de Chunked LOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.10 Maillage d’un cluster de BDAM . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.11 Maillage de type géo-mipmap (figure extraite de [DB00]). . . . . . . . . . . . 30 2.12 Principe de fonctionnement de Geometry Clipmap (figure extraite de [LH04]). . 30 2.13 Une répartition de terrain en utilisant un quadtree basé sur la distance par Strugar (figure extraite de [Str09]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.14 L’architecture de la pagination de données du terrain par NPSNET (figure ex- traite de [FZPM93]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.15 Terra vision [RLIB99] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.16 Structure d’un quadtree des tuiles et son arbre de mémoire cache . . . . . . . . 35 2.17 Différentes stratégies de préchargement de données . . . . . . . . . . . . . . . 35 2.18 Un arbre binaire avec les triangles agrégats. . . . . . . . . . . . . . . . . . . . 36 2.19 Structure de données utilisée sur la carte graphique pour assurer une transmis- sion de données de manière progressive. . . . . . . . . . . . . . . . . . . . . . 37 2.20 La gestion de mise à jour de geometry clipmap. . . . . . . . . . . . . . . . . . 37 2.21 Crack et T-junction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.22 Cet exemple illustre une subdivision forcée ou forced split . . . . . . . . . . . 39 2.23 La correction de crack et T-junction entre deux blocs GeoMipMap de résolution différente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 1
  12. 12. Table des figures 2.24 Gestion de jointure proposé par [LC03] . . . . . . . . . . . . . . . . . . . . . 40 2.25 Un maillage général est décomposé un bloc de résolution différente . . . . . . . 40 2.26 Le terrain est décomposé par les blocs séparés. . . . . . . . . . . . . . . . . . 40 2.27 La frontière entre différents patchs de maillages. . . . . . . . . . . . . . . . . . 41 2.28 "Skirt" est un maillage statique vertical autour d’un blocs pour cacher le creux. . 41 2.29 La génération d’objets intermédiaires entre deux versions de maillage. . . . . . 43 2.30 La transition entre différentes versions de maillages . . . . . . . . . . . . . . . 43 2.31 Deux versions de maillage MA et MB qui demandent un morphose entre eux. . 44 2.32 L’opération "split" génère les triangles supplémentaires . . . . . . . . . . . . . 44 2.33 L’opération "split" sur un maillage de niveau l = 0 génère un sommet supplé- mentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.34 Le maillage d’un bloc geomipmap. . . . . . . . . . . . . . . . . . . . . . . . . 45 2.35 La pyramide de niveau de détails. . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.36 Morphose d’une grille régulière avec la méthode de [Str09]. . . . . . . . . . . 46 2.37 Transformation de maillage de type glissement et aplatissement. . . . . . . . . 46 2.38 La combinaison d’une texture de couleur avec une texture d’illumination. . . . 48 2.39 Le normal mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.40 Évolution des cartes graphiques. . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.1 Notre "framework". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.2 Notre framework : construction du fichier quadtree sur la mémoire externe qui est ensuite chargé sur le CPU. . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.3 La construction du quadtree de bas en haut. . . . . . . . . . . . . . . . . . . . 60 3.4 Le calcul de l’erreur locale d’un nœud. . . . . . . . . . . . . . . . . . . . . . . 61 3.5 Notre framework : le marquage des nœuds visibles par le CPU. . . . . . . . . . 62 3.6 Les deux critères de subdivision des nœuds du quadtree. . . . . . . . . . . . . 63 3.7 L’utilisation d’un quatree pour représenter les blocs de terrain est très efficace avec le test d’objet hors champ de vision (frustum culling). . . . . . . . . . . . 63 3.8 Partie de notre framework dédiée au chargement de données en parallèle et non synchrone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.9 Mémoire cache LRU et quadtree. . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.10 Sélectionner les nœuds pour l’affichage. . . . . . . . . . . . . . . . . . . . . . 68 3.11 Partie de notre framework dédiée à l’affichage indépendant de chaque nœud sur la carte graphique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.12 La construction d’un maillage classique. . . . . . . . . . . . . . . . . . . . . . 70 3.13 Comparaison de terrain avec et sans jupe imbriquée. . . . . . . . . . . . . . . . 72 3.14 Notre solution pour la gestion des cracks du terrain qui n’utilise pas de "jupe". . 73 3.15 L’utilisation d’un codage binaire pour représenter la localisation des nœuds d’un quadtree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.16 La transformation de maillage actuel vers les versions de maillage de plus haut et plus bas niveau grâce au paramètre neighborLevelDiff. . . . . . . . . . . . . 75 3.17 Fonction partie entière et partie fractionnaire. . . . . . . . . . . . . . . . . . . 76 3.18 Le déplacement des sommets sur la bordure des nœuds crée des micropolygones 76 2
  13. 13. 3.19 L’affichage final sans défaut même avec l’utilisation des micro polygones. . . . 77 3.20 L’ombrage plat et ombrage de Phong. . . . . . . . . . . . . . . . . . . . . . . . 78 3.21 Illustration du modèle de Phong. . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.22 Définition des différents vecteurs pour le modèle d’illumination de Phong (fi- gure extraite de Wikipedia). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.23 Le calcul du vecteur normal d’un point du maillage. . . . . . . . . . . . . . . . 79 3.24 Les différentes textures utilisées pour générer un terrain en 3D. . . . . . . . . . 80 3.25 Le terrain en mode fil de fer et l’utilisation de la technique normal mapping sur ce terrain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.26 La simplification de la ligne rouge vers la ligne verte génère une erreur. . . . . 82 3.27 L’arbre binaire qui représente l’erreur métrique produit lors d’une simplification. 83 3.28 Les différentes versions de la ligne brisée en augmentant l’erreur métrique tolérée. 84 3.29 Morphose d’une version simple de la ligne brisée . . . . . . . . . . . . . . . . 84 3.30 Représentation en arbre binaire d’une géomorphose d’une ligne brisée d’un ni- veau de détail simple vers une version plus complexe. . . . . . . . . . . . . . . 85 3.31 Représentation en arbre binaire d’une géomorphose d’une ligne brisée d’un ni- veau de détail complexe vers une version plus simple. . . . . . . . . . . . . . . 87 3.32 Le calcul du maillage intermédiaire sur le GPU. . . . . . . . . . . . . . . . . . 89 3.33 Morphose d’une version simple d’une grille de maillage vers une version plus complète . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 3.34 Coefficient de morphose de différents nœuds dans un quadtree. . . . . . . . . . 91 4.1 Schéma UML de notre structure de données. . . . . . . . . . . . . . . . . . . . 96 4.2 Architecture globale de différentes parties de notre implémentation. . . . . . . 97 4.3 Vertex shader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.4 Pixel shader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.5 Geometry clipmap et notre méthode . . . . . . . . . . . . . . . . . . . . . . . 104 4.6 Survol sur le terrain ratcliff. . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.7 Survol sur le terrain Afrique. . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.8 Survol sur le terrain pudget sound. . . . . . . . . . . . . . . . . . . . . . . . . 106 4.9 Survol sur le terrain Autriche. . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.10 Mesure de performance sur les 4 jeux de données. . . . . . . . . . . . . . . . . 107 4.11 Mesure de performances en augmentant la taille du terrain. . . . . . . . . . . . 108 4.12 Mesure de performance en augmentant le degré des nœuds. . . . . . . . . . . . 109 4.13 Mesure de performance en augmentant la résolution d’écran. . . . . . . . . . . 110 4.14 Mesure de performance en augmentant l’erreur tolérée par l’utilisateur. . . . . . 111 4.15 Mesure de performance avec et sans géomorphose. . . . . . . . . . . . . . . . 112 4.16 Mesure de performance avec un contrôle sur la quantité de nœuds à afficher : notons que le nombre de FPS reste sur 120 FPS (courbe rouge avec contrôle de FPS) et ne descend pas plus bas (courbe bleu sans contrôle de FPS). . . . . . . 113 4.17 Capture d’écran du terrain ratcliff. . . . . . . . . . . . . . . . . . . . . . . . . 114 4.18 Capture d’écran du terrain Afrique. . . . . . . . . . . . . . . . . . . . . . . . . 115 4.19 Capture d’écran du terrain puged sound. . . . . . . . . . . . . . . . . . . . . . 116 3
  14. 14. Table des figures 4.20 Capture d’écran du terrain autrice. . . . . . . . . . . . . . . . . . . . . . . . . 117 4.21 Capture d’écran du terrain Algérie. . . . . . . . . . . . . . . . . . . . . . . . . 118 5.1 (a) Rendu basé sur la texture, (b) rendu basé sur la discrétisation vectorielle du terrain (figure extraite de [BN08]). . . . . . . . . . . . . . . . . . . . . . . . . 124 5.2 Géométrie originale du terrain (gauche), Terrain avec données vectorielles su- perposées (droite)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 5.3 Déformation du terrain basé sur les données vectorielles (figure extraite de [BN08]).125 5.4 Intersection entre deux segments et un nœud (en gris), les points d’intersections sont en rouge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 5.5 D est la distance entre un fragment par rapport au segment . . . . . . . . . . . 129 5.6 wn = 0 (extérieur) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 5.7 Les données vectoriels sur un carré qui représente un nœud du terrain . . . . . 131 4
  15. 15. Liste des tableaux 2.1 Tableau des techniques de visualisations du terrain. . . . . . . . . . . . . . . . 53 2.2 Les différentes techniques de gestion des jointures entre les différents blocs de relief. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.3 Les différentes techniques de la géomorphose. . . . . . . . . . . . . . . . . . . 54 4.1 Tableau de comparaison entre C++ et Java. . . . . . . . . . . . . . . . . . . . . 102 4.2 Tableau des bibliothèques de développements en C++ et Java. . . . . . . . . . . 102 4.3 Tableau des jeux de données. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.1 Structure d’une texture de polylignes . . . . . . . . . . . . . . . . . . . . . . . 128 5
  16. 16. Liste des tableaux 6
  17. 17. Liste des Algorithmes 1 mark_visible(Nodenode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 2 collect_drawable_nodes (Nodenode) . . . . . . . . . . . . . . . . . . . . . . . 68 3 morphing_down(Nodenode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4 morphing_up(Nodenode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5 morphing() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 7
  18. 18. LISTE DES ALGORITHMES 8
  19. 19. Première partie Introduction et état de l’art 9
  20. 20. Chapitre 1 Introduction Sommaire 1.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 Système d’information géographique (SIG) . . . . . . . . . . . . . . 13 1.2.1 Définition d’un SIG . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.2 Représentations des objets géographiques . . . . . . . . . . . . 13 1.2.3 Modèle Numérique de Terrain (MNT) . . . . . . . . . . . . . . 14 1.3 L’évolution matérielle des cartes graphiques . . . . . . . . . . . . . . 16 1.4 Problématique et objectifs . . . . . . . . . . . . . . . . . . . . . . . . 16 1.1 Contexte Récemment, l’accès du grand public à la cartographie interactive avec Google Maps R 1 ou le Géoportail R 2 de l’Institut Géographique National (IGN) et même à la cartographie tridi- mensionnelle avec Google Earth R 3, pour ne citer que les plus connus, a ouvert de nouvelles perspectives dans la gestion des informations géo-référencées [Hen09]. Il existe de nombreuses activités professionnelles et scientifiques qui manipulent de telles données géo-localisées. Si on regarde du côté des applications commerciales destinées au grand public, un impor- tant marché et d’un autre coté des application liées à la recherche allant de l’environnement à la géographie en passant par les aspects sociaux, économiques prospectifs autour des données géo-localisées, est en pleine expansion, propose de nombreux produits et services grand public tels que le GPS, le calcul d’itinéraires, la valorisation du territoire et du tourisme, etc. Ces infor- mations géo-référencées sont organisées, stockées et manipulées par l’intermédiaire de bases de données géographiques spécialisées. 1. http://maps.google.fr/ 2. http://www.geoportail.fr/ 3. http://www.google.fr/intl/fr/earth/index.html 11
  21. 21. Chapitre 1. Introduction Ces nouveaux besoins de représentation des informations spatiales et d’interaction avec une cartographie 3D détaillée posent d’important problèmes scientifiques, par la multitude, les na- tures différentes et la taille des données manipulées. L’augmentation de la quantité de données dans un SIG nous permet d’avoir de nouveaux usages et produire de nouvelles représentations. Les cartes proposées sont longtemps restées bidimensionnelles souvent statiques, mais avec la croissance des capacités graphiques des ordi- nateurs, une cartographie fortement interactive, dynamique et pouvant selon le besoin intégrer la 3D ouvre de nouvelles et nombreuses perspectives. Nous nous sommes intéressés en particulier à cet aspect 3D dans le cadre d’usages tels que : • la modélisation des villes et de leur sous-sol : les divers usages liés à la localisation des réseaux souterrains en 3D : consultations, vérifications, gestion étendue de réseaux, de l’aménagement urbain, gestion de patrimoine bâti ... Des applications similaires existent aussi dans la domaine de la géologie ; • l’analyse de problématiques liées à l’environnement (bruit, inondations, propagations de pollutions aériennes ou de liquides ...) ou liées à la sécurité (modélisation de feux ou d’accidents liés à des risques naturels ...). Il s’agit de fac¸on plus générale d’intégrer la 3D dans certaines analyses spatiales nécessitant la manipulation des pentes ou altitudes sur des surfaces. Ces usages font appel à plusieurs fonctions d’exploration des données tridimensionnelles. Citons par exemple : • la visualisation, la navigation dans le modèle 3D, la simulation d’ensoleillement ou du cycle jour/nuit ; • des calculs et des représentations géométriques dérivés de l’élévation ; • l’analyse spatiale en 3D ; • la modélisation mathématique dans l’espace-temps (propagation de phénomènes dans le temps et dans l’espace ...). Parmi ces fonctions d’exploration de données 3D, nous nous sommes intéressés en particulier au passage de la visualisation/navigation vers une véritable exploration tridimensionnelle. Nous émettons l’hypothèse qu’il sera, à court terme, indispensable de pouvoir explorer à la souris ces territoires virtuels, de zoomer d’une échelle globale à une échelle très fine pour en percevoir les moindres détails. Ce passage pose des problèmes liés à la topologie volumique et aux bases de données multi-échelles [BTO11]. Côté logiciels, aujourd’hui, Oracle II, PostGres/PostGIS et ArcView 3D savent stocker et utiliser des données 3D. Il reste cependant des problèmes de standardisation des formats de stockage, d’amélioration de la performance et de la gestion des objets 3D. Un autre problème majeur est de trouver un moyen efficace pour visualiser ces masses de données volumineuses avec les contraintes matérielles existantes. Prenons un exemple : une carte d’élévation d’une couche géographique qui couvre une ré- gion de 400km2 avec une précision de 5 mètres prendra un peu plus de 25 gigaoctets en mémoire centrale. Comment est-il alors possible de représenter des territoires de plusieurs téraoctets en utilisant un ordinateur standard ? 12
  22. 22. 1.2. Système d’information géographique (SIG) Dans cette partie, nous allons présenter tout d’abord quelques notions de base d’un système d’information géographique. Ensuite, nous allons présenter comment ces données peuvent être interprétées et représentées en 3D. Comme notre problématique principale se situe au niveau de l’affichage de cette masse importante de données, nous présentons de manière synthétique les nouvelles capacités des cartes graphiques qui vont nous permettre de proposer des solutions plus performantes pour affichage. Nous terminons par un positionnement de la problématique permettant de situer les objectifs de cette thèse. 1.2 Système d’information géographique (SIG) 1.2.1 Définition d’un SIG Un système d’information géographique est un système d’information capable d’organiser et de présenter des données alphanumériques spatialement référencées, ainsi que de produire des plans et des cartes. Ses usages couvrent les activités géomatiques de traitement et diffusion de l’information géographique [The96]. La représentation est généralement en deux dimensions, mais un rendu 3D ou une animation présentant des variations temporelles sur un territoire sont possibles. FIGURE 1.1 – Les différents types de données dans un Système d’Information Géogra- phique. Les trois premiers objets (point, ligne et polygone) sont représenté en 2D. Les deux suivants (relief et objet) sont représentés en 3D (figure extraite de Wikipedia). Nous nous intéressons à un des multiples usages courant du système d’information géogra- phique qui est la représentation la plus réaliste possible de terrain en se basant sur des primitives géométriques : points, des vecteurs (arcs), des polygones ou des maillages (raster) (voir figure 1.1). À ces primitives sont, la plupart du temps, associées des informations attributaires telles que la nature (route, voie ferrée, forêt, etc.) ou toute autre information contextuelle (nombre d’habitants, type ou superficie d’une commune, type de végétation, etc). 1.2.2 Représentations des objets géographiques Dans un système d’information géographique, nous disposons de trois principaux types de primitives géométriques pour représenter les objets géographiques : • le point (x,y) ou ponctuel ; • la ligne ((x1,y1), ..., (xn, yn)) ou linéaire ; 13
  23. 23. Chapitre 1. Introduction • le polygone ou surfacique. À l’heure actuelle, il n’existe aucun SIG qui gère complètement les polyèdres, ou volumiques 3D [BTO11]. Dans le meilleur des cas, nous utilisons des données dites 2,5D : à un point (x,y) est associé une valeur (z) et une seule. Afin de pouvoir visualiser ces entités, il existe deux modes de représentations possibles (Voir figure 1.1) : • vectoriel (format vecteur) : les objets sont représentés par des points, des lignes, des poly- gones ou des polygones à trous ; • matriciel (format raster) : il s’agit d’une image, d’un plan ou d’une photo numérisée et affichée dans le SIG en tant qu’image. Souvent, ces données sont représentées dans un système de coordonnées terrestres (sphé- rique ou projectif) qui permet de référencer les objets dans l’espace et de positionner les objets les uns par rapport aux autres. Les objets sont généralement organisés en couches, chacune ras- semblant l’ensemble des objets homogènes (bâti, rivières, voirie, parcelles, etc.). Souvent la couche de base est constituée d’une représentation plus ou moins réaliste d’une portion de la planète en 2D ou 3D. Lorsque la représentation est en 3D, elle est supportée par un modèle numérique de terrain (MNT). Les autres informations géolocalisées sont ensuite placées au des- sus de cette base, le tout formant une reproduction en 3D des objets et de leur position sur le terrain. 1.2.3 Modèle Numérique de Terrain (MNT) Un modèle numérique de terrain est une représentation de la topographie (altimétrie et/ou bathymétrie) d’une zone terrestre (ou d’une planète tellurique) sous une forme adaptée à son utilisation par un ordinateur. Une manière simple pour le représenter est une carte raster bitmap dans laquelle chaque valeur du tableau correspond à une valeur d’altitude (voir figure 1.2). En cartographie 2D, les altitudes sont habituellement représentées par des courbes de niveau et des points cotés. Suivant la taille de la zone couverte, la plupart des MNT, utilisent pour les petites zones un maillage régulier carré, et, pour les grandes zones un maillage pseudo carré dont les côtés sont des méridiens et des parallèles. Ce maillage est la base pour une représentation en 3D du terrain (voir figure 1.3). L’acquisition de ces données d’altitude peut se faire de plusieurs manières (en fonction de l’évolution des techniques d’acquisitions de données) : • par interférométrie radar ; • par stéréoscopie à partir de couples d’images aériennes (photogrammétrie) ou prises par satellite ; • par numérisation des courbes de niveau d’une carte ; • par saisie directe des coordonnées (x, y, z) des points du terrain, mesurées par GPS, tri- angulation (par des géomètres) ou lasergrammétrie (technique permettant de capturer les coordonnées d’un point en x,y,z au moyen d’un laser) ; • par système laser aéroporté (LIDAR). Aujourd’hui, avec l’apparition des nouvelles techniques d’acquisitions (par satellites, LI- DAR ...), les données deviennent de plus en plus précises. Celles-ci peuvent atteindre une préci- sion de 25 centimètres. Cette qualité implique une masse de données importante. Actuellement, 14
  24. 24. 1.2. Système d’information géographique (SIG) FIGURE 1.2 – Dans une image d’un modèle numérique de ter- rain, une carte raster de niveau de gris est utilisée pour présenter cette structure de données : à chaque pixel correspond une valeur d’altitude. FIGURE 1.3 – Rendu en 3D d’un MNT de Tithonium Chasma dans la partie ouest de Valles Marineris, sur Mars. Le rendu tri- dimensionnel est obtenu en calculant un éclairage artificiel, qui vient dans ce cas d’en haut à droite (figure extraite de Wikipé- dia). 15
  25. 25. Chapitre 1. Introduction il est normal d’avoir plusieurs Tera-octets de données pour représenter le MNT d’un relief. L’augmentation du volume de données et l’ajout d’une dimension supplémentaire pour créer la 3D impliquent de nombreux enjeux sur : • la structure de données : le format de stockage, la vitesse des requêtes/réponses lors de l’interaction avec les données, • l’interaction avec ces données : leur représentation, l’utilisation au mieux des nouvelles possibilités des cartes graphiques. Notre travail se situe sur cette seconde problématique que nous allons maintenant approfondir. Nous allons donc au préalable présenter les éléments clefs dans l’évolution matérielle des cartes graphiques. 1.3 L’évolution matérielle des cartes graphiques Les architectures parallèles sont devenues le paradigme dominant en informatique depuis les années 2000. En effet, la vitesse de traitement, liée à l’augmentation de la fréquence des proces- seurs, connaˆıt des limites en raison d’une augmentation de la production thermique provoquant entre autre des erreurs de calculs. C’est aussi la raison pour laquelle depuis longtemps déjà l’augmentation de la vitesse de calcul passe également par une architecture comportant de nom- breuses unités de calcul. La création de processeurs multi-cœurs, traitant plusieurs instructions en même temps au sein du même composant, résout ce dilemme pour les machines de bureau depuis le milieu des années 2000. Doubler le nombre de processeurs permet à de nombreux pro- grammes d’aller deux fois plus vite (Voir figure 1.4). En revanche, le doublement du nombre de transistors dans un processeur de série créé une augmentation très modeste de la performance et une dépense d’énergie énorme. Ceci explique l’évolution des cartes graphiques des dernières années qui se caractérise par un parallélisme massif et par la généricité de la programmation. Augmenter le parallélisme a permis une augmentation du débit du rendu à la fois par la mul- tiplication de la fréquence d’images générées et par l’accroissement en taille de ces dernières. La généricité a facilité l’émergence de nouveaux effets de rendu en temps réel grâce à l’apparition de composants programmables comme les unités de pixelisation programmables (programmable pixel shaders units). Il est important pour nous de maˆıtriser cette évolution technologique qui nous permettra finalement d’exploiter notre masse de données SIG précises et volumineuses. 1.4 Problématique et objectifs • en terme d’interactivité : notamment en ce qui concerne la fluidité lorsque l’utilisateur in- teragit avec le terrain. Le problème revient à pouvoir transformer rapidement une grande quantité de données rasters en 2D vers une représentation en 3D du terrain adaptée pour le champ de vision. La vitesse de transfert de données est un des verrous majeurs qui implique une lecture efficace des données de très grande taille : le format de données 16
  26. 26. 1.4. Problématique et objectifs FIGURE 1.4 – Representation graphique de la loi d’Amdahl. L’accélération du programme par la parallélisation est limitée par le nombre d’exécutions pa- rallèles possibles au sein de l’algorithme. Par exemple, si un programme peut être parallélisé à 90 %, l’accélération maximale théorique sera de x10, quel que soit le nombre de processeurs utilisés (figure extraite de Wikipédia). optimisé, les algorithmes efficaces pour lire les données et les stocker en mémoire cen- trale limitée. En parallèle de cela, un autre problème important est de garder une vitesse d’affichage en temps réel, il est donc nécessaire d’utiliser des techniques de gestion de différents niveaux de détails pour garder seulement les objets qui contribuent à la bonne lisibilité de la scène courante. D’un point de vue technique, grâce à la généricité de la pro- grammation des cartes graphiques récentes, de nombreuse opérations coˆuteuses en calcul CPU des algorithmes choisis pour traiter ces différents problèmes ont pu être implanté directement et plus efficacement sur la carte graphique ; • en terme de qualité de rendu : les progrès technologiques réalisés sur les cartes graphiques nous permettent de traiter et afficher des représentations 3D de manière de plus en plus réaliste grâce à l’utilisation de techniques d’effets de rendu. Il est évident que pour cela il est nécessaire de réaliser de nombreux calculs coˆuteux en temps de traitement et en mémoire sur le GPU. Cette situation est encore plus présente lorsqu’il est nécessaire d’ap- pliquer ces effets sur une grande quantité d’objets tels que le terrain. Cela demande des techniques d’optimisation non seulement pour la performance d’affichage mais aussi pour la gestion de mémoire de la carte graphique. L’objet de cette thèse est d’étudier l’intégration des données géo-référencées peuplant les systèmes d’information géographique dans une cartographie 3D et de proposer des méthodes adaptées pour leur manipulation et leur exploration interactive. Voici les principales notions que 17
  27. 27. Chapitre 1. Introduction nous allons étudier afin de proposer notre solution : • l’interactivité : – les structure de données de type mipmap, clipmap et quadtree ; – la structuration des données par patchs de terrain de manière efficace pour pouvoir afficher des terrains de grande taille ; – l’optimisation de mémoire cache sur la carte graphique ; – la gestion de données hors mémoire centrale. • la qualité rendu : – la gestion de jointure entre les patchs de maillage de terrain ; – la géomorphose ; – l’augmentation de la qualité visuelle du terrain. 18
  28. 28. Chapitre 2 État de l’art Sommaire 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2 Visualisation de grandes images . . . . . . . . . . . . . . . . . . . . . 20 2.2.1 Mipmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.2 Mipmap amélioré – BigView de la NASA . . . . . . . . . . . . 21 2.2.3 Quadtrees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.4 Clipmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3 Visualisation de terrains . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.2 Niveaux de détails basés sur clusters de triangulation . . . . . . 24 2.3.2.1 Niveaux de détails continus . . . . . . . . . . . . . . 24 2.3.2.2 Niveaux de détails statiques . . . . . . . . . . . . . . 27 2.3.3 Gestion de données hors mémoire centrale . . . . . . . . . . . . 31 2.3.3.1 Systèmes basés sur les tuiles de terrain . . . . . . . . 31 2.3.3.2 Organisation de données efficace pour utiliser direc- tement la pagination du système d’exploitation . . . . 32 2.3.3.3 Systèmes qui utilisent des grappes de triangulations . . 33 2.3.4 Optimisation de mémoire cache GPU . . . . . . . . . . . . . . . 35 2.3.5 Gestion de jointures entre les patchs de données . . . . . . . . . 38 2.3.6 Géomorphose . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.3.6.1 Génération de maillages intermédiaires . . . . . . . . 42 2.3.6.2 Coefficient de morphose . . . . . . . . . . . . . . . . 46 2.3.7 Augmentation de la qualité de rendu du terrain . . . . . . . . . . 47 2.3.7.1 Illumination statique . . . . . . . . . . . . . . . . . . 47 2.3.7.2 Illumination dynamique . . . . . . . . . . . . . . . . 48 2.4 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 19
  29. 29. Chapitre 2. État de l’art 2.1 Introduction Dans ce chapitre, nous allons présenter les méthodes de gestion des niveaux de détails dé- diées aux grandes images en 2D, puis pour la visualisation des grands terrains en 3D (voir section 2.3). Pour chaque méthode, nous donnons un résumé de son principe de fonctionnement ainsi qu’une évaluation discutant de ses points forts et de ses inconvénients. Nous commenc¸ons par analyser les méthodes de visualisation des grandes images en 2D afin d’introduire les structures de données les plus utilisées pour la visualisation de données raster de grande taille comme les structure de données de type mipmap, clipmap et quadtree. 2.2 Visualisation de grandes images On trouve dans la littérature trois grandes classes d’algorithmes sur la visualisation d’images de grande taille [Wil83,Sam84,TMJ98], basés sur l’organisation des données en : • mipmap, • quadtree, • ou clipmap. Cette section présente le fonctionnement de chaque méthode ainsi que leurs avantages et inconvénients. 2.2.1 Mipmap Principe : l’image est décomposée en blocs de taille égale, chaque bloc contient une pyra- mide de niveaux de détails d’après le principe de mipmap [Wil83]. Brièvement un mipmap est obtenu en accollant à la version originale de l’image des versions ayant des résolutions succes- sivement divisées par deux (voir figure 2.1). (a) (b) FIGURE 2.1 – (a) Exemple d’une image mipmap. (b) Chaque bloc contient un mipmap Sélection du niveau de détail : en fonction du niveau de zoom, on détermine les blocs vi- sibles, puis chaque bloc transmet une texture à la résolution adéquate à partir de sa pyramide de niveaux. 20
  30. 30. 2.2. Visualisation de grandes images Évaluation : cet algorithme est très simple à mettre en œuvre et efficace pour la visuali- sation interactive de grandes images. Les blocs d’images sont indépendants, ce qui facilite un système de visualisation multi-threading 4. La qualité visuelle est assurée en gardant en mémoire une version basse résolution de chaque bloc. Cependant, cette technique est inefficace pour la visualisation d’image de très grande taille. Une vision globale de l’image implique un nombre de blocs trop important. 2.2.2 Mipmap amélioré – BigView de la NASA Principe : en 2002 la Nasa présente BigView [NAS02] qui est son logiciel pour visualiser les images de grande dimension. Il utilise le même principe que le mipmap classique [Wil83] mais dans une version améliorée. Un processus de pré-traitement génère une pyramide de ni- veaux de détails de l’image globale, ensuite chaque niveau est décomposé en blocs de taille égale pour l’affichage (voir figure 2.2). Google Maps 5 utilise aussi le même principe de fonc- tionnement. FIGURE 2.2 – Principe utilisé par le visualiseur BigView de la NASA. Sélection du niveau de détails : en fonction du niveau de zoom, on détermine le niveau actif dans la pyramide des niveaux de détails, puis les blocs visibles de ce niveau. Évaluation : cette technique de visualisation est simple et corrige les défauts de la première technique mipmap. Une vue globale de l’image ne demande plus un grand nombre de blocs. Ce nombre est défini par la taille de l’écran. Cependant, pour l’affichage, les tuiles de même niveau doivent être toutes chargées en mémoire centrale. Cette propriété implique une dépendance forte de la qualité visuelle avec la vitesse de lecture des données et le nombre de tuiles à charger. Un affichage progressif de l’image n’est pas possible. 2.2.3 Quadtrees Principe : c’est une structure de données classique qui a été adaptée pour la visualisation d’images de grande taille [Sam84]. L’image originale est décomposée en blocs par un quadtree, 4. Les ordinateurs dits multi-threadé ont plusieurs CPUs qui leur permettent d’exécuter efficacement des threads multiples 5. maps.google.com 21
  31. 31. Chapitre 2. État de l’art chaque nœud contenant une texture de même taille. Le nœud racine n’a pas de père, il contient l’image globale avec une version de très basse résolution. Il est subdivisé ensuite en quatre nœuds fils de taille égale, chaque fils couvre un quart de l’image de son père, donc, les quatres couvrent la totalité de l’image (voir figure 2.3). La résolution de l’image de chaque fils est deux fois plus grande que celle de leur père. Ce processus de subdivision se termine quand un nœud atteint la résolution maximale de l’image. FIGURE 2.3 – Principe de la décomposition de texture par un quadtree. Sélection du niveau de détails : en fonction du niveau de zoom, on détermine quels sont les nœuds visibles, puis chaque nœud décide s’il nécessite une subdivision pour avoir plus de détails. Cette décision est faite en comparant l’erreur de simplification d’un nœud d’image avec l’erreur définie par niveau de zoom. L’erreur d’un nœud est calculée en fonction de sa taille d’image par rapport à celle de l’image complète pour couvrir la même région de données. Ce processus est fait de haut en bas, à partir du nœud racine. Évaluation : cette technique est très puissante et très simple à mettre en œuvre. Elle résout le problème de remise à l’échelle de la première technique de mipmap. La structure de quadtree permet un affichage au fur et à mesure des blocs chargés. Les blocs peuvent être chargés et affichés indépendamment, ce qui facilite le côté multi-threading de l’application. Afin de garder une bonne qualité visuelle de l’image pour des déplacements de vue rapides, quand un nœud finit d’être chargé, il est préférable de garder la texture du nœud parent en mémoire. Ce stockage permet d’avoir toujours en mémoire une version basse résolution de l’image originale. Cela implique cependant un coˆut de stockage en mémoire supplémentaire pour sauver la partie en haut de l’arbre. 22
  32. 32. 2.2. Visualisation de grandes images 2.2.4 Clipmap Principe : cette technique utilise le principe des Clipmaps matériels de SGI [TMJ98] où la texture est représentée par une pyramide de niveaux de détails centrée au milieu de l’écran. Chaque niveau contient une texture de taille fixe supérieure à celle de l’écran. Le niveau 0 contient l’image globale de très basse résolution, le niveau plus haut couvre une région deux fois moins grande mais ayant deux fois plus de résolution, le dernier niveau contient l’image originale (voir figure 2.4). FIGURE 2.4 – Principe de fonctionnement des Clipmaps de SGI (figure extraite de [TMJ98]). Sélection du niveau de détails : en fonction du niveau de zoom, le niveau actif du Clipmap est déterminé et ensuite chargé et affiché à l’écran. Évaluation : la gestion mémoire de cette technique est très efficace, pour chaque déplace- ment du point de vue, seulement une partie de l’image est mise à jour. En pratique, souvent cette région ne dépasse pas la moitié de l’image. Cette mise à jour est beaucoup moins coˆuteuse que le chargement total d’une nouvelle image. En outre, le nombre de niveaux de Clipmaps est fixe, donc il n’y a plus d’allocation et désallocation de la mémoire graphique au moment de l’exécution du programme. Cette technique fonctionne bien sur un ordinateur standard ayant une mémoire limitée. Cependant, il y a une limite de la dimension de texture supportée pour les 23
  33. 33. Chapitre 2. État de l’art cartes graphiques actuelles de 4096 × 4096 pixels. En plus de cela, à chaque déplacement de la vue, la dépendance entre différents niveaux de détails demande une mise à jour complète de la pyramide. Cela devient crique pour des déplacements rapides. Enfin, une machine multi-pipe 6 de rendu ne peut pas être exploitée correctement avec cet algorithme. Nous allons retrouver dans la section suivante les méthodes de visualisation du terrain qui utilisent les mêmes principes de structure de données (mipmap, clipmap et quadtree) afin de pouvoir gérer une masse importante de données d’élévations. 2.3 Visualisation de terrains 2.3.1 Introduction Il existe de nombreuses méthodes de visualisation de terrain de très grande taille. Dans cette section, nous allons les organiser en nombreuses catégories afin d’analyser les points forts et les l’évolution de différentes méthodes : les méthodes de niveau de détails basé sur cluster de trian- gulation (voir section 2.3.2), les méthodes pour gérer les données hors mémoire centrale (voir section 2.3.3), les méthodes pour optimiser la mémoire cache GPU (voir section 2.3.4), les mé- thodes pour gérer la jointure entre différents patchs de données (voir section 2.3.5), les méthodes de géomorphose (voir section 2.3.6) et finallement, les méthodes qui permettent d’augmenter la qualité de rendu du terrain (voir section 2.3.7). La section suivante présente l’évolution des méthodes de visualisations du terrain et les points forts des méthodes de niveau de détails basé sur les clusters de triangulation. 2.3.2 Niveaux de détails basés sur clusters de triangulation On trouve dans la littérature deux grandes catégories de techniques de niveaux de détails pour le rendu de terrain : • les méthodes à base de niveaux de détails continus, • les méthodes à base de niveaux de détails statiques Nous présentons dans la suite les techniques de rendu de terrain dans l’ordre chronologique d’évolution de la carte graphique pour présenter les concepts importants pour la visualisation du terrain. 2.3.2.1 Niveaux de détails continus Pendant longtemps l’affichage des polygones est resté très coˆuteux pour les cartes gra- phiques. Les travaux sur l’amélioration des algorithmes sont donc concentrés sur la diminution du nombre de triangles du maillage à afficher. À chaque image, selon la position et l’orientation de la caméra, un maillage simplifié est construit dynamiquement. Cela est réalisé grâce à une structure de données particulière. 6. Un ordinateur qui contient plusieurs cartes graphiques. 24
  34. 34. 2.3. Visualisation de terrains En 1996, Hoppe présente la technique Progressive Mesh [Hop96] : à partir d’un maillage quelconque, il construit une hiérarchie d’arêtes. Cette structure de données lui permet de générer dynamiquement un maillage adaptatif en effectuant des opérations d’effondrements de sommets (edge collapse en anglais) et de décompositions de sommets (vertex split) de manière récursive (voir figure 2.5). Il améliore ensuite sa technique originale pour traiter des données de taille plus importante [Hop97]. Un an plus tard, Hoppe continue à améliorer sa technique pour la visualisation du terrain [Hop98] : le terrain est décomposé en blocs de taille identique, chaque bloc est un maillage de type Progressive Mesh. Au moment du rendu, seulement les blocs qui appartiennent au cône de vison sont sélectionnés pour l’affichage. Afin de garder la continuité entre les blocs de terrain, il n’effectue pas les opérations d’effondrements et de décompositions sur les sommets qui se situent sur la frontière des blocs. FIGURE 2.5 – Principe de construction de vertex hierachy : au moment de la composition de sommets (edge collapse) les sommets v1 et v2 (à gauche) se regroupent pour former sommet v (à droite). La décomposition de sommets (vertex split) transforme le sommet v (a droite) en sommets v1 et v2 ce qui implique un maillage plus complexe (figure extraite de [Hop96]). Afin de mieux exploiter la nature régulière des données d’élévation, de nombreuses tech- niques utilisent une structure moins coˆuteuse en mémoire centrale et permettent d’avoir une mé- thode de simplification de maillage plus rapide [LKR+96,DWS+97,LP01]. Lindstrom décom- pose le terrain en blocs via un quadtree [Sam84]. Puis, le maillage de chaque bloc est construit en utilisant le principe de “longest edge bisection” [LKR+96] : un triangle est décomposé en deux en reliant un sommet avec le milieu de l’arête adjacente (voir figure 2.6). Lindstrom et Pascucci améliorent ce principe de construction de maillage en utilisant un parcours de graphe orienté acyclique pour former un maillage unique de tous les blocs de maillage du terrain [LP01]. Duchaineau, dans ROAM [DWS+97], utilise le même concept que Lindstrom [LKR+96] pour la simplification du maillage. Au lieu de construire une hiérarchie de sommets, Duchai- neau regroupe les triangles. Ce choix permet d’avoir une structure de données moins grande. La construction de la hiérarchie de sommets de Lindstrom [LKR+96] devient une construction d’arbres binaires de triangles pour former le maillage du terrain (voir figure 2.7). Rotteger [RHSS98] utilise le même principe de subdivision de triangle que Duchaineau a utilisé dans ROAM [DWS+97] pour construire le terrain. Il augmente encore la taille des pri- 25
  35. 35. Chapitre 2. État de l’art FIGURE 2.6 – Lindstrom1 - génération de maillage par longest edge bisection. Les triangles ADB et DBC ne peuvent pas être combinés pour former ACB car les triangles AED, EDB, DBF et DFC sont encore combinés. Ainsi, une hiérarchie de sommets est construite (figure extraite de [LP01]). FIGURE 2.7 – Construction d’un arbre binaire de ROAM. A chaque subdivi- sion, le triangle se divise en deux (figure extraite de [DWS+97]). mitives graphiques en utilisant un triangle fan 7 pour former le maillage de chaque nœud du quadtree. De son coté, Pajarola [Paj98] optimise la construction du maillage du nœud quadtree avec l’utilisation d’un parcours de graphe hamiltonien (voir figure 2.8). Le résultat d’un parcours de graphe est un maillage de type triangle strip 8 qui est plus optimisé pour l’affichage sur les nouvelles architectures des cartes graphiques. Les points forts de ces méthodes [Hop96,Hop97,LKR+96,LP01,DWS+97,RHSS98] sont : • moins de triangles à envoyer à la carte graphique ; • une bonne qualité de maillage. Les points faibles sont : • le maillage est mis à jour trop souvent. A chaque image, un nouveau maillage est généré 7. Le Triangle Fan est un mode de dessin 3D qui permet d’afficher des triangles partageant un sommet central. 8. Le Triangle Strip est une séries de triangles connectés qui partagent les arêtes. Il permet un affichage plus rapide est une optimisation d’utilisation de mémoire graphique. 26
  36. 36. 2.3. Visualisation de terrains FIGURE 2.8 – Construction maillage de type triangle strip d’un noeud quadtree par un parcours de graphe hamiltonien (figure extraite de [Paj98]). et ensuite envoyé à la carte graphique. Cela implique beaucoup de temps de calcul CPU ; • le coˆut de construction et de maintenance du maillage est élevé. Le maillage est dynamique donc il faut le stocker en mémoire et l’envoyer au GPU à chaque rendu. Plus le maillage est grand, plus l’algorithme est coˆuteux ; • l’affichage n’est pas optimal sur les cartes graphiques modernes car chaque triangle est interprété individuellement. Il est difficile et coˆuteux en CPU de former de grands tri- angle strips (bandes de triangles partageant des sommets) qui sont un moyen efficace pour accélérer le rendu. Cette partie est un résumé des méthodes de visualisation du terrain qui s’adaptent à une faible capacité d’affichage des cartes graphiques. Nous avons y présenté les concepts de base du niveau de détails, comme l’utilisation d’une structure de hiérarchique (arbre binaire, quad- tree) pour organiser les primitives graphiques (points, arêtes, triangles). Au fil du temps, ces techniques évoluent en gardant une structure hiérarchique de primitives dont la taille est aug- mentée. Les primitives passent de type point [LKR+96] à arête [Hop97] pour devenir triangle [DWS+97,DWS+97,Paj98,LP01]. Cette évolution permet d’une part d’alléger le coˆut de créa- tion et stockage de structures de données et d’autre part d’exploiter la capacité d’affichage d’un grand nombre de triangles des nouvelles familles de cartes graphiques. Cette avancée technolo- gique nous guide vers une nouvelle famille de techniques de visualisation du terrain que nous appelons les techniques de niveaux de détails statiques. 2.3.2.2 Niveaux de détails statiques Depuis quelques années, grâce aux progrès technologiques, les cartes graphiques deviennent de plus en plus performantes en capacité d’affichage, puissance de calcul, mémoire de stockage et généricité de programmation. Il est plus efficace d’envoyer plus de triangles à afficher sur la carte graphique que de décider de leur affichage par le CPU. De nombreuses recherches ont été effectuées pour améliorer les algorithmes de rendu du terrain : diminuer au maximum le travail de CPU pour décharger la totalité du travail de rendu à la carte graphique (GPU). Ces algorithmes fonctionnent également sur une structure de données hiérarchique présentée dans la section précédente (voir section 2.3.2.1) mais avec une augmentation significative de la 27
  37. 37. Chapitre 2. État de l’art taille des primitives. Le principe est très simple : ces algorithmes décomposent le terrain en plusieurs tuiles et chaque tuile est associée à un maillage optimal pour le rendu sur cartes gra- phiques. Le nombre de triangles générés pour chaque tuile par ces méthodes est supérieur aux autres méthodes de simplification expliquées dans la section précédente qui consistent à déter- miner un ensemble parfait de triangles. Nous allons découvrir dans cette section de nombreux travaux qui améliorent les approches présentées dans la section précédente (2.3.2.1). RUSTIC [Pom00] et CABTT [Lev02] sont des améliorations de ROAM [DWS+97]. Ils gardent la structure de l’arbre binaire pour représenter le terrain. Les nœuds en bas de l’arbre sont représentés par un maillage de type ROAM mais sont formés par un triangle strip. Ces maillages sont pré-calculés et sauvegardés sur le disque dur dans CABTT ou générés automa- tiquement au moment de l’affichage avec RUSTIC. Les nœuds en haut de l’arbre binaire sont gardés dans la mémoire cache de la carte graphique pour préserver une représentation simple du terrain. Les auteurs ont remarqué que : avec une augmentation de seulement 50% du nombre de triangles par image par rapport à ROAM [DWS+97], la performance d’affichage est augmentée d’un facteur quatre. Une autre approche est l’utilisation du principe du quadtree [Sam84] pour représenter le terrain. Thatcher l’a utilisée pour décomposer le terrain en tuiles de tailles différentes [Tha02]. Le maillage de chaque nœud est construit en type ROAM [DWS+97] et est pré-calculé sur une mémoire externe et stocké dans une structure de type quadtree (voir figure 2.9). Les blocs de données indépendantes sont chargés en mémoire centrale grâce à un thread de chargement puis envoyés à la carte graphique pour l’affichage. FIGURE 2.9 – Principe de Chunked LOD : le terrain est décomposé en bloc d’un quadtree (figure extraite de [Tha02]). Avec le même objectif de garder une indépendance entre des blocs de maillage du terrain, BDAM [CGG+03a] et P-BDAM [CGG+03b] utilisent un arbre binaire pour représenter la struc- ture de niveau de détail du terrain. Chaque nœud de l’arbre est un maillage optimisé de type TIN (Triangular Iregular Network) 9. Afin de garder l’indépendance des nœuds, le maillage sur la frontière des nœuds reste identique (voir figure 2.10). Grâce à cette indépendance de données géométriques entre différents blocs de maillage, la simplification de maillage et la lecture de 9. Réseau de triangulation irrégulière basé sur le principe de triangulation de Delaunay 28
  38. 38. 2.3. Visualisation de terrains données géométriques des nœuds depuis la mémoire externe peuvent être exécutées en parallèle sur des processeurs différents ou des machines différentes. Avec cette structure, la répartition du terrain par les gros patchs de données permet d’avoir un arbre binaire beaucoup plus petit par rapport aux méthodes précédentes [DWS+97, Hop98, LP01]. Cela permet d’avoir un parcours d’arbre très rapide pour construire le relief. FIGURE 2.10 – Maillage d’un cluster de BDAM. Notons que les sommets sur la bordure de ces deux nœuds restent identiques (figure extraite de [CGG+03a]). L’approche de hiérarchie 4-8 mesh cluster de Hwa et al. [HDJ04] est identique que BDAM [CGG+03a]. Les auteurs ont remarqué qu’avec la capacité d’afficher massivement les triangles des cartes graphiques, il est possible d’avoir une représentation adaptative du terrain en utilisant les triangles qui ont une projection inférieure ou égale à un pixel dans l’espace d’écran. Il n’est plus indispensable d’utiliser un maillage non uniforme pour représenter le terrain car ce der- nier demande un calcul coˆuteux pour la simplification de maillage. Il est également nécessaire d’avoir une structure de données non-uniforme coˆuteuse en mémoire centrale. Pour résoudre ce problème, ils ont reconstruit BDAM en utilisant une grille régulière pour former le maillage de chaque nœud. En 2000, De Boer utilise le principe du mimap [Wil83] sur les images pour présenter Geo- metrical Mipmapping [DB00]. Il décompose le terrain en tuiles de taille égale. Chaque tuile est ensuite associée à une pyramide de différents niveaux de détails. Le maillage de chaque niveau est aussi un maillage triangle strip de type grille régulière, chaque niveau a deux fois plus de résolution que les niveaux inférieurs (voir figure 2.34). Hoppe utilise ce même principe de maillage régulier que De Boer [DB00] dans Geometry Clipmap [LH04] [AH05]. Le principe de cet algorithme est le même que celui pour les clipmaps sur les images en 2D [TMJ98]. Le terrain est représenté par une pyramide de niveaux de détails. Chaque niveau est de même taille mais diminue sa précision par deux à chaque descente du niveau de la pyramide (voir figure 2.12). Il s’agit d’utiliser un maillage régulier imbriqué sur la mémoire de la carte graphique. Cette pyramide est mise à jour en fonction du déplacement de l’utilisateur sur le relief, cette utilisation optimisée ainsi le cache de la mémoire graphique 29
  39. 39. Chapitre 2. État de l’art FIGURE 2.11 – Maillage de type géo-mipmap (figure extraite de [DB00]). et le transfert de données. C’est une technique hybride à mi-chemin entre une technique avec niveaux de détails continus et une avec niveaux de détails statiques. Une implémentation de cet algorithme utilisant entièrement la carte graphique pour la gestion de données a été présentée en 2005 [AH05] et donne une performance plus élevée que la technique originale. FIGURE 2.12 – Principe de fonctionnement de Geometry Clipmap (figure extraite de [LH04]). Strugar [Str09] continue à utiliser un maillage de type grille régulière directement à partir des données d’élévation originales comme geometry clipmap ( [LH04, AH05]) en appliquant une structure de niveau de type quadtree comme Ulrich [Tha02] pour obtenir une meilleure ré- partition de niveau de détails. Cette méthode utilise la distance entre la caméra et les nœuds 30
  40. 40. 2.3. Visualisation de terrains pour définir le niveau de détails et le maillage de chaque bloc (voir figure 2.13). Comme dans geometry clipmap, cela introduit un terrain de précision qui se dégrade progressivement à partir de la position de la caméra et qui ne s’adapte pas avec la nature irrégulière du terrain. FIGURE 2.13 – Une répartition de terrain en utilisant un quadtree basé sur la distance par Strugar (figure extraite de [Str09]). Est présenté dans cette partie un aperc¸u des nouvelles méthodes de visualisation du ter- rain, nous remarquons l’utilisation d’une structure hiérarchique (arbre binaire, clipmap, mip- map, quadtree) présentée dans dans la section précédente (voir section 2.3.2.1) mais avec une augmentation significative de la taille des primitives. Nous remarquons aussi, qu’en plus de l’amélioration de la capacité matérielle, la possibilité de programmer directement des cartes graphiques est offerte. Cela nous permet d’avoir des algorithmes plus performants qui peuvent être implantés entièrement sur la carte graphique en libérant les charges de calculs du CPU. Dans la section suivante, nous allons analyser l’utilisation de cette structure de données pour gérer les données de très grande taille hors mémoire centrale. 2.3.3 Gestion de données hors mémoire centrale 2.3.3.1 Systèmes basés sur les tuiles de terrain Une des approches classique pour éviter la pagination sur mémoire centrale est de répartir les données d’élévations sur la mémoire externe de manière efficace et de charger seulement les blocs de données nécessaires pour l’affichage. Elle est utilisée par plusieurs systèmes de visualisation de terrain comme NPSNET [FZPM93], TerraVison [LL95,RLIB99], GoogleEarth et WorldWind de la Nasa. Le simulateur NPSNET [FZPM93] utilise un terrain de taille 50km x 50km qui est ensuite décomposé en blocs de taille 1km x 1km. Afin de pouvoir gérer cette masse de données, ils utilisent à l’intérieur de cet algorithme un mécanisme de chargement de données 31
  41. 41. Chapitre 2. État de l’art dynamique pour ne garder qu’une zone de données de dimension 16km x 16km en mémoire centrale. Quand l’utilisateur se déplace sur le terrain, seulement une région de terrain de taille 16km x 1km est chargée en mémoire centrale et inversement une région de même taille de l’autre coté du terrain est enlevée de la mémoire. La figure 2.14 illustre le principe de fonctionnement de cet algorithme. FIGURE 2.14 – L’architecture de la pagination de données du terrain par NPS- NET (figure extraite de [FZPM93]). TerraVision [RLIB99] utilise une pyramide de niveaux de détails pour garder les tuiles de données d’élévations et de texture (voir figure 2.15). Le système utilise un quadtree pour la sélection de niveaux de détail, les feuilles de quadtree sont seulement chargées en cas de besoin. Cette solution permet à TerraVision de visualiser les terrains de très grande taille (de taille planète). Le système est conc¸u pour visualiser les données du terrain sur un réseau de type Internet. Afin de pouvoir s’adapter à une transmission de données instables via le réseau, le chargement de données est fait de manière à ce qu’il existe toujours une version de terrain de basse résolution disponible pour l’affichage tandis qu’une version plus détaillée est transférée via le réseau. Afin de garder une bonne vitesse d’interaction pour l’utilisateur, le chargement de données est exécuté indépendamment et parallèlement à l’affichage du relief par un thread de chargement de données. 2.3.3.2 Organisation de données efficace pour utiliser directement la pagination du système d’exploitation Une autre approche plus simple est d’organiser les données intelligemment et d’utiliser les techniques d’allocation de la mémoire par le système d’exploitation qui sont généralement très 32
  42. 42. 2.3. Visualisation de terrains (a) (b) FIGURE 2.15 – Un exemple de pyramide image qui montre (a) quatre niveaux de détails de l’image originale, chaque niveau a une résolution de 128 x 128 pixel, et (b) comment cette structure peut être utilisée pour modifier la résolu- tion d’image sur les différentes régions (figure extraite de [RLIB99]). robustes. Une solution simple et efficace est proposée par Lindstrom et Pascucci [LP01], il s’agit d’organiser correctement les données de terrain sur la mémoire externe, la pagination étant faite par le système via la fonction mmap 10 qui associe à l’adresse mémoire un tableau qui contient les informations du terrain (élévations, erreurs de simplification, etc.). Afin de pouvoir optimiser la vitesse de lecture de données, leur solution organise les données dans l’ordre du niveau de détails le plus simple au niveau le plus complexe à l’intérieur de cette structure. Hoppe [Hop98] utilise une approche similaire en utilisant les méthodes d’allocation mémoire du système d’exploitation Windows : VirtualAlloc(), VirtualFree() pour charger et enlever les blocs de données du terrain sur mémoire centrale. 2.3.3.3 Systèmes qui utilisent des grappes de triangulations Les grappes de triangulation montrent bien leur efficacité en changeant la granularité des opérations de niveaux de détails à partir des triangles et des sommets vers les portions de maillages. Cette diminution de la taille de la structure de données pour représenter la hiérarchie de niveaux de détails diminue également la quantité de mémoire nécessaire pour le stockage. En plus de cela, l’indépendance entre les blocs de maillages implique plus de possibilités pour optimiser pour la transmission de données (en parallèle) et la compression de données. Bao et Pajarola [BP03] proposent un algorithme de niveaux de détails du terrain basé sur les grappes de triangulation pour mapper les données d’élévations du terrain et la structure niveaux de détails sur la mémoire centrale. BDAM et P-BDAM [CGG+03a,CGG+03b] utilisent un arbre binaire de géométrie pour représenter le système de niveaux de détails. Chaque région de l’arbre 10. Une équivalente de cette fonction est MapViewOfFile() sur Windows 33
  43. 43. Chapitre 2. État de l’art est construite par un processus de pré-traitement pour sauvegarder la région correspondant à la géométrie du terrain sur le disque dur. Ces patchs de données sont ensuite rechargés séparément pour l’affichage. Avant d’effectuer le rendu, un tri est effectué spatialement entre ces patchs pour sélectionner que les patchs de données cohérentes pour représenter le terrain. Afin d’optimiser la vitesse de chargement de données et de garder une cohérence entre les scènes, le système utilise une gestion de mémoire cache de type LRU(Least Recently Used). La gestion de texture dans ce système est traitée par l’utilisation d’un quadtree des tuiles de textures compressées par le format DXT 11 et superposées sur la géométrie du terrain. Ulrich [Tha02] et le système d’hiérarchie texture 4-8 [HDJ04] améliorent les approches précédentes en intégrant les données géométries et textures sur la même structure de données. Ulrich [Tha02] construite dans sa méthode un fichier quadtree pré-calculé pour sauvegarder le terrain sur le disque dur. Chaque nœud du quadtree est accompagné avec une géométrie et une texture compressée. Comme BDAM et P-BDAM, Ulrich utilise un thread de chargement de données séparé avec le programme principal, ce thread est aussi utilisé pour libérer les nœuds de quadtree qui ne sont pas utilisés durant un long moment. Dick et al. [DSW09] améliorent le travail de Duchaineau et al. [DWS+97] en apportant la décompression de données sur le GPU : le quatree est compressé de manière efficace par le CPU, puis envoyé à la carte graphique, le GPU fait ainsi la décompression et l’affichage. En plus du travail sur la compression de données quadtree, les auteurs ont présenté une méthode efficace sur la gestion du cache de la mémoire pour le transfert du disque à la mémoire centrale. Pour diminuer une lecture continue sur le disque dur, les données sont regroupées par bloc de 4x4 dans une mémoire cache. Cette mémoire contient les données des tuiles pour l’affichage (voir figure 2.16). Afin d’optimiser la vitesse de chargement de données, une stratégie de préchargement de données est effectuée (voir figure 2.17). La plupart des méthodes existantes demandent un processus de pré-traitement de données sur un format de données compressé et optimisé pour le rendu. Le chargement de données dans ces cas consiste aussi à décompresser les données géométriques vers un format supporté par le processeur de la carte graphique pour l’affichage. Les travaux récents améliorent cela en fai- sant la décompression de données géométriques directement sur la carte graphique [DSW09]. La version basée sur la carte graphique de Asirvatham et Hoppe [AH05], même si ce n’est pas un algorithme qui gère les données hors mémoire centrale, apporte un nouveau horizon en en- levant la construction de géométrique depuis les données d’élévation. Les données d’élévations peuvent être maintenant envoyées directement depuis la mémoire externe à la mémoire de la carte graphique pour l’affichage. Cette partie a résumé les techniques utilisées pour visualiser les données hors mémoire cen- trale. La plupart des méthodes existantes ( [FZPM93,LL95,RLIB99,BP03,CGG+03a,CGG+03b, Tha02,DSW09]) effectuent un processus de prétraitement sur les données originales afin de créer des nouvelles données plus optimisées pour une lecture rapide et en parallèle depuis la mémoire externe vers la mémoire centrale (RAM). A coté de cela, certaines méthodes ( [DSW09,AH05]) enlèvent le processus de prétraitement de données coˆuteux et gardent une bonne vitesse de lec- ture de données en effectuant une lecture directe des données depuis leur format original puis 11. http://en.wikipedia.org/wiki/S3_Texture_Compression 34
  44. 44. 2.3. Visualisation de terrains FIGURE 2.16 – Structure d’un quadtree des tuiles (à gauche) et son arbre de mémoire cache (à droite), les données sont regroupées par groupe de 4 x 4 (figure extraite de [DSW09]). FIGURE 2.17 – Différentes stratégies de préchargement de données : les données à précharger pour un déplacement du point P1 au point P2 en utilisant plusieurs scénarios. Pour la forme d’un cône qui correspond à un déplacement de type exploration sur le terrain, la partie en bleu est chargée. Pour la forme d’un cercle qui correspond à une vue de haut en bas sur le terrain la partie en rouge est chargée en plus (figure extraite de [DSW09]). en réalisant la décompression et la construction de données géométriques sur la carte graphique. Avec la même objectif d’optimiser la vitesse de transmission de données, nous présentons dans la section suivante les techniques récemment inventées pour optimiser la mémoire cache de la carte graphique. 2.3.4 Optimisation de mémoire cache GPU Les derniers progrès technologiques de la carte graphique augmentent considérablement la mémoire des cartes graphiques modernes. De nombreuses méthodes ont exploité ces progrès pour améliorer la performance de leurs systèmes en réutilisant les données géométriques sur 35
  45. 45. Chapitre 2. État de l’art la carte graphique et en diminuant le transfert de ces données entre CPU et GPU. Plusieurs algorithmes utilisent la mémoire vidéo comme un cache de géométries sur la carte graphique BDAM [CGG+03a], Hyperblock-QuadTIN [LPT03,Lev02,Tha02]. Grâce à un système de cache en interne, les géométries des blocs du terrain sont préservées en mémoire vidéo durant un certains temps, cela évite le chargement de données depuis le disque dur vers la mémoire centrale et une transmission de ces données depuis le CPU vers GPU. Lavenberd [Lev02] améliore l’algorithme ROAM Duchaineau [DWS+97] en introduisant les clusters de triangles et les triangles agrégats (voir figure 2.18). Ces triangles sont utilisés pour remplacer les sections de l’arbre binaire de triangles qui ne sont pas encore chargés depuis la mémoire externe pour l’affichage. Afin de garder une vitesse d’affichage rapide et constante, ces triangles sont gardés sur la carte graphique. Chaque triangle agrégat contient le même nombre de triangles subdivisés qui sont lus depuis la mémoire externe. FIGURE 2.18 – Une arbre binaire avec les triangles agrégats. La frontière des triangles agrégats sont en gras (figure extraite de [Lev02]). Une approche plus avancée sur la projection dynamique des primitives graphiques du ter- rain sur la carte graphique est la transmission de données progressive. Schneider et Wester- mann [SW06] décomposent le terrain en tuiles. Chaque tuile est représenté par une structure de hiérarchie de niveaux de détails de maillage imbriquée sur la carte graphique. Les données d’élévations de chaque tuile sont pré-calculées et sauvegardées à l’intérieur d’une structure de sommets et d’indices qui permet de les transférer de manière progressive (voir figure 2.19). Une autre approche intéressante est représentée dans Geometry Clipmap [LH04, AH05]. Les auteurs utilisent les grilles de maillages réguliers imbriqués dans la mémoire de la carte graphique pour représenter les niveaux de détails du terrain. A chaque déplacement du terrain, seulement une partie des données du buffer des sommets du clipmap est mise à jour (voir figure 2.20) Lario et al. [LPT05] proposent plusieurs stratégies de mémoire cache sur la carte graphique afin d’optimiser la capacité de la mémoire vidéo pour sauvegarder les données géométriques du terrain. Leurs résultats sur les anciens travaux comme FastMesh [Paj02] et QuadTIN [PAL02] montrent une augmentation de performance jusqu’à 270% par rapport à l’algorithme original. Cette partie résume de nombreuses techniques proposées récemment qui utilisent la mé- 36
  46. 46. 2.3. Visualisation de terrains FIGURE 2.19 – Structure de données utilisée sur la carte graphique pour assurer une transmission de données de manière progressive. Chaque niveau de détails est associé à un tableau d’index des sommets. Chaque tuile contient un tableau d’index de tous les niveaux de détails. Au moment de l’affichage, selon la quantité de données chargée, l’algorithme construit la liste de sommets au GPU et choisir le niveau de détails du maillage qui s’adapte aux données chargées pour remplir son tableau d’index (figure extraite de [SW06]). FIGURE 2.20 – (a) Carte d’élévation avant la mise à jour. (b) Mouvement de la caméra en vert et la région à mettre à jour en rouge. (c) Carte d’élévation après la mise à jour (figure extraite de [AH05]). moire cache de la carte graphique afin de limiter le nombre de transferts de données depuis le CPU vers le GPU. Ces techniques demandent un minimum d’implantations et modifications de l’algorithme original pour une augmentation considérable de la performance de la vitesse d’affi- chage. La section suivante présente les techniques avancées dans l’informatique graphique pour garder une bonne qualité d’affichage du relief. 37
  47. 47. Chapitre 2. État de l’art 2.3.5 Gestion de jointures entre les patchs de données Un des problèmes majeurs quand nous travaillons avec le niveau de détails du terrain, surtout avec les algorithmes de niveaux de détails statiques (voir section 2.3.2.2), est la jointure entre blocs de maillage de niveaux de détails différents. Dans plusieurs cas (voir figure 2.21), il est possible qu’une discontinuité (ou crack) est créée le long de la jointure, cela apparaˆıt quand les sommets supplémentaires du niveau de détails au-dessus ne co¨ıncident pas avec le segment introduit par le niveau de détails au-dessous. Un autre cas indésirable est l’apparition des T- junctions, cela est dˆu au sommet sur le niveau de détails supérieur qui ne partage pas les sommets adjacents sur les triangles du niveau de détails inférieur. Les artefacts de rendu vont apparaitre au moment du rendu à cause de l’imprécision des valeurs réelles utilisées sur la carte graphique. FIGURE 2.21 – (A gauche) Crack : les sommets supplémentaires du niveau de détails au-dessus ne se co¨ıncident pas avec le segment introduit par le niveau de détails au-dessous et (A droite) T-junction : les sommets sur le niveau de détails supérieur ne partagent pas les sommets adjacents sur les triangles du niveau de détail inférieur. Il existe de nombreuses méthodes pour résoudre ce problème : • Méthode 1 : Les triangles autour du crack continuent à se subdiviser afin de créer une surface continue. Cette solution va introduire des triangles supplémentaires pour produire un maillage lisse et continu. Cette approche est souvent utilisée dans les algorithmes de rendu qui utilisent un arbre-binaire pour représenter le terrain [LKR+96, DWS+97]. La figure 2.22 illustre une subdivision forcée qui est utilisée dans l’algorithme ROAM de Duchaineau [DWS+97]. Nous observons un coˆut de calculs élevé pour cette opération. • Méthode 2 : Le vertex supplémentaire du maillage au niveau de détail au-dessus change sa hauteur pour pouvoir se situer sur le maillage du niveau de détails au-dessous. Cette solution n’introduit pas de triangle supplémentaire, cependant, elle introduit potentielle- ment des artéfacts d’affichage au moment de rendu. Il accepte les T-junction (voir figure 2.21) dans le maillage du terrain pour obtenir une efficacité de performance et une sim- plicité d’implémentation [JZ02]. Dans ce cas, la précision du buffer d’affichage influence beaucoup sur la qualité du terrain pour cette solution. Une méthode similaire qui permet d’éviter les T-junction est simplement d’ignorer les sommets qui se trouvent au centre sur le niveau de détails au-dessus [RHSS98, DB00]. La figure 2.23 illustre comment le T-junction est corrigé dans GeoMipMap [DB00]. • Méthode 3 : Cette méthode est équivalente à la solution précédente en ajoutant des som- 38
  48. 48. 2.3. Visualisation de terrains FIGURE 2.22 – Cet exemple illustre une subdivision forcée ou forced split : le segment entre les triangles T et TB a besoin de se subdiviser pour avoir plus de détails. Afin de garder un maillage continu, un nouveau sommet est alors ajouté sur ce segment. Cela ajoute récursivement les autres sommets sur les triangles adjacents du niveau de détails au-dessus (à droite) (figure extraite de [DWS+97]). FIGURE 2.23 – La correction de crack et T-junction entre deux blocs GeoMip- Map de résolution différente. Le bloc de niveau inférieur a deux fois moins de résolution et ne contient que les sommets en noir. Les sommets en gris appartiennent toujours aux données du bloc GeoMipMap au niveau de détail supérieur, ils sont tout simplement non utilisés pour l’affichage (figure extraite de [DB00]). mets supplémentaires sur le maillage sur la frontière d’un autre de niveau de détails moins élevé. Cette solution implique l’ajout de sommets supplémentaires sur le maillage mais la qualité de la surface générée contient plus de continuité que la solution précédente. Une approche plus avancée de cette solution est de déplacer les sommets sur la fron- tière de deux niveaux de détails différents vers une position arbitraire commune [LL95], [RLIB99, LC03] (voir figure 2.24). Récemment, une proposition sur la même approche adaptée pour un cas plus général est présentée par Fisher et al. [FFB+09]. Cette solu- tion peut être adaptée facilement pour la visualisation du terrain et peut être implémentée directement sur les cartes graphiques actuelles (voir figure 2.25). • Méthode 4 : Afin de pouvoir visualiser un terrain de très grande taille, une solution géné- 39
  49. 49. Chapitre 2. État de l’art FIGURE 2.24 – Une tuile de niveau de détail inférieur à celle qui se trouve à droite (à gache) d’un niveau et (à droite) deux niveau. Dans la solution pro- posée par [LC03], ils utilisent seulement un décalage d’un niveau entre les nœuds. FIGURE 2.25 – Un maillage général est décomposé en un ensemble de blocs de résolution différente (aux frontières des blocs sont représentés par les lignes en bleu). DiagSplit permet de générer une frontière avec un maillage uniforme entre différents blocs (figure extraite de [FFB+09]). rale est de décomposer le terrain en blocs. Pour éviter les cracks entre les blocs, il suffit de ne pas faire la simplification du maillage sur les frontières des blocs [Hop98,CGG+03a, CGG+03b] (voir figures 2.26 et 2.10). FIGURE 2.26 – Le terrain est décomposé en blocs séparés. A chaque opération de simplification de maillage "ecol", la frontière des blocs (en rouge) reste inchangée. Cela permet de recoller les blocs de terrain naturellement à la fin (figure extraite de [Hop98]). • Méthode 5 : Une autre approche pour éviter le crack entre la jointure de différents niveaux de détails est l’ajout de maillage supplémentaire sur la frontière des maillages [LKE09] (voir figure 2.27). Une solution plus simple est l’utilisation des jupes ou "skirts" en anglais 40
  50. 50. 2.3. Visualisation de terrains [Tha02] (voir figure 2.28). Cette solution connue est aussi utilisée dans GoogleEarth 12 et WorldWind 13 de la Nasa. Ces méthodes sont simples à mettre en œuvre, cependant le maillage du terrain généré dans certains cas n’est pas uniforme, l’ajout de maillages supplémentaires n’est qu’une astuce pour cacher le défaut du terrain. FIGURE 2.27 – La frontière entre différents patchs de maillages est reliée par un bandeau de maillage qui relie tous les sommets de deux maillages de résolution différente (figure extraite de [LKE09]). FIGURE 2.28 – "Skirt" est un maillage statique vertical autour de tuiles pour cacher le creux. En pratique, avec le placage de textures et les effets de lumières ces "skirts" sont difficiles à apercevoir (en bas) (figure extraite de [Tha02]). 2.3.6 Géomorphose La morphose (ou morphing en anglais) est un des effets spéciaux applicables à un dessin, vectoriel ou bitmap. Il consiste à fabriquer une animation qui transforme, de la fac¸on la plus fluide et la plus naturelle possible, un dessin initial vers un dessin final. Traditionnellement, une telle opération était faite grâce à l’utilisation d’un fondu, mais elle a été remplacée depuis le 12. http://www.google.com/earth/index.html 13. http://ti.arc.nasa.gov/projects/worldwind/ 41
  51. 51. Chapitre 2. État de l’art début des années 1990 par des techniques beaucoup plus évoluées (triangulation de Delaunay, Spline) [Ben94,Wol98] qui permettent de réaliser les transformations beaucoup plus réaliste. La morphose est beaucoup utilisée dans le cinéma. Un exemple concret est le clip vidéo de Black or White extrait de l’album Dangerous de Micheal Jackson dans les années 90. C’était un des premiers clip vidéos qui a utilisé massivement cet effet. Il a été utilisé sur des personnes de différentes origines (Noir, Asiatique, Latino, Blanc, ...) afin de mettre en évidence la mixité so- ciale. Après le succès de ce clip vidéo et les progrès technologiques des ordinateurs, la morphose est devenue quelque chose de très courant dans les clips vidéos d’aujourd’hui. Comme la morphose (morphing) qui transforme une image en une autre dans l’espace image, le géomorphose (geomorphing) permet de réaliser des transitions très progressives entre les différents niveaux de détails. La morphose est utilisée sur les vertex qui se trouvent dans un niveau de détails pour déplacer vers une autre position qui se trouve dans un autre niveau de détails. C’est une des techniques les plus complexes qui sont introduites actuellement. L’utilisation de la géomorphose demande la connaissance de deux éléments importants : le maillage temporaire qui est utilisé pour la transition entre le niveau de détail Ni et le niveau de détails suivant Ni+1 et l’évolution du coefficient de morphose qui définit la vitesse de mor- phose. Le maillage temporaire utilisé durant la morphose dépend beaucoup de l’algorithme de simplification du maillage. Nous trouvons dans la littérature deux grandes familles : les algo- rithmes qui utilisent un maillage général et ceux qui utilisent un maillage semi-régulier pour représenter le terrain. 2.3.6.1 Génération de maillages intermédiaires Maillage irrégulier L’avantage majeur de ces méthodes est que nous pouvons appliquer la géomorphose sur n’importe quel modèle de données. Cependant, pour assurer une vitesse d’in- teraction en temps réel, ces méthodes utilisent une structure de données complexe et coˆuteuse en mémoire centrale. En plus de cela, elles demandent beaucoup de calculs CPU pour la génération de maillage. Auparavant, la capacité d’afficher des polygones de la carte graphique était limitée. Afin d’optimiser la vitesse de rendu, plusieurs travaux de recherches sont consisté à construire un maillage optimisé du terrain de type TIN (Triangular Irregular Network) pour minimiser le nombre de polygones nécessaires pour l’affichage. La triangulation de Delaunay était très utilisée pour construire le maillage des niveaux de détails du terrain [COL96,CPS97]. En 1996, Cohen- Or et Levanoni [COL96] introduisent l’utilisation de la géomorphose sur un terrain de type TIN en utilisant un maillage temporaire pré-calculé. Ce maillage est ensuite utilisé pour effectuer la transition entre deux versions de niveaux de détails (voir figure 2.29 et 2.30). Luebke et Erikson [LE97] décrivent une méthode générale pour simplifier un maillage quel- conque en utilisant une structure hiérarchique de type clusters. Le système fonctionne en regrou- pant les sommets du maillage par chaque cluster. Au moment de l’affichage, en fonction du point de vue, le programme sélectionne les clusteurs qui contiennent les polygones pour représenter la scène. La simplification et la géomorphose sont effectuées parallèlement sur chaque cluster. Afin d’améliorer la vitesse de génération de maillage, de nombreux travaux ont été effectués pour avoir un accès direct et rapide sur les données au moment de l’exécution. L’utilisation des 42
  52. 52. 2.3. Visualisation de terrains FIGURE 2.29 – La génération d’objets intermédiaires entre deux versions de maillage. Les points marqués sont les points d’intersection entre les segments de deux versions (figure extraite de [COL96]). FIGURE 2.30 – Une version détaillée de l’objet (a). Une version simplifiée (c) et une version de transition entre (a) et (c) au milieu (b) (figure extraite de [COL96]). données statiques pré-calculées est remplacée par une structure de données plus complexe mais qui permet de générer un maillage dynamique pour représenter les différents niveaux de détails du terrain. En 1996, Hoppe présente une autre approche qui utilise la transmission de maillage de fac¸on progressive [Hop96]. Un an plus tard, il introduit une version améliorée de son algorithme ori- ginal qui supporte la dépendance du point de vue [Hop97]. Et l’année suivante, il a introduit la géomorphose dans sa méthode. Cette version de l’algorithme est adaptée pour la visualisation du terrain [Hop98]. Grâce à l’utilisation d’une structure de données bien organisée (une hiérarchie de sommets), Hoppe est capable de retrouver facilement une version de maillage intermédiaire pour effectuer le mélange de maillage au moment d’effectuer la géomorphose. (voir figure 2.31) Maillage semi-régulier permet de tirer l’avantage de la nature régulière des données du terrain notamment les cartes d’élévations du terrain. Plusieurs techniques exploitent cette régularité du terrain pour introduire une structure de données hiérarchique plus adaptée par exemple un arbre binaire ou un quadtree [Paj98,DWS+97]. Cette évolution permet de diminuer le coˆut de stockage de la structure hiérarchique en mémoire centrale. En plus de cela, l’utilisation d’une structure de données adéquate permet d’effectuer la géomorphose directement au moment de la création de maillage sans passer par un maillage intermédiaire. Duchaineau et al. [DWS+97] utilise un arbre binaire de sommets pour représenter le terrain, le niveau de détail du terrain est effectué par les opérations "split" et "merge" (voir figure 2.32). La géomorphose est effectuée au moment de l’exécution de ces opérations. Par exemple pour une opération "split", dans un intervalle de temps de 0 à 1, le sommet vc se déplace de la position 43
  53. 53. Chapitre 2. État de l’art FIGURE 2.31 – Deux versions de maillage MA et MB qui demandent une géomorphose entre eux. Le maillage temporaire MG permet d’effectuer cette opération. MG contient tous les sommets actifs en dessous ou de même niveau que MA et MB (figure extraite de [Hop98]). initiale v0 vers le point milieu de v0 et v1 (voir figure 2.33). Le même principe est utilisé pour la géomorphose par Pajarola [Paj98] sur son RQT (Restricted Quadtree Triangulation), la géo- morphose est effectuée au moment de l’affichage en interpolant le nouveau sommet du maillage avec ses deux sommets voisins. FIGURE 2.32 – L’opération "split" génère les triangles supplémentaires (T0, T1 à la place de T, TB0 et TB1 à la place de TB). L’opération "merge" à l’inverse simplifie le maillage original (figure extraite de [DWS+97]). FIGURE 2.33 – L’opération "split" sur un maillage de niveau l = 0 génère un sommet supplémentaire vc qui divise T en T0 et T1. La géomorphose est effectuée à ce moment la en déplac¸ant vc de v0 vers sa position à droite (figure extraite de [DWS+97]). 44
  54. 54. 2.3. Visualisation de terrains Ulrich [Tha02] accompagne chaque sommet du maillage avec une distance par rapport au même sommet du nœud parent. Cette valeur est ensuite utilisée pour effectuer la géomorphose au moment de l’affichage. La morphose est effectuée sur la carte graphique via le vertex sha- der. Cette opération est effectuée sur les nœuds du quadtree au lieu d’être sur chaque sommet du maillage comme les techniques précédentes. Ce choix permet d’envoyer moins d’opérations géomorphose coˆuteuses sur le terrain. Avec l’évolution des cartes graphiques, il est plus simple et efficace d’utiliser un maillage régulier pour représenter les blocs de terrain [HDJ05]. Cette structure permet aussi d’avoir plu- sieurs optimisations sur la géomorphose, surtout pour la détection rapide des données voisines. Maillage régulier De Boer [DB00] utilise une structure très simple pour représenter un ter- rain. Le terrain est décomposé par des patchs de taille égale, chaque patch est représenté par une pyramide de maillages réguliers de plusieurs niveaux de détails (voir figure 2.34). Avec cette structure simple de maillage, en faisant l’interpolation des sommets à partir du maillage actuel d’un bloc geomipmap, il est possible de déduire les versions intermédiaires du maillage automa- tiquement pour effectuer la géomorphose. Ces calculs peuvent être exécutés très rapidement sur les cartes graphiques modernes. Cette évolution implique un gain de performance entre 12% à 63% par rapport à une solution qui utilise le CPU pour effectuer la géomorphose [Wag04]. FIGURE 2.34 – Le maillage d’un bloc geomipmap, les sommets en noir re- présentent les sommets du maillage dans le nœud parent (figure extraite de [DB00]). En 2005, Asirvatham et Hoppe [AH05] améliorent le travail de Lossaso et al. [LH04] pour appliquer l’algorithme du geometry clipmap entièrement sur la carte graphique. Le maillage de chaque clipmap est un maillage régulier comme celui que de Boeur a utilisé [DB00]. Un point particulier avec cette technique est que la géomorphose est effectuée uniquement sur la bordure des différents niveaux et est effectué entièrement sur la carte graphique (voir figure 2.35). Strugar [Str09] propose une méthode originale pour transformer deux grilles qui contiennent un niveau de détails différent, il s’agit de déplacer progressivement les coordonnées (x, y) de chaque sommet du maillage enfant vers les sommets en communs du maillage parent (voir fi- gure 2.36). Cependant, cette utilisation produit un maillage temporaire de type "glissement" non uniforme avec les maillages originaux (voir figure 2.37 ). 45
  55. 55. Chapitre 2. État de l’art FIGURE 2.35 – La pyramide de niveau de détails : la géomorphose est effectuée sur la bordure entre les différents niveaux (la région en bleu) (figure extraite de [AH05]). FIGURE 2.36 – Morphase d’une grille régulière avec la méthode de [Str09], les valeurs du coefficient de morphase sont 0.0, 0.2, 0.4, 0.6, 0.9 et 1.0. (a) (b) FIGURE 2.37 – Transformation de maillage de type "glissement" (a) et "apla- tissement" (b). 2.3.6.2 Coefficient de morphose Le coefficient de morphose définit la vitesse de transformation de maillage entre différents niveaux de détails. On retrouve dans la littérature deux approches importantes : morphose basée sur la distance et morphose basée sur le temps. Chacune d’elle présente des avantages et in- convénients dans leur utilisation pratique. 46

×