10.03.2014 Views

Les Arbres BSP - IUT d'Arles

Les Arbres BSP - IUT d'Arles

Les Arbres BSP - IUT d'Arles

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Synthèse d’images<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

LP SIL IN<br />

Jacques Debicki<br />

Maxime Giavelli


PLAN<br />

• Introduction<br />

• Culling<br />

• Binary Space Partitioning Trees<br />

- En 2D : Quadtree<br />

- En 3D : Octree<br />

• Construction d'un arbre <strong>BSP</strong><br />

• Evolution<br />

• Comparaison<br />

• Remplacement progressif<br />

• Conclusion<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 2 / 17


Introduction<br />

• Pourquoi éliminer les parties cachées ?<br />

– Déterminer les lignes, arrêtes, surfaces et volumes visibles par<br />

un observateur<br />

• <strong>Les</strong> 2 techniques :<br />

– Dans l’espace scène<br />

• Élimination de faces arrières<br />

• Tri des primitives selon leur éloignement<br />

• Algorithme du peintre (Newell Newell et Sancha)<br />

• Algorithme de tri par arbre binaire de partition de l'espace<br />

– Dans l’espace image<br />

• Subdivision récursive de l'image (Warnock)<br />

• Test de profondeur<br />

• Ligne de balayage : Scan-line (Watkins)<br />

• Z-Buffer<br />

• Lancer de rayons (Whitted)<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 3 / 17


Culling<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 4 / 17


Binary Space Partitioning Trees<br />

Partition binaire de l'espace<br />

• <strong>BSP</strong>-Tree : arbre binaire utilisé pour trier des primitives dans<br />

l’espace<br />

• Principe :<br />

– Choix d'une arête de référence<br />

• Subdivision de l’espace en 2 demi-espaces : in et out<br />

ou devant et derrière<br />

• Répartition des arêtes selon le demi-espace occupé<br />

• <strong>Les</strong> arêtes à cheval sont découpées selon le plan de<br />

référence<br />

– Réitération dans les deux demi-espaces<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 5 / 17


Binary Space Partitioning Trees<br />

Partition binaire de l'espace<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 6 / 17


En 2D : Quadtree<br />

• Une méthode de division de<br />

l’espace en 2D<br />

• Un arbre où chaque nœud a<br />

4 enfants<br />

• <strong>Les</strong> enfants couvrent<br />

chacun un quart de l’espace<br />

du parent selon une grille<br />

régulière<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 7 / 17


En 3D : Octree<br />

• Une méthode de division de l’espace en 3D<br />

• Un arbre où chaque nœud a 8 enfants<br />

• <strong>Les</strong> enfants sont des cubes qui couvrent l’espace du parent<br />

selon une grille 2X2X2<br />

• Le quadtree et l’octree peuvent allouer dynamiquement leur<br />

nœud, ou allouer l’arbre au complet au départ. Ceci dépend<br />

des besoins du programme et du nombre d’objets en<br />

mouvement<br />

• Pour ajouter un nœud, on utilise la technique suivante, en<br />

partant à la racine de l’arbre :<br />

On vérifie si l’objet peut être entièrement contenu dans un des fils<br />

‣ Si oui, on recommence avec ce nœud comme nœud courant<br />

‣ Si aucun noeud peut le contenir, on l’ajoute au nœud courant<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 8 / 17


Construction d’un arbre <strong>BSP</strong><br />

Exemple d’arbre en 2D :<br />

• Soit un solide délimité par quatre<br />

sections appelées respectivement A,<br />

B, C et D<br />

• Chacun des segments possède une<br />

normale de visibilité qui est dirigée<br />

en dehors de la région solide<br />

(représentée en bleu)<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 9 / 17


Construction d’un arbre <strong>BSP</strong><br />

• Création du nœud principal en utilisant<br />

le segment A (pris au hasard)<br />

• Traçage d’une ligne intermédiaire (ligne<br />

rose) parcourant le segment A<br />

– Face de devant (zone jaune) :<br />

Liste vide (aucuns polygones devant<br />

le segment A)<br />

création d’une feuille<br />

représentant l’espace vide (signe moins)<br />

– Face cachée (zone verte) :<br />

Liste pas vide<br />

partitionnement en un sous<br />

espace derrière le segment A<br />

placement des segments B, C et<br />

D dans la liste des faces arrière<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 10 / 17


Construction d’un arbre <strong>BSP</strong><br />

• Même méthode pour le<br />

partitionnement du segment B :<br />

• Traçage d’une seconde ligne<br />

intermédiaire (rose)<br />

– Face de devant (zone jaune) :<br />

‣ segment C<br />

‣ segment D en partie :<br />

devant : pièce Dv<br />

derrière : pièce Dc<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 11 / 17


Construction d’un arbre <strong>BSP</strong><br />

• Partitionnement devant le noeud (liste<br />

de C et Dv)<br />

• Utilisation de Dv comme segment de<br />

partitionnement<br />

• C est l'unique polygone à classifier et il<br />

se trouve derrière le segment Dv<br />

Liste avant vide<br />

création d’une feuille<br />

représentant l’espace vide (signe moins)<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 12 / 17


Evolution<br />

• <strong>BSP</strong> 2D : ne permettait pas de créer des pièces superposées<br />

sur l'axe Z (axe de la hauteur).<br />

• 1 ère utilisation en 2 dimensions : la totalité des niveaux sous<br />

Doom (décembre 1993).<br />

• <strong>BSP</strong> 3D : maximum d'utilisation : présent dans le moteur de<br />

Quake (mai 1996), de Unreal (mai 1998) ou de Half-life<br />

(novembre 1998).<br />

• Le <strong>BSP</strong> constituait alors la plus grande partie de l'architecture<br />

globale des niveaux en 3D.<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 13 / 17


Comparaison<br />

Principal concurrent : Le peintre<br />

• L'algorithme du peintre est l'une des solutions les plus simples pour<br />

résoudre le problème de visibilité d'un rendu en 3D sur ordinateur.<br />

• Il trie tous les polygones de la scène par rapport à leur distance de la<br />

camera, du plus éloigné au plus proche, et les dessine dans cet ordre.<br />

• Oblige le système à afficher chaque point de chaque polygone, même si ce<br />

polygone est complètement caché par un autre une fois le rendu de la<br />

scène terminé.<br />

• Sur des implémentations basiques, l'algorithme du peintre peut être lent.<br />

• Cela veut dire que dans des scènes détaillées, cet algorithme consomme<br />

plus de ressources que nécessaire.<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 14 / 17


Comparaison<br />

• <strong>BSP</strong>-Tree :<br />

– Choix de l'arête : arbre équilibré ?<br />

– Construction indépendante de la position de l'observateur<br />

– Coût mémoire plus élevé<br />

– Pré-traitement plus long<br />

– Temps de traitement plus court<br />

– Plus de divisions de polygones mais affichage est plus direct<br />

• Algorithme du peintre :<br />

– Pas de pré-traitement<br />

– Temps de traitement plus long<br />

• Dans les deux cas : on affiche toute la scène<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 15 / 17


Remplacement progressif<br />

• Depuis les années 2000 environ, le <strong>BSP</strong> a tendance à être<br />

supplanté pour les détails d'architectures et les décorations<br />

complexes, par des systèmes mieux optimisés comme les<br />

Static-Mesh (ex : Unreal 2).<br />

• Pourquoi ?<br />

– <strong>Les</strong> Static-Mesh (et leurs équivalents sous d'autres<br />

moteurs) sont insensibles à tous les problèmes liés au <strong>BSP</strong>.<br />

– Ils permettent d'améliorer la vitesse de chargement des<br />

niveaux : un Static-Mesh n'a besoin de charger l'objet<br />

qu'une seule fois puis de le dupliquer autant de fois que<br />

nécessaire en lui appliquant les changements appropriés.<br />

– La réduction du nombre d'accès aux disque dur permet<br />

d‘augmenter les vitesses de certains jeux.<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 16 / 17


Conclusion<br />

• Choix de l’algorithme ?<br />

Il faut savoir où travailler :<br />

– Dans l’espace scène<br />

– Dans l’espace image<br />

• L’algorithme idéal dépend :<br />

– De la complexité de la scène<br />

– Du matériel disponible<br />

– De ce qu’on veut faire en plus de l’affichage<br />

<strong>Les</strong> <strong>Arbres</strong> <strong>BSP</strong><br />

Diapositive 17 / 17

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!