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 polygones. Pour aller vite : ne dessiner que ceux qui sont visibles (dans le champ de vision de la caméra).
Le champ de vision sappelle le frustrum Cest lespace compris entre les 6 plans. Calculer la partie visible = frustrum culling
Exemple dalgorithme naïf Tester tous les polygones ? Beaucoup trop long. Si lunivers 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 lalgorithme précédent Exemple vu de dessus Imaginons que chaque case contienne 1000 polygones : 1000 tests au lieu de
Mais ce nest pas aussi simple ! Une simple grille ne suffit pas ! Ce nest 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 lunivers en carrés. Chaque noeud/feuille est associé à un carré. Intérêt : on peut laisser de côté de grandes parties de lunivers.
Exemple de quadtree Chaque feuille contient une liste de polygones
Comparaison grille/quadtree Beaucoup moins de tests avec le quadtree !