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

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

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

Saved successfully!

Ooh no, something went wrong!