Comment afficher rapidement un univers immense ? Univers immense ? • 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. • Nous avons créé un univers de 60000 polygones. • 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 frustrum C’est l’espace compris entre les 6 plans. Calculer la partie visible = frustrum culling Exemple d’algorithme naïf • Tester tous les polygones ? Beaucoup trop long. • Si l’univers est plat et statique, plaquer une grille avec des cases de taille égales. • Pré-calcul : on associe une case à chaque polygone. • On ne dessine que les polygones dont les cases sont dans le champ de vision. Illustration de l’algorithme précédent • Exemple vu de dessus • Imaginons que chaque case contienne 1000 polygones : 1000 tests au lieu de 64000. 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 ». • Les quatre algorithmes que nous avons étudiés répondent à certaines de ces conditions. Algorithme à base de quadtrees Principe • Comme une grille, sauf que les carrés ne font pas tous la même taille. • Quadtree = arbre à 4 branches. • On découpe l’univers en carrés. Chaque noeud/feuille est associé à un carré. • Intérêt : on peut laisser de côté de grandes parties de l’univers. Exemple de quadtree Chaque feuille contient une liste de polygones Comparaison grille/quadtree Beaucoup moins de tests avec le quadtree !