Comment afficher rapidement un univers immense Univers immense

  • Slides: 11
Download presentation
Comment afficher rapidement un univers immense ?

Comment afficher rapidement un univers immense ?

Univers immense ? • Exemples : un bâtiment, un circuit, une ville, une région.

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.

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

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

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

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

Algorithme à base de quadtrees

Principe • Comme une grille, sauf que les carrés ne font pas tous la

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

Exemple de quadtree Chaque feuille contient une liste de polygones

Comparaison grille/quadtree Beaucoup moins de tests avec le quadtree !

Comparaison grille/quadtree Beaucoup moins de tests avec le quadtree !