Etude des structures de données au coeur des algos 3D des FPS.(BL2) Vos noms ici, encadreur, etc…

Slides:



Advertisements
Présentations similaires
Aurélien Barbier LIRIS Université Claude Bernard Lyon 1 Nautibus, 8 boulevard Niels.
Advertisements

Petit guide explicatif…
1 1 Projet doption Réalité Virtuelle Simulation dun habitat domotisé Florent Renault Xiaoyu Gao Mercredi 27 mai 2009.
Hierarchical Z-Buffer Visibility
for Painting and Rendering Textures on Unparameterized Models
RENDU DE TERRAIN Problématique : Rendre une très large zone de terrains en la simplifiant au maximum pour réduire le nombre de polygones à afficher. A.Bailly.
Unstructured Lumigraph Rendering
The Reyes Image Rendering Architecture
Accélération du Rendu Volumique basée sur la Quantification des Voxels
Visible Surface Determination (Hidden Surface Removal)
Technique des Surfels Surfels: Surface Elements as Rendering Primitives SIGGRAPH 2000 H.Pfiste, J.van Baar, M.Zwicker, M.Gross.
Introduction à l’Algorithmique
Plate-forme Magicien d’Oz
Etudiants : Benjamin BLANC Cyrille KLUZEK Encadreur :
Détection des collisions dans un moteur 3D temps réel
GEF 243B Programmation informatique appliquée
GEF 435 Principes des systèmes d’exploitation
Etude des structures de donnée s au coeur des algos 3D des FPS.(BL2) Vos noms ici, encadreur, etc…
TER BL21 Étude des structures de données au cœur des algorithmes 3D des jeux vidéos de type FPS. (BL2) Encadrant :Participants : Michel BUFFA Jean-François.
Sujet BL1 : Simulateur de comportement réactif Bernard Clément Barelli Nicolas Maitrehut Loïc Ould Sidina Mahi Encadrant : Mr Michel Buffa.
Etude des structures de donnée s au coeur des algos 3D des FPS.(BL2) Vos noms ici, encadreur, etc…
Scène de test (60000 polygones, 4000m2)
Comment afficher rapidement un univers immense ?.
Algorithmes à base darbre BSP. Principe Se servir dune structure arborescente afin déliminer le traitement dune branche entière sur un test de visualisation.
Application de réseaux bayésiens à la détection de fumées polluantes
Xavier Décoret* Frédo Durand° François Sillion*
Lancer de rayons interactif
Introduction à Virtools
La perspective Le dessin en perspective est la partie la moins connue de l’artiste amateur.  Cette technique  vous permettra de mettre en valeur  les différents.
Réalité virtuelle et interactions avec un individu
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Les étapes de développement d’un jeu vidéo
Quelques règles à respecter pour concevoir une présentation dynamique et sobre Dans un cadre scolaire D. G. Formation APEP
Apprentissage du jeu de morpion
Prise de décision dans les shooters TER 08/09 Sandrine Buendia
Enseignement de spécialité en S
Lenvironnement de travail en lien avec la première journée décole.
Dérécursivation Dérécursiver, c’est transformer un algorithme récursif en un algorithme équivalent ne contenant pas d’appels récursifs. Récursivité terminale.
Heuristiques A. Introduction B. Recherche d ’une branche
Jeu dOthello Projet dAlgorithmique et Programmation.
Optimisation et Complexité
Créer une interface graphique avec Photoshop.
Les systèmes de jeux deviennent de plus en plus complexes, nécessitant que lIntelligence Artificielle progresse elle aussi en parallèle. Dans ce contexte,
IFT3730 : Infographie 3D Systèmes et modèles graphiques Pierre Poulin, Derek Nowrouzezahrai Hiver 2013 DIRO, Université de Montréal.
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Programmation non procédurale Le projet ECOLE 2000
Pour le chemin le plus court pour tous les couples
Triangulation de Delaunay
Les images de synthèses Duprat Anatole. Les images de synthèses consistent en la création assistée par ordinateur, d'images numériques. Il existe différentes.
Création en images de Synthèse Modèles de rendu d’une scène 3D
Thomas LOPEZ - Equipe BUNRAKU Candidature au monitorat INSA– Vendredi 10 Octobre 2008.
DESIGN MULTIMÉDIA Initiation aux bases de La scénarisation multimédia
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Enveloppe convexe et triangulation de Delaunay
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
Credits : Joëlle Thollot, Hector Briceño, Edmond Boyer
Synthèse d’images et Rendu Réaliste Compression Progressive de Modèles 3D DOMENGET Bruno DUMAS Benjamin EISTI.
S’initier à Google Sketch Up avec la création d’une maison Commencez par ouvrir le logiciel, nous allons afficher tous les outils dont nous aurons besoin.
Réalisation d’un logiciel de Chiffrement RSA.
La 3D.
Plan du cours Cours 1,2 : le pipeline graphique
Visualisation des flots optiques en 3D
Search IM Nouvelle Interface adCenter Avril 2007.
Vous présente en quelques réalisations un réel savoir-faire, le fruit de longues années d’expériences, aujourd’hui à votre service. Toutes les fonctionnalités.
Proposition de possibilité d’évolution de nos spécialités Deux projets (liés) : Projet 1 : Informatique Computationnelle – Etudiants 4 e et 5 e IR Projet.
Dreamweaver Séance 1.
Pluvinage Raphaël – Si28. Pour quoi faire? / / Logiciel de graphisme orienté vers le web, dérivé de Photoshop (Même Interface) / Utilisation : Optimisation.
PROJET DE SESSION PRÉSENTÉ PAR : Rosemarie McHugh DANS LE CADRE DU COURS : SCG Réalisation d’applications en SIG 16 avril 2007.
Transcription de la présentation:

Etude des structures de données au coeur des algos 3D des FPS.(BL2) Vos noms ici, encadreur, etc…

Introduction Contexte : cours de synthèse d’image très intéressant… mais seulement 6 séances –Programme de TPs/Mini projet limité, –Envie d’en 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 type FPS (Doom, Quake, Unreal)…

Introduction (suite) Intérêt avant tout pédagogique –Ecriture d’un « vrai » moteur 3D, y compris l’implémentation de nombreux concepts vus en cours.. –Utilisation d’OpenGL/C++/… et des maths ! –Découverte d’algorithmes et de structures de données nouveaux, non naïfs, –Rencontre avec un développeur de jeux vidéo, –Réutilisation de nos travaux par Mr Buffa en tant que tutoriaux/programmes d’exemples

Plan de la présentation Afficher un univers immense, comment faire vite ? Présentation de 4 algorithmes liés à des structures 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 3D que nous avons développé pour ce TER –Fonctionnalités multiples (texture mapping, éclairages, etc…), –12000 lignes de code, –Conception objet pensée vers l’extensibilité (pour pouvoir 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 la caméra).

Le champ de vision s’appelle le frustum En 3D, c’est l’espace compris entre les 6 plans. Calculer la partie visible = frustum culling

Exemple d’algorithme Un univers 3D = des millions de polygones, Si l’univers 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 ce qui se trouve dans les cases qui coupent le champs de vision. Si on a pré-calculé l’association polygones/case, et si l’univers est statique, on a rapidement la liste des cases visibles et donc la liste des polygones visibles

Illustration de l’algorithme précédent Champs de vision Partie visible Partie non visible

Mais ce n’est pas aussi simple ! Une simple grille ne suffit pas ! Ce n’est pas efficace 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 mur »… etc… Les quatre algorithmes que nous avons étudiés répondent à 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 toutes la même taille. –Permet la gestion des niveaux de détails… On associe à chaque case les polygones qu’elle contient Construction –On part d’une case qui fait toute la surface de l’univers –On découpe récursivement l’univers 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 liste de polygones

Comparaison grille/quadtree Beaucoup moins de tests avec le quadtree ! Très utilisé pour représenter des modèles numériques 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 (grilles d’élévation, modèles numériques de terrains) Peu adaptés pour des bâtiments à étages, étant donné qu’on ne considère que les projections des polygones au sol… quoique… Les prochains algorithmes répondent à ces limitations…

Algorithme à base d’Octrees

Principe Idem quadtrees mais en 3D… Plus complexe à cause de la dimension supplémentaire!

Construction récursive

Detection des collisions Legende ici ! A quoi correspond ent les couleurs ?

Résultats Bien meilleur nombre d’images/s qu’avec les quadtrees, Très intéressant pour la détection de collisions …

Algorithmes à base d’arbre BSPs

Principe Etc…

Algorithme à base de portails

Principe Découpage du monde en Secteurs (pièces d’un bâtiment par exemple) –Quand on modélise l’univers, on le découpe en secteurs, –Les secteurs sont reliés entre eux (mitoyens) lorsqu’ils ont une partie commune, cela forme un graphe Portail = partie qui relie deux secteurs voisins, –Par exemple une porte et un mur

Principe (suite) Entre chaque image, on va calculer les parties visibles de l’univers Recherche des secteurs visibles = parcours de graphe non orienté –Nœuds = les pièces –Arêtes = partie commune entre deux secteurs (le lien entre deux pièces) Une fois le graphe parcouru, on a les relations de voisinages –Deux secteurs sont voisins lorsque depuis l’un on peut voir une partie de l’autre…

Avantages/inconvénients Complémentaire des algos précédents Nécessite une modélisation ad hoc du monde –Impossible de l’utiliser avec notre scène de test Algo non intégré au moteur 3D, mais programmes/tutoriaux de démonstrations des principes, en 2D…

les pièces Info dans un fichier annexe pas toujours concaves pb des coins besoin d’aide à la création

Synthèse

Heighmap autre facon de creer un monde Pour illustrer la différence Quadtree/Octree Si il y a une montagne les quadtrees montrent leurs limites screen

En d’autres termes Quadtree : circuit de voitures, modèle numérique de terrain… pas de superposition de polygones… Octree : Tomb Raider (utilisé aussi pour les collisions), etc… simple et efficaces BSP : quake like, unreal, etc…, optimisations multiples (arbres équilibrés, etc…) Portails : simple mais peu utilisé tels quels Souvent : mix de tous les algos (quake…)

Conclusion