Les Arbres BSP - IUT d'Arles
Les Arbres BSP - IUT d'Arles
Les Arbres BSP - IUT d'Arles
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
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