Etude des structures de données au coeur des algos 3D des FPS

publicité
Scène de test (60000 polygones,
4000m2)
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 !
• Rapidement = 60 images/s au moins !
• 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 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
• vue de dessus : les
cases visibles sont
grisées
Champs
de
vision
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,
– Avoir des algos pour tous les types
d’environnement
– 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.
Algorithme à base de quadtrees
Principe
• Comme une grille, sauf que les cases ne font pas
toutes la même taille.
• 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
Comparaison grille/quadtree
• Intérêt : on teste d’abord si les grands carrés sont
visibles. Si ils ne le sont pas, on les élimine.
Sinon, on considère des carrés plus petits.
• Beaucoup moins de tests avec le quadtree !
Exemple avec notre scène de test
Conclusion sur les quadtrees
• Surtout adapté à des scènes plates (les
polygones sont posés sur un plan).
• Peu adaptés pour des bâtiments à étages :
on va par exemple afficher des polygones
sous le sol.
• Les prochains algorithmes répondent à ces
limitations…
Téléchargement