Etude des structures de donnée s au coeur des algos 3D des FPS.(BL2) Vos noms ici, encadreur, etc…
Introduction Contexte : cours de synthèse dimage très in téressant… mais seulement 6 séances –Programme de TPs/Mini projet limité, –Envie den savoir plus, –Choix du TER avec notre encadreur Sujet du TER : étude des structures de donn ées et des algorithmes dans les jeux 3D de t ype FPS (Doom, Quake, Unreal)…
Introduction (suite) Intérêt avant tout pédagogique –Ecriture dun « vrai » moteur 3D, y compris limpléme ntation de nombreux concepts vus en cours.. –Utilisation dOpenGL/C++/… et des maths ! –Découverte dalgorithmes et de structures de données n ouveaux, non naïfs, –Rencontre avec un développeur de jeux vidéo, –Réutilisation de nos travaux par Mr Buffa en tant que tu toriaux/programmes dexemples
Plan de la présentation Afficher un univers immense, comment fair e vite ? Présentation de 4 algorithmes liés à des stru ctures de données adaptées, avec leurs impl émentations Comparaison/synthèse de ces algorithmes Conclusion
Remarque importante La plupart des illustrations sont issues du moteur 3 D que nous avons développé pour ce TER –Fonctionnalités multiples (texture mapping, éclairages, etc…), –12000 lignes de code, –Conception objet pensée vers lextensibilité (pour pouv oir changer les algorithmes de rendu facilement), –C++/Open GL, –Notre plate-forme de test !
Comment afficher rapidement un univers immense ?
Univers immense ? Rapidement = 60 images/s au moins ! Exemples : un bâtiment, un circuit, une ville, une région... Un tel univers peut contenir des millions de polygones : on ne va pas tous les afficher ! Pour aller vite : ne dessiner que ceux qui sont visibles (dans le champ de vision de l a caméra).
Le champ de vision sappelle le frustum En 3D, cest lespace compris entre les 6 plans. Calculer la partie visible = frustum culling
Exemple dalgorithme Un univers 3D = des millions de polygones, Si lunivers est plat, il suffit de plaquer une grille dont chaque case fait par exemple 10m2 Il suffit, quand on se déplace, de ne dessiner que c e qui se trouve dans les cases qui coupent le cham ps de vision. Si on a pré-calculé lassociation polygones/case, et si lunivers est statique, on a rapidement la liste de s cases visibles et donc la liste des polygones visib les
Illustration de lalgorithme précé dent Champs de vision Partie visible Partie non visible
Mais ce nest pas aussi simple ! Une simple grille ne suffit pas ! Ce nest pas effica ce et on a aussi envie aussi de : –Calculer des collisions, –Gérer les niveaux de détails, –Ne pas afficher ce qui se trouve « derrière un m ur »… etc… Les quatre algorithmes que nous avons étudiés rép ondent à certaines de ces conditions.
Scène de test ( polygones, 4000m2)
Algorithme à base de quadtrees
Principe Comme une grille, sauf que les cases ne font pas t outes la même taille. –Permet la gestion des niveaux de détails… On associe à chaque case les polygones quelle co ntient Construction –On part dune case qui fait toute la surface de lunivers –On découpe récursivement lunivers en cases de plus en plus petites. Au final, on a un « arbre de cases », chaque case é tant découpée en 4 cases
Exemple de quadtree Chaque feuille contient une list e de polygones
Comparaison grille/quadtree Beaucoup moins de tests avec le quadtree ! Très utilisé pour représenter des modèles numériq ues de terrain (gestion dynamique du niveau de dé tails, pas implémenté dans notre TER)
Exemple avec notre scène de test Ici une image avec une autre profondeur (sanbs quad), et comparer les perfs…
Conclusion sur les quadtrees Surtout adapté à des scènes 2D/2D et demie (grille s délévation, modèles numériques de terrains) Peu adaptés pour des bâtiments à étages, étant don né quon ne considère que les projections des poly gones au sol… quoique… Les prochains algorithmes répondent à ces limitati ons…
Algorithme à base dOctrees
Principe Idem quadtrees mais en 3D… Plus complexe à cause de la di mension supplé mentaire!
Construction récursive
Detection des collisions Legende ic i ! A quoi cor respondent les couleur s ?
Résultats Bien meilleur nombre dimages/s quavec le s quadtrees, Très intéressant pour la détection de collisio ns …
Algorithmes à base darbre BSPs
Principe Etc…
Algorithme à base de portails
Principe (statique) Découpage du monde en Secteurs –Quand on modélise lunivers, on le découpe en secteurs –Les secteurs sont mitoyens lorsquils ont un mur commun. Deux secteurs A et B sont voisins si une partie de B est visible depuis A. Portail = partie qui relie deux secteurs
Principe (dynamique) Les parties visibles par la caméra sont recalculées r écursivement. Parcours de graphe non orienté en profondeur –Nœuds = les pièces –Arêtes = un portail reliant deux secteurs Une fois le graphe parcouru, on a marqué toutes les parties visibles : on les affiche
Avantages/Inconvénients Naffiche que ce qui est visible Nécessite une modélisation ad hoc du monde –Impossible de lutiliser avec notre scène de test Non intégré au moteur 3D, mais tutorial de démonstration des principes, en 2D.
Modélisation des pièces Information dans un fichier annexe : syntaxe Ce nest pas toujours simple, problèmes liés à la concavité des pièces et des coins.
Synthèse
Heighmap autre facon de creer un monde Pour illustrer la différence Quadtree/Octree Si il y a une montagne les quadtrees montre nt leurs limites screen
En dautres termes Quadtree : dans les jeux = circuit de voitures, ET modèle numérique de terrain + frustum = LO D Octree : dans les jeux style Lara BSP : le plus utilise quake like, unreal,6 optimisati ons multiples (arbres équilibrés, etc…) Portails : peu utilisés en tant que tels souvent rajo uter sur un algo lancer de rayon
Quatrees (simples) en complément du frustum dans les terrains numériques niveau de détail dynamique Utilisés dans les jeux de voiture
ca depend du type de camera
Octrees (efficaces ) Dans les jeux à la 3eme personne Efficaces avec les collisions Pour des mondes en hauteurs
Arbres BSP (optimaux) Portails (mélangés) Utilisés dans les FPS les plus fluides. Nombreux cas particuliers, donc difficiles à implémenter. En complément des arbres BSP. Technique du Lancer de rayons