Denis H AUMONT
Promoteur
Nadine WARZ ÉE
Année 2006
2
Remerciements
Mes premiers remerciements vont à Nadine Warzée et à Philippe Van Ham, pour m’avoir per-
mis de réaliser cette thèse, pour leur encadrement et pour leur soutien continu. Toute ma gratitude va
également à Alain Hubrecht, pour avoir initié le projet, et pour l’avoir toujours soutenu lorsque cela
s’avérait nécessaire, ainsi qu’à Xavier Marichal, qui a accepté de le poursuivre, et sans qui l’aventure
aurait sans doute tourné court.
Je remercie ensuite l’ensemble des membres du jury, Philippe Bekaert, Philip Dutré, François Sil-
lion et Michaël Tolley, pour avoir accepté d’en faire partie et pour l’attention qu’ils ont porté à mes
travaux.
Mes remerciements vont également à tous les membres des équipes avec lesquelles j’ai eu la
chance de travailler. A tous les séléniens d’abord, pour ces cinq années passées ensemble. Aux équipes
d’Appeal, d’Alterface et de VRContext ensuite, pour avoir toujours aidé à recadrer mes travaux dans
le concret. Je pense plus particulièrement à Christophe Chaudy, formidable professeur (malgré lui !),
qui a su guider mes premiers pas de doctorant, et à Flavien Brébion. A l’ensemble de l’équipe Artis
finalement, pour leur accueil durant l’hiver 2002. Une mention toute particulière à François Sillion
pour ses conseils avisés, ses réflexions lumineuses, et pour m’avoir emmené à la découverte de pay-
sages scientifiques insoupçonnés.
J’aimerais aussi remercier mes compagnons de labeur, Shaun Nirenstein, Otso Mäkinen, Xavier
Décoret et Olivier Debeir, pour la qualité de leur travail, leur enthousiasme et pour les discussions
toujours fructueuses que nous avons partagées, et sans qui aucune publication n’aurait pu voir le jour.
Longue vie au précalcul de visibilité.
Je remercie mes parents, pour leurs précieuses relectures, mais surtout pour leur soutien en toutes
circonstances. Merci aussi à Claire et à toute la famille pour leurs encouragements.
C’est grâce aux amis, Frédéric, Bénédicte, Dominique, Clara, Jean-François, Stéphane, Sophie,
Anthony, Caroline, Marco, Cédric, Christophe, Virginie et tous les autres, que je ne me suis pas tout à
fait transformé en rat de laboratoire. Qu’ils en soient remerciés.
Enfin, puisque l’on garde en général le meilleur pour la fin, je ne remercierai jamais assez Carole,
dont l’aide et les encouragements n’ont eu d’égal que la patience, et à qui je dédie ce document.
T a b l e d e s m a t i è r e s
1 Introduction 9
1 Synthèse interactive d’images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Visualisation interactive de scènes complexes . . . . . . . . . . . . . . . . . . . . . 10
2.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Aperçu des solutions existantes . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Elimination des surfaces non visibles . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1 Méthode classique du <z-buffer> . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Méthodes d’<occlusion culling> . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 <Occlusion culling> en ligne . . . . . . . . . . . . . . . . . . . . 14
3.2.2 <Occlusion culling> avec précalcul . . . . . . . . . . . . . . . . . 14
3.2.3 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Objectifs de notre étude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 Plan de la thèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 Outils mathématiques 19
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Introduction aux polyèdres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1 polyèdres et polytopes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Faces d’un polyèdre et description combinatoire . . . . . . . . . . . . . . . 21
2.3 Graphe d’incidence et 1-squelette . . . . . . . . . . . . . . . . . . . . . . . 22
2.4 Complexe de polyèdres et arrangement d’hyperplans . . . . . . . . . . . . . 22
2.5 Graphe dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Espace dual et coordonnées de Plücker . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1 Représentation d’une droite dans un espace dual . . . . . . . . . . . . . . . 24
3.2 Coordonnées de Plücker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.2 Définition mathématique des coordonnées de Plücker . . . . . . . 27
3.2.3 Coordonnées de Plücker dans R2 [23] . . . . . . . . . . . . . . . . 28
3.2.4 Coordonnées de Plücker dans R3 . . . . . . . . . . . . . . . . . . 30
3 Etat de l’art 33
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2 Visibilité analytique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1 Graphe d’aspect et partition <VSP> . . . . . . . . . . . . . . . . . . . . . . 35
2.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1.2 Frontières entre régions d’aspect constant . . . . . . . . . . . . . 36
4 TABLE DES MATIÈRES
4.5.2 Dans R3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.1 Evaluation des performances de l’algorithme . . . . . . . . . . . . . . . . . 88
5.1.1 Description des scènes de test . . . . . . . . . . . . . . . . . . . . 88
5.1.2 Statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.1.3 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.1.4 Comparaison avec l’état de l’art . . . . . . . . . . . . . . . . . . . 91
5.2 Sélection des écrans et détection des ouvertures . . . . . . . . . . . . . . . . 92
6 Conclusion et perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Notations
Rd Espace réel à d dimensions
Pdo Espace projectif orienté à d dimensions
P Polyèdre de Rd
S Squelette d’un polytope
C Complexe de polytopes
Vi Sommet d’un polytope
A[Vm ; Vn ] Arête d’un polytope reliant les sommets Vm à Vn
Qi <Polyèdre> courbe, intersection du polyèdre Pi et de la quadrique de Plücker
serait évidemment incomplet si nous n’évoquions pas le secteur des jeux vidéo, qui utilisent les images
de synthèse afin d’immerger le joueur au sein de vastes mondes imaginaires.
Parmi toutes les applications que nous venons de décrire, on peut distinguer deux types de navi-
gation : les méthodes non-interactives et les méthodes interactives1 . Celles de la première catégorie
calculent des séquences d’images, chacune d’elles pouvant éventuellement nécessiter un très long
temps de calcul, que l’on regarde ensuite à la manière d’un film. Les méthodes interactives procèdent
d’une autre philosophie : les images sont générées au fur et à mesure, compte tenu des sollicitations
de l’utilisateur, qui peut interagir avec l’environnement virtuel. L’utilisateur est entièrement libre de
ses mouvements, et l’affichage des images doit être effectué à une cadence suffisamment élevée pour
donner une impression de continuité et d’immersion (25 images par seconde constituent le standard).
Sous la pression de l’industrie du jeu vidéo, le matériel graphique a subi une évolution extrêmement
rapide au cours de la dernière décennie, et ses performances ont décuplé. Entraı̂née par ce progrès,
l’interactivité est sortie du domaine des jeux vidéo et des simulateurs d’entraı̂nement, et a envahi tous
les domaines d’applications, tendant à faire disparaı̂tre les méthodes non-interactives.
Cependant, malgré les progrès réalisés par le matériel, de nouveaux besoins supplantent toujours
les capacités de traitement. Nous nous sommes donc attaché à rechercher des algorithmes d’affi-
chage, permettant de visualiser de manière interactive des scènes complexes, c’est-à-dire de mettre au
point des techniques d’accélération sans lesquelles la visualisation de ces modèles ne pourrait pas être
réalisée de cette manière.
Dans ce travail, nous avons choisi d’étudier en particulier une de ces problématiques : celle de
l’élimination efficace des surfaces non visibles. Comme nous allons le voir dans la section suivante,
ce choix est guidé par le fait que ces méthodes permettent de s’affranchir de la taille des modèles,
en rendant la vitesse d’affichage sensible au nombre de primitives géométriques visibles depuis la
caméra, plutôt qu’au nombre total de primitives de la scène.
Cet algorithme consiste à calculer, conjointement à l’image, une carte de profondeur appelée <z-
buffer>. Chacun des pixels du <z-buffer> contient la distance à la primitive la plus proche. Lors de
l’affichage d’une nouvelle primitive, la nouvelle profondeur de chacun des pixels qu’elle recouvre est
calculée et comparée à la profondeur stockée auparavant : la primitive visible en chacun des pixels
est celle dont la profondeur est la plus petite. L’élimination des surfaces masquées étant effectuée
au niveau du pixel, l’algorithme s’intègre naturellement dans le processus d’affichage par projection
de polygones (cf. Figure 1.1) : la profondeur des pixels se calcule directement lors de l’opération de
projection, l’ordre d’affichage des surfaces est quelconque, et la précision obtenue est celle du pixel.
Cependant, cet algorithme possède également de nombreux désavantages. Tout d’abord, le proces-
sus de détermination intervient très tard dans le processus d’affichage, ce qui signifie que la surface,
qu’elle soit visible ou masquée, a déjà subi de nombreux traitements (transfert vers la carte graphique,
projection, <rasterization> 4 ). De plus, chacune des surfaces situées à l’intérieur du cône de vision
de la caméra doit être traitée. Pour ces raisons, un procédé d’élimination survenant en amont dans le
processus d’affichage est souhaitable : les primitives masquées sont éliminées plus tôt, à l’aide d’une
méthode dite d’<occlusion culling>.
pixels.
5 En anglais, on dit que l’algorithme est <conservative>.
6 <PVS> pour <Potentially Visible Set> en anglais.
7 En anglais, on dit que l’algorithme est <output sensitive>.
3 Elimination des surfaces non visibles 13
F IG . 1.2: Le processus d’<occlusion culling> élimine grossièrement les objets masqués et fournit un PVS.
Ensuite, un algorithme de <z-buffer> est utilis é pour déterminer précisément les surfaces visibles.
.
plus formelle, un algorithme d’<occlusion culling> est un algorithme de visibilité dont la complexité
pour le calcul d’une image est O(nv + f (nm )), avec nv le nombre de primitives visibles, nm le nombre
de primitives masquées, f une fonction telle que f (x) << x [151] (typiquement, f (x) sera du type
logarithmique).
La taille de la scène que l’on peut afficher en utilisant uniquement l’algorithme du <z-buffer> est
directement proportionnelle aux capacités du matériel graphique : on peut voir sur la Figure1.3 que
l’on ne pourra afficher de manière interactive que des scènes dont le nombre de polygones est inférieur
au point A 8 . Lorsqu’un algorithme d’<occlusion culling> est utilisé, cette limite est repoussée au point
B. Comme nous l’expliquerons dans la section 3.2.3, il existe potentiellement un point L en dessous
duquel l’algorithme du <z-buffer> est plus efficace que l’algorithme d’<occlusion culling>.
(a) (b)
F IG . 1.3: (a) Vitesse d’affichage d’une image en fonction du nombre de polygones de la sc ène dans le cas
d’une scène comportant de nombreuses occultations.(b) Nombre de polygones affich és en fonction du nombre
de polygones de la scène. L’échelle des axes n’est pas la même (le nombre de polygones par unit é de mesure de
l’échelle 1 est plus élevé que pour l’échelle 2, typiquement d’un facteur 10 à 100). En utilisant un algorithme
de <z-buffer>, le nombre de primitives affich ées et le temps de calcul sont proportionnels à la taille de la scène.
Au contraire, un algorithme d’<occlusion culling> permet d’obtenir un temps d’affichage li é au nombre de
primitives visibles dans l’image.
Les premières techniques d’<occlusion culling> furent proposées dès les années 1970 [33, 88,
110], et ont été à l’origine d’un très grand nombre de méthodes. Ces dernières sont séparées en deux
grandes classes [35] : les méthodes en ligne et les méthodes avec précalcul.
8 Les performances du matériel graphique actuel (2005) se situent aux alentours de 15 millions de polygones affichés
par seconde, soit un point A situé aux environs de 500 000 polygones.
14 chapitre 1. Introduction
3.2.3 Discussion
Aucun des deux types de méthodes ne supplante l’autre : ils doivent plutôt être considérés comme
complémentaires, et le choix d’utiliser une technique en ligne ou une technique avec précalcul dépend
des conditions d’utilisation.
Le premier critère est celui des ressources disponibles, car déterminer les primitives occultées
demande une puissance de calcul considérable. Si les méthodes en ligne bénéficient des progrès des
cartes graphiques [17] et peuvent être optimisées [2], elles restent coûteuses en temps de calcul, et ne
seront pas utilisables dans certaines situations : architectures matérielles avec un processeur peu puis-
sant, processeur partagé entre différentes tâches (intelligence artificielle, diffusion de sons,...). Dans
ces cas, les techniques utilisant un précalcul seront mieux adaptées. Un exemple typique est celui d’un
jeu vidéo : le précalcul est effectué une seule fois, lors de la conception du produit, éventuellement
à l’aide d’une architecture informatique haut de gamme (grappe, super-calculateur,...). Ensuite, les
données sont utilisées par tous les utilisateurs, qui ne disposent souvent que de machines dont la puis-
sance serait insuffisante pour réaliser le calcul de visibilité pendant l’affichage de l’image. Le coût du
précalcul est donc amorti par un très grand nombre d’utilisations. Cependant, le temps nécessaire pour
effectuer le précalcul est élevé (typiquement de l’ordre de plusieurs heures, voire plusieurs jours), et
peut devenir prohibitif si l’on désire visualiser des données sans délai. Outre les contraintes de temps
de calcul, les méthodes avec précalcul nécessitent également une mémoire de stockage importante,
qui peut devenir critique si les scènes sont vastes. Cependant, cette contrainte est moins sévère que la
contrainte de temps de calcul, car il est possible de compresser l’information de visibilité [157] ; de
plus, une possibilité intéressante consiste à exploiter l’information de visibilité précalculée pour ne
4 Objectifs de notre étude 15
mettre en mémoire que la partie de la scène utile (ou proche de le devenir), et permettre de visualiser
des ensembles de données impossibles à stocker intégralement en mémoire centrale [39].
Le second paramètre dont il faut tenir compte est celui des données que l’on désire visualiser.
Une condition nécessaire d’utilisation des méthodes de précalcul est que la scène soit statique, c’est-
à-dire que la disposition spatiale de ses primitives ne change pas. Dans la plupart des scénarii de
visualisation, ce sera effectivement le cas pour la majorité de la scène (bâtiments, rochers, véhicule à
l’arrêt,...). Mais, si la scène est dynamique, seules les techniques en ligne sont utilisables. Par contre,
certaines scènes statiques se prêtent mieux à certaines méthodes que d’autres. Par exemple, les scènes
d’intérieur sont plus adaptées à un précalcul que les scènes d’extérieur, pour lesquelles l’espace na-
vigable 9 est typiquement beaucoup plus vaste. Notons également que les méthodes en ligne ne sont
pas toujours compétitives par rapport à l’algorithme <naı̈f> du <z-buffer> [12]. Ce paradoxe pro-
vient du fait qu’il est parfois plus coûteux de décider si l’on doit afficher un objet que de l’afficher
systématiquement. Il faut donc que le nombre de surfaces masquées -que l’on n’affiche pas- soit suffi-
sant, afin de compenser le coût supplémentaire introduit pour déterminer les occultations. Cette limite
est matérialisée par le point L dans les Figures 1.3 et 1.4 ( 10 ).
Cette limite est quasiment inexistante pour les méthodes utilisant un précalcul, car leur coût d’uti-
lisation lors de la phase interactive d’affichage est négligeable. La Figure 1.4 montre aussi que le
temps de calcul d’une telle méthode se rapproche du temps idéal obtenu en n’affichant que les sur-
faces visibles de la scène.
Cependant, ces méthodes soulèvent de nombreux problèmes théoriques, qui nécessitent, pour être
résolus, l’utilisation de notions mathématiques avancées. De plus, les problèmes rencontrés sont sou-
vent de nature combinatoire, et requièrent un traitement adéquat pour éviter une explosion du temps
de calcul. Les algorithmes qui en résultent ne sont pas triviaux et sont souvent complexes à mettre
en œuvre. En raison de ces difficultés, il n’existe pas aujourd’hui de solution générale satisfaisante,
permettant de traiter toutes les scènes de manière unifiée, et la recherche dans le domaine du précalcul
de visibilité est encore très active. Les travaux présentés dans ce document s’inscrivent précisément
dans ce cadre.
Notre principal objectif est de proposer de nouveaux algorithmes d’<occlusion culling> avec
précalcul, permettant d’accélérer l’affichage interactif de scènes tridimensionnelles. A l’instar des
méthodes de visibilité analytique, nous souhaitons calculer et stocker la visibilité de la manière la plus
précise possible, afin de nous rapprocher du cas idéal où seules les primitives visibles sont affichées.
Contrairement à ces méthodes, nous souhaitons encoder cette information de manière explicite, afin
de pouvoir l’utiliser ensuite de manière efficace pour accélérer l’affichage interactif de la scène. Nous
poursuivons donc un double objectif : d’une part, obtenir un algorithme de précalcul le plus exact
possible, d’autre part, proposer un mécanisme simple et rapide à utiliser pour exploiter l’information
précalculée lors de la phase de navigation interactive.
5 Plan de la thèse
Ce premier chapitre avait pour but de proposer un aperçu général du problème et d’introduire nos
contributions.
Le chapitre 2 contient un bref rappel des notions mathématiques nécessaires à la bonne compré-
hension de la suite du document. De manière plus précise, il contient de brèves introductions aux
coordonnées de Plücker et à la théorie des polyèdres.
Le chapitre 3 présente un état de l’art consacré aux algorithmes permettant de calculer et de sto-
cker l’information de visibilité d’une scène 3D.
Dans le chapitre 5, nous introduisons une méthode originale pour encoder l’information de visi-
bilité, qui consiste à stocker l’ombre générée par chaque objet de la scène s’il était remplacé par une
source lumineuse. Nous présentons une analyse des avantages et des inconvénients de cette nouvelle
représentation.
Pour calculer la visibilité dans les scènes d’intérieur, les graphes cellules-portails sont souvent uti-
lisés. Dans le chapitre 6, nous reformulons le problème de la génération de ces graphes en termes de
5 Plan de la thèse 17
segmentation d’images, et adaptons l’algorithme classique de <watershed> pour générer ces graphes
de manière automatique.
1 Introduction
Ce chapitre regroupe les notions mathématiques nécessaires pour appréhender la suite du docu-
ment, et en particulier le chapitre 4.
Nous présentons dans la section 2 une introduction à la théorie des polyèdres ; nous renvoyons
néanmoins le lecteur à l’ouvrage de Boissonnat et al. [43] et à la thèse de Shaun Nirenstein [118] pour
de plus amples détails.
La section 3 contient une introduction à la notion d’espace dual, ainsi qu’aux coordonnées de
Plücker, qui furent introduites comme outils pour les calculs de visibilité par Seth Teller en 1992 [154].
Le lecteur trouvera plus de détails dans [20, 118, 131], et nous renvoyons à la thèse de Xavier Goaoc
pour une introduction rigoureuse du point de vue mathématique [70].
20 chapitre 2. Outils mathématiques
dans lesquelles ai j et bi sont des réels ; bi est aussi appelé <terme indépendant> de l’inéquation i,
Géométriquement, un hyperplan Hi : ∑dj=1 ai j (x j ) bi = 0 est associé à chacune des n inéquations
linéaires du système. Chacun de ces hyperplans Hi sépare l’espace en deux demi-espaces ouverts Hi +
et Hi - , situés de part et d’autre de Hi (cf. Figure 2.1).
Le polyèdre délimité par ces hyperplans est le lieu d’intersection des demi-espaces fermés négatifs
délimités par les hyperplans :
\n
P = Hi - (2.2)
i=1
Lorsqu’il est borné, un polyèdre est appelé polytope (cf. Figure 2.2). En d’autres termes, un po-
lytope est une région finie de Rd , délimitée par un nombre fini d’hyperplans.
(a) (b)
1 En programmation linéaire, les inéquations sont appelées contraintes, et le polyèdre P est appelé région de faisabilité.
2 Introduction aux polyèdres 21
Plutôt que de le définir à partir de ses facettes (H-représentation) (cf. Figure2.2(a)), un polyèdre
peut également être représenté à partir de ses sommets (V-représentation) (cf. Figure2.2(b)). Dans
ce cas, le polyèdre est défini comme étant le sous-ensemble de Rd formé par toutes les combinaisons
linéaires convexes de ses k sommets.
Par définition, une combinaison linéaire convexe ∑di=1 λiVi doit vérifier
d
∑ λi = 1 et 8i 2 f1 ; :::; kg; λi 0 (2.3)
i=1
Les deux représentations sont équivalentes, et le passage de l’une à l’autre est un problème clas-
sique de géométrie algorithmique connu sous le nom d’énumération de sommets (H-représentation
vers V-représentation). Le problème inverse est le problème d’énumération de facettes (V-représenta-
tion vers H-représentation), aussi connu sous le nom de calcul d’enveloppe convexe.
(a) (b)
F IG . 2.3: (a) Sommets et côtés d’un polyèdre dans R3 . (b) Description combinatoire des sommets et des c ôtés.
Remarque : Comme on peut le voir sur la Figure 2.3(b), la description combinatoire de chaque arête
est composée de deux éléments, et est égale à l’intersection de la description combinatoire des deux
sommets qu’elle relie. D’une manière générale, la description combinatoire de chaque (k + 1)-face
est égale à l’intersection de la description combinatoire de deux k-faces distinctes (n’importe quelle
paire de k-faces qui sont des sous-faces de la face (k + 1)-face peuvent être utilisées).
22 chapitre 2. Outils mathématiques
F IG . 2.4: Graphe d’incidence du poly èdre de la Figure 2.3(b). Le 1-squelette est constitué par les éléments de
dimension 0 et 1 du graphe d’incidence (c’est- à-dire les sommets et les arêtes du polytope)
Le k-squelette d’un polyèdre est défini comme étant l’ensemble de ses faces de degré i k. Suivant
cette définition, le 1-squelette du polyèdre est le graphe composé par les arêtes et les sommets du
polyèdre (cf. Figure 2.4).
Les arrangements sont donc les complexes de polytopes qui sont obtenus lorsque l’espace est par-
titionné par un ensemble d’hyperplans. Chacune des faces du complexe est appelée cellule du com-
plexe. Comme dans le cas des polyèdres, les cellules des arrangements sont de dimension comprise
entre 0 et d 1, et sont des ensembles convexes de Rd .
2 Introduction aux polyèdres 23
Une face de dimension d k représente un ensemble de points qui appartiennent aux mêmes k
hyperplans.
F IG . 2.6: Graphe dual. (a) Graphe G. (b) Un <point rouge> est associ é à chaque face de G. (c) Graphe G 0 ,
dual du graphe G, dont les sommets sont les <points rouges>.
24 chapitre 2. Outils mathématiques
Remarque : Cette notion n’a donc rien à voir avec la dualité utilisée en algèbre linéaire, qui définit
l’espace dual d’un espace vectoriel V comme étant l’espace vectoriel V constitué de toutes les
formes linéairesa sur V [104]. Elle ne doit pas non plus être confondue avec la dualité utilisée en
programmation linéaire, qui est par exemple employée pour transformer un problème linéaire de
maximisation en son problème dual de minimisation afin de le résoudre de manière plus efficace (cf.
Cormen et al. page 779 [41]).
a Une forme linéaire est une application linéaire de l’espace vectoriel V dans le corps des scalaires K .
(a) (b)
F IG . 2.7: Exemples de paramétrisation 4D d’une droite. (a) Intersections avec deux plans parall èles. (b) Inter-
sections avec une sphère.
(x1 ; y1 ; z1 ; x2 ; y2 ; z2 ),
dans laquelle (x1 ; y1 ; z1 ) et (x2 ; y2 ; z2 ) sont les coordonnées 3D de deux points de
la droite. Dans ce cas, les deux degrés de liberté supplémentaires correspondent au choix des deux
points pour définir la droite. La paramétrisation à l’aide des coordonnées de Plücker, qui fait l’objet
de la section suivante, est également une paramétrisation 6D très utilisée en visibilité3 .
droites qui sont bloquées par un écran. Lorsque’une droite possède une intersection avec une primitive
géométrique, on dit que la droite poignarde cette primitive, et on l’appelle droite poignardante5 .
F IG . 2.8: Représentation d’un segment dans l’espace dual (image d’apr ès [23]).
Soit un segment de droite P0 P1 défini dans R2 . Pour passer de l’espace primal R2 à l’espace dual
des coordonnées de Plücker correspondant, un point est transformé en une droite et une droite en
un point (cf. paragraphe 3.2.3). Dès lors, P0 P1 est représenté dans l’espace dual comme un double
coin, délimité par les deux hyperplans HP0 et HP1 (cf. Figure 2.8). Ces deux hyperplans possèdent un
point d’intersection S , correspondant dans l’espace primal à la droite s, support du segment P0 P1 .
L’ensemble des droites qui possèdent une intersection avec le segment P0 P1 est l’ensemble des points
de l’espace dual représenté en gris sur la Figure 2.8 et situés à l’intersection :
– du demi-espace négatif délimité par HP0 et du demi-espace positif délimité par HP1 .
– du demi-espace positif délimité par HP0 et du demi-espace négatif délimité par HP1 .
La droite orientée l0 laisse le points P0 et P1 à sa droite : son point dual L0 est donc situé dans les
deux demi-espaces positifs délimités par HP0 et par HP1 . Au contraire, la droite l4 laisse les points P0
et P1 sur sa gauche et son point dual L4 est situé dans les deux demi-espaces négatifs délimités par
HP0 et par HP1 . La droite l1 passe par le point P0 , et son point dual L1 est donc situé sur l’hyperplan
HP0 . Finalement, les droites l2 et l3 ont un point dual dans deux <coins> opposés car leur orientation
est opposée.
En conclusion, l’espace dual permet de représenter l’ensemble des droites qui poignardent un segment
sous la forme d’un polygone en forme de double coin. Il est ensuite aisé de déterminer si une droite
transperce ou non le segment en testant dans l’espace dual sa position par rapport au double coin.
3.2.1.2 Exemple 2 : intersection d’une droite et d’un polygone dans R3 Nous présentons un
exemple similaire à l’exemple 1, mais cette fois dans R3 . Soit un polygone convexe défini par ses
arêtes ei , 0 i < n (cf. Figure 2.9). Nous nous posons le problème de savoir si une droite l donnée
poignarde ce polygone. Ce problème est très commun en synthèse d’images, puisqu’il est au cœur de
tous les algorithmes de <lancer de rayons> 6 . La condition nécessaire et suffisante pour que la droite
5Les droites poignardantes sont les <Stabbing Lines> en anglais.
6Les algorithmes de <lancer de rayons> (<ray tracing> en anglais) construisent une image de la scène en calculant les
intersections de rayons de vue, issus du centre optique de la caméra, avec la géométrie de la scène ; une image complète de
3 Espace dual et coordonnées de Plücker 27
l poignarde le polygone est qu’elle possède une orientation identique par rapport à chacun des côtés
du polygone.
F IG . 2.9: Détermination de l’existence d’une intersection entre la droite l et le polygone (e 0 ,e1 ,e2 ).
Cette condition s’exprime facilement dans l’espace dual [20]. Pour ce faire, l’ensemble des droites
supports des arêtes ei est transformé en autant d’hyperplans Hei dans l’espace dual avec l’équation
(2.11) et l est transformé en un point L avec l’équation (2.8).
D’après l’équation (2.14), on déduit que la droite l possédera une intersection avec le polygone si
et seulement si Hei (L ) 0 pour 0 i n (ou si Hei (L ) 0 pour 0 i < n dans le cas où la droite
est orientée dans le sens inverse de la normale du polygone). D’une manière générale, l’ensemble
des droites poignardant le polygone correspond à l’ensemble des points X de P5o appartenant à la
quadrique de Plücker et vérifiant simultanément les équations Hei (X ) 0 pour 0 i n (nous ne
considérons ici que les droites orientées dans le sens de la normale du polygone).
F IG . 2.10: Ensemble de droites poignardant un ensemble de polygones : les c ôtés des polygones sont trans-
formés en hyperplans dans l’espace dual, les intersections de ces hyperplans avec la quadrique de Pl ücker sont
suggérées (à droite). L’ensemble des hyperplans d élimite une hypersurface sur la quadrique de Pl ücker, qui
correspond à l’ensemble des droites réelles poignardant l’ensemble des polygones.
n = 3). Cela signifie que la dimension de l’espace projectif associé est de dimension 5. Etant donné les
difficultés pour représenter un espace de ce type, nous commençons par introduire les coordonnées de
Plücker décrivant les droites du plan, pour donner au lecteur une première intuition avant de présenter
les coordonnées de Plücker pour les droites de l’espace.
Tout espace projectif à d dimensions peut être vu comme un espace à d + 1 dimensions dont on
ne considère que les éléments passant par l’origine [118] 8 . L’espace projectif 2D peut donc être vu
comme un espace 3D, dont tous les éléments contiennent l’origine. Dès lors, un hyperplan projectif
2D peut être vu comme un plan contenant l’origine dans un espace 3D. Par souci de facilité, nous
adoptons la représentation introduite par Bittner et al. [23] et représentons les hyperplans par leur
trace sur un plan de projection (autrement dit nous représentons les hyperplans projectifs comme des
droites dans un plan R2 ). Nos représentations de l’espace dual ne sont que des schémas de principe,
qui peuvent être vus comme étant des projections des éléments géométriques sur un hyperplan de
projection choisi de telle manière qu’aucune singularité n’arrive lors de la projection.
Soit la droite orientée a de R2 , passant d’abord par le point P( px ; py ) et ensuite par le point
Q(qx ; qy ). Dans l’espace de Plücker, on lui associe le point A dont les coordonnées (π0 a ; π1 a ; π2 a )
sont définies par :
8
< π0 a = py qy
π1 a = qx px
: π2 a = px qy qx py
(2.4)
7 Pour une introduction aux espaces projectifs, nous renvoyons à la thèse de Nirenstein [118] et à l’ouvrage de
Stolfi [149].
8 De manière plus précise, les éléments <passent> par l’origine au sens géométrique du terme, mais ils ne contiennent
pas l’origine qui est un point qui n’appartient pas à l’espace projectif.
3 Espace dual et coordonnées de Plücker 29
Les coordonnées πi a , appelées les coordonnées de Plücker de la droite, sont les mineurs πi de la
matrice :
px py 1
(2.5)
qx qy 1
En raison de la projectivité, le point A est défini à une constante multiplicative près :
A = (π0 a ; π1 a ; π2 a )
= (sπ00 a ; sπ01 a ; sπ02 a ) (2.6)
= sA0 et s 2 R+
En pratique, cela se traduit par la liberté que l’on a de choisir n’importe quelle paire de points P et
Q sur la droite pour calculer ses coordonnées de Plücker, chaque choix fournissant des coordonnées
égales à un facteur multiplicatif près.
Remarque : L’espace de Plücker est un espace projectif orienté, ce qui signifie que la constante
multiplicative s doit être strictement positive. La droite de vecteur directeur PQ et celle de vecteur
directeur QP correspondent donc à deux points différents dans l’espace de Plücker [149].
3.2.3.1 Dualité point-hyperplan Nous venons de voir qu’une droite de R2 est transformée en
un point de l’espace dual par l’intermédiaire des coordonnées de Plücker. Un point P( px ; py ) sera
transformé dans l’espace dual en un hyperplan Hp d’équation px x + py y + z = 0. Comme on peut le
constater, cette équation peut être vue comme étant l’équation d’un plan contenant l’origine dans un
espace à 3 dimensions.
3.2.3.2 Position relative d’une droite par rapport à un point Considérons un point P et une
droite a. La droite a est transformée dans l’espace dual en un point A , et le point P est transformé en
un hyperplan Hp .
Le signe de l’expression Hp (A ), obtenue en injectant les coordonnées de A dans l’équation de
l’hyperplan Hp nous donne l’orientation relative de la droite a par rapport au point P dans R2 (cf.
Figure 2.11).
Espace primal R2
F IG . 2.11: Position relative de la droite a et du point P en utilisant l’espace de Pl ücker (H p représente la trace
des hyperplans dans un plan de projection).
30 chapitre 2. Outils mathématiques
8
< Si H p (A ) > 0; la droite orientée a laisse le point P à sa droite
Si H p (A ) = 0; la droite orientée a passe par le point P
: Si H p (A ) < 0; la droite orientée a laisse le point P à sa gauche
(2.7)
A = sA0 et s 2 R+ (2.10)
L’espace de Plücker associé aux droites de l’espace 3D est un espace projectif orienté 5D. Il peut
donc être vu comme un espace 6D, dont tous les éléments passent par l’origine, et il constitue bien
une paramétrisation 6D des droites. Etant donné les difficultés inhérentes à la visualisation des espaces
multi-dimensionnels, nous effectuerons souvent des analogies entre ces espaces et les espaces 2D ou
3D. Nous mettons le lecteur en garde par rapport à ces analogies et à ces illustrations, dont le but est
de fournir un support visuel, et qui n’ont pas la prétention d’être correctes à <tout point de vue>. Dans
la suite du document, nous indiquerons explicitement les illustrations qui sont sujettes à caution.
3.2.4.1 Dualité droite-hyperplan Nous avons vu que la droite a était associée au point A dans
l’espace de Plücker. Outre ce point, il est également possible d’associer la droite a à un hyperplan Ha
passant par l’origine dans l’espace de Plücker. La droite a peut de la sorte être transformée soit en un
point A , soit en un hyperplan Ha . Les coefficients ϖi a de cet hyperplan sont appelés les coordonnées
de Plücker duales de la droite a.
Ha (X ) = ϖ0 a x0 + ϖ1 a x1 + ϖ2 a x2 + ϖ3 a x3 + ϖ4 a x4 + ϖ5 a x5 = 0 (2.11)
3 Espace dual et coordonnées de Plücker 31
Les coordonnées de Plücker duales ϖi a sont obtenues par permutation des coordonnées de Plücker
πi a
8
>
>
>
ϖ 0 a = π3 a
>
>
> ϖ 1 a = π4 a
< ϖ 2 a = π5 a
>
>
> ϖ 3 a = π0 a
(2.12)
>
>
> ϖ 4 a = π1 a
: ϖ 5 a = π2 a
En remplaçant dans l’équation 2.11, nous obtenons
Ha (X ) = π3 a x0 + π4 a x1 + π5 a x2 + π0 a x3 + π1 a x4 + π2 a x5 = 0 (2.13)
Le vecteur normal de cet hyperplan est Na (π3 a ; π4 a ; π5 a ; π0 a ; π1 a ; π2 a ).
3.2.4.2 Position relative de deux droites Considérons deux droites a et b, que l’on transforme
respectivement en un hyperplan Ha et en un point B . Le signe de l’expression Ha (B ), obtenue en
injectant les coordonnées de B dans l’équation de l’hyperplan Ha nous donne l’orientation relative9
des droites a et b dans R3 (cf. Figure 2.12).
Espace primal R3
L’orientation est donnée par la direction d’une des droites par rapport à un observateur regardant
dans la direction de la seconde, et en utilisant la <règle de la main droite> 10 .
8
< Si Ha (B ) > 0; les deux droites sont gauches (sens horlogique)
Si Ha (B ) = 0; les deux droites sont concourantes
: Si Ha (B ) < 0; les deux droites sont gauches (sens anti-horlogique)
(2.14)
9 Cette interprétation est possible car nous travaillons dans un espace projectif orienté, et que a et b sont elles-mêmes
3.2.4.3 Quadrique de Plücker Si toute droite de R3 possède un point dual dans l’espace de
Plücker, celui-ci au contraire contient essentiellement des points qui correspondraient dans l’espace
primal à des droites à coefficients imaginaires, et qui n’existent donc pas dans R3 . Les seuls points qui
possèdent une correspondance sont ceux appartenant à la quadrique de Plücker, définie comme étant
le lieu des points X vérifiant l’équation :
Hx (X ) = 0
, π0 π3 + π1 π4 + π2 π5 = 0
(2.15)
Par définition, toute droite réelle r appartient à la quadrique de Plücker car elle vérifie Hr (R ) = 0.
Cette quadrique est une surface 4D, dont l’analogue tridimensionnel pourrait être un hyperboloı̈de à
une nappe (cf. Figure 2.13).
F IG . 2.13: La quadrique de Pl ücker est un sous-espace affin 4D plong é dans l’espace projectif 5D de Pl ücker.
L’espace dual correspondant aux droites réelles est donc la sous-partie de l’espace de Plücker
constituée par la quadrique de Plücker.
Remarque : Les hyperplans duaux de droites réelles sont en fait tangents à la quadrique de Plücker.
En effet, il est facile de vérifier que le vecteur normal Np de l’hyperplan Hp est également normal à
la quadrique de Plücker au point P .
chapitre
Etat de l’art
3
Sommaire
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2 Visibilité analytique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1 Graphe d’aspect et partition <VSP> . . . . . . . . . . . . . . . . . . . . . 35
2.2 La structure de données <Asp> . . . . . . . . . . . . . . . . . . . . . . . 41
2.3 Arrangement d’hyperplans dans l’espace de Plücker . . . . . . . . . . . . 42
2.4 Méthodes de visibilité globales . . . . . . . . . . . . . . . . . . . . . . . . 42
2.5 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3 Encodage de la visibilité sous la forme de <PVS> . . . . . . . . . . . . . . . . . 46
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2 Algorithmes de visibilité depuis une région . . . . . . . . . . . . . . . . . 48
3.3 Partition de l’espace navigable en cellules . . . . . . . . . . . . . . . . . . 55
3.4 Stockage de <PVS> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.5 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4 Encodage de la visibilité sous la forme de graphes cellules-portails . . . . . . . 60
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.2 Génération automatique de graphes cellules-portails . . . . . . . . . . . . 61
4.3 Détermination des objets masqués à partir d’un graphe cellules-portails . . 62
4.4 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
1 Introduction
Le domaine de la visibilité est très vaste et couvre beaucoup de disciplines. En synthèse d’images,
il est au centre de différentes problématiques fondamentales, telles que le calcul de vues, le calcul
d’ombres ou le calcul d’illumination globale. Il intervient aussi en robotique avec les problèmes de
localisation, de suivi de cibles et de calcul de plus courts chemins ; on le retrouve également en vision
par ordinateur, avec l’inspection et la reconnaissance d’objets, ainsi qu’en astronomie avec l’étude
des éclipses. Il intervient même dans les traitements géométriques, sous la forme de simplification de
maillage guidée par la visibilité. Le lecteur intéressé en trouvera un panorama inter-disciplinaire dans
la thèse de Frédo Durand [54].
34 chapitre 3. Etat de l’art
Dans ce travail, nous nous intéressons aux méthodes de visibilité utilisées en synthèse d’images,
et plus précisément pour le calcul de vues. La Figure 3.1 présente une classification des méthodes
existantes, en fonction de la manière dont ces méthodes stockent (ou ne stockent pas) l’information
de visibilité. La présentation de toutes ces techniques sortirait du cadre de notre étude, consacrée au
précalcul et au stockage de l’information de visibilité dans des scènes 3D. Nous avons donc choisi
délibérément de ne pas présenter les techniques d’élimination de faces cachées en ligne (cf. page14)
puisqu’elles ne stockent pas la visibilité et éliminent les objets masqués au cours de la navigation
interactive. Nous renvoyons le lecteur intéressé par l’<occlusion culling> en ligne aux récents états
de l’art consacrés à ce sujet [83, 35, 124, 18] et à l’ouvrage de Foley et al. [63] pour une présentation
des techniques de <hidden surface removal>(notées <HSR> dans la figure).
F IG . 3.1: Classification des méthodes de visibilité utilisées en synthèse d’images pour le calcul de vues. Les
méthodes étudiées dans cet état de l’art sont entourées d’un cercle grisé.
Nous avons scindé l’état de l’art en trois parties. La première est consacrée aux approches de visi-
bilité analytique, qui encodent l’information de visibilité de manière complète et exacte (graphe d’as-
pect, approches de visibilité globale, <Asp> et arrangements d’hyperplans de Pellegrini) (section2).
La deuxième et la troisième partie présentent les méthodes utilisées dans le domaine de l’<occlusion
culling> avec précalcul, qui encodent la visibilité de manière approchée : les méthodes de calcul de
PVS sont présentées dans la section 3 et les méthodes basées sur le modèle des graphes cellules-
portails (notées <CPG> 1 dans la figure) sont présentées dans la section 4.
1 <CPG> pour <Cell-and-Portal Graph> en anglais.
2 Visibilité analytique 35
2 Visibilité analytique
Nous avons regroupé dans ce paragraphe les méthodes qui encodent l’information de visibilité
de manière complète et exacte. Nous allons voir qu’elles sont principalement d’intérêt théorique, car
elles sont encore trop complexes à mettre en œuvre pour être utilisées pour l’<occlusion culling>.
F IG . 3.2: Le graphe d’aspect d’un cube en projection perspective (image d’apr ès [58]).
Considérons l’espace navigable d’une scène, et découpons-le en régions d’aspect constant : pour
un utilisateur restant à l’intérieur d’une région, l’aspect qu’il perçoit reste qualitativement identique.
Plantinga a appelé cette partition de l’espace navigable en régions d’aspect constant la <partition
VSP>, pour <View Space Partition> [128].
2 Par définition, deux vues sont qualitativement équivalentes lorsque les sommets et les arêtes sont disposés de manière
similaires dans les deux vues.
3 Un changement topologique entre deux vues désigne la modification entre les vues de la disposition respective des
arêtes et des sommets. Deux vues sont qualitativement équivalentes si aucun changement topologique n’est nécessaire pour
passer de l’une à l’autre.
36 chapitre 3. Etat de l’art
Par définition, le graphe d’aspect est le graphe dual 4 de la <partition VSP>. A titre illustratif, la
Figure 3.3 présente la <partition VSP> d’une scène simple et le graphe d’aspect correspondant.
(a) (b)
F IG . 3.3: (a) <Partition VSP> (partition de l’espace navigable en cellules d’aspect constant).(b) Graphe d’as-
pect. Ce graphe est le dual de (a) : on associe un nœud du graphe d’aspect à chaque cellule de la partition et
les frontières entre les différentes cellules correspondent aux arcs du graphe.
(a) (b)
F IG . 3.4: Franchissement d’un événement de visibilité (d’après [54]). Le point de vue se déplace depuis le
point 1 jusqu’au point 3. Lorsqu’il traverse la surface critique, un événement de visibilité a lieu dans l’image
observée. (a) Sommet réel. (b) Sommet apparent.
Dans le cas particulier des scènes polygonales, les surfaces critiques s’appuient sur les arêtes des
polygones de la scène. Ce sont des quadriques réglées 6 , qui peuvent éventuellement dégénérer en un
plan. Les surfaces critiques ne sont pas des surfaces infinies, mais plutôt des morceaux de surfaces.
Elles sont délimitées, d’une part lorsque la surface rencontre une primitive de la scène7 , d’autre part
lorsqu’elle rencontre une autre surface critique. L’intersection de deux surfaces critiques est une droite,
qui joue un rôle très important en visibilité, et qui est appelée droite poignardante extrême 8 [154].
Remarque : Puisque le graphe d’aspect est le dual de la partition, cela signifie que les arcs du graphe
d’aspect représentent les surfaces critiques [69].
Analogie avec une source lumineuse Les problèmes de visibilité s’expliquent de manière simple
en utilisant une analogie avec une source lumineuse. Soit S un polygone de la scène, dont on désire
connaı̂tre le graphe d’aspect : l’analogie consiste à remplacer S par une lampe éclairant le reste de la
scène [47]. C’est pour cette raison que les objets qui en masquent d’autres sont appelés écrans dans
la littérature sur la visibilité. Comme on peut le voir sur la Figure3.5, la source lumineuse génère des
ombres et des pénombres en éclairant les écrans. Les surfaces séparant les ombres, les pénombres et
la pleine lumière sont précisément les surfaces critiques. Les intersections des surfaces sont les droites
poignardantes extrêmes.
F IG . 3.5: Analogie avec une source lumineuse. (a) En éclairant un écran, la source lumineuse S crée des ombres
et des pénombres. (b) Les surfaces critiques délimitent les zones d’ombre, de pénombre et de pleine lumière. (c)
Les droites poignardantes extrêmes sont situées à l’intersection des surfaces critiques.
objet visible. Cette observation nous donne une première indication sur les lieux de modification de
la visibilité : les changements de visibilité ont lieu lorsqu’un rayon devient tangent à un objet. D’une
manière générale, l’étude analytique de la visibilité consiste à étudier ces lieux de tangence.
2.1.3.1 Cas continu Considérons d’abord un ensemble de droites tangentes à un objet continu
lisse, c’est-à-dire un objet dont la surface est une surface algébrique, de degré borné, et qui ne possède
pas de singularités. Lorsque l’on impose à une droite de rester tangente à un (ou plusieurs) objets,
ces contraintes diminuent d’autant ses degrés de liberté. L’ensemble des droites tangentes à cet objet
forme une variété à trois dimensions, car chacune des droites de cet ensemble peut être déplacée selon
trois degrés de liberté tout en restant tangente à l’objet (cf. Durand [54] page 35). Dans l’espace dual,
l’ensemble des droites tangentes à un objet est transformé en un ensemble de points, qui forment une
hypersurface à 3 dimensions, appelée <l’hypersurface des tangentes> [70].
Soit L le point dans l’espace dual correspondant à la droite l dans l’espace primal euclidien. Si
L appartient à cette hypersurface, cela signifie que l est tangente à l’objet. Si L est à l’<intérieur> de
l’hypersurface, la droite possède une intersection avec l’objet. On dit que la droite poignarde l’objet,
et on l’appelle droite poignardante.
Considérons maintenant deux objets, et leur hypersurface des tangentes respective. Si L , point
dual d’une droite l, est simultanément à l’intérieur de ces deux hypersurfaces de tangentes, cela si-
gnifie que la droite l poignarde les deux objets. Dans l’espace dual, le lieu d’intersection de ces deux
hypersurfaces de tangence est une hyperpsurface 2D. On peut continuer de même et considérer les
ensembles des droites tangentes à 3 et à 4 objets, qui décrivent des hypersurfaces 1D et 0D.
Nous avons déjà rencontré les ensembles de droites tangentes à trois objets : ce sont des surfaces
2D dans l’espace primal, appelées surfaces critiques. En termes de droites, il s’agit de variété 1D.
Les ensembles de droites tangentes à quatre objets des droites isolées, appelées droites poignardantes
extrêmes. En termes de droites, il s’agit donc de variété 0D : dans l’espace dual, ces droites corres-
pondent à un et un seul point, situé à l’intersection des quatre hypersurfaces de tangentes.
Pour résumer, on peut dire que l’ensemble des droites tangentes simultanément à n objets lisses
forment une variété à 4 n dimensions, pour n 4. Les droites tangentes à trois objets sont des
surfaces réglées, appelées surfaces critiques, et les droites tangentes à quatre objets sont des droites
2 Visibilité analytique 39
2.1.3.2 Cas linéaire par morceaux Dans ce document, nous ne nous intéressons pas aux objets
lisses mais à leur représentations sous formes de maillages. Dans ce cas particulier, la surface de
l’objet, décrite à l’aide de polygones, est linéaire par morceaux. Les bords des objets sont des segments
de droites (les arêtes), et les objets ne sont plus lisses puisque chaque sommet du maillage est une
singularité locale.
Les surfaces critiques s’appuient sur les arêtes des polygones de la scène. Ce sont des quadriques
réglées, qui peuvent éventuellement dégénérer en un plan, et dont les intersections sont les droites
poignardantes extrêmes.
Nous considérons d’abord que les objets sont en configuration générique 11 , et enlevons ensuite
cette contrainte.
<En position générique> signifie qu’il n’existe :
– pas d’arêtes parallèles
– aucune combinaison de quatre arêtes appartenant à une même quadrique réglée.
Si ces contraintes sont vérifiées, chaque surface critique s’appuie sur exactement trois arêtes
de polygones, et une droite poignardante extrême s’appuie sur quatre arêtes. Ces arêtes, sur les-
quelles s’appuient les surfaces critiques et les droites poignardantes extrêmes, sont appelées les arêtes
génératrices d’une surface critique ou d’une droite poignardante extrême. On distingue deux types de
surfaces critiques : les surfaces EEE (pour Edge-Edge-Edge) et les surfaces V E (pour Vertex-Edge).
Les surfaces EEE correspondent à trois arêtes génératices gauches : la surface est une quadrique
réglée (cf. Figure 3.6 (a)).
Les surfaces V E sont générées lorsque deux des arêtes génératrices possèdent une intersection :
la surface est un plan, et est donc générée par un sommet et une arête (cf. Figure3.6 (b)).
(a) (b)
F IG . 3.6: Dans une scène polygonale, les surfaces critiques sont des quadriques (a) qui peuvent d égénérer en
un plan (b).
Les surfaces critiques ne sont pas infinies, et sont délimitées par les droites poignardantes extrêmes
(cf. Figure 3.7).
Toute droite poignardante extrême est située à l’intersection de différentes surfaces critiques (ce
sera toujours le cas puisque les surfaces critiques sont des surfaces réglées). Il en existe de trois types :
– entre 2 sommets de 2 polygones distincts (droite VV )
– entre un sommet d’un polygone et deux arêtes gauches de deux autres polygones (droite V EE)
10 Dans les scènes d’objets lisses, il existe aussi des surfaces critiques qui correspondent à des ensembles de droites
tangentes aux deux objets et qui sont coplanaires.
11 Par définition, des objets sont en position génériques s’ils sont placés de telle sorte qu’aucun cas dégénéré ne survienne.
40 chapitre 3. Etat de l’art
F IG . 3.7: Les intersections des surfaces critiques sont les droites poignardantes extr êmes.
Grâce aux suppositions de généricité, les surfaces critiques définies dans le paragraphe précédent
s’appuient sur exactement 3 arêtes génératrices et les droites poignardantes extrêmes sur exactement
4 arêtes. En pratique, ces hypothèses de généricité ne sont que très rarement vérifiées : les surfaces
critiques comme les droites poignardantes extrêmes peuvent s’appuyer sur un nombre quelconque
d’arêtes, en raison des alignements des objets de la scène (cf. Figure3.8). Les algorithmes de visibilité
devront être robustes vis-à-vis de ces dégénérescences s’ils doivent être capables de traiter autre chose
que des cas théoriques synthétisés pour l’occasion [132, 52, 70].
F IG . 3.8: Exemple de situation dégénérée : la droite poignardante extr ême s s’appuie sur plus de quatre ar êtes,
puisqu’elle contient les arêtes e1 , e2 , e3 et e4 ainsi que les sommets V1 et V2 (d’après Durand [54])
.
2.1.3.3 Nombre de surfaces critiques et de droites poignardantes Dans les scènes d’objets
lisses, il est possible de créer des scènes arbitrairement grandes qui ne possèdent pas de droite poi-
gnardante ni de surface critique : il suffit de construire une scène telle que deux objets au maximum
soient visibles de manière tangentielle [54]. Contrairement au cas des objets lisses, il existera toujours
des droites poignardantes (resp. des surfaces critiques) dans une scène polygonale puisque chaque
paire de sommets et chaque paire sommet/arête en génèrent. Potentiellement, dans une scène com-
portant n arêtes, il existe O(n4 ) droites poignardantes extrêmes puisque toute combinaison de 4 arêtes
génère potentiellement 2 droites poignardantes. Cependant, cette borne est très pessimiste, car dans
une scène typique, un grand nombre de ces droites sont bloquées par d’autres primitives de la scène.
De même, il existe potentiellement O(n3 ) surfaces critiques puisque toute combinaison de 3 arêtes en
génère potentiellement une. Dans le cas d’une scène particulière composée de sphères alignées, cette
2 Visibilité analytique 41
borne a été ramenée à une complexité linéaire [49], borne beaucoup plus proche de ce qui est observé
dans la pratique.
Coorg et al. ont proposé une méthode alternative [40] : plutôt que de calculer et de stocker toutes
les vues de la scène, ils proposent de maintenir la vue courante de manière incrémentale, en fonction
des déplacements de la caméra. L’aspect de la scène ne doit en effet être modifié que lorsque la caméra
traverse une (plusieurs) surface(s) critique(s). Etant donné les difficultés d’une telle approche dans
le cas général (surfaces critiques non planes, et en très grand nombre), Coorg et al. ne maintiennent
qu’une partie des surfaces critiques : ils ne calculent que les surfaces critiques planes, et ne considèrent
que celles générées par des objets considérés individuellement. Cette approche, qui ne détecte qu’une
partie des occultations existantes, consiste donc à maintenir de manière incrémentale une version
simplifiée et linéarisée du graphe d’aspect.
de droites dans un espace dual a été utilisée récemment avec succès par Nirenstein et al. [120], dans
le cadre de l’<occlusion culling> (cf. section 3.2.3).
Soit une scène polygonale dans R3 . La droite support de chacune des arêtes est convertie en
un hyperplan dans l’espace dual de Plücker à l’aide de l’équation (2.11). L’ensemble d’hyperplans
définit un arrangement dans l’espace de Plücker. Cet arrangement est composé de polyèdres, dont les
intersections avec la quadrique de Plücker représentent les droites réelles. L’approche de Pellegrini
consiste à calculer l’arrangement complet d’hyperplans dans l’espace de Plücker, puis à associer à
chacun des polyèdres P de l’arrangement la liste des primitives de l’espace R3 qui sont traversées par
les droites représentées par P . Il montre que le problème du lancer de rayon est ramené à un problème
de localisation, qui peut être résolu en temps logarithmique : il suffit de déterminer à quel polytope
de l’arrangement appartient la droite support du rayon pour connaı̂tre la liste des primitives traversées
par le rayon. Cette approche est intéressante car elle montre comment utiliser l’espace de Plücker pour
représenter des ensembles de droites dans l’espace R3 , et montre également comment précalculer et
regrouper les ensembles de droites en fonction de leur position par rapport aux primitives de la scène.
Cependant, comme tout calcul d’arrangement, cette approche nécessite un temps O(n4 ), et est prohi-
bitive en pratique [118]. De plus, elle a le désavantage de ne pas tenir compte des occultations [54].
En effet, l’arrangement d’hyperplans contient beaucoup de polyèdres qui représentent des ensembles
de droites traversant des primitives de la scène ; ces polyèdres devraient être éliminés si l’on tenait
compte des occultations. Comme nous le verrons dans la section 3.2.3, l’idée de représenter l’occul-
tation dans l’espace de Plücker a été reprise par Nirenstein et al. et par Jiřı́ Bittner pour le précalcul
exact de visibilité depuis une région [120, 20].
(pages 24 et 22).
2 Visibilité analytique 43
Dans le plan, une face du complexe est un polygone (cf. Figure3.9), et des algorithmes optimaux
existent pour le calculer [132]. Le complexe de visibilité a été utilisé avec succès comme méthode
d’accélération pour le lancer de rayons [30], pour le maintien de vue de manière incrémentale [132],
ainsi que pour le calcul de radiosité [122].
F IG . 3.9: Complexe de visibilité 2D.(a) Scène 2D, composée de trois objets. (b) Une face du complexe de
visibilité, dans l’espace dual, correspondant à l’ensemble des segments libres entre les arêtes AB et CD.
La situation est plus complexe dans l’espace R3 , car il nécessite d’utiliser un espace dual 4D
(cf. rappel page 24). De plus, Durand et al. [53] ajoutent une pseudo-dimension supplémentaire à
leur espace dual, afin de distinguer les segments libres maximaux qui appartiennent à la même droite
support. Mais comme les auteurs le mentionnent, cette paramétrisation n’est utilisée qu’à des fins
d’illustration, et le complexe de visibilité est une notion générale qui peut être utilisée avec d’autres
paramétrisations. Ainsi, Xavier Goaoc représente le complexe de visibilité dans l’espace de Plücker.
Pour ce faire, il montre que l’arrangement d’hyperplans dans l’espace dual de Pellegrini (cf. section
2.3) peut être vu comme la projection du complexe de visibilité depuis l’espace des segments libres
maximaux dans l’espace dual de Plücker [70].
A l’heure actuelle, les algorithmes de construction du complexe de visibilité en sont encore au
stade théorique [55,70], principalement à cause des difficultés algorithmiques et théoriques soulevées.
Citons deux exceptions notables : l’algorithme proposé par Jiřı́ Bittner [20] et celui proposé par Ni-
renstein et al. [120], dans le cadre du calcul de visibilité depuis une région, dont les résultats peuvent
14 La notion d’espace dual désigne ici le procédé consistant à effectuer les calculs dans un espace différent de l’espace
dans lequel la scène est représentée.
15 Une face de dimension maximale dans l’espace dual est une face de dimension d, dans laquelle d est la dimension de
l’espace dual.
44 chapitre 3. Etat de l’art
être vus comme une sous-partie du complexe de visibilité [120]. Notons également les travaux de
Chrisanthou et al. [31], qui décrivent une structure de données qui peut être vue comme une version
discrétisée du complexe de visibilité [54].
F IG . 3.10: Squelette de visibilité (image d’après [54]) (a) La surface critique P1 e1 est délimitée par les deux
droites poignardantes extrêmes P1 P2 etP1 P3 . (b) Une seconde surface critique P1 e2 , délimitée également par la
droite poignardante extrême P1 P2 . (c) Le squelette de visibilité correspondant : les nœuds du graphe sont les
droites poignardantes extrêmes, qui sont connectées entre elles par les surfaces critiques.
Le squelette de visibilité peut être construit indépendamment du complexe de visibilité, d’où son
intérêt pratique. Dans sa version originale, le squelette de visibilité est calculé de la manière sui-
vante [56] :
– calcul des nœuds du graphe : toutes les droites poignardantes extrêmes de la scène sont cal-
culées, en examinant tous les quadruplets d’arêtes et en vérifiant pour chaque quadruplet s’il
supporte une (ou éventuellement deux) droite(s) poignardante(s) extrême(s).
– les arêtes du graphe sont créées à l’aide d’un <catalogue d’adjacences>, qui permet de déter-
miner sans ambiguı̈té les nœuds qui doivent être reliés par une arête.
Pour obtenir une implémentation robuste du squelette de visibilité, Duguet et al. [52] ont ensuite
supprimé le catalogue, qui imposait que la scène soit exempte de toute dégénérescence. Néanmoins,
la combinatoire du squelette n’était pas garantie par cette approche, c’est pourquoi Xavier Goaoc a
développé un algorithme robuste de calcul du squelette de visibilité, qui garantit la structure combina-
16 Même si les arcs du squelette de visibilité et les arcs du graphe d’aspect représentent tous deux les surfaces critiques
de la scène, la ressemblance entre les deux structures de données s’arrête là.
2 Visibilité analytique 45
toire du squelette [70]. Cet algorithme est basé sur un algorithme de balayage de la scène à l’aide de
plans tournant autour des arêtes des polygones, avec un maintien incrémental du squelette de visibilité
2D dans le plan de balayage.
2.5 Discussion
Un graphe d’aspect encode toutes les vues possibles d’une scène ; il résout donc le problème du
précalcul de la visibilité sur le plan théorique. Bien qu’elle ait été utilisée pour la reconnaissance
d’objets en vision, cette approche semble prohibitive lorsque la taille de la scène augmente, car la
complexité d’un graphe d’aspect est O(n9 ) [128]. Les graphes d’aspect ne sont donc pas utilisés pour
l’<occlusion culling>, dont l’objectif est d’accélérer l’affichage de scènes complexes. Les graphes
d’aspect ont cependant fourni un cadre théorique adéquat pour l’étude de la visibilité (notamment par
l’étude systématique des surfaces critiques), et ont permis le développement des méthodes de visibi-
lité globales, telles que le complexe de visibilité [55, 70]. Ces techniques proposent de résoudre tous
les problèmes de visibilité d’une manière unifiée, en encodant les relations de visibilité existant entre
toutes les primitives de la scène. Contrairement aux graphes d’aspect, elles ne stockent plus directe-
ment les vues de la scène : à la place, elles travaillent dans un espace dual. Au sein de ce dernier, elles
considèrent l’ensemble des droites qui traversent une scène, et les regroupent en fonction des objets
touchés. L’information calculée contient, entre autres, la description des surfaces critiques, et c’est
pourquoi ces méthodes sont en théorie des solutions exactes de précalcul de l’occultation puisqu’elles
permettent de déterminer la liste des objets visibles depuis n’importe quel point de l’espace navi-
gable. Malheureusement, les difficultés sous-jacentes sont nombreuses, tant du point de vue théorique
(problème d’arrangement d’hyperplans et de localisation dans un espace 5D) que du point de vue
de l’implémentation (complexité algorithmique, problèmes de robustesse). Même si ces structures
de données ont déjà démontré leur utilité pour le calcul de l’éclairage [122, 56, 52], leur construc-
tion en tant que telle est problématique : à titre d’exemple, il n’existe à notre connaissance aucune
implémentation connue du complexe de visibilité 3D [70]. De même, il n’existe aucune algorith-
mique efficace pour l’élimination des objets masqués à l’aide de ces structures de données. Mais des
solutions théoriques commencent à apparaı̂tre pour la création de structures de visibilité globales 7[ 0],
et nul doute que ces approches fourniront une solution unifiée aux problème de visibilité (dont celui
de l’élimination efficace des objets occultés).
Les difficultés liées au calcul de visibilité rendant le précalcul exact hors de portée dans le cadre
de l’<occlusion culling>, les approches utilisées dans la pratique encodent la visibilité de manière
approchée, à l’aide de techniques plus pragmatiques. Ce sont ces méthodes que nous étudions dans
les deux sections suivantes.
46 chapitre 3. Etat de l’art
(a) (b)
F IG . 3.11: (a)Visibilité depuis un point. (b) Visibilit é depuis une région. Pour simplifier la figure, seules
les droites séparant des zones de pleine lumi ère, d’ombre et de pénombre ont été représentées. Les zones
dénommées <Ombre(fusion)> sont des zones d’ombre r ésultants de la fusion de zones de p énombre (cf. Fi-
gure 3.12).
Pour le calcul de visibilité depuis P, l’analogie avec la source lumineuse consiste à remplacer P par
une lampe ponctuelle. Les écrans créent des ombres, qui se combinent entre elles. Les objets masqués
sont ceux situés dans les zones d’ombre. Dans cette scène simple, seuls les objets O0 et O8 seront
visibles depuis P (O8 est totalement visible et O0 n’est que partiellement visible). Pour le calcul de
visibilité depuis une région, l’analogie consiste à remplacer R par une lampe étendue. Contrairement
au cas d’une lampe ponctuelle, des zones de pénombre apparaissent, définies comme des régions de
l’espace qui ne <voient> qu’une partie de la source lumineuse. Seuls les objets dans l’ombre des
écrans sont effectivement masqués. Lors de la navigation interactive, l’ensemble des objets visibles
depuis un point (le centre optique de la caméra) situé dans la région R sera approché par l’ensemble des
objets visibles depuis cette région. Une méthode exacte détectera que l’ensemble des objets visibles
depuis R est fO0 ; O2 ; O3 ; O7 ; O8 g. Si l’utilisateur se situe au point P défini dans la section précédente,
on constate donc que les objets fO2 ; O3 ; O7 g seront affichés inutilement à cause de l’utilisation de la
région R pour approcher la visibilité du point P. Il s’agit de la sur-conservativité due à la partition.
3 Encodage de la visibilité sous la forme de <PVS> 47
La plupart des méthodes de visibilité depuis une région ne sont pas capables de calculer de manière
exacte l’ensemble des objets visibles depuis R. Souvent, seule une partie des objets masqués est
détectée et il en résulte une sur-conservativité supplémentaire, que nous appelons la sur-conservativit́e
due à la méthode. La raison principale de l’utilisation de ces méthodes approchées est que le problème
de visibilité depuis une région est beaucoup plus ardu que celui de la visibilité depuis un point. En
effet, d’un problème 2D (on peut le résoudre dans une image), nous sommes passé à un problème 5D
(chaque rayon lumineux quittant la région possède deux degrés de liberté pour sa direction et trois
degrés de liberté pour son origine).
De plus, les pénombres créées par différents écrans se combinent entre elles pour former des
ombres, et il faut être capable d’en tenir compte pour détecter l’ensemble des occultations. Considérons
une scène composée d’un ensemble d’objets, et intéressons-nous à l’un d’entre eux en particulier, que
nous notons R, et que nous remplaçons par une source lumineuse. Les autres objets sont notés Oi (cf.
Figure 3.12(a)).
F IG . 3.12: (a) Ombres et pénombres créées par les écrans Oi considérés individuellement. (b) Tous les rayons
lumineux à destination de P4 sont interceptés par les écrans O1 et O3 . (c) P4 sera effectivement dans l’ombre
des écrans si l’on tient compte de la fusion des p énombres générées par les écrans O1 et O3 , qui se combinent
pour former une zone d’ombre (ph énomène de fusion des pénombres).
Depuis un point situé en pleine lumière, tel que le point P1 , l’objet R est entièrement visible.
Depuis un point situé dans une zone de pénombre, tel que le point P2 , R n’est que partiellement vi-
sible. Finalement, R n’est pas du tout visible depuis le point P3 , situé dans l’ombre de l’écran O1 .
Considérons maintenant le point P4 : comme on le constate à la Figure 3.12(b), l’ensemble des rayons
lumineux qui sont interceptés par P4 sont bloqués par des écrans ; R est donc occulté par rapport à
P4 . Le cas de figure présenté illustre la difficulté majeure du calcul de visibilité depuis une région :
tous les rayons lumineux ne sont pas bloqués par le même écran. Reprenons notre analogie. Dans la
Figure 3.12(a), les écrans sont considérés de manière individuelle, et P4 est situé dans la pénombre
de l’écran O1 et dans la pénombre de l’écran O3 . Dans la Figure 3.12(c), l’ensemble des écrans est
considéré simultanément pour la génération des ombres et des pénombres : les pénombres se com-
binent, et génèrent une nouvelle zone d’ombre, contenant entre autres le point P4 . Dans la plupart des
scènes, la majorité des zones d’ombre est générée par ce processus de fusion des pénombres, surtout
lorsque les sources lumineuses sont plus étendues que les écrans [115]. Si l’on n’en tient pas compte,
seule une petite partie des occultations est détectée, et il en résulte une sur-conservativité importante.
Mais réaliser la fusion des pénombres n’est pas trivial, car il est nécessaire de combiner l’effet de
plusieurs écrans considérés simultanément. On dit des méthodes qui y parviennent qu’elles réalisent
la fusion des écrans.
48 chapitre 3. Etat de l’art
Etant donné les difficultés soulevées, les premières méthodes capables de réaliser la fusion complè-
te des écrans dans les scènes 3D ne sont apparues que récemment [120, 20], et des méthodes ap-
prochées ont été utilisées auparavant. Nous suivons Nirenstein et al. [120], et classons en quatre
catégories les algorithmes de visibilité depuis une région, en fonction du résultat qu’ils produisent
(cf. Table 3.1).
– Les méthodes conservatives peuvent surestimer le PVS, mais ne le sous-estiment jamais. Avec
ces méthodes, des primitives invisibles peuvent être considérées comme visibles, ce qui entraı̂ne
une sur-conservativité et des performances non optimales, mais elles n’occasionnent jamais
d’erreur dans l’image (faux positifs). Dans l’exemple de la Figure3.11, une méthode conserva-
tive considérant chaque écran de manière individuelle déterminera que seuls les objets fO5 ; O6 g
sont masqués. Ces méthodes réalisent donc une fusion incomplète des écrans.
– Les méthodes agressives peuvent sous-estimer le PVS, mais ne le surestiment jamais. Aucune
primitive invisible n’est déclarée visible, ce qui signifie que les performances durant la navi-
gation interactive sont optimales. Cependant, ces méthodes peuvent occasionner des erreurs
dans l’image, puisque des objets peuvent manquer suite à la sous-estimation du PVS (faux
négatifs). Dans notre exemple, une méthode agressive considérera de manière erronée que les
objets fO2 ; O3 g, très peu visibles, sont masqués. Ces méthodes réalisent une fusion incorrecte
- et abusive - des écrans.
– Les méthodes approximatives surestiment et/ou sous-estiment le PVS. Elles entraı̂nent donc des
erreurs dans l’image, ainsi que l’affichage inutile d’objets (faux positifs et faux négatifs). Ces
méthodes réalisent également une fusion incorrecte des écrans.
– Les méthodes exactes fournissent le PVS exact, c’est-à-dire l’union des primitives visibles de-
puis tous les points de la région et sont donc optimales du point de vue du temps d’affichage,
tout en fournissant un résultat correct 17 . Ces méthodes réalisent la fusion complète des écrans.
TAB . 3.1: Classification des algorithmes de calcul de visibilit é depuis une région (dans le tableau, la colonne
<sur-conservativité> désigne la sur-conservativité due à la méthode).
Nous présentons dans la section 3.2 le principe des algorithmes de visibilité depuis une région
existant pour chacune de ces catégories. Nous étudions le problème de la partition de l’espace navi-
gable en cellules dans la section 3.3.
bloque tous les rayons existant entre R et S. Ce test est très simple à réaliser si les cellules, les objets et
les écrans sont convexes : en effet, il suffit de tester si l’ensemble des segments de droite joignant les
sommets de R et les sommets de S sont bloqués par un même écran (cf. Figure3.13(a)). Les méthodes
utilisant ce principe considèrent chacun des objets de la scène et testent s’il existe au moins un écran
convexe qui occulte entièrement l’objet [44, 138]. Si ce n’est pas le cas, l’objet est considéré comme
étant potentiellement visible depuis la région.
L’utilité de ces méthodes est assez limitée, car elles ne réalisent pas de fusion de pénombres et
nécessitent de ce fait la présence d’écrans convexes de grande taille par rapports aux cellules 1[ 15].
Cette condition est difficile à vérifier lorsque la densité des maillages augmente, puisqu’il faudrait uti-
liser beaucoup de cellules, entraı̂nant une explosion du temps de calcul et de la mémoire de stockage.
Poulin et al. ont relâché cette contrainte en proposant un algorithme de regroupement, pour former
des écrans convexes de grande taille à partir du maillage d’un objet [98]. Cette technique est prise en
défaut lorsque les écrans sont concaves. Brunet et al. ont montré que la condition de convexité des
écrans était trop restrictive, et qu’une condition suffisante était que l’ombre de l’écran soit convexe
pour que le test de visibilité à l’aide de rayons soit conservatif [26]. Pour exploiter ce test, les auteurs
extraient des contours polygonaux non convexes en 3D, appelés <Hoops>, qui ont une apparence
convexe depuis n’importe quel point de la région (cf. Figure3.13(b)). Les auteurs décrivent également
un procédé permettant de combiner l’ombre de plusieurs <Hoops>, correspondant à différents écrans,
et donc de détecter des objets dont l’occultation résulte de la présence de plusieurs écrans.
Navazo et al. ont montré qu’il était également possible de détecter l’occultation créée par une
surface à l’aide de prédicats topologiques, en se passant complètement de toute notion de convexité
pour l’écran et son ombre [116] (cf. Figure 3.13(c)). Soit deux objets R et S et un écran T placé
entre eux. Leur approche, appelée <ShieldTester>, consiste à tracer un rayon entre un sommet de R
et un sommet de S, et à tester si un prédicat topologique est vérifié par T . Etant donné que chaque
écran T est considéré individuellement, cette approche ne réalise malheureusement aucune fusion des
pénombres, et son utilité est donc également limitée.
F IG . 3.13: (a) Ecran convexe : R et S sont mutuellement masqu és si tous les rayons joignant les sommets de R et
de S sont bloqués par T . (b) Un <Hoops> est une ligne polygonale non convexe, mais qui à l’apparence convexe
depuis n’importe quel point de R. (c) <ShieldTester> permet de d étecter que les deux boı̂tes sont masquées par
l’écran concave (image provenant de [116]).
3.2.1.2 Techniques volumiques Plutôt que d’utiliser directement les maillages comme écrans, les
techniques volumiques utilisent l’intérieur des objets [6, 139, 167] : avant le traitement, la scène est
voxelisée 18 , c’est-à-dire que sa représentation surfacique polygonale est convertie en voxels. L’avan-
tage est d’utiliser une version épurée du modèle, car les détails sont éliminés lors de la conversion.
18 La <voxelisation> consiste à transformer des données surfaciques en données volumiques, composées de <voxels>.
Evidemment, ces méthodes ne fonctionnent que si les objets possèdent un intérieur bien défini. Plu-
sieurs méthodes basées sur cette représentation ont été proposées.
F IG . 3.14: Techniques volumiques (a) Les ombres des écrans sont discrétisées, et combinées entre elles dans
l’espace 3D discret [139]. (b) La méthode ne réalise pas la fusion des pénombres, la partie de l’ombre dessin ée
en couleur n’est pas détectée
A partir de l’ensemble de voxels, Andujar et al. extraient un ensemble réduit de boı̂tes de grandes
tailles, se recouvrant mutuellement, et pouvant être utilisées comme écran [6].
Schauffler et al. traitent le problème de manière discrète, et calculent des versions discrètes des
cônes d’ombre générés par les voxels. Cette technique leur permet de combiner explicitement l’ombre
générée par plusieurs objets dans l’espace 3D discrétisé [139] (cf. Figure 3.14(a)). Elle permet de fu-
sionner les ombres des écrans, mais pas leurs pénombres [47] : c’est pourquoi elle ne détectent qu’une
sous-partie des objets masqués (cf. Figure 3.14(b)). Yagel et al. proposent un algorithme similaire,
mais qui est plus efficace car il permet de tenir compte de l’effet combiné de plusieurs écrans [167].
Notons que les techniques volumiques n’imposent pas une discrétisation régulière : Schauffler en tire
parti en utilisant un <octree> pour représenter les ombres de manière hiérarchique.
Remarque : Les <Hoops> présentés dans la section précédente peuvent également être classés
parmi les techniques volumiques, car les contours polygonaux sont extraits à partir d’une
représentation volumique de la scène. Notons que l’utilisation de <Hoops> permet en théorie de
détecter de plus grands volumes d’ombre que la méthode de Schauffler.
3.2.1.3 Opérateurs de projections étendues Le calcul de visibilité depuis un point est intrin-
sèquement 2D 19 et peut se résoudre dans une image. Au contraire, le calcul de visibilité depuis une
région est 5D 20 , et il nécessite des structures de données multi-dimensionnelles pour être résolu de
manière exacte. A l’instar du calcul de visibilité depuis un point, Durand et al. proposent de calculer
la visibilité depuis une région dans une image [57], en utilisant des opérateurs de projection étendus.
Grâce à ces opérateurs particuliers, les tests d’occultation sont effectivement réalisés en 2D, dans
19 Chaque rayon de vue a 2 degrés de liberté qui définissent sa direction.
20 Chaque rayon de vue a 2 degrés de liberté pour sa direction et 3 degrés de liberté pour son origine.
3 Encodage de la visibilité sous la forme de <PVS> 51
l’image formée sur un plan de projection : pour calculer l’occultation d’une région, la scène est balayée
avec des plans de projection perpendiculaires aux axes du système de coordonnées. Les opérateurs de
projection sont définis de telle sorte que les projections obtenues représentent de manière conservative
les occultations générées par les écrans, et ce depuis n’importe quel point de la région. Les projections
étendues sont différentes pour les écrans et pour les receveurs :
– écran : la projection étendue est égale à l’intersection des projections 2D de l’écran depuis tous
les points de la cellule.
– receveur : la projection étendue est égale à l’union de toutes les projections 2D du receveur
depuis tous les points de la cellule.
Une condition nécessaire (mais non suffisante) pour qu’un receveur soit masqué est que sa projec-
tion étendue soit contenue dans la projection étendue des écrans.
Même si cette méthode permet de tenir compte de l’effet combiné des écrans dans certaines configu-
rations, elle n’effectue pas la fusion complète des pénombres, et son efficacité est discutable lorsque
la taille des écrans diminue [118].
Des concepts similaires ont également été développés par Lim et al., la notion de projections
étendues étant formalisée à l’aide de notions d’intelligence artificielle et de logique floue [103].
3.2.1.4 Réduction de la géométrie Wonka et al. ont introduit l’idée de <réduire> les écrans avant
de calculer la visibilité depuis un point P [165,166] : ils ont montré que la visibilité ainsi calculée était
valable pour tout point appartenant à un voisinage centré en P. En d’autres termes, ils ont montré que
l’on pouvait approcher l’ombre générée par une lampe étendue au moyen d’une lampe ponctuelle, à
condition d’utiliser des écrans réduits à la place des écrans originaux. La méthode de réduction pro-
posée par les auteurs consiste à enlever l’épaisseur d’une sphère de rayon r sur tout le bord des écrans :
la visibilité calculée depuis un point P est alors valable pour tout point situé dans une sphère de rayon
r centrée en P [165]. Pour calculer la visibilité depuis une région, les auteurs calculent la visibilité
ponctuelle depuis un ensemble de points d’échantillonnage, choisis de telle sorte que leurs régions
de validité se recouvrent. L’union des objets visibles depuis l’ensemble des points d’échantillonnage
fournit une approximation conservative du PVS de la région (cf. Figure 3.15). L’avantage de cette
méthode est de réaliser la fusion (partielle) des écrans.
F IG . 3.15: Réduction des écrans (a),(b)et(c) R éduction des écrans, et calcul de la visibilité depuis différents
points d’échantillonnage avec les écrans réduits.(d) L’intersection des ombres ponctuelles échantillonnées est
incluse dans l’ombre de la région ; l’union des objets visibles depuis l’ensemble des points d’ échantillonnage
est donc une approximation conservative du PVS de la r égion.
Décoret et al. ont montré que la réduction pouvait être remplacée par une opération morpholo-
gique d’érosion, et que la propriété restait valable si l’on remplaçait la sphère par un élément struc-
turant convexe [47, 48]. Grâce à ce formalisme, les auteurs ont ensuite démontré que l’on pouvait
également réduire les receveurs (et plus seulement les écrans), afin de détecter plus d’occultations. En
52 chapitre 3. Etat de l’art
effet, dans de nombreux cas, l’érosion d’un objet est entièrement située dans l’ombre, alors que l’ob-
jet en lui-même est partiellement visible depuis la cellule. En 3D, toute la difficulté de cette approche
résulte dans le calcul de l’érosion : dans sa thèse de doctorat, Xavier Décoret utilise une représentation
volumique des objets pour réaliser l’érosion des objets 3D [47].
Une approche utilisant également l’idée de réduction des écrans a été proposée récemment par
Chhugani et al. [29], la réduction étant effectuée à partir des cônes d’ombre générés par les objets.
3.2.1.5 Ecrans virtuels Koltun et al. ont introduit les écrans virtuels21 afin de représenter l’occul-
tation cumulée d’un ensemble d’écrans [94]. Par définition, un écran virtuel est un polygone associé à
la région R qui n’appartient pas à la scène initiale : il est synthétisé de telle manière qu’il soit masqué
depuis tout point de R. Ces nouveaux écrans sont ensuite utilisés en lieu et place de la géométrie
initiale pour éliminer les objets masqués. Le but poursuivi est double : d’une part, offrir un calcul de
visibilité depuis une région réalisant la fusion des écrans (en effet, par construction, un écran virtuel
représente l’ombre fusionnée de plusieurs écrans), d’autre part réduire les besoins de stockage, car
seuls les écrans virtuels doivent être stockés, à la place de la liste des objets visibles. Koltun et al. pro-
posent une technique de calcul pour le cas particulier de scène 2D12 22 , basée sur les droites supports
et les droites séparatrices de la cellule et des écrans. Mais cette approche semble difficile à étendre
au cas 3D. Dans les scènes de villes, Downs et al. extraient des prismes verticaux pour représenter
l’occultation créée par les bâtiments, à partir desquels une ligne d’horizon est calculée. Tous les ob-
jets situés derrière la ligne d’horizon sont considérés comme masqués [50]. Des techniques utilisant
l’horizon, qui peut être considéré en lui-même comme un écran virtuel, ont également été utilisées
dans le cas des terrains [146, 105]. En 3D, Hua et al. utilisent un autre type d’écrans virtuels, qui se
présente sous la forme d’un ensemble de cartes de profondeur appelées <cartes globales d’occulta-
tion> et notées <GOM> 23 , dont chacun des pixels est appelé <barrière virtuelle>. Chaque barrière
est placée de telle sorte qu’elle soit effectivement masquée depuis tout point de la région [86]. Les
<GOM> sont ensuite utilisées pour détecter les objets masqués. L’avantage de cette méthode est de
permettre de découpler la complexité des écrans de la complexité de la géométrie, car la résolution
des GOM est fixe. Elle offre également de nombreuses possibilités de compression, puisque les GOM
se présentent sous la forme de cartes de profondeurs 2D. Notons que les <Hoops> peuvent également
être considérés comme des écrans virtuels [26], ainsi que les représentations volumiques utilisées pour
remplacer la géométrie dans les calculs de visibilité [6, 139, 167].
3.2.1.6 Diviser pour régner Soit un ensemble de rayons lumineux émis par une source lumineuse
volumique. Chacun des rayons possède 5 degrés de liberté : 3 coordonnées (x; y; z) pour localiser
spatialement son origine et 2 coordonnées (θ; φ) pour sa direction. Dans l’espace à 5 dimensions
(x; y; z; θ; φ), l’ensemble des rayons émis par la source représente un hypercube 24 . Les approches
<diviser pour régner> subdivisent cet hypercube de manière récursive [8, 161, 73, 1] : dans l’espace
3D, chaque <sous-hypercube> obtenu représente un faisceau lumineux, dont on calcule l’intersection
avec la géométrie de la scène. Ce faisceau est subdivisé tant que certaines conditions ne sont pas
vérifiées (faisceau possédant une intersection avec un certain nombre de primitives,...). Initialement
21 Les écrans virtuels sont également appelés <anti-portails> dans l’industrie du jeu vidéo.
22 Une scène 2D 12 est une scène que l’on peut représenter à l’aide d’une carte d’élévation. Chaque point de la carte
contient la hauteur verticale de la géométrie qui le surplombe.
23 <GOM> pour <Global Occlusion Map> en anglais.
24 Un hypercube est la généralisation du cube dans un espace à n dimensions.
3 Encodage de la visibilité sous la forme de <PVS> 53
appelées méthodes de classification de rayons, elles furent d’abord développées pour accélérer le
lancer de rayons [8, 1]. Wang et al. en ont ensuite utilisé le principe pour calculer la visibilité depuis
une région [161] : les faisceaux quittant la région sont subdivisés, jusqu’à ce qu’ils ne soient plus
bloqués que par une et une seule primitive. Gotsman et al. ont utilisé un principe similaire dans le
cadre des méthodes de visibilité agressives [73] (cf. section 3.2.2).
F IG . 3.16: Echantillonnage de la visibilit é à l’aide de rayons aléatoires issus de R. Les objets 01 ,03 ,04 et 05 sont
correctement identifiés comme étant visibles ; aucun rayon n’atteignant l’objet 0 2 , l’échantillonnage le classe
de manière erronée comme étant <masqué>.
Nirenstein et al. utilisent la technique classique de l’<item buffer> [162] pour réaliser l’échantil-
lonnage de manière efficace, à l’aide du matériel graphique [119]. En recommençant cette opération
depuis de nombreux points situés à l’intérieur de la cellule, un échantillonnage de sa visibilité est ob-
tenu. Nirenstein et al. décrivent différentes heuristiques, permettant de répartir les points d’échantillon-
nage sur la surface de la région de manière à diminuer les risques de sous-échantillonnage. Ils pro-
posent également un système de <cache> de données, permettant de réexploiter l’information déjà
calculée, afin d’éviter de devoir afficher toute la scène dans l’<item buffer>.
25 Un imposteur est un trompe-l’œil rapide à afficher, destiné à remplacer la géométrie peu visible ou éloignée.
54 chapitre 3. Etat de l’art
Remarque : l’<item buffer> est une technique basée sur le <z-buffer>, qui permet de déterminer la
liste des objets visibles depuis un point P. Après avoir assigné une couleur unique à chaque primi-
tive, la scène est dessinée depuis P, à l’aide de l’algorithme classique du <z-buffer>, dans 6 images
formant un cube autour de P ; la couleur de chacun des pixels des 6 images obtenues donne la liste
des objets visibles depuis le point P.
A l’heure actuelle, il n’existe pas de méthodes de visibilité agressive permettant de garantir une
erreur bornée. Des techniques de visibilité approchées garantissant une borne sur l’erreur commise
ont cependant été proposées par Soler et al. dans le domaine du calcul global d’illumination [142,144,
143].
F IG . 3.17: Partition de l’espace navigable en fonction des surfaces vues. Les zones color ées représentent les
régions de visibilité constante. La légende indique les segments visibles depuis chaque cellule. Les fronti ères
entre zones de visibilité constante sont les segments critiques, dont les analogues pour la 3D sont les surfaces
critiques (seul un sous-ensemble des segments critiques est repr ésenté).
Considérons la Figure 3.17, qui représente une scène très simple dans le plan, composée de quatre
segments de droite. Les polygones de couleur représentent une partition de l’espace navigable en
cellules de visibilité constante : pour une caméra se déplaçant dans la scène, les mêmes segments
restent visibles tant que la caméra ne change pas de cellule, les apparitions et disparitions d’objets
survenant lorsque la caméra en franchit les frontières. En 2D, ces frontières sont des segments de
droite appelés segments critiques, qui correspondent aux surfaces critiques en 3D.
Comme on peut le constater, la partition n’est pas triviale, même dans un cas de figure aussi
simple :
– Les segments critiques s’arrêtent lorsqu’ils rencontrent des objets.
– Certaines régions ne sont pas convexes (par exemple le polygone 1-2-3-4).
– Il existe un grand nombre de régions de visibilité constante (on en compte déjà 19 dans cet
exemple).
– Il faut tenir compte de l’effet cumulé de plusieurs écrans pour obtenir certaines régions (problème
de la fusion des écrans).
– La situation est encore plus complexe en 3D, car les frontières entre cellules de visibilité
constante sont des surfaces du second degré (les surfaces critiques)
Des partitions de ce type existent en 2D, dans le domaine de la robotique [76], mais leur extension
en 3D est délicate et aucune partition en cellules de visibilité constante n’existe à l’heure actuelle dans
le domaine du précalcul de visibilité.
56 chapitre 3. Etat de l’art
Remarque : Les graphes d’aspect et les partitions <VSP> (cf. page 35) constituent des exceptions
à cette règle, puisque la partition en cellules de visibilité constante est une sous-partie de la partition
<VSP> (la partition en cellules d’aspect constant), qui est la partition duale du graphe d’aspect. En
ce qui concerne l’<occlusion culling>, un graphe d’aspect encode trop d’informations, car toutes
les vues sont représentées, même si elles ne se diffèrencient pas par l’apparition ou la disparition
d’un objet de la scène. A titre illustratif, la Figure 3.18 compare une partition en cellules de visibilité
constante et une partition en cellules d’aspect constant. On constate que le graphe d’aspect contient
les cellules de visibilité constante, mais également de nombreuses cellules superflues du point de vue
de l’élimination des objets masqués.
(a) (b)
F IG . 3.18: (a) <Partition VSP> (partition de l’espace navigable en cellules d’aspect constant). (b) Partition en
cellules de visibilité constante : il s’agit d’un sous-ensemble de la partition en cellules d’aspect constant, dans
lequel seules les surfaces critiques correspondant aux apparition/disparition d’objets sont encod ées.
En pratique, des partitions approchées sont utilisées à défaut dans le domaine du calcul de <PVS>.
Ce sont ces techniques que nous étudions dans la section suivante.
Cohen et al. utilisent les cases d’une grille régulière comme cellules de PVS [44] (cf. Figure 3.19).
La résolution de la grille doit être choisie suffisamment fine pour réduire la sur-conservativité, mais
ne peut pas être trop élevée étant donné que le coût de la partition augmente rapidement avec la
résolution. Cette approche n’est pas très efficace, car tout l’espace navigable ne nécessite pas une
grille de résolution identique, et un encodage hiérarchique serait souvent plus intéressant (cf. Fi-
gure 3.19(c)).
F IG . 3.19: Différents types de partition. (a) Partition en cellules de visibilit é constante (non utilisée en pratique).
(b) Partition régulière [44]. (c) Partition non régulière, obtenue soit par fusion de cellules dont les PVS sont
similaires [139, 57, 157, 96], soit par subdivisions successives [138, 57, 119].
Pour en obtenir un, Schauffler et al. et Durand et al. partent d’une grille fine, et fusionnent les
cellules dont les PVS sont similaires [139, 57]. Cette approche a été généralisée par Van de Panne et
al. [157], qui subdivisent non seulement l’espace navigable, mais également la géométrie de la scène.
Partant d’un découpage très fin pour la géométrie comme pour l’espace navigable, le PVS de chacune
des cellules est calculé dans une première phase. Ensuite, les cellules dont les PVS sont similaires
sont fusionnées, alors que les objets vus par les mêmes cellules sont également fusionnés pour ob-
tenir des objets de plus grande taille. Avec ce procédé, la segmentation de la scène en objets et la
partition de l’espace navigable en cellules ont un sens du point de vue de la visibilité. L’objectif de
ces méthodes est de réduire l’information à stocker, mais elles ne réduisent pas le temps de calcul
puisque les calculs de visibilité sont effectués à la résolution la plus fine. Récemment, Samuli Laine
a montré qu’il était possible de réduire ce temps de calcul en partageant l’information déjà calculée
entre cellules voisines [96]. Sa technique consiste à définir un ordre de parcours des cellules, puis à
calculer le PVS des cellules de manière incrémentale : une approximation conservative du PVS d’une
cellule est déduite du PVS des cellules voisines déjà traitées ; le PVS de la cellule est ensuite calculé à
partir de cette première approximation. Samuli Laine montre que cette approche permet d’obtenir un
résultat proportionnel au résultat en sortie, c’est-à-dire au nombre d’objets visibles.
Pour éviter le calcul initial à pleine résolution d’un PVS de la scène, des approches par subdivisions
ont également été proposées : partant d’une partition grossière, les cellules sont subdivisées afin d’ap-
procher la partition en cellules de visibilité constante, la solution initiale étant raffinée aux endroits
propices [138, 57, 119]. Ce schéma de subdivision a une propriété intéressante : chaque cellule est ob-
tenue en subdivisant une cellule <mère> de plus grande taille, ce qui signifie que son PVS est inclus
dans celui de la cellule mère initiale. Cette propriété peut être mise à profit pour effectuer un calcul de
visibilité incrémental : seuls les objets visibles depuis la cellule mère doivent être testés lors du calcul
du PVS d’une nouvelle cellule. Les calculs deviennent de moins en moins coûteux au fur et à mesure
58 chapitre 3. Etat de l’art
que les cellules sont subdivisées et que la sur-conservativité de la partition diminue [119] (le PVS des
cellules tend vers un PVS ponctuel).
Certaines techniques ne créent pas explicitement de partition de l’espace navigable, mais main-
tiennent dynamiquement le PVS d’une cellule se déplaçant avec la caméra. Coorg et al. maintiennent
dynamiquement la cellule d’un graphe d’aspect linéarisé et simplifié [40] (cf. section 2.1.4). Wonka
et al. utilisent comme cellule de visibilité une sphère se déplaçant avec la caméra, la visibilité depuis
la sphère étant calculée ponctuellement depuis son centre, après <réduction> des écrans [166] (cf.
section 3.2.1.4).
Il est également possible d’exploiter les propriétés particulières d’une scène pour placer les cel-
lules, par exemple en utilisant les pièces d’un bâtiment dans une scène architecturale [156, 107] ou les
rues dans une scène de ville [139].
3.5 Discussion
L’utilisation d’un <PVS> ne permet pas d’encoder la visibilité de manière exacte, puisque l’en-
semble des objets visibles depuis un point est approché par l’ensemble des objets visibles depuis la
région qui le contient. Il en résulte un affichage superflu d’objets, mesuré par la sur-conservativité due
à la partition. Pour le réduire, il est nécessaire de créer une partition qui soit la plus proche possible de
la partition en cellules de visibilité constante. Mais comparativement au calcul de la visibilité depuis
une région, le problème complémentaire du placement des cellules a été très peu étudié [35], et les
solutions existantes sont relativement naı̈ves.
En ce qui concerne le calcul de visibilité depuis une région, sa résolution exacte, nécessitant la
fusion complète des écrans, a longtemps été considérée comme impraticable [47, 120] et à défaut,
des techniques approchées furent utilisées [38]. Ces dernières simplifient le problème, et de nom-
breuses occultations ne sont pas détectées. Il en résulte également l’affichage d’objets superflus,
qui se mesure par la sur-conservativité due à la méthode. Seules les techniques exactes permettent
de considérer toutes les occultations et permettent d’éliminer ce facteur de sur-conservativité. Les
premières méthodes exactes sont apparues récemment [120, 20], mais leur difficulté de mise en œuvre
et leur coût élevé en temps de calcul en a limité la diffusion.
La complexité d’un calcul de <PVS> est très dépendante des données. Outre le fait que certains
algorithmes ne sont utilisables que pour certains types de scènes (scènes 2D12 , scènes d’intérieur,
etc.) [18], la configuration géométrique des objets influence beaucoup le temps de calcul. Dans une
scène où il existe beaucoup d’occultations, les ombres fusionnent très rapidement et génèrent de
larges volumes d’ombre, contenant la majorité de la scène. L’utilisation d’une structure de données
hiérarchique pour regrouper les objets permettra de détecter des ensembles d’objets appartenant à ces
larges zones d’ombre à l’aide d’une seule opération. De plus, même des modèles très simples, cap-
turant l’ombre de manière très approximative, permettront tout de même de capturer les ombres de
manière satisfaisante. Au contraire, lorsque les écrans sont dispersés, les occultations ne se combinent
plus, et les ombres sont réduites ; dès lors, il faudra considérer chaque objet individuellement pour
déterminer s’il est masqué et il sera nécessaire d’approcher les ombres de manière très précise pour
espérer capturer l’occultation existant dans la scène. Il en est de même pour la partition de l’espace
navigable en cellules : elle est beaucoup plus critique dans les scènes d’extérieur très ouvertes, où
l’espace navigable est étendu, que dans les scènes d’intérieur dans lesquelles l’espace navigable est
réduit et la position géométrique des cellules est plus simple à définir (par exemple les pièces d’un
bâtiment). Différentes méthodes ont été proposées pour tenter de quantifier ces phénomènes et mesu-
rer la complexité d’une scène en fonction de la visibilité [129, 60, 61, 75, 117, 59].
60 chapitre 3. Etat de l’art
(a) (b)
F IG . 3.20: Méthodes cellules-portails (a) Sc ène architecturale 2D. Les cellules sont color ées et indiquées par
des lettres majuscules ; les portails sont numérotés et dessinés en rouge. (b) Le graphe cellules-portails corres-
pondant.
Grâce à cette structure de données, il est possible d’éliminer rapidement la géométrie occultée par
les murs, en n’affichant que les surfaces visibles à travers des ouvertures [156, 153, 155, 107, 87, 106].
La première étape consiste à localiser l’observateur dans une des cellules du graphe. Ensuite, le graphe
est traversé à l’aide d’un parcours en profondeur ((cf. Cormen et al. page 525 [41])), et un cône de vue
est calculé, qui représente la zone visible depuis l’observateur. Ce cône est rétréci chaque fois qu’un
portail est traversé (cf. Figure 3.21).
27 Les <portails> sont appelés <hublots> par certains auteurs [54, 47].
28 Graphe <CPG> pour <Cell-and-Portal Graph> en anglais.
4 Encodage de la visibilité sous la forme de graphes cellules-portails 61
F IG . 3.21: Elimination d’une scène avec un graphe <CPG>. L’observateur est en D. Le c ône de vue est adapté
lorsqu’un portail est traversé. Les objets visibles sont situés à l’intérieur du cône de vue.
Remarque : Dans une scène architecturale, seule l’occultation générée par les murs est capturée par
un graphe cellules-portails. Les autres objets sont considérés comme du <détail>, et l’on considère
qu’ils ne masquent pas suffisamment d’objets pour que l’on en tienne compte [154].
Les graphes cellules-portails sont souvent créés à la main, à l’aide d’outils de modélisation [88,
107] : la tâche consiste à repérer chaque ouverture à l’aide d’un portail, et à segmenter la géométrie de
la scène en cellules. Des algorithmes de création automatique de graphes <CPG> ont également été
proposés, et font l’objet de la section 4.2. Les méthodes permettant de déterminer les objets masqués
à l’aide d’un graphe <CPG> sont présentées dans la section 4.3.
ensembles (addition, soustraction, intersection, union) entre des primitives simples (cubes, sphères, polyèdres,...) afin de
modéliser des objets plus complexes.
62 chapitre 3. Etat de l’art
Les portails obtenus par les méthodes basées sur un arbre <BSP> sont alignés avec les éléments
géométriques de la scène, ce qui réduit la méthode à des ensembles de géométrie restreints. De plus,
ces approches sont limitées aux ensembles de données contenant des plans, et donnent des graphes
inutilisables lorsque le nombre de polygones augmente, car chaque polygone crée un plan de découpe
et ajoute des portails à la décomposition. C’est pourquoi d’autres techniques sont nécessaires lorsque
la scène ne répond pas à ces contraintes.
Dans le contexte particulier de la colonoscopie virtuelle [85], Lichan et al. exploitent la structure tu-
bulaire de la scène pour créer les graphes <CPG> 32 . Leur algorithme consiste à calculer un champ
de distances à la géométrie, puis à extraire le squelette de ce champ de distances 33 , qui fournit une
ligne centrale traversant la géométrie. La scène est ensuite découpée en cellules de manière régulière,
en plaçant des portails perpendiculairement au squelette.
Lerner et al. étendent les graphes <CPG> aux scènes 2D12 pour traiter le cas des villes [101]. L’algo-
rithme crée la partition en 2D, à partir de l’empreinte des bâtiments sur le sol, qui sont des polygones.
Au cours d’une première phase, les arêtes de ces polygones sont parcourues de proche en proche, dans
le sens des aiguilles d’une montre, en choisissant toujours localement le chemin le plus court. Lorsque
ce chemin implique de passer à un autre bâtiment, un portail est généré. Cette procédure décrit des
boucles, chacune entourant un espace qui est identifié à une cellule. La seconde phase utilise une heu-
ristique pour améliorer le graphe obtenu dans la première étape. Les auteurs proposent également une
mesure permettant d’évaluer l’efficacité du graphe généré [101].
Les premiers algorithmes de précalcul exacts et conservatifs à partir de graphe <CPG> furent
proposés par Teller et al. [156, 154, 152, 155]. En 2D, et dans des scènes alignées avec les axes, Teller
et al. ramènent le problème du calcul des objets visibles au travers d’une séquence de portails à un
problème de programmation linéaire [156]. En 3D, ils le ramènent à un problème du poignardage de
polygones [152] (cf. page 27). Chaque face S de la cellule, supposée convexe, est considérée tour à
tour. La visibilité d’une primitive R, depuis la face S d’une cellule, est déterminée en testant s’il existe
au moins un rayon quittant la face S qui atteint l’objet R après son passage à travers la séquence de por-
tails les séparant. Les auteurs expriment le problème dans l’espace de Plücker : les arêtes des portails
et des objets S et R sont transformées en hyperplans ; l’objet sera visible si le système d’inéquations
formé par ces hyperplans possède une solution, et si l’intersection de cette solution avec la quadrique
de Plücker n’est pas vide. Ce calcul est réalisé à l’aide d’un algorithme de calcul d’enveloppe convexe.
Dans un travail antérieur, Seth a utilisé une technique semblable pour calculer précisément les limites
d’ombre et de pénombre générées par une lampe étendue [153]. Pour ce faire, il calcule explicitement
l’équation des surfaces critiques, en résolvant le système d’équations décrit ci-dessus. Teller et al.
ont également proposé des algorithmes permettant d’évaluer de manière conservative la visibilité au
travers d’une séquence de portails [155, 154]. Seules les surfaces critiques planes sont considérées,
et les surfaces critiques de degré 2 sont ignorées 34 . Cet algorithme est conservatif, car le volume de
visibilité calculé englobe le volume de visibilité exact. Jimenez et al. étendent cette technique, et pro-
posent un squelette de visibilité adapté pour calculer la visibilité au travers d’une séquence de portails
de manière incrémentale [87].
Finalement, dans le contexte du calcul exact de visibilité dans les scènes de villes 2D12 , Bittner
et al. utilisent des portails générés à la demande, pour représenter la visibilité dans le plan vertical :
des portails sont érigés au-dessus de chaque bâtiment, et utilisés pour calculer une approximation
conservative de la visibilité avant l’utilisation d’un calcul de visibilité exact [19].
4.4 Discussion
Les graphes cellules-portails sont très répandus, notamment dans l’industrie du jeu vidéo [16],
car ce sont des méthodes qui permettent d’éliminer de manière simple et robuste une grande partie
des objets masqués. De plus, les besoins en mémoire de cette méthode sont réduits, ce qui la rend
attractive dans tous les domaines d’application pour lesquels la mémoire disponible est limitée.
Aujourd’hui, l’utilisation des graphes <CPG> pour l’<occlusion culling> semble être arrivée à
maturité, et des algorithmes efficaces existent [107, 106]. Mais la création du graphe en lui-même est
encore problématique car il n’existe pas de solution générale satisfaisante qui soit opérationnelle dans
tous les cas de figure, et faute de techniques automatiques adéquates, les graphes <CPG> sont encore
souvent générés à la main.
34 Ces surfaces critiques sont générées par les ensembles de trois arêtes gauches.
64 chapitre 3. Etat de l’art
R e q u ê t e e x a c t e d ’ o c c u l t a t i o n
chapitre 4
entre deux polygones
Sommaire
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
1.1 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.2 Plan du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2 Etat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.1 Principes généraux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.2 Ensemble des droites poignardant deux polygones . . . . . . . . . . . . . 69
2.3 Découpe de polyèdres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.4 Calcul exact de visibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3 Algorithmes basés sur le 1-squelette des polytopes dans l’espace de Plücker . . 71
3.1 Algorithme de découpe de polytopes à d dimensions . . . . . . . . . . . . 71
3.2 Construction de l’ensemble des droites poignardant deux polygones 3D . . 73
3.3 Complexité théorique des algorithmes . . . . . . . . . . . . . . . . . . . . 76
4 Requête simple et efficace d’occultation entre deux polygones . . . . . . . . . . 78
4.1 Sélection des écrans guidée par la visibilité . . . . . . . . . . . . . . . . . 78
4.2 Agrégation des écrans basée sur leur silhouette étendue . . . . . . . . . . . 79
4.3 Algorithme pour une requête d’occultation analytique entre deux polygones 82
4.4 Analyse de la méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.5 Relation entre l’algorithme de soustraction et la visibilité analytique . . . . 84
5 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.1 Evaluation des performances de l’algorithme . . . . . . . . . . . . . . . . 88
5.2 Sélection des écrans et détection des ouvertures . . . . . . . . . . . . . . . 92
6 Conclusion et perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
1 Introduction
Comme nous l’avons vu dans l’état de l’art, le modèle du <PVS> précalculé nécessite d’une
part un algorithme afin de découper l’espace navigable en cellules, et d’autre part un algorithme de
calcul de visibilité depuis une région permettant de déterminer le <PVS> de chacune des cellules,
c’est-à-dire la liste des primitives visibles depuis au moins un point de la cellule. Les algorithmes de
66 chapitre 4. Requête exacte d’occultation entre deux polygones
calcul de visibilité depuis une région sont classés en différentes catégories suivant le résultat qu’ils
produisent (cf. page 46). Ce chapitre est consacré aux algorithmes exacts, qui déterminent le <PVS>
de manière analytique [131, 95, 24, 120, 20, 113, 19] : en réalisant la fusion complète des écrans, ils
éliminent entièrement la sur-conservativité due à la méthode. Pour un ensemble donné de cellules,
les performances obtenues lors de l’exploration interactive sont donc optimales, puisque les seules
primitives qui seront affichées sont celles qui sont effectivement visibles depuis au moins un point de
la cellule dans laquelle se trouve l’utilisateur.
Les algorithmes exacts tirent parti du fait que le <PVS> d’une région volumique est égal à l’union des
<PVS> de chacune des faces de la région (cf. page 54). De la sorte, le calcul de <PVS> se ramène
au calcul de visibilité depuis une surface. Ce dernier peut être résolu en exprimant le problème dans
l’espace dual de Plücker : les ensembles de droites y sont représentés par des polyèdres (cf. page24),
et les relations d’occultation sont maintenues sous la forme de complexes de polyèdres1 .
Malheureusement, les méthodes existantes sont difficiles à mettre en œuvre, coûteuses en temps
de calcul, et peu robustes, ce qui les rend inadaptées à une utilisation pratique et freine leur diffusion.
Dans ce chapitre, nous proposons des améliorations de cet état de fait. Notre point de départ a été le
travail de Nirenstein et al. [120], auquel nous avons apporté différentes améliorations. Le résultat est
un algorithme de calcul exact de visibilité depuis une région, qui est plus simple à mettre en œuvre,
plus rapide et plus robuste que les algorithmes existant dans la littérature.
1.1 Contributions
Algorithmes basés sur le squelette des polytopes dans l’espace de Plücker : Le maintien de
l’occultation à l’aide d’un complexe de polytopes dans l’espace de Plücker nécessite deux opérations
fondamentales : la création d’un polytope 2 représentant l’ensemble des droites poignardant deux
polygones, et un algorithme de découpe de polytopes pour effectuer les opérations de <CSG>. Nous
présentons de nouveaux algorithmes pour réaliser chacune de ces opérations, chacun d’entre eux n’uti-
lisant que le 1-squelette des polytopes (les sommets et les arêtes des polytopes) à la place du graphe
d’incidence utilisé précédemment [120].
Requête d’occultation efficace entre deux polygones : Les algorithmes basés sur le 1-squelette
des polytopes sont des briques de base, utilisables par tout algorithme exact de visibilité depuis une
région : nous montrons comment les utiliser dans le contexte de requêtes d’occultation exactes entre
deux polygones convexes. De plus, nous combinons de nouvelles techniques pour augmenter leur
efficacité :
– nous proposons de lancer des rayons dans les ouvertures laissées par les écrans déjà traités. Par
construction, la méthode détecte rapidement les ouvertures qui existent entre les polygones, et
autorise un arrêt précoce de la requête dans le cas de la visibilité mutuelle. Les rayons sont
également utilisés pour la sélection des écrans, afin d’être certain que chacun des écrans utilisés
bloquera une partie de l’espace des droites qui n’a pas encore été traité.
– nous proposons un nouveau mécanisme de fusion des écrans, spécialement adapté aux requêtes
de visibilité exprimées dans l’espace de Plücker. En éliminant les arêtes des écrans qui ne
font pas partie de la silhouette étendue des écrans composés de polygones connectés3 , nous
montrons qu’une grande partie des calculs redondants peuvent être éliminés.
1 Dans ce chapitre, nous appelons complexe C un ensemble de polyèdres convexes Pi .
2 Comme nous l’avons expliqué page 20, un polytope est un polyèdre borné.
3 La silhouette étendue est la <from-region silhouette> en anglais.
2 Etat de l’art 67
Remarque : Ces travaux ont fait l’objet d’une publication au symposium <Eurographics Symposium
on Rendering> en 2005, sous le tire <A Low Dimensional Framework for Exact Polygone-to-Polygon
Occlusion Queries> [82]. Ils ont été réalisés en collaboration avec Otso Mäkinen et Shaun Nirenstein.
2 Etat de l’art
Dans cette section, nous décrivons les méthodes exactes utilisées dans le domaine de l’<occlusion
culling>, permettant de déterminer l’ensemble des primitives polygonales de la scène qui sont visibles
depuis un polygone S au travers d’un ensemble d’écrans polygonaux Oi . Le polygone S est supposé
convexe 4 et les écrans Oi sont des maillages polygonaux.
F IG . 4.1: (a) Le polyèdre P , représentant dans l’espace primal l’ensemble des droites poignardant simul-
tanément les polygones S et R. (b) L’ écran Oi bloque un ensemble de droites. (c) Le complexe C = fP 1 ; P2 g
contenant le résultat de l’opération P Oi . Dans l’espace primal 3D, il représente un ensemble de droites qui
ne sont bloquées par aucun écran Oi
F IG . 4.2: Lorsque tous les écrans ont été traités, le complexe résultant représente l’ensemble des droites qui
n’ont pas été bloquées.
En 2D, l’espace dual est également bi-dimensionnel, et des algorithmes efficaces existent [95,24].
Comme montré récemment par Bittner et al. [19], ces algorithmes peuvent être étendus au cas 2D12 .
En 3D, l’espace dual est l’espace projectif 5D de Plücker. La transformation du problème vers cet es-
pace est obtenue en utilisant l’équation (2.11) (du chapitre 3), afin de transformer les droites contenant
les côtés des polygones de la scène en hyperplans dans l’espace de Plücker (cf. Figure4.3).
Il est possible de démontrer que l’ensemble des droites poignardant un polygone est représenté par
un polyèdre (une région convexe non bornée de l’espace), et que l’ensemble des droites poignardant
deux polygones peut être représenté par un polytope (un polyèdre borné) [118] 5 . Dans les deux cas,
l’ensemble des droites poignardantes est représenté par la portion de la quadrique de Plücker qui est
délimitée par le polyèdre. En particulier, le point dual B de la droite poignardante b est situé sur la
quadrique de Plücker, et à l’intérieur du polyèdre. Les points d’intersection S des côtés du polyèdre
avec la quadrique de Plücker sont les droites poignardantes extrêmes des polygones [153]. En 3D,
chaque droite poignardante extrême s est incidente à quatre côtés (voire plus dans les configurations
dégénérées) (cf. Figure 4.3).
Le maintien de l’occultation à l’aide d’un complexe de polyèdres dans l’espace de Plücker nécessite
deux opérations fondamentales : la création d’un polyèdre représentant l’ensemble des droites poi-
gnardant deux polygones, et un algorithme de découpe de polyèdres pour effectuer les opérations de
5 Les côtés des polygones doivent être orientés de manière consistante, de telle sorte que toute droite poignardante b les
F IG . 4.3: Correspondance entre l’espace primal 3D et l’espace dual de Pl ücker (Ce schéma de principe est
une évocation de la réalité, car l’espace de Pl ücker est en réalité un espace projectif orienté 5D P5o ). Les côtés
initiaux des polygones sont transform és en hyperplans dans l’espace dual de Pl ücker. Les droites incidentes à
quatre côtés sont les droites poignardantes extrêmes s. Les courbes sur la quadrique de Pl ücker sont les traces
des 2-faces du polyèdre (c-à-d. les faces de dimension 2), et correspondent à des droites incidentes à 3 arêtes
de S et R.
<CSG>, que nous présentons dans les sections 2.2 et 2.3. Nous présentons ensuite dans la section 2.4
les algorithmes de calcul de visibilité depuis une surface, qui ont été proposés dans la littérature et qui
utilisent ces deux opérations fondamentales.
Bien que cet algorithme de construction ait également été utilisé par Mora et al. [113], à notre connais-
sance aucune implémentation n’en a été évaluée.
S. Notons que l’idée de stocker la visibilité dans l’espace de Plücker à l’aide d’un arbre BSP avait été
proposée précédemment par Mount et al. [114]. Mora et al. ont proposé récemment de réduire la frag-
mentation du complexe de polyèdres, qui est lui-même obtenu à l’aide de la méthode de Nirenstein et
al. [120], en détectant et en éliminant les découpes inutiles [113].
Remarque : Par rapport au cas 2D, tous les polyèdres du complexe ne représentent pas
nécessairement des ensembles de solutions valides : les polyèdres qui ne possèdent aucune inter-
section avec la quadrique de Plücker ne représentent aucune droite réelle, et doivent également être
éliminés de C [131].
Fan-Tao Pu a prouvé qu’il était possible de tester si un polytope possède une intersection avec la qua-
drique de Plücker à l’aide uniquement de son 1-squelette (c-à-d. ses sommets et ses arêtes) [131] : il
montre que le polytope possède une intersection avec la quadrique s’il possède au moins une arête
E [Vi ; V j ] dont l’un des sommets Vi est à gauche de la quadrique (c-à-d. Hi (Vi ) 0) et dont l’autre est
à droite (c-à-d. H j (V j ) 0). Pour chaque polytope, cette propriété peut être vérifiée afin d’éliminer
du complexe les polytopes qui ne possèdent pas d’intersection avec la quadrique de Plücker.
(a) (b)
(c) (d)
F IG . 4.4: (a) Le polytope P . (b) Le 1-squelette S de P . (c) Classification des sommets de P en fonction de leur
position par rapport à l’hyperplan de découpe Hs . (d) S et S + après l’opération de découpe .
le polytope n’est pas simple, cela signifie que les arêtes peuvent avoir plus de d facettes dans leur
description combinatoire : il est donc possible que les arêtes possèdent également plus de d 1 fa-
cettes. Dans ce cas, une nouvelle arête est créée si les facettes communes possèdent une intersection
qui est une variété de dimension 1 (c-à-d une ligne). Pour vérifier si cette condition est remplie, nous
construisons une matrice à partir de l’équation des hyperplans de toutes les facettes, et vérifions que
le rang de cette matrice est d 1.
(a) (b)
F IG . 4.5: (a) Découpe du polygone S par le plan Pl R contenant R. (b) Configuration initiale des deux polygones.
La ligne r est la droite d’intersection des plans Pl S et PlR . Comme on peut le constater, toutes les droites supports
des arêtes de S et de R sont incidentes à la ligne r.
Soit PlS et PlR les deux plans orientés contenant respectivement les deux polygones S et R. Avant
de calculer P , nous commençons par découper S avec PlR et R avec PlS (cf. Figure 4.5(a)), et ne
gardons que les parties des polygones S et R qui sont situées du côté positif des plans PlR et PlS 10 .
Si un des polygones est situé entièrement du côté négatif du plan de découpe, cela signifie qu’aucune
droite ne poignarde simultanément les deux polygones : le polytope P est l’ensemble vide. Dans le
cas contraire, nous calculons l’équation de la ligne r, définie comme étant la droite d’intersection des
plans PlS et PlR 11 (cf. Figure 4.5(b)).
Les arêtes des deux polygones sont transformées en hyperplans dans l’espace de Plücker, et
forment un polyèdre projectif. Après sa projection sur un hyperplan de projection arbitraire, le polyèdre
est une <pyramide> infinie dont le sommet est le point R , qui correspond dans l’espace primal à la
droite r (cf. Figure 4.6). En effet, toutes les droites supports des arêtes ei des deux polygones sont inci-
dentes à la droite r, ce qui signifie que le point dual R est situé à l’intersection de tous les hyperplans
Hei correspondants.
10 Une telle opération de découpe de polygone est appelée opération de <clipping> en anglais.
11 Si Pls et Plr sont parallèles, la droite d’intersection r est rejetée à l’infini : les coordonnées du point R sont alors
(0; 0; 0; nx ; ny ; nz ), dans laquelle n(nx ; ny ; nz ) est la normale au plans Pls (la normale au plan Plr étant alors évidemment
égale à n).
74 chapitre 4. Requête exacte d’occultation entre deux polygones
(a) (b)
F IG . 4.6: Propriété géométrique du polyèdre P . (a) Après sa projection sur un hyperplan de projection arbi-
traire : le sommet R de la pyramide appartient à la quadrique de Pl ücker. (b) Après sa projection sur H? : R
devient un point à l’infini. L’intersection des arêtes verticales du polyèdre avec la quadrique de Pl ücker sont
les points Si0j , qui correspondent aux droites poignardantes extr êmes. (Il s’agit d’une évocation, car le polyèdre
est en réalité compris dans un hyperplan dans R 6 . Par souci de clarté, nous n’avons représenté que 5 des 16
arêtes verticales qui définissent le polyèdre dans cette configuration).
La pyramide pourrait éventuellement être dégénérée si r était une droite poignardante, mais nous
évitons cette situation par la découpe initiale des deux polygones. L’ensemble des droites qui poi-
gnardent les deux polygones est transformé en un ensemble de points situés à l’intersection de la qua-
drique de la pyramide et de la quadrique de Plücker. Par définition, une droite poignardante extrême
est tangente à quatre arêtes : étant donné la configuration à laquelle nous avons à faire (deux poly-
gones convexes), toute droite poignardante contiendra un sommet Pi de S et un sommet Pj de R, et
nous la notons si j . Dans l’espace projectif, elle est transformée en un rayon Sij , situé à l’intersection
des arêtes de la pyramide avec la quadrique de Plücker, et devient le point Si0j après la projection de la
pyramide sur un hyperplan de projection (cf. figure 4.6 (a)).
L’algorithme de découpe de la section 3.1 nécessite que le polyèdre soit borné, et nous utilisons les
étapes suivantes pour transformer le polyèdre projectif en un polytope. Tout d’abord, nous choisissons
un hyperplan de projection particulier, noté H? , de telle sorte que le point R devienne un point
à l’infini, correspondant à la direction r (les détails sont donnés dans le paragraphe 3.2.2.1). La
projection sur l’hyperplan H? transforme le polyèdre projectif en un prisme dont les arêtes verticales
sont parallèles à la direction r (cf. Figure 4.6 (b)). Il est plus simple de borner ce prisme que de borner
la pyramide infinie obtenue à l’aide d’un plan de projection arbitraire. En effet, deux hyperplans Hc+
et Hc , de normales r et r , sont suffisants pour borner un polyèdre. Les termes indépendants de
ces hyperplans supplémentaires, fixant leur translation, sont choisis de telle sorte qu’ils englobent
complètement la région de la quadrique de Plücker située à l’intérieur du prisme (cf. Figure4.7) (Les
détails du choix des termes indépendants sont donnés dans le paragraphe3.2.2.2).
Dans l’espace de Plücker, un sommet d’un polyèdre P est situé à l’intersection de cinq hyper-
plans 12 . Quatre d’entre eux correspondent aux arêtes des deux polygones, et le cinquième est l’un des
hyperplans Hc+ ou Hc . La position des sommets est calculée comme étant à l’intersection des arêtes
verticales du prisme et des hyperplans Hc+ et Hc . Cette opération peut être réalisée simplement, en
12 Nous avons supposé que le polyèdre était simple, et que chacun de ses sommets était contenu dans cinq facettes
exactement ; cette contrainte est vérifiée pour les polygones S et R qui ne contiennent pas d’arête dégénérée.
3 Algorithmes basés sur le 1-squelette des polytopes dans l’espace de Plücker 75
F IG . 4.7: Sur les hyperplans Hc+ et Hc , les deux sommets Vi+j et Vi j , qui correspondent à la droite poignar-
dante si j , ont entre eux quatre hyperplans en commun, et ont quatre hyperplans en commun avec les sommets
correspondant aux droites fs i+1 j ; si 1 j ; si j+1 ; si j 1 g.
construisant des droites parallèles à r , chacune d’entre elles passant par un des points Sij .
Les arêtes du polyèdre étant situées à l’intersection de quatre hyperplans, cela signifie que les
arêtes qui doivent être créées relient des paires de sommets possédant quatre hyperplans en commun
(cf. Figure 4.7).
3.2.2.1 Choix de l’hyperplan de projection H? Soit R (r0 ; :::; r5 ) un point de P5 et H? un hyper-
plan de projection d’équation ∑5i=0 ai xi = b. Le point R peut être vu comme un rayon de R6 passant
par l’origine, de coordonnées (tr0 ; :::; tr5 ) avec t 2 R+ . La projection du rayon R sur l’hyperplan H?
76 chapitre 4. Requête exacte d’occultation entre deux polygones
revient à calculer le point d’intersection de ce rayon avec H? ; ce point est obtenu lorsque t est égal à
tint = b=(∑5i=0 ai ri ). Nous sommes libre de choisir l’hyperplan de projection H? . Afin de transformer
R en un point à l’infini, nous avons choisi de prendre H? πr3 x0 + πr4 x1 + πr5 x2 + πr0 x3 + πr1 x4 + πr2 x5 =
1. Puisque r est une droite réelle, R appartient à la quadrique de Plücker. Dès lors, nous avons
∑5i=0 ai ri = Hr (R ) = 0 (par l’équation (2.15) du chapitre 3). Si l’on prend cet hyperplan H? comme
hyperplan de projection, le point R est effectivement transformé en un point à l’infini, c-à-d. une
direction, notée r .
3.2.2.2 Calcul des termes indépendants de Hc+ et Hc Les termes indépendants sont choisis pour
que tous les points correspondant à des droites poignardantes soient situés à l’intérieur du polytope.
Ce sera le cas si les deux conditions suivantes sont réunies :
– tous les points Si0j , correspondant aux droites poignardantes extrêmes, sont à l’intérieur du po-
lytope.
– un éventuel extremum local de la quadrique est également situé à l’intérieur du polytope.
Soit di j la projection orthogonale de Si0j sur la direction r , calculée à l’aide d’un produit scalaire
classique dans R6 : di j =< s0
i j ; r >. Les deux conditions seront vérifiées si l’on prend comme termes
+
indépendants pour les plans Hc et Hc les valeurs minimum et maximum de tous les di j (condition
1), et si l’on seuille ces valeurs à zéro pour tenir compte de la courbure de la quadrique de Plücker
(condition 2).
13 Par souci d’efficacité lors de ces comparaisons, les descriptions combinatoires sont triées par ordre croissant.
3 Algorithmes basés sur le 1-squelette des polytopes dans l’espace de Plücker 77
L’algorithme de création nécessite de parcourir une et une seule fois chaque droite poignardante
extrême. Etant donné qu’il existe nm droites poignardantes extrêmes, si m et n sont le nombre de
sommets de chacun des deux polygones initiaux, la complexité de l’algorithme de création est donc
O(mn) [118].
78 chapitre 4. Requête exacte d’occultation entre deux polygones
F IG . 4.8: Pi représente un ensemble de droites au travers d’une ouverture laiss ée par les écrans. La droite m
est une <droite représentative> de Pi .
Pour chaque polytope Pi , nous extrayons une de ces droites, appelée droite représentative et
notée m, et nous calculons son intersection avec les écrans. Si m ne rencontre aucun écran, S et R
sont mutuellement visibles et la requête s’arrête. Dans le cas contraire, l’écran suivant Oi , qui doit
être soustrait de P , est sélectionné parmi les polygones traversés par m. Lorsque Oi a été choisi, son
polytope Oi , ne sera pas soustrait de tous les polytopes du complexe comme cela était réalisé dans les
travaux précédents [120], mais Oi est uniquement soustrait du polytope Pi . Etant donné que l’écran
a été choisi en calculant l’intersection de la droite représentative m avec la géométrie de la scène,
cette procédure nous garantit que Oi contient au moins le point M de Pi , et que l’intersection entre
Pi et Oi n’est jamais vide (cf. figure 4.9). De plus, chacune des opérations de soustraction modifie
l’intersection du polytope Pi et de la quadrique de Plücker, et toutes les découpes qui n’auraient enlevé
aucune des droites poignardantes sont éliminées. Par rapport à la méthode présentée récemment par
Mora et al. [113], l’avantage de ce procédé de sélection des écrans est que toutes les opérations de
découpe sont éliminées, avant même d’avoir dû être effectuées.
4 Requête simple et efficace d’occultation entre deux polygones 79
F IG . 4.9: (a) Même si les hyperplans de Oi possèdent une intersection avec P i , ces deux opérations de découpe
sont inutiles puisque O i \ P est vide. (b) Grâce à notre stratégie d’échantillonnage par ligne repr ésentative,Oi \
P n’est jamais vide, et l’intersection contient au moins M .
La droite représentative m du polytope Pi est calculée dans l’espace de Plücker, dans lequel les
polytopes sont des ensembles convexes plutôt que dans l’espace primal R3 dans lequel chaque poly-
tope représente un ensemble de droites moins facile à manier 14 . Dans l’espace dual, le point M doit
respecter les contraintes suivantes :
– être situé à l’intérieur de Pi : toutes les combinaisons linéaires de ses sommets fournissent un
point valide.
– appartenir à la quadrique de Plücker.
Pour trouver M , nous calculons deux combinaisons linéaires de sommets, situées de part et
d’autre de la quadrique de Plücker, et qui définissent ensemble un segment de droite ; l’intersection de
ce segment de droite avec la quadrique de Plücker est le point M . S’il n’est pas possible de trouver
un point de chaque côté de la quadrique, une droite poignardante extrême est choisie comme droite
représentative 15 .
Lorsque la droite représentative m d’un polytope traverse plusieurs écrans, il est nécessaire de
sélectionner lequel sera retenu parmi les écrans traversés. Nous utilisons une stratégie de comptage de
rayons, similaire à celle utilisée par Nirenstein et al. [120] dans le cas d’un échantillonnage aléatoire :
chacun des écrans maintient un compteur qui représente le nombre de droites représentatives qui le
traversent ; l’écran choisi est celui qui est traversé par le plus de droites représentatives. Pour un po-
lytope Pi donné, seul un sous-ensemble de droites représentatives est pris en compte : celles dont le
point dual est situé à l’intérieur de Pi . Evidemment, chaque fois qu’un polytope est éliminé, sa droite
représentative est également supprimée du système de comptage. Il est possible de réduire le nombre
d’intersections à effectuer en <recyclant> les droites représentatives : chaque découpe crée deux sous-
polytopes, et la ligne m peut être réutilisée de nouveau comme droite représentative pour l’un d’entre
eux (c-à-d pour celui qui est situé du même côté de l’hyperplan de découpe que M ).
F IG . 4.10: (a) L’arête appartient à la silhouette ponctuelle vue depuis le point P puisque les projections des
normales n1 et n2 sur le vecteur OV OP ne sont pas de même signe (V1 et V2 sont identiques et égaux au point
V sur le dessin). (b) L’arête appartient à la silhouette étendue par rapport à R et à S. (c) L’arête sera une arête
interne (et ce, quelle que soit la position de S), car il est impossible de trouver un point P R 2 R tel que l’arête
appartienne à la silhouette ponctuelle vue depuis PR .
Nous définissons la silhouette étendue d’un écran par rapport à deux polygones S et R comme
étant l’ensemble des arêtes faisant partie de la silhouette ponctuelle simultanément pour un point du
polygone S et pour un point du polygone R (cf. Figure 4.10(b)). Une arête qui n’appartient pas à la
silhouette étendue est appelée arête interne (cf. Figure 4.10(c)). De manière formelle, une arête e fait
partie de la silhouette étendue par rapport aux polygones S et R si et seulement s’il existe un point
Pr 2 R et un point Ps 2 S tel que [137] :
8
>
>
< < (OV1 OPr ); n1 > 0
< (OV2 OPr ); n2 > 0
>
>
: < (OV1 OPs); n1 > 0 (4.2)
< (OV2 OPs); n2 > 0
Dans le cas d’écrans composés de maillages polygonaux, seules les arêtes appartenant à la sil-
houette étendue des objets peuvent créer des événements de visibilité (c-à-d peuvent séparer l’espace
de Plücker entre un ensemble de droites bloquées et un ensemble de droites libres). Les autres arêtes
(c-à-d les arêtes internes) sont inutiles pour la détermination de la visibilité (cf. Figure4.11).
(a) (b)
F IG . 4.11: (a) La région en grisé représente l’ensemble des rayons bloqu és par les écrans. Les arêtes b et e
sont des arêtes internes, alors que les arêtes a, c et d font partie de la silhouette étendue. (b) Seules les arêtes
de la silhouette étendues doivent être utilisées pour obtenir l’ensemble des rayons bloqu és.
4 Requête simple et efficace d’occultation entre deux polygones 81
Plutôt que de découper le complexe de polytopes avec toutes les arêtes de tous les écrans, il est pos-
sible d’éviter de nombreuses découpes inutiles en vérifiant que les arêtes de découpe font bien partie de
la silhouette étendue. Une idée similaire a été utilisée très récemment pour le calcul d’ombres douces
avec un algorithme de lancer de rayons : la silhouette étendue des objets y est exploitée pour accélérer
le calcul de la quantité de lumière reçue par une primitive éclairée par une lampe étendue [97].
Soit e l’arête d’un écran, qui connecte les deux polygones P1 et P2 . Les plans contenant P1 et P2
définissent une région en forme de double coin, qui délimite les régions W1 et W2 (cf. Figure 4.12).
Les arêtes qui appartiennent à la silhouette étendue possèdent un double coin qui a une intersection
avec les deux polygones S et R. Nous en déduisons la condition pour qu’une arête appartienne à la
silhouette étendue (cf. Figure 4.13 pour différents exemples illustratifs) :
<e fait partie de la silhouette étendue si et seulement si S a au moins un point dans W1 (respectivement
dans W2 ) et si R a au moins un point dans W2 (respectivement dans W1 ).>
(a) (b)
F IG . 4.12: L’arête e relie les polygones P1 et P2 . Les plans contenant P1 et P2 définissent une région en double
coin. (a) Vue 3D. (b) Vue 2D, projet ée perpendiculairement à l’arête e.
F IG . 4.13: Quelques exemples illustrant la condition d’appartenance à la silhouette. Les arêtes a et b appar-
tiennent à la silhouette étendue, contrairement aux ar êtes c et d.
(a) (b)
F IG . 4.14: Utilisation d’un maillage polygonal comme écran pour une requête d’occultation (S et R ne sont
pas représentés, mais ils sont situés de part et d’autre de chacun des lapins). (a) Approche classique : les
polygones sont traités individuellement, et toutes les arêtes sont utilisées. (b) Agrégation basée sur la silhouette
étendue : les polygones sont regroup és en <patches>, et seules les arêtes appartenant à la silhouette étendue
sont utilisées.
4.3 Algorithme pour une requête d’occultation analytique entre deux polygones
Notre algorithme utilise les nouvelles techniques décrites précédemment, et peut être résumé par
le pseudo-code suivant :
1: Procédure areVisible(S, R)
2: Construction du polytope initial P , pour S et R
3: retourne recursiveSplit(P )
4: Procédure recursiveSplit (P )
5: m = ligne représentative de P
6: X = ensemble des <patches> traversés par m
7: si X = vide alors
8: retourne Visible //terminaison précoce
9: Sélectionne un <patch> Fi de X
10: Recherche une arête e valide de Fi
11: si e 6= vide alors
12: fP ,P + g = Découpe (P , He )
13: si (recursiveSplit(P ) = Visible alors
14: retourne Visible
15: si (recursiveSplit(P + ) = Visible alors
16: retourne Visible
17: retourne Occulté
4 Requête simple et efficace d’occultation entre deux polygones 83
Le complexe C n’est pas représenté de manière explicite, mais implicitement par des appels suc-
cessifs à la procédure récursive recursiveSplit(P ). Pour chaque polytope, une droite représentative m
est extraite et son intersection avec la géométrie de la scène est calculée pour sélectionner Fi (lignes 6
et 7). Comme cela a été décrit dans la section 4.1, m passe au travers d’une ouverture laissée par les
écrans déjà traités. Si m ne rencontre pas d’écran, les deux polygones sont mutuellement visibles et
la requête s’arrête de manière précoce (ligne 9). Dans le cas contraire, le <patch> Fi est choisi parmi
l’ensemble de <patches> poignardés par m (ligne 10). Ses arêtes frontières sont inspectées jusqu’à ce
qu’une arête e vérifiant la condition de découpe suivante soit découverte (ligne 11) :
8
< He , l’hyperplan dual de e, n’est pas une facette de P .
: e appartient à la silhouette étendue (cf. section 4.2).
e divise l’ensemble des droites à l’intérieur du polytope P .
Ce dernier test n’est pas trivial ; nous l’évaluons de manière conservative, en testant si l’arête e
possède une intersection avec l’enveloppe convexe de S et de R.
Pour vérifier si He est une facette de P , un drapeau est associé à chaque arête de la scène : les drapeaux
sont mis à jour au fil de appels récursifs, pour indiquer les arêtes qui ont déjà été utilisées comme hy-
perplan de découpe pour obtenir le polytope P .
Si aucune arête vérifiant les trois conditions n’est trouvée, le polytope P représente un ensemble de
droites complètement bloquées par le <patch> Fi (on dira que le polytope est bloqué) : la procédure
récursive s’arrête, et le polytope est éliminé du complexe. Dans le cas contraire, le polytope est
découpé en deux polytopes, P et P + (ligne 13) et la procédure est appliquée de manière récursive
aux deux polytopes (lignes 14-17). La procédure récursive s’arrête lorsque tous les polytopes ont été
bloqués : S et R sont mutuellement occultés (ligne 18).
En termes de couches d’occultation 17 [91], les algorithmes précédents de calcul exact de visibi-
lité depuis une région étaient uniquement capables de fusionner l’occultation à partir de la seconde
couche masquée ; pour ce faire, les boı̂tes englobantes des objets qui ont été déterminés comme étant
masqués depuis S sont utilisées ensuite comme écrans virtuels pour le reste du calcul [120]. Notre
méthode d’agrégation d’écrans permet en plus de combiner l’occultation de la première couche visible
d’écrans : cette propriété est primordiale pour pouvoir utiliser la méthode lorsque la scène contient
des objets complexes.
Les chances pour que le résultat soit atteint sans exécuter la totalité de la procédure récursive
(ce que nous appelons terminaison précoce de l’algorithme) sont également augmentées de manière
considérable dans le cas de la visibilité mutuelle, étant donné qu’une ligne représentative m est testée
pour chaque ouverture. L’algorithme converge effectivement vers les ouvertures et s’arrête. De plus,
17 Les couches d’occultation sont les <Occlusion layers> en anglais.
84 chapitre 4. Requête exacte d’occultation entre deux polygones
la complexité de la méthode n’est plus fonction du nombre d’écrans polygonaux entre les polygones
S et R, mais est fonction de la complexité de la silhouette étendue, qui est généralement beaucoup
plus simple18 . Finalement, la combinaison de l’utilisation des silhouettes et de la stratégie des droites
représentatives permet une détection très efficace des ouvertures, car les droites sont guidées vers le
bord des objets.
4.5.1 Dans R2
Dans le plan, les écrans Oi et les polygones S et R sont réduits à des segments de droite. L’espace
dual utilisé est l’espace de Plücker 2D (cf. rappel page 28). L’algorithme commence par créer un
polytope P représentant l’ensemble des droites poignardant S et R. Pour obtenir P , les quatre points
de l’espace primal Pi sont convertis en quatre droites HPi dans l’espace dual (cf. Figure 4.15). Chacune
de ces droites délimite un demi-espace. Le polytope P est le polygone convexe, intersection des demi-
espaces positifs délimités par ces quatre droites. On constate sur la Figure que les sommets Sij du
polytope P correspondent dans l’espace primal R2 aux droites poignardantes extrêmes si j des deux
segments S et R. En effet, en 2D les droites poignardantes extrêmes sont les droites bi-tangentes [54].
F IG . 4.15: (a) Deux segments S et R dans R 2 . (b) Le polytope P dans l’espace dual de Pl ücker 2D, représentant
l’ensemble des droites poignardant ces deux segments (apr ès projection).
poignardant S et R et qui ne sont pas bloquées par l’écran sont représentées par un complexe de 2
polytopes. Les sommets Sij de ces polytopes correspondent de nouveau aux points duals des droites
poignardantes extrêmes si j de la scène.
(a) Espace primal R2 (b) Espace dual des droites (après projection)
Nous avons représenté dans la Figure 4.18 les polytopes obtenus pour différentes positions d’un
écran, ainsi que les polytopes obtenus lorsque l’on soustrayait plusieurs écrans successivement. Dans
l’espace primal, les zones d’ombre générées par les écrans sont représentées en gris foncé et les zones
de pénombre en gris clair. On constate dans la dernière configuration le point fort de la méthode : elle
permet de tenir compte de l’effet cumulé de plusieurs écrans (processus de <fusion des écrans>, cf.
page 47).
4.5.2 Dans R3
Comme dans R2 , l’algorithme commence par créer le polytope P dans l’espace dual de Plücker,
P représentant l’ensemble des droites poignardant simultanément les polygones S et R. Comme nous
l’avons vu page 54, le polytope P est obtenu en utilisant l’équation (2.11) du chapitre 3 pour trans-
former les droites supports des arêtes des polygones S et R en hyperplans dans l’espace de Plücker.
L’ensemble des droites poignardantes est représenté par la portion de la quadrique de Plücker qui est
délimitée par le polyèdre. En particulier, le point dual B de la droite poignardante b est situé sur la
quadrique de Plücker, et situé à l’intérieur du polyèdre (cf. Figure4.17).
F IG . 4.17: Correspondance entre l’espace primal 3D et l’espace dual de Pl ücker (il s’agit d’une évocation
de la réalité, car l’espace de Pl ücker est en réalité P5o ). Les arêtes des polygones S et R sont transform ées en
hyperplans dans l’espace dual de Pl ücker. Les hyperplans délimitent le polyèdre courbe Q sur la quadrique de
Plücker.
86 chapitre 4. Requête exacte d’occultation entre deux polygones
(a) Espace primal R2 (b) Espace dual des droites (après projection)
F IG . 4.18: Différentes configurations d’ écrans en 2D, avec le résultat de la soustraction des droites bloqu ées
par ces écrans dans l’espace dual. Les sommets des polytopes de l’espace dual correspondent aux droites
poignardantes extrêmes dans l’espace primal. On constate sur la derni ère Figure que l’algorithme réalise
effectivement la fusion des pénombres.
Nous notons Q la portion de quadrique délimitée par le polytope P . Il s’agit également d’un
<polytope> convexe, mais qui est courbe, puisqu’il appartient à la surface de la quadrique. Ce <po-
lytope> Q est donc le sous-ensemble de droites réelles du polytope P . La Figure 4.17 donne une
représentation schématique de Q , comme étant la portion de la quadrique délimitée par l’ensemble
d’hyperplans duaux des arêtes de S et de R. En pratique, nous ne manipulons jamais explicitement
le polyèdre courbe Q , mais nous travaillons plutôt avec le polyèdre P et calculons, si nécessaire,
l’intersection de ses arêtes avec la quadrique de Plücker.
4 Requête simple et efficace d’occultation entre deux polygones 87
Une fois le polytope P calculé, l’algorithme est semblable à celui présenté dans R2 et consiste à
découper le polytope P par les hyperplans Hi . Ces hyperplans sont les hyperplans duaux des droites
supports des arêtes ei des différents écrans. On élimine ensuite du complexe C obtenu les polyèdres
représentant les ensembles de droites bloquées. Le résultat est un ensemble de n polytopes convexes,
formant un complexe C fP0 ; ::; Pn g. Comme ci-dessus, l’intersection de chacun des polytopes Pi avec
la quadrique de Plücker est le polytope courbe Qi .
F IG . 4.19: Soit Ci un ensemble de points pris le long d’une des courbes d élimitant le <polytope> courbe Q
(qui est lui-même la trace sur la quadrique de Pl ücker du polytope P ).
Soit Ci un ensemble de points échantillonnés le long d’une des courbes délimitant un polytope
Qi (cf. Figure 4.19). Dans l’espace primal, ces points correspondent aux droites ci , qui décrivent une
surface réglée du second degré, qui n’est autre qu’une surface critique (cf. Figure 4.20). En effet,
chacun des points Ci appartient à une arête courbe de Q , ce qui signifie qu’il appartient à une 2-face
du polytope P . Il est donc situé à l’intersection de 3 hyperplans. Dans l’espace primal, cela signifie
que la droite est tangente à 3 arêtes de polygones de la scène. De même, les sommets Si du polytope
Q appartiennent à une 1-face du polytope P (c-à-d une arête). Ils sont donc situés à l’intersection de
4 hyperplans, ce qui signifie qu’ils sont tangents à quatre arêtes de polygones dans l’espace primal.
Les points Si sont donc les points duaux des droites poignardantes extrêmes si de la scène [153].
Ces polytopes Qi sont donc en quelque sorte les analogues dans R3 des polygones dans l’espace dual
présentés au paragraphe précédent.
F IG . 4.20: Relation entre un polytope P i et la visibilité analytique : l’intersection des 2-faces du polytope et de
la quadrique de Pl ücker décrivent des courbes, qui délimitent le polytope Q i . Chaque point Ci appartenant à
cette courbe correspond dans l’espace primal à une droite ci , appartenant à une surface critique.
Notons pour conclure que chaque polytope Pi représente une classe isotopique de droites [118] :
toutes les droites réelles représentées dans Pi (c-à-d toutes les droites de Qi ) franchissent les droites
supports des arêtes des polygones de la scène de manière identique. En d’autres termes, il est toujours
88 chapitre 4. Requête exacte d’occultation entre deux polygones
possible de déplacer une droite a 2 Qi en une droite b 2 Qi de manière continue, de telle manière que
la droite a ne croise jamais la droite support d’une des arêtes de la scène.
5 Résultats
Nous avons implémenté les différents algorithmes décrits et les avons regroupés dans la librai-
rie <Visilib>. Dans la section 5.1, nous évaluons les performances de la requête de visibilité dans
différentes scènes. Nous étudions ensuite dans la section5.2 les mécanismes de sélection des écrans et
de détection des ouvertures au moyen d’une scène synthétique. Toutes les évaluations ont été réalisées
à l’aide d’un ordinateur portable de type Pentium 4 (1.9Ghz) comportant 1.28 Gb de mémoire centrale.
5.1.2 Statistiques
L’application la plus directe d’une requête de visibilité entre deux polygones est le calcul du PVS
d’une scène. Cependant, ce calcul demande des algorithmes de plus haut niveau pour organiser les
requêtes en exploitant la cohérence spatiale et éliminer les requêtes redondantes [96, 120]. Plutôt que
d’avoir recours à un algorithme de ce type, dont les performances sont fortement dépendantes du type
de scène, nous avons préféré évaluer les performances de la requête d’occultation au moyen d’une
procédure de test statistique. Cette procédure est la suivante. Pour chacune des scènes de test, des
cellules cubiques de taille identique ont été placées le long d’un chemin traversant la scène. Ensuite,
100 000 paires de boı̂tes englobantes furent sélectionnées, la première correspondant à l’une des cel-
lules et la seconde entourant un objet de la scène. La visibilité mutuelle de chaque paire de boı̂tes
fut ensuite déterminée à l’aide de requêtes d’occultation. Pour ce faire, chacune des deux boı̂tes fut
d’abord remplacée par un polygone représentant une approximation conservative de la boı̂te ; ce po-
lygone représente l’union de toutes les vues de la boı̂te depuis l’ensemble des points de l’autre boı̂te.
Une requête de visibilité fut ensuite appliquée entre les deux approximations, pour déterminer si elles
étaient masquées. Dans ce cas, cela signifie que les boı̂tes étaient également masquées, et le calcul
peut s’arrêter. Dans le cas contraire, la visibilité mutuelle des 36 paires de faces de ces deux boı̂tes
fut testée, et les boı̂tes ne furent déclarées masquées que si toutes les combinaisons de faces étaient
mutuellement masquées. Pour un traitement efficace, les scènes ont été stockées dans un <octree>, et
un algorithme de <shaft culling> a été utilisé pour limiter les tests d’intersection avec les objets situés
à l’intérieur de l’enveloppe convexe des deux boı̂tes englobantes [77]. Les résultats sont résumés dans
la Table 4.1.
TAB . 4.1: Pour chacune des scènes, 100 000 requ êtes aléatoires entre boı̂tes ont été réalisées. Pour chaque
mesure, nous donnons les valeurs minimum/moyenne/maximum que nous avons observ ées. La première colonne
donne le pourcentage de requ êtes visibles et le temps global passé pour les effectuer (entre parenthèses). Les
3 colonnes suivantes donnent respectivement le nombre de d écoupes, de droites représentatives, et d’écrans
effectifs utilisés pour chaque requête. La colonne <Ex. Sil.> donne le temps pass é pour extraire les silhouettes
étendues. Finalement, le temps total n écessaire pour réaliser une requête entre deux polygones est donn é dans
la colonne <Temps>.
90 chapitre 4. Requête exacte d’occultation entre deux polygones
(a) (b)
(c) (d)
F IG . 4.21: (a) Vienne (26k tri.). (b) Niveau 12 (115k tri.). (c) Niveau 1 (188k tri.). (d) Bonga (4.6Mo tri.).
5.1.3 Discussion
Etant donné le procédé de terminaison précoce, les distributions des requêtes de visibilité entre
polygones mutuellement visibles et mutuellement occultés sont sensiblement différentes, c’est pour-
quoi nous les avons présentées séparément.
Chaque requête commence par la création du polytope initial P . Lorsque S et R sont deux quadri-
latères, la méthode d’énumération de sommets [66] utilisée précédemment dans la littérature [120]
nécessiterait 8 10 3 sec., ce temps incluant le calcul du graphe d’incidence complet de P . Il s’agit
donc d’un sérieux goulet d’étranglement 21 . Dans la même situation, la méthode directe de construc-
tion que nous utilisons nécessite 24:5 10 6 sec, et est donc environ 300 fois plus rapide que la
méthode par énumération de sommets.
Pour améliorer les performances de notre algorithme, nous devons en identifier les goulets d’étrang-
lements. Dans ce but, nous avons mesuré le temps moyen passé dans chacune des parties de l’algo-
rithme. Les résultats sont présentés dans la Figure 4.22(a), en fonction du nombre d’écrans effective-
ment soustraits durant une requête, appelé le nombre d’écrans effectifs [120].
Comme on pouvait s’y attendre, les opérations les plus coûteuses sont les opérations de <CSG>
dans l’espace de Plücker et les intersections des droites représentatives avec la géométrie. Cette
21 La situation est même pire dans le cas de l’algorithme de Bittner [20], puisque l’algorithme de création du polytope
n’est pas utilisé une seule fois par requête, mais bien une fois pour chaque écran soustrait.
5 Résultats 91
1
0.2 10
Total
0.18
Extraction des silhouettes
«CSG» dans l’espace de Plücker
0.16
Intersection des droites rep. 0
10
0.14 Construction du polytope initial
Temps (sec)
Temps (sec)
0.12
−1
0.1 10
0.08
0.06
−2
10
0.04 Algorithme «classique»
Requête optimisée (Sans aggrégation)
0.02 Requête optimisée (Avec aggrégation)
−3
0 10
0 50 100 150 200 0 50 100 150 200
Nombre d’écrans effectifs Nombre d’écrans effectifs
(a) (b)
F IG . 4.22: Scène du <Niveau 12> (a) Agr égation des écrans basée sur la silhouette étendue : temps pour les
différentes étapes de l’algorithme en fonction du nombre d’ écrans effectifs. (b) Comparaison de l’algorithme
avec différentes méthodes de calcul exact.
dernière est considérablement plus coûteuse qu’un simple lancer de rayons, car les tests d’intersec-
tion ne peuvent pas être arrêtés après le premier objet touché. Avec une moyenne de 4000 droites
représentatives traitées par seconde, notre implémentation est beaucoup plus lente que les standards
actuels en lancer de rayons [159], et pourrait certainement être améliorée. Une autre possibilité se-
rait d’arrêter les tests d’intersection lorsqu’un nombre donné d’écrans a été rencontré. Notons que
le nombre de droites représentatives a déjà été réduit en les <recyclant> entre les polytopes générés
durant les découpes (cf. section 4.1).
Dans la majorité des cas, le temps nécessaire pour extraire les silhouettes est négligeable. En
fonction du type de scène, le temps moyen consacré à cette extraction varie entre 1 et 36 ms par
requête. Ce temps est très inférieur en comparaison à celui qui aurait été nécessaire pour effectuer
toutes les opérations de découpe. Notons cependant que dans certaines configurations difficiles, le
temps nécessaire pour extraire les silhouettes peut devenir moins négligeable (atteignant dans le pire
des cas 95% du temps de calcul total de la requête). Un algorithme de cache, similaire à celui utilisé
par Aila et al. [2] pourrait être utilisé pour limiter le coût des extractions de silhouettes (nous n’avons
pas implémenté cette optimisation).
complexe sont découpés par toutes les arêtes de son polytope dual (notre requête évitant ces découpes
inutiles).
Le temps nécessaire pour réaliser une requête en fonction du nombre d’écrans effectifs est donné à
la Figure 4.22(b), (pour la scène du <Niveau 12>). La courbe <classique> est la première courbe de la
Figure. Pour des requêtes suffisamment complexes, les résultats obtenus avec l’algorithme classique
sont compatibles avec ceux présentés dans [120]. Cependant, notre implémentation modifiée est plus
rapide pour les requêtes simples, car elle bénéficie de l’accélération de l’algorithme de création du po-
lytope initial. Pour l’ensemble des courbes de la Figure4.22(b), des modèles paramétriques, résultant
d’une approximation par la méthode des moindres carrés, fournissent une évaluation de la complexité
de l’algorithme. Nous avons mesuré une complexité de O(n1 84 ) pour l’algorithme classique, n étant
:
La seconde courbe correspond à l’algorithme présenté à la section 4.3 utilisé sans le processus
d’agrégation des écrans, toutes les arêtes étant utilisées comme hyperplans de découpe. En comparai-
son à l’algorithme classique, les écrans ne sont utilisés que localement, et les découpes inutiles sont
éliminées avant d’avoir été effectuées. Pour 100 écrans effectifs, le nouvel algorithme est environ 5
fois plus rapide.
La dernière courbe correspond à notre algorithme complet, utilisé avec le procédé d’agrégation
des écrans. La plupart des découpes correspondant aux arêtes internes sont éliminées, et on observe
une accélération presque constante par rapport à la courbe précédente, de l’ordre de 6.
Pour 100 écrans effectifs, l’accélération entre l’algorithme classique et la requête complète, utilisant le
procédé d’agrégation des écrans, est donc de l’ordre de 30. La complexité de la courbe avec agrégation
est de O(n1 44 ).
:
F IG . 4.23: Expérience des écrans aléatoires : des triangles équilatéraux de position et de taille al éatoires
sont insérés de manière itérative entre les deux polygones S et R. La droite en pointill é représente une droite
représentative ne rencontrant aucun écran.
5 Résultats 93
Après l’ajout de chaque écran, nous évaluons la visibilité mutuelle de S et de R, à l’aide d’une
requête de visibilité. Etant donné que les écrans ne font pas partie de maillages (c-à-d que chaque
écran est un triangle isolé), il n’est pas possible d’utiliser le processus d’agrégation d’écrans basé sur
la silhouette étendue, qui est donc désactivé. Nous avons reproduit cette expérience 1000 fois, et les
résultats sont présentés dans la Figure 4.24(a).
5
60 10
3
40 10
Nombre moyen
2
30 10
1
20 10
10 Droites représentatives 0
10
Ecrans effectifs
Opérations de découpe
−1
0 10
0 100 200 300 400 500 600 700 800 0 50 100 150 200 250 300 350
Nombre d’écrans Nombre d’écrans
(a) (b)
F IG . 4.24: Expérience des triangles aléatoires. (a) Les nombres de droites représentatives, de découpes et
d’écrans effectifs pour l’expérience des triangles aléatoires. (b) Le nombre moyen p de rayons al éatoires
nécessaires pour découvrir une ouverture, en fonction du nombre d’ écrans présents entre S et R dans
l’expérience des écrans aléatoires.
Comme on peut le constater, les courbes sont clairement décomposées en deux phases : une
phase <visible> et une phase <occultée>. Pendant la phase <visible>, les courbes augmentent avec
le nombre d’écrans. Les deux polygones S et R deviennent de moins en moins visibles, et la ter-
minaison précoce est retardée au fur et à mesure du rétrécissement des ouvertures. Les courbes at-
teignent un maximum quand les deux polygones deviennent mutuellement masqués, avec 310 écrans
en moyenne, suite à quoi elles passent dans la phase <occultée>. Dès ce moment, l’ajout de nouveaux
triangles donne plus de choix pour la sélection des écrans, et les courbes commencent à descendre.
Cela montre que le coût de la requête n’est pas proportionnel au nombre d’écrans présents entre S
et R. Dès que les polygones sont occultés, l’ajout d’écrans a même un effet positif sur le temps de
calcul22 .
En cas de visibilité mutuelle, la terminaison précoce des requêtes était obtenue dans les travaux
précédents en testant s’il existait un rayon libre parmi un ensemble de rayons choisis de manière
aléatoire entre S et R [120]. Lorsqu’aucun des rayons choisis de manière aléatoire ne traversait une
ouverture, tous les écrans devaient être soustraits avant de pouvoir établir la visibilité mutuelle. Les
requêtes <visibles> étaient donc potentiellement plus coûteuses que les requêtes <masquées>, puisque
ces dernières ne nécessitaient que la soustraction du sous-ensemble d’écrans nécessaires pour prouver
l’occultation. Soit p le nombre moyen de rayons aléatoires nécessaires pour découvrir une ouverture.
22 Sauf pour les tests d’intersection entre les droites représentatives et la géométrie qui sont de plus en plus coûteuses.
94 chapitre 4. Requête exacte d’occultation entre deux polygones
La Figure 4.24(b) donne p en fonction du nombre d’écrans présents entre S et R23 . Ce nombre devient
très grand (de l’ordre de 104 ) dès que la taille des ouvertures décroı̂t. Au contraire, notre procédé de
détection des ouvertures guidé par la visibilité détermine la visibilité mutuelle avec un nombre borné
de droites représentatives, de l’ordre de 15. En utilisant notre algorithme, le besoin de soustraire tous
les écrans présents entre les deux polygones est totalement éliminé.
6 Conclusion et perspectives
Dans ce chapitre, nous avons présenté, implémenté et validé un nouvel algorithme permettant
d’effectuer de manière analytique une requête d’occultation entre deux polygones.
Dans les méthodes précédentes, les opérations de découpe étaient réalisées à l’aide du graphe
d’incidence complet des polytopes, ce qui revenait à construire un sous-ensemble localisé du com-
plexe de visibilité [55]. Notre approche utilise uniquement le 1-squelette des polytopes, et est, de ce
fait, proche de la construction d’un sous-ensemble du squelette de visibilité [56]. D’un point de vue
conceptuel, notre approche est donc similaire à l’introduction du squelette de visibilité pour les calculs
globaux d’illumination, à la place du complexe de visibilité. Cette comparaison n’est pas entièrement
correcte, car le 1-squelette des polytopes contient une information différente du squelette de visibilité.
Ce dernier encode les surfaces critiques (c-à-d les surfaces délimitant les discontinuités de visibilité)
et les droites poignardantes extrêmes, alors que le 1-squelette n’encode explicitement que les droites
poignardantes extrêmes (cf. Figure 4.25). Cependant, ces dernières sont toujours groupées en poly-
topes, qui correspondent aux cellules de dimension supérieure du complexe de visibilité : ce dernier
peut donc toujours être reconstruit à partir du 1-squelette.
F IG . 4.25: Comparaison entre le squelette de visibilité et le 1-squelette d’un polytope (sch éma de principe)
(a) Squelette de visibilité : les nœuds du graphe sont les droites poignardantes extr êmes si , les arcs sont les
surfaces critiques Ci . (b) 1-squelette : les nœuds contiennent les sommets Vi du polytope, les arcs contiennent
ses arêtes E [Vi ; V j ]. Les intersections de certaines arêtes avec la quadrique de Pl ücker sont les points Si , qui
correspondent dans l’espace primal aux droites poignardantes extr êmes si (les surfaces critiques ne sont donc
pas représentées explicitement).
Le premier bénéfice de l’algorithme que nous avons proposé est de réduire la complexité moyenne
des requêtes, en choisissant les écrans localement pour chacun des polytopes : les découpes inutiles
23 Chaque point de cette courbe a été déterminé en lançant un nombre important de rayons de manière aléatoire, et en
sont éliminées. De plus, les chances de terminaison précoce sont augmentées dans le cas de la visibi-
lité mutuelle, puisque des rayons sont lancés dans chaque ouverture laissée par les écrans déjà traités.
Notre algorithme de lancer de rayons est relativement lent en comparaison des standards actuels et
constitue un goulet d’étranglement dans les scènes complexes. Il serait donc possible de l’optimiser
pour améliorer le temps de calcul des requêtes d’occultation.
Lorsque notre algorithme est utilisé avec le procédé d’agrégation des écrans, son temps d’exécution
devient sensible à la complexité de la silhouette étendue des écrans, plutôt qu’à la complexité de
leur maillage complet. Les désavantages de ce procédé d’agrégation sont liés à l’extraction des sil-
houettes : les relations d’adjacence entre les triangles doivent être stockées pour chaque maillage, et
les silhouettes doivent être extraites pour chaque requête. Cependant, le temps nécessaire pour effec-
tuer cette tâche est faible en comparaison du temps qui aurait été nécessaire pour réaliser toutes les
opérations de découpe, et le coût mémoire nécessaire à leur stockage est réduit.
Dans l’implémentation que nous avons proposée, les silhouettes étendues sont extraites de manière
globale par rapport aux polygones S et R. Les silhouettes obtenues sont donc indépendantes du poly-
tope Pi que l’algorithme est en train de traiter. Pourtant, au fur et à mesure des soustractions de droites
bloquées, les polytopes représentent des ensembles de droites de plus en plus <fins> : il serait possible
d’en tirer parti, en extrayant les silhouettes de manière locale pour chaque polytope. Dans le même
ordre d’idée, il serait intéressant de développer un test exact pour déterminer si e divise effectivement
l’ensemble des droites à l’intérieur de chaque polytope Pi afin de remplacer le test conservatif basé
sur l’enveloppe convexe de S et R que nous utilisons et de diminuer le nombre de découpes inutiles.
Le problème de la sélection des écrans est NP-complet, car il se ramène au problème classique
de couverture d’ensemble (cf. ouvrage de Cormen et al. [41] page 997). Pour le résoudre, nous avons
développé une heuristique de sélection gloutonne, basée sur un décompte des droites représentatives
qui rencontrent chacun des écrans. Cette approche ne fournit pas toujours le meilleur ordonnancement
des écrans [120], en particulier lorsque les écrans sont composés de polygones de taille similaire, et
nous aimerions améliorer cette heuristique dans le futur.
Comme tous les algorithmes de géométrie algorithmique exécutés sur des unités de calcul en
virgules flottantes, notre implémentation souffre des problèmes d’imprécision numérique. Pour y
remédier, nous avons utilisé une représentation des nombres en double précision et avons utilisé le
procédé classique de comparaison des nombres à un <ε près>. Bien qu’elle fonctionne dans la grande
majorité des cas, cette stratégie est prise en défaut dans certaines configurations géométriques par-
ticulières. Une solution pourrait être d’effectuer les calculs à l’aide d’une librairie d’arithmétique
exacte [168] ou d’arithmétique à précision variable, lorsque la précision de l’implémentation en vir-
gule flottante standard est prise en défaut.
Finalement, il va sans dire que nous aimerions incorporer notre mécanisme de requête de visibi-
lité dans un algorithme complet de calcul de <PVS>, tel que celui présenté récemment par Samuli
Laine [96]. Une voie très prometteuse consisterait à combiner l’algorithme exact à un algorithme
conservatif, comme proposé récemment par Bittner et al. dans le cas 2D12 [19]. La majorité du <PVS>
serait alors calculée à l’aide de l’algorithme conservatif, beaucoup plus rapide que l’algorithme exact,
qui ne serait utilisé qu’en dernier recours pour résoudre les cas difficiles.
96 chapitre 4. Requête exacte d’occultation entre deux polygones
P r é c a l c u l d e v i s i b i l i t é d e p u i s l e s
chapitre 5
objets
Sommaire
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
1.1 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
1.2 Plan du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2 Etat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2.1 Visibilité encodée au niveau des objets . . . . . . . . . . . . . . . . . . . . 99
2.2 Ecrans virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3 Principe de la méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4 Mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.1 Représentation des volumes d’ombre . . . . . . . . . . . . . . . . . . . . 101
4.2 Choix des écrans virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.3 Calcul de visibilité en ligne . . . . . . . . . . . . . . . . . . . . . . . . . 105
5 Compression de l’information . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6 Résultats et discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.1 Description des scènes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.2 Evaluation de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.3 Comparaison avec des PVS . . . . . . . . . . . . . . . . . . . . . . . . . 113
7 Conclusion et travail futur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
7.1 Ecrans virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.2 Encodage hiérarchique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.3 Application au calcul de <PVS> . . . . . . . . . . . . . . . . . . . . . . . 119
1 Introduction
Comme nous l’avons vu dans le chapitre 3, le précalcul complet et exact de la visibilité en 3D est
hors de portée dans le domaine de l’<occlusion culling>, car un tel précalcul nécessite une algorith-
mique sophistiquée, qui est trop coûteuse pour espérer obtenir des accélérations du temps d’affichage.
En pratique, des solutions plus simples sont donc utilisées, telles que les méthodes de <PVS> ou de
graphes cellules-portails.
98 chapitre 5. Précalcul de visibilité depuis les objets
Les méthodes de PVS consistent à découper l’espace en régions, et à associer à chaque région la
liste des primitives visibles. Ces techniques sont attractives, car elles s’adaptent à tout type de scène
et ne nécessitent que très peu de puissance de calcul durant la phase d’exploration interactive. Ce-
pendant, elles introduisent différents facteurs de sur-conservativité, qui se traduisent par l’affichage
inutile d’objets masqués : la sur-conservativité due à la méthode d’une part, qui survient lorsque l’on
utilise une méthode conservative pour calculer la visibilité, et la sur-conservativité due à la partition
d’autre part, qui survient lorsque les cellules utilisées pour calculer le PVS ne sont pas placées conve-
nablement, la visibilité depuis un point étant assimilée à la visibilité depuis une région (cf. page 46).
Nous avons présenté dans le chapitre 4 une requête exacte de visibilité entre deux polygones,
qui peut être utilisée pour calculer de manière exacte le PVS d’une région, et élimine de la sorte
entièrement la sur-conservativité due à la méthode. Dans ce chapitre, nous allons étudier une méthode
permettant de réduire la sur-conservativité due à la partition. Cette dernière se marque surtout dans
les environnements peu occultés : les objets n’étant masqués que depuis des régions très réduites,
les cellules doivent être placées avec soin pour parvenir à capturer les occultations. Pour éliminer
entièrement ce facteur de sur-conservativité, il serait nécessaire de découper l’espace navigable en
cellules de visibilité constante [128] :
– les cellules sont délimitées par l’ensemble des surfaces critiques de la scène.
– l’ensemble des objets visibles depuis tous les points d’une cellule est identique, de sorte que
les apparitions et disparitions d’objets lors de la navigation interactive ne surviennent que si
l’utilisateur change de cellule.
Créer une telle partition est envisageable en 2D, car les analogues des surfaces de visibilité sont
des droites et les régions de visibilité constante sont des polygones dont il est possible de déterminer la
forme exacte. Malheureusement, cela semble difficile pour des scènes complexes tridimensionnelles
car les difficultés soulevées sont nombreuses. Pour commencer, les surfaces critiques qui délimitent
les régions de visibilité constante sont des quadriques réglées, et il en existe potentiellement beaucoup
(O(n3 )). Dès lors, créer une partition optimale consisterait à calculer les régions délimitées par ces
surfaces, ou en d’autres termes, à calculer un arrangement de surfaces du second ordre. Les surfaces
critiques <s’arrêtant> lorsqu’elles rencontrent un polygone opaque de la scène, ce calcul d’arrange-
ment devrait être réalisé en tenant compte des occultations. Toujours en raison des occultations, seul
un sous-ensemble de cet arrangement devrait être conservé, les cellules de l’arrangement dont les
frontières ne correspondraient pas à des événements de visibilité étant éliminées. Finalement, une
contrainte supplémentaire rendrait cet arrangement caduc : la localisation de la caméra au sein de la
partition serait très difficile à réaliser si l’on utilisait ce sous-ensemble de l’arrangement des surfaces
critiques de la scène. A cause de ces difficultés, aucune partition en cellules de visibilité constante n’a
jamais été calculée à notre connaissance. Des partitions approchées leur sont préférées en pratique (cf.
page 55), et ce sont ces dernières qui sont à l’origine de la sur-conservativité due à la partition.
Outre ce problème de conservativité, le modèle du PVS précalculé présente un autre inconvénient :
l’espace navigable, dans lequel l’utilisateur est susceptible de se déplacer, doit être pavé de cellules :
il faut donc qu’il soit de dimension finie ; de plus, il est nécessaire qu’il soit connu à l’avance. Un
problème de temps de calcul et de coût de stockage apparaı̂t, puisque le PVS de chacune des cellules
doit être déterminé et stocké même pour des cellules où l’utilisateur a très peu de chance de se rendre.
Dans ce chapitre, nous proposons une solution alternative au modèle du PVS pour stocker la
visibilité et accélérer l’affichage de scènes 3D. Nous abandonnons l’idée d’une partition de l’espace
navigable en cellules, et associons à chaque objet de la scène l’information nécessaire pour déterminer
s’il est occulté depuis n’importe quel point P de R3 . Le premier objectif est de déterminer si cette solu-
2 Etat de l’art 99
tion permet de réduire les inconvénients du PVS que nous venons de décrire. Le second est d’évaluer
son coût d’utilisation, pour vérifier qu’il permet effectivement d’accélérer l’affichage au cours d’un
scénario de navigation interactive.
Remarque : Ces travaux ont été réalisés en collaboration avec Xavier Décoret.
1.1 Contributions
Nous introduisons l’idée d’encoder l’information de visibilité au niveau des objets, pour remplacer
l’encodage classique de visibilité à l’aide de PVS stockés au niveau des cellules. Nous proposons
de représenter cette information à l’aide d’écrans virtuels originaux, appelés <capsules>, permettant
de traiter les scènes à faible complexité verticale. Nous montrons ensuite que ces écrans peuvent
être utilisés pour effectuer des requêtes de visibilité tout en exploitant la cohérence temporelle. Nous
donnons finalement un algorithme permettant de compresser l’information de visibilité stockée au
niveau des objets.
2 Etat de l’art
2.1 Visibilité encodée au niveau des objets
L’idée d’encoder une information de visibilité au niveau des objets a été exploitée par James
Stewart dans le cas de l’affichage de terrains, définis sous la forme de champs de hauteurs [147].
En chacun des quadrilatères définissant sa surface, une représentation de l’horizon, tel qu’il est vu
depuis le quadrilatère, est calculée et stockée. Cet horizon sert à déterminer les portions de terrain
occultées lors de l’affichage. La représentation décrite par l’auteur est hiérarchique : les horizons de
différents quadrilatères peuvent être combinés, pour générer un horizon valable pour l’ensemble des
quadrilatères. Dès lors, de larges portions de terrain masquées peuvent être détectées à l’aide d’un seul
test.
Dans le cadre de la compression de PVS, Zach et al. proposent de stocker la liste des cellules visibles
associées à chaque objet, à la place de stocker la liste des objets associés à chaque cellule [170]. Le but
recherché est d’obtenir de meilleurs taux de compression en exploitant la cohérence de l’information
de visibilité de manière plus efficace.
proches des <GOM> [86]. Pour rappel, les <GOM> sont des cubes, formés par 6 images disposées
autour de R ; chaque pixel (i; j) d’une image du <GOM> correspond à une <barrière virtuelle> po-
lygonale Bi j dans R3 . La couleur du pixel (i; j) indique la plus petite distance à laquelle la barrière
Bi j peut être placée, de telle sorte que le polygone Bi j soit invisible depuis n’importe quel point de
R. L’ensemble des barrières virtuelles ainsi positionnées peuvent être utilisées comme écrans virtuels,
à la place de la géométrie de la scène, pour déterminer les objets masqués depuis R. Un <GOM>
encode une approximation de l’ombre générée par la région R remplacée par une source lumineuse,
correspondant à l’ombre infinie générée par les barrières virtuelles.
3 Principe de la méthode
Soit une scène composée d’un ensemble d’objets, et soit Ui l’ombre que générerait l’un de ces ob-
jets Oi s’il était remplacé par une source lumineuse et s’il éclairait le reste de la scène1 . Au cours d’une
phase de précalcul, chaque objet Oi est considéré tour à tour et son ombre Ui est calculée et stockée.
Au cours de la phase de navigation interactive, chacun des objets Oi est <interrogé> avant d’être af-
fiché pour savoir s’il est visible : l’objet <répond> en testant si la caméra est située dans l’ombre Ui
qui lui est associée. Cette méthode peut être vue comme une application du principe de superposition,
utilisé en physique pour décomposer un phénomène complexe en plusieurs phénomènes plus simples.
Par exemple en électricité, il permet de calculer le courant et la tension dans un circuit électrique, en
considérant successivement chacune des sources et en désactivant les autres. On somme ensuite toutes
les composantes calculées (cf. Figure 5.1)2 . Un autre exemple est celui de la décomposition d’un si-
gnal périodique en une somme de signaux de différentes fréquences, à l’aide de séries de Fourier.
F IG . 5.1: Principe de superposition des sources en électricité. (a)(b)(c) Chaque source de courant ou de tension
est considérée successivement, alors que les autres sont désactivées, les sources de tension étant remplacées par
un court-circuit et les sources de courant par un circuit ouvert. (d) R ésultat complet, obtenu par superposition
des différentes solutions : I1 = I1a + I1b + I1c ; I2 = I2a + I2b + I2c ; I2 = I2a + I2b + I2c ; U = Ua + Ub + Uc .
Comme on le constate sur la Figure 5.2, la superposition de toutes les ombres Ui est équivalente
à une partition en cellules de visibilité constante. Cette décomposition du problème permet donc en
théorie d’éliminer entièrement la sur-conservativité due à la partition et d’obtenir un stockage de la
visibilité optimum, équivalent à la partition en cellules de visibilité constante, ce résultat étant obtenu
à l’aide du calcul -comparativement plus simple- de l’ombre générée par chacun des objets remplacé
par une source lumineuse.
Nous présentons dans la section suivante une mise en œuvre pratique de ce principe.
1 Nous ne faisons pas de distinction entre l’ombre générée par un seul objet, et l’ombre créée par la fusion des pénombres
de plusieurs objets.
2 Ce principe de superposition n’est valide que si le circuit électrique est composé d’éléments linéaires.
4 Mise en œuvre 101
(e)
F IG . 5.2: Principe de superposition. (a)(b)(c)(d) Ombre U i générée par chacun des objets O i remplacé par
une source lumineuse. (e) La superposition des solutions est équivalente à une partition en cellules de visibilit é
constante.
4 Mise en œuvre
4.1 Représentation des volumes d’ombre
Lors de la présentation générale de la méthode, nous avons implicitement fait la supposition que
les volumes d’ombre Ui étaient encodés de manière exacte. C’est en effet à cette seule condition que la
sur-conservativité est entièrement éliminée, et que le stockage est équivalent à la partition en cellules
de visibilité constante. Mais en pratique, un encodage exact semble difficile à obtenir. D’une part car
les volumes d’ombre Ui ne sont pas simples à représenter :
– ils sont délimités par les surfaces critiques (c-à-d des morceaux de quadriques réglées qui s’in-
terpénètrent)
– ils sont non-connexes et non-convexes dans la majorité des cas
– il faut tenir compte de la fusion des pénombres pour les obtenir
D’autre part, car la structure de données choisie pour représenter les ombres doit permettre d’effectuer
les requêtes de visibilité de manière très efficace. En effet, l’objectif de notre travail est d’accélérer
la navigation interactive, et il est donc nécessaire que l’élimination des objets masqués puissent être
effectuée de manière plus rapide que leur affichage. Il serait par exemple possible d’envisager d’en-
coder les ombres de manière exacte à l’aide d’une technique semblable à celle proposée par Jiřı́ Bitt-
ner [20] : les volumes d’ombre seraient alors représentés sous forme d’arbres <BSP> dans l’espace
dual de Plücker. Cette approche nécessiterait d’encoder une information de profondeur additionnelle,
car cette dernière ne peut être représentée dans l’espace de Plücker [20] 3 . Mais cette approche ne
résiste pas à l’analyse :
3 Jiřı́ Bittner contourne cette difficulté en traitant les primitives géométriques de la scène par ordre de profondeur crois-
sant, et en construisant de manière incrémentale un volume d’ombre qui n’est valable que pour les primitives géométriques
situées derrière le dernier écran rencontré.
102 chapitre 5. Précalcul de visibilité depuis les objets
– elle nécessiterait des besoins en mémoire importants [20], ce qui réduirait l’intérêt de la méthode
par rapport à un PVS
– étant donné sa complexité, elle ne permettrait pas d’effectuer les requêtes de visibilité de
manière suffisamment efficace pour accélérer la navigation interactive.
Pour répondre à l’ensemble des contraintes exposées ci-dessus, nous avons préféré encoder les ombres
de manière approchée, et avons choisi de les représenter directement dans l’espace euclidien R3 , sous
la forme d’écrans virtuels [94]. Les ombres sont encodées de manière prudente, c’est-à-dire qu’elles
peuvent éventuellement être sous-estimées mais ne seront jamais surestimées. Nous acceptons donc
l’affichage éventuel d’objets masqués, qui se traduira par un facteur de sur-conservativité.
Les secteurs pourraient être obtenus en quantifiant les angles d’Euler, mais cette approche aug-
menterait la densité de secteurs au niveau des pôles, au détriment des secteurs proches de l’équateur.
4 Les barrières sont encodées dans des images formant un cube aligné par rapport aux axes de la scène, et les barrières
sont donc elles aussi parallèles aux axes.
4 Mise en œuvre 103
Pour obtenir une subdivision de secteurs uniforme, nous avons choisi de subdiviser un octaèdre5 de
manière régulière : chaque face de l’octaèdre est subdivisée de manière récursive en quatre triangles
équilatéraux, jusqu’à ce qu’un niveau de subdivision donné soit atteint. Cet encodage radial capture
une large part de l’ombre Ui , mais il ne permet pas de représenter certaines régions importantes,
car il ne capture que les ombres radialement infinies depuis le centre de l’objet (cf. Figure5.4 (a)).
Mais dans de nombreuses scènes, la visibilité est fortement anisotrope : en raison de la pesanteur, les
hadow
True S
hadow
True S
ding
co
capsule en
ing adow
red sh Captured shadow
od Captu
c
radial en
object
object
(a) (b)
F IG . 5.4: (a) Un exemple d’ombre infinie qui ne peut pas être capturée radialement depuis le centre de l’ob-
jet. (b) L’encodage à l’aide d’une capsule capture plus de l’ombre pr ésente dans la direction verticale que
l’encodage radial.
scènes s’étendent principalement dans le plan horizontal, et leur complexité verticale est réduite 1[ 02].
L’ombre Ui générée par un objet occupe effectivement dans ce cas de larges angles solides dans le
plan horizontal, mais ce n’est pas le cas dans le plan vertical. Nous avons observé ce comportement
dans l’ensemble de nos scènes de test, c’est pourquoi nous avons développé un nouveau système
d’écrans virtuels, appelés capsules, pour tenter de mieux approcher les ombres. Une capsule est un
cylindre vertical fermé par deux demi-hémisphères, le cylindre contenant entièrement l’objet. L’es-
pace situé au-dessus et en dessous du cylindre est divisé en secteurs en subdivisant les hémisphères
comme précédemment. Les secteurs correspondant à la partie cylindrique sont obtenus en quanti-
fiant un système de coordonnées cylindriques : le secteur si est défini par z 2 [zi ; zi+1 ]; θ 2 [θi ; θi+1 ]
(cf. Figure 5.5). La Figure 5.4 montre pourquoi une capsule permet d’approcher l’ombre exacte avec
moins de perte que l’encodage radial. Cette idée de découpler les directions horizontales et verti-
cales a d’ailleurs été récemment exploitée par Leyvand et al. pour calculer la visibilité depuis une
région [102].
Bou
r nda
cto ry c
Se ap
zi+1
θ i+1
zi θi
Tout comme nous approchions la subdivision radiale en subdivisant un octaèdre, nous définissons
les secteurs des capsules en subdivisant de manière récursive un polyèdre. Le cylindre de la cap-
5 L’octaèdre est le solide platonicien formé par huit triangles équilatéraux égaux.
104 chapitre 5. Précalcul de visibilité depuis les objets
sule est approché par la subdivision régulière des faces rectangulaires d’une boı̂te verticale à section
carrée. Les hémisphères au-dessus et en dessous du cylindre sont obtenus par la subdivision régulière
des faces d’une pyramide à base carrée. La Figure 5.6(a) montre le polyèdre initial comportant 12
faces : 4 triangles pour l’hémisphère supérieur, 4 triangles pour l’hémisphère inférieur et 4 rectangles
pour le cylindre. Les faces triangulaires et rectangulaires sont découpées en 4 faces égales, en ajou-
tant de nouveaux sommets à la surface de la capsule. La Figure 5.6(b) montre un exemple de ces
subdivisions. Notons que les résolutions des hémisphères et du cylindre sont indépendantes et qu’il
n’existe pas nécessairement de continuité à leur frontière (cf. par exemple le bas de la capsule dans la
Figure 5.6(b)).
F IG . 5.6: La subdivision récursive de la capsule en secteurs : à partir du polyèdre initial à 12 faces, nous
subdivisons récursivement les faces triangulaires (respectivement rectangulaires) en 4 triangles (respectivement
rectangles). Des sommets sont ajoutés au mileu des côtés et placés à la surface de la capsule.
Nous représentons l’historique des subdivisions récursives à l’aide d’arbres quaternaires, représen-
tant la subdivision de chacun des secteurs en quatre sous-secteurs. La capsule complète contient 12
arbres quaternaires, chacun d’entre eux décrivant la subdivision d’une des faces du polyèdre initial.
F IG . 5.7: R j (d ) est la partie semi-infinie du secteur s j . La distance frontière d j associée au secteur s j est telle
que R j (d j ) est entièrement masquée depuis tout point de O i .
4.2.1.1 Requête de visibilité q(S; R) Lors de la réalisation des travaux présentés dans ce chapitre,
nous n’avions pas encore développé la requête de visibilité présentée dans le chapitre4, qui permet
de déterminer de manière exacte si deux polygones S et R sont mutuellement visibles. Puisqu’aucune
implémentation de requête de visibilité n’était disponible, nous avons utilisé à défaut une technique
beaucoup plus simple à mettre en œuvre, basée sur un échantillonnage aléatoire et semblable aux
techniques de visibilité agressives utilisant la méthode de l’<item buffer> [162] (cf. page 53).
Cet algorithme est le suivant. Nous choisissons de manière aléatoire un ensemble de points d’échan-
tillonnage sur la surface de l’objet Oi . En chacun de ces points, nous plaçons une caméra et dessinons
6 images de la scène, disposées en cube afin de couvrir l’ensemble des directions. Pour chaque sec-
teur si , nous construisons N polyèdres, représentant les volumes Ri (d j ) pour j 2 1::N. Nous comptons
ensuite le nombre de pixels de chacun de ces polyèdres visible dans les images de la scène. Nous
choisissons comme distance frontière di la distance du polyèdre Ri (di ) masqué le plus proche. Une
procédure dichotomique est utilisée, afin de tester la visibilité de log2 (N ) polyèdres uniquement.
E est situé (dans la partie cylindrique ou dans l’un des deux hémisphères) comme montré à la Fi-
gure 5.8(a). Les signes des composantes horizontales CEx et CEy permettent ensuite de déterminer
le quadrant horizontal contenant E. L’arbre quaternaire qu’il faut parcourir pour trouver le secteur
<feuille> contenant E est donc connu ; dans l’exemple décrit dans la Figure 5.8(b), il s’agit de l’arbre
correspondant au secteur S3 .
y
S1 S2
C
C S11
E S112
S1121
E
S4 S3
x
S12
(a) (b) (c)
F IG . 5.8: Procédure de localisation de la cam éra. (a) Test de CEz pour savoir si E est situé dans un des secteurs
du cylindre ou dans un des secteurs des h émisphères. (b) Calcul du quadrant initial dans lequel se situe E à
l’aide de CEx et CEy . (c) Descente récursive de secteur en secteurs enfants, jusqu’au secteur feuille.
Chacun des secteurs correspondant à un nœud de l’arbre quaternaire contient les équations des
plans qui le subdivisent en sous-secteurs. Les produits scalaires entre les normales de ces plans et le
vecteur CE indiquent dans quel sous-secteur E est situé : cette recherche est répétée de secteur en
sous-secteurs, jusqu’à ce qu’un secteur feuille sf soit atteint (cf. Figure 5.8(c)). La comparaison de la
distance frontière d f avec la norme jjCE jj indique si le point est situé devant ou derrière la barrière
B f , et permet de savoir si l’objet est visible ou non depuis le point E.
5 Compression de l’information
Le schéma de subdivision hiérarchique que nous utilisons pour représenter les écrans virtuels per-
met de compresser l’information de visibilité, en fusionnant les secteurs qui portent une information
redondante. Pour un objet donné, si tous les sous-secteurs issus de la subdivision d’un secteur si ont
une même distance frontière, cela signifie que la subdivision de ce secteur n’était pas nécessaire.
Nous utilisons les arbres quaternaires pour réaliser cette compression. Une fois que l’ensemble des
distances de tous les secteurs ont été calculées, nous élaguons de manière itérative les arbres qua-
ternaires représentant les secteurs, en partant des secteurs <feuilles>. Lorsque les quatre secteurs
<feuilles> issus d’un même parent possèdent une distance frontière d identique, ils sont éliminés, et
leur parent commun devient lui-même un secteur <feuille>, dont la barrière est placée à la distance d.
Le processus est répété jusqu’à ce qu’aucune simplification ne puisse avoir lieu. Ce processus permet
d’obtenir une compression sans perte de l’information de visibilité. Mais il est également possible de
compresser davantage, en utilisant une compression avec perte . Si les enfants ont des profondeurs
di similaires, nous les élaguons et assignons à leur parent une distance frontière égale à maxi=1 4 di .
:::
Le prix à payer est la perte de certaines zones d’ombre, comme montré à la Figure5.9. Pour choisir
les nœuds à supprimer, nous trions l’ensemble des fusions possibles, en fonction du volume qui serait
perdu, et fusionnons en premier lieu celle qui conduit à la perte minimum. Le processus est répété
jusqu’à ce qu’une perte totale maximum soit atteinte (approche orientée qualité) ou jusqu’à ce que la
taille en mémoire désirée soit atteinte (approche orientée budget).
Bo
un
Mer
dary
Compression
ged Bpundary
A
Bound
ary
B
Lost shadow
Remarque : Ces compressions (avec et sans perte) ont été implémentées avec une petite variation.
Plutôt que de commencer par subdiviser la capsule de manière uniforme, nous utilisons une heuris-
tique simple pour détecter les secteurs qu’il n’est pas nécessaire de subdiviser. Cette heurisitique est
la suivante. Soit Ri (dN ) la région correspondant à la partie d’un secteur si située derrière la barrière
Bi , lorsque cette barrière est placée à la distance dN la plus éloignée. Si Ri (dN ) est entièrement vi-
sible depuis un des points de l’objet, cela signifie qu’il n’est pas nécessaire de subdiviser le secteur
si , car aucun de ses sous-secteurs ne pourra avoir une barrière située à distance finie. Dans notre
implémentation basée sur un échantillonnage et la technique de l’<item buffer>, le test permettant de
savoir si la région est entièrement visible est facile à réaliser, puisqu’il suffit de compter le nombre
de pixels de la région Ri (dN ) qui sont visibles depuis chaque point d’échantillonnage, et de ne pas
subdiviser le secteur si ce nombre est nul.
108 chapitre 5. Précalcul de visibilité depuis les objets
6 Résultats et discussion
Nous avons implémenté les algorithmes décrits dans les sections précédentes, et les avons testés
sur différentes scènes décrites dans la section 6.1. Les évaluations ont été réalisées à l’aide d’un
ordinateur portable de type Pentium 4 (1.9Ghz) comportant 1.28 Gb de mémoire centrale et une carte
graphique de type <GeForce4 Go>.
Radial Capsule
Scène # Tri. # Objets Taille (Mo) Secteurs/objet Taille(Mo) Secteurs/objet
(a) Niveau 1 188k 2160 13.1Mo 3.6k 18.5Mo 5.1k
(b) Niveau 12 115k 1177 3.8Mo 2k 5.1Mo 2.7k
(c) Maison 47k 690 3.2Mo 3k 3.7Mo 3.4k
(d) Niveau 6 281k 2185 5.8Mo 1.7k 11.0Mo 3.2k
TAB . 5.1: Description des scènes de tests et caractéristiques de l’encodage des ombres.
de chacun des objets à l’aide d’un encodage radial, puis à l’aide d’un encodage par capsules. Dans
les deux cas, nous subdivisons le polyèdre initial jusqu’à un niveau de récursivité 5. Avec l’encodage
radial, il existe 1024 8 = 8192 secteurs au maximum par objet, et 1024 12 = 12288 secteurs avec
l’encodage par capsules. Dans les deux cas, nous avons appliqué l’algorithme de compression sans
perte, pour éliminer les secteurs redondants. Nous avons essayé d’utiliser des polyèdres plus subdi-
visés, mais la compression sans perte les ramenait au niveau 5, et nous avons donc conclu que ce
6 Elle n’est cependant pas assimilable à une scène 2D 12 , car sa géométrie est effectivement 3D.
6 Résultats et discussion 109
niveau de subdivision était suffisant. En ce qui concerne la profondeur, nous avons encodé les dis-
tances frontières à l’aide de 7 bits, autrement dit 128 distances frontières possibles par secteur. Les
caractéristiques des différentes scènes et des différents encodages sont données dans la Table5.1. On
constate que le nombre moyen de secteurs par objet est élevé, ce qui indique qu’il est nécessaire d’uti-
liser une subdivision fine pour approcher la visibilité dans ces scènes, comportant peu d’occultations.
Pour chaque point de vue Ei le long des chemins, et pour chaque méthode d’affichage m, nous
avons mesuré le temps tm (Ei ) de génération d’une image, le nombre vm (Ei ) d’objets déclarés visibles
par la méthode m et le nombre hm (Ei ) d’objets déclarés masqués. Etant donné que les chemins ont
été choisis sans tenir compte de la visibilité, les valeurs tm (Ei ), vm (Ei ) et hm (Ei ) varient beaucoup
en fonction de Ei . Dès lors, les distributions statistiques de ces valeurs ne permettent pas d’extraire
des mesures représentatives. C’est pourquoi nous avons effectué des mesures globales d’efficacité,
mesurées pour le parcours complet du chemin. La sur-conservativité Sm de la méthode m est définie
par :
∑ vm (Ei ) ∑i vExact (Ei )
Sm = i (5.1)
∑i vExact (Ei )
Le facteur d’accélération Am de la méthode m est quant à lui défini par :
∑i tFull (Ei )
Am = (5.2)
∑i tm (Ei )
Les définitions des mesures effectuées sont résumées dans la Table5.3.
Les résultats obtenus pour chacune des scènes sont résumés dans la Table 5.4. SFull représente
la sur-conservativité lorsqu’aucune technique de visibilité n’est utilisée. En comparaison, on constate
110 chapitre 5. Précalcul de visibilité depuis les objets
Mesures effectuées
Ei Point de vue le long d’un chemin
vm (Ei ) Nombre d’objets visibles depuis Ei avec la méthode m
hm (Ei ) Nombre d’objets masqués depuis Ei avec la méthode m
tm (Ei ) Temps de génération d’une image depuis Ei avec la méthode m
Sm Sur-conservativité de la méthode m pour un chemin complet
Am Facteur d’accélération de la méthode m pour un chemin complet
que l’encodage de visibilité au niveau des objets permet de réduire la sur-conservativité d’un ordre
de grandeur (colonne SR pour l’encodage radial et SC pour l’encodage par capsules). L’encodage de
visibilité au niveau des objets est donc efficace du point de vue de l’élimination des objets masqués. A
l’exception de la scène (a) (le <Niveau 1>), nous constatons aussi que l’encodage à l’aide de capsules
permet de détecter plus d’occultations que l’encodage radial : cela se marque particulièrement dans
la scène (b) (le <Niveau 12>), qui est un bon exemple de scène à faible complexité verticale. Mal-
heureusement, comme on peut le voir dans les colonnes <Facteur d’accélération>, les accélérations
obtenues en utilisant l’encodage des ombres par objet sont très faibles. On constate même un allonge-
ment du temps de génération des images pour la scène (d) (le <Niveau 6>), dans le cas du stockage
par capsules, qui se traduit par un facteur d’accélération de 0:9. Bien que l’utilisation de la cohérence
temporelle permette d’améliorer l’ensemble des résultats d’une dizaine de pour-cent ((colonne ARCh
pour l’encodage radial et ACCh pour l’encodage par capsules), les facteurs d’accélération restent in-
suffisants.
Le facteur d’accélération obtenu est négligeable par rapport à celui que l’on pouvait espérer en dimi-
nuant la sur-conservativité de manière aussi importante. Nous allons donc étudier dans le paragraphe
suivant les causes de ces résultats mitigés.
TAB . 5.4: Visibilité encodée par objet. Mesures de la sur-conservativité et du facteur d’accélération.
requête de visibilité et ta le temps moyen nécessaire pour afficher un objet à l’aide du matériel gra-
phique. Cette condition s’exprime par :
ou encore :
NMasque > NVisible
tr
(5.4)
(ta tr )
Pour obtenir une accélération, la première condition à respecter est que tr < ta . En d’autres termes,
il est inutile d’appliquer des requêtes de visibilité aux objets avant de les afficher si leur temps d’affi-
chage est inférieur au temps de requête. La seconde condition à remplir concerne le nombre d’objets
masqués, qui doit être suffisamment important pour amortir le coût des requêtes. Lorsque la cohérence
temporelle est utilisée, seule une fraction α des requêtes est effectuée : le temps moyen des requêtes
est donc diminué d’autant, et la condition de gain est relâchée :
αtr
NMasque > NVisible (5.5)
(ta αtr )
Lorsque cette condition est vérifiée, le facteur d’accélération théorique AT h que l’on devrait observer
est égal à :
(NVisible + NMasque ) ta
NVisible (ta + αtr ) + NMasque αtr
AT h = (5.6)
Nous allons comparer les facteurs d’accélération mesurés le long des différents chemins avec les
valeurs calculées par l’équation 5.6. Pour ce faire, nous allons commencer par estimer ses différents
paramètres.
6.2.1.2 Mesure de tr Le coût d’une requête de visibilité dépend du nombre de secteurs utilisés
pour encoder l’ombre, c’est-à-dire de la profondeur de l’arbre utilisé pour les encoder de manière
hiérarchique (cf. paragraphe 4.2). Nous supposons dans cette analyse que le coût d’une requête de
visibilité est constant pour tous les objets d’une scène, autrement dit que tous les objets possèdent une
ombre stockée à l’aide d’un nombre de secteurs identiques. Pour mesurer tr , nous avons mesuré le
temps nécessaire pour effectuer l’ensemble des requêtes de visibilité le long des différents chemins,
et nous avons divisé ce temps par l’ensemble des requêtes de visibilité effectuées. Le temps rt est de
l’ordre de 9 10 6 seconde, soit 110k requêtes par seconde.
Lorsqu’un observateur est statique, aucun objet ne doit être interrogé puisque le résultat des
requêtes précédentes reste valable : la cohérence temporelle est alors de 100%, correspondant à un pa-
ramètre α nul. Ce paramètre augmente ensuite avec la vitesse, étant donné que la cohérence temporelle
devient de plus en plus réduite. On constate que le paramètre α augmente rapidement ; cette augmen-
tation est liée directement à la subdivision importante des secteurs : chacun d’entre eux représente un
112 chapitre 5. Précalcul de visibilité depuis les objets
volume de l’espace très réduit, et la caméra change rapidement de secteur lors de ces déplacements.
Nous avons indiqué dans la Table 5.6 la valeur du paramètre α lorsque l’on parcourt les différents
chemins dans chaque scène à leur vitesse d’enregistrement.
6.2.1.4 Mesure de ta Nous supposons en première approximation que le temps nécessaire pour af-
ficher un objet par le système graphique est identique pour tous les objets d’une scène. Pour l’évaluer,
nous avons mesuré le temps nécessaire pour afficher l’ensemble des objets le long du chemin, et
l’avons divisé par le nombre total d’objets affichés. Le temps d’affichage ta ainsi obtenu est de l’ordre
de 20 10 6 seconde.
6.2.1.5 Comparaison entre les AT h et ACCh La Table 5.6 présente le facteur d’accélération théori-
que AT h , calculé à l’aide de l’équation (5.6), et le facteur d’accélération ACCh mesuré en pratique avec
un encodage de la visibilité par capsules et cohérence temporelle.
Mesure Prédiction
Scène tr α ta ta (NCCh ) ACCh AT h (err:) ACor (err:)
(10 6 sec.) (10 6 sec.) (10 6 sec.) (calculée par (5.6)) (calculée par (5.7))
a 9.1 0.78 19.9 45.7 1.2 1.7 (39.7%) 1.1 (8.6%)
b 8.4 0.78 25.9 117.5 1.3 2.9 (112.9%) 1.4 (6.6%)
c 8.9 0.72 25.6 82.9 1.4 2.5 (79.4%) 1.4 (2.5%)
d 8.9 0.68 15.6 42.9 1.0 1.6 (54.3%) 0.96 (7.3%)
TAB . 5.6: Comparaison du facteur d’acc élération mesuré avec celui calculé par (5.6) et (5.7).
Comme on peut le constater, il existe un écart important entre les valeurs théorique et observée
(l’erreur relative entre ces deux valeurs est indiquée entre parenthèses). Nous avons identifié les causes
de cet écart : il provient du comportement fortement non linéaire du système d’affichage graphique.
Contrairement à nos suppositions initiales, le temps d’affichage ta d’un objet n’est pas constant, et
dépend fortement du nombre d’objets affichés pour générer l’image (cf. annexe page 119). Nous
avons modifié l’équation 5.6 afin de tenir compte de cette non linéarité, et utilisons deux temps d’af-
fichage distincts : ta (NFull ) représente le temps moyen d’affichage lorsque l’ensemble de la scène est
affiché (en utilisant la méthode Full)7 , et ta (NCCh ) le temps moyen d’affichage lorsque seuls les objets
déclarés visibles par l’encodage par capsules sont affichés. Nous obtenons le facteur d’accélération
corrigé :
(NVisible + NMasque ) ta (NFull )
NVisible (ta (NCCh ) + αtr ) + NMasque αtr
ACor = (5.7)
Les résultats obtenus à l’aide de cette formule sont donnés dans la colonne ACor : on constate qu’ils
correspondent mieux au gain mesuré en pratique ACCh (l’erreur relative entre la valeur théorique et la
valeur mesurée est indiquée entre parenthèses). Nous attribuons l’erreur subsistante aux fluctuations
de la valeur ta qui existent en pratique. Nous considérons donc que l’équation (5.7) reflète le compor-
tement de l’algorithme, et nous allons l’exploiter dans le paragraphe suivant pour augmenter le facteur
d’accélération.
7 Le temps ta (NFull ) correspond donc au temps ta utilisé ci-dessus.
6 Résultats et discussion 113
Mesure Prédiction
Scène tr α ta (NFull ) ta (NCCh ) ACCh ACor ( Er:)
(10 6 sec.) (10 6 sec.) (10 6 sec.)
a 9.1 0.78 86.2 118.4 2.4 2.4 (2.0%)
b 8.4 0.78 96.5 174.1 3.8 4.1 (6.3%)
c 8.9 0.72 68.6 118.5 2.8 2.9 (2.8%)
d 8.9 0.68 130.4 188.1 2.7 2.5 (5.1%)
TAB . 5.7: Comparaison du facteur d’acc élération mesuré avec celui calculé par (5.6) et (5.7) lorsque les
primitives de la scène sont subdivisées.
Nous présentons d’abord une comparaison qualitative de la sur-conservativité obtenue pour les quatre
PVS et l’encodage par capsules avec cohérence temporelle, puis une comparaison de leur efficacité.
Nous terminons cette comparaison par l’étude du coût mémoire qu’elles impliquent.
Sur-conservativité Accélération
Scène SPV S1 SPV S2 SPV S4 SPV S8 APV S1 APV S2 APVS4 APV S8
a 17.7 30.3 54.6 86.5 2.1 2.0 1.8 1.6
b 27.0 86.9 236.6 704.0 1.8 1.6 1.4 1.1
c 24.6 62.5 201.6 370.8 1.7 1.7 1.3 1.2
d 28.2 55.7 119.2 289.5 2.0 1.9 1.7 1.4
TAB . 5.8: Sur-conservativité et facteur d’accélération obtenus à l’aide de PVS de diff érentes résolution.
(a)
(b)
F IG . 5.10: Les ensembles visibles et potentiellement visibles (avec PVS et encodage par capsules) le long de
chemins enregistrés dans le <Niveau 1> (a) et dans le <Niveau 12> (b). L’axe x indique la position le long du
chemin et l’axe y indique le nombre d’objets dans les diff érents ensembles.
d’élimination des objets masqués, puisqu’il est nécessaire d’utiliser des <PVS> composés de très pe-
tites cellules pour obtenir une efficacité similaire.
116 chapitre 5. Précalcul de visibilité depuis les objets
Du point de vue du temps de génération d’une image, les <PVS> sont beaucoup plus efficaces
que l’encodage par capsules. Cette conclusion est logique au vu de la discussion présentée au pa-
ragraphe 6.2.1. En effet, dans le cas de l’utilisation de PVS, une requête de visibilité consiste simple-
ment à tester une variable booléenne, le coût tr est négligeable. Si ta (NPV S ) est le temps d’affichage
moyen d’un objet lorsque la méthode de PVS est utilisée, l’équation 5.7 se simplifie et l’accélération
théorique obtenue avec une méthode basée sur les PVS est égale à :
250
CHR
PVS 1 ( 74 x 74 x 5 m)
PVS 2 ( 105 x 105 x 5 m)
PVS 3 ( 148 x 148 x 5 m)
PVS 4 ( 210 x 210 x 5 m)
200 PVS 5 ( 297 x 297 x 5 m)
PVS 6 ( 297 x 297 x 10 m)
Over−conservativity (%)
150
100
50
0
0 5 10 15 20 25 30 35 40 45 50
Memory cost (Mb)
(a) (b)
F IG . 5.11: Sur-conservativité vs. coût mémoire : comparaison de l’encodage par capsules et des PVS par
cellule. (a) comparaison th éorique (b) comparaison pour la sc ène du <Niveau 1>.
Le coût mémoire des capsules est égal au nombre d’objets, multiplié par la taille mémoire des cap-
sules. Pour un nombre fixé d’objets, nous pouvons changer ce coût en appliquant une compression aux
capsules (cf. section 5) : la sur-conservativité restera constante. Nous pouvons augmenter la compres-
sion en autorisant une perte, c’est-à-dire une augmentation de la sur-conservativité. La courbe obtenue
est indiquée en pointillé dans la Figure 5.11. Notons que la sur-conservativité ne peut pas descendre
en dessous d’une certaine valeur Smin , même en utilisant une capsule très subdivisée. Cette valeur est
liée à la taille des objets, qui restreint les ombres que l’encodage par capsules est capable de capturer.
7 Conclusion et travail futur 117
Notons cependant que Smin peut être réduite en subdivisant chaque objet en sous-parties. La courbe
obtenue est indépendante de la taille de l’espace navigable. Mais il en est tout autrement lorsque l’on
utilise un <PVS>. Dans ce cas, il est nécessaire de diminuer la taille des cellules pour diminuer la
sur-conservativité. Le coût mémoire étant directement lié au nombre de cellules, un faible coût im-
plique un petit nombre de cellules (c-à-d des cellules larges) et par conséquent une sur-conservativité
élevée. Réciproquement, un coût mémoire élevé permet d’utiliser un nombre élevé de cellules (c-à-d
des petites cellules) et une sur-conservativité qui tend vers zéro. Dès lors, pour un coût mémoire fixé,
l’augmentation de l’espace navigable ne peut être obtenue qu’en augmentant la taille des cellules,
et donc en augmentant également la sur-conservativité. Nous avons représenté dans la Figure5.11
différentes courbes, chacune représentant un PVS de coût mémoire identique, mais pour des espaces
navigables de différentes tailles. La Figure 5.11(b) montre les mesures obtenues en pratique dans la
scène du <Niveau 1>. Les courbes obtenues correspondent aux prévisions théoriques. Pour un espace
navigable donné, l’intersection entre la courbe de l’encodage par capsules et la courbe correspondant
aux PVS indique la limite à partir de laquelle il est avantageux d’utiliser un encodage par capsules à la
place d’un PVS, du point de vue de l’espace mémoire 10 . Nous avons finalement comparé le nombre
de cellules qui seraient nécessaires si l’on voulait couvrir l’entièreté de l’espace navigable avec des
cellules, avec le nombre de secteurs utilisé pour encoder l’ensemble des ombres. Cette comparaison
montre que le nombre de secteurs est du même ordre de grandeur que le nombre de cellules du PV S1
pour les scènes (a) et (d), qui possèdent de larges espaces navigables. Il est cependant beaucoup plus
important que le nombre de cellules pour les autres scènes, dont l’espace navigable est réduit. Cette
table permet d’évaluer le coût mémoire des différents types de représentations. L’encodage par écrans
virtuels nécessite un seul bit par secteur 11 . Au contraire, les <PVS> doivent stocker la liste des objets
visibles en chacune des cellules : pour un nombre de secteurs identique au nombre de cellules, le coût
mémoire des <PVS> sera donc beaucoup plus élevé.
En conclusion, l’encodage de l’ombre des objets est avantageux par rapport à un encodage par
PVS du point de vue de l’occupation mémoire lorsque la taille de l’espace navigable augmente,
car le nombre de cellules deviendrait alors prohibitif pour permettre d’offrir une sur-conservativité
équivalente.
subdivision hiérarchique des secteurs, le nombre de bits par secteur est en réalité un petit peu plus élevé.
118 chapitre 5. Précalcul de visibilité depuis les objets
sible depuis tout point de l’espace. Cette méthode élimine le problème du placement des cellules, qui
se pose lorsque l’on encode la visibilité à l’aide de la technique des <PVS>. La taille de l’espace
navigable n’est plus critique, et cette technique offre la possibilité de réaliser l’élimination des objets
masqués même si l’espace navigable n’est pas connu à priori. En utilisant cette méthode, il est donc
possible de naviguer dans l’entièreté de l’espace 3D, et même d’observer la scène depuis l’extérieur.
Il serait impossible d’obtenir ce type de navigation avec des <PVS>, puisque l’espace navigable est
illimité. Nous avons montré que l’information de visibilité associée à un objet pouvait être représentée
à l’aide d’écrans virtuels. En utilisant ce formalisme, n’importe quel type d’écrans virtuels proposé
dans la littérature peut être utilisé : la seule condition est que la localisation de la caméra puisse être
effectuée de manière efficace.
Cependant, l’analyse des résultats montre que le stockage de la visibilité au niveau des objets ne per-
met pas toujours d’obtenir les gains escomptés. Nous avons mis en évidence deux causes principales
de l’obtention de ces résultats mitigés :
– le choix des écrans virtuels n’est pas optimal.
– l’encodage de l’information de visibilité au niveau des objets n’est pas suffisant, et il serait
nécessaire de la stocker de manière hiérarchique.
Ces deux points sont détaillés dans les sections suivantes, à la suite desquelles nous proposons
d’appliquer le principe de la détermination de la visibilité depuis les objets au calcul de <PVS>.
la vitesse des requêtes de visibilité (et en particulier les parcours d’arbre). Une implémentation optimisée de ce point de vue
permettrait sans doute d’augmenter sensiblement la vitesse des requêtes.
7 Conclusion et travail futur 119
adaptée à ces calculs d’intersection, nous n’avons pas pu évaluer les bénéfices d’une implémentation
hiérarchique. Cependant, Stewart a utilisé avec succès cette approche dans le cas spécifique de la
visualisation de terrain [147] : l’intersection des ombres est calculée en utilisant des lignes d’horizon
comme écrans virtuels, qui ont la propriété de se combiner facilement pour créer une représentation
hiérarchique. Malheureusement, cette approche est limitée aux champs de hauteurs, et un travail futur
très prometteur serait de l’étendre aux scènes 3D. Pour ce faire, il faudrait tenir compte de la contrainte
du calcul des intersections d’ombres dès l’élaboration des écrans virtuels, afin d’obtenir un encodage
permettant de calculer aisément l’ombre à associer aux nœuds intermédiaires de la hiérarchie. Dans
ce cas aussi les <Hoops> sont de bons candidats puisqu’il existe déjà un algorithme permettant de
combiner plusieurs d’entre eux [26].
Ce comportement non linéaire explique les faibles gains obtenus lorsque l’on utilise un algorithme
d’<occlusion culling> dans une scène de faible complexité, pour laquelle le système d’affichage n’est
120 chapitre 5. Précalcul de visibilité depuis les objets
−5
x 10
8
Ta (sec.)
4
1
0 200 400 600 800 1000
Nombre d’objets
pas <saturé> : ta diminue lorsque le nombre d’objets affichés augmente. Il est donc d’autant plus dif-
ficile d’obtenir un gain, puisque l’élimination d’objets masqués augmente le temps moyen d’affichage
par objet, ce qui peut paraı̂tre paradoxal. C’est également pour cette raison que nous avons dû utiliser
des formules corrigées pour estimer les accélérations obtenues.
7 Conclusion et travail futur 121
F IG . 5.13: Scènes de test. La colonne de gauche pr ésente une vue générale de la scène ; dans celle de droite,
chaque objet a été mis en évidence à l’aide d’une couleur particuli ère. Note : pour la scène (a), le deux images
ont été réalisées depuis des points de vue différents.
122 chapitre 5. Précalcul de visibilité depuis les objets
C r é a t i o n v o l u m i q u e d e g r a p h e s
chapitre 6
cellules-portails
Sommaire
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
1.1 Plan du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
1.2 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
2 Etat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
2.1 Génération de graphes cellules-portails . . . . . . . . . . . . . . . . . . . 125
2.2 <Watershed> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
2.3 Champ de distances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
3 Génération automatique de graphes cellules-portails . . . . . . . . . . . . . . . 127
3.1 Présentation de l’algorithme de <watershed> . . . . . . . . . . . . . . . . 127
3.2 Utilisation du <watershed> pour la génération de graphes cellules-portails . 128
4 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.1 Etape 1 : Calcul du champ de distances . . . . . . . . . . . . . . . . . . . 131
4.2 Etape 2 : Détection des portails . . . . . . . . . . . . . . . . . . . . . . . 131
4.3 Etape 3 : Création des portails . . . . . . . . . . . . . . . . . . . . . . . . 132
4.4 Etape 4 : Création des cellules . . . . . . . . . . . . . . . . . . . . . . . . 134
5 Implémentation hiérarchique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6 Sur-segmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
6.1 Elimination des détails . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
6.2 Voxelisation robuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
7 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
7.1 Etude qualitative des graphes générés . . . . . . . . . . . . . . . . . . . . 138
7.2 Statistiques concernant la génération des graphes . . . . . . . . . . . . . . 142
7.3 Utilisation du <CPG> pour l’<occlusion culling> . . . . . . . . . . . . . . 142
8 Conclusions et perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
1 Introduction
Les environnements architecturaux, très répandus dans les applications de réalité virtuelle, sont
intéressants du point de vue de l’<occlusion culling> car les occultations y sont nombreuses : à tout
124 chapitre 6. Création volumique de graphes cellules-portails
instant, seule une petite partie de la scène est visible. L’essentiel de la géométrie est masquée par les
murs, ce qui donne la possibilité d’utiliser des algorithmes adaptés, plus efficaces que les algorithmes
qui ne font aucune supposition sur le type de scène rencontré.
De ce fait, les graphes cellules-portails sont utilisés de manière presque universelle pour l’élimination
des objets masqués dans ce genre d’environnement. Pour rappel, un graphe cellules-portails (que nous
notons CPG) est un graphe qui encode les relations de visibilité au sein d’une scène 3D. Les nœuds du
graphe sont appelés les cellules, et correspondent typiquement aux pièces d’un bâtiment. Elles sont
connectées par les portails qui correspondent à ses ouvertures (c-à-d ses portes et ses fenêtres). La
visibilité est déterminée en considérant qu’une cellule ne peut voir les autres cellules qu’à travers une
séquence de portails (cf. état de l’art page 60).
Dans ce chapitre, nous étudions les méthodes de génération automatique de graphes cellules-
portails. La difficulté de ce type de techniques réside dans le fait qu’il est possible de décomposer
une scène en un nombre illimité de graphes CPG. En termes de performances d’affichage, un bon
graphe doit réaliser un compromis entre le nombre de portails et son coût d’utilisation : le nombre
de portails doit être minimisé pour réduire le temps de calcul consacré à l’élimination des objets
masqués, mais ces portails doivent être suffisamment nombreux et correctement placés pour dimi-
nuer la sur-conservativité. Un bon compromis est obtenu en utilisant une <décomposition classique>,
dans laquelle les cellules sont les pièces et les portails sont les ouvertures. Pour créer ce type de
décomposition, une possibilité très utilisée en pratique consiste à générer les graphes <CPG> à la
main, au moyen d’outils associés aux logiciels de modélisation. Mais les résultats ne sont pas toujours
satisfaisants, et cette manière de procéder limite l’utilisation des graphes CPG aux seuls spécialistes.
Au contraire, un algorithme de génération automatique permettrait à tout utilisateur de bénéficier de
graphes CPG pour accélérer l’affichage, mais offrirait aussi des gains de temps et d’argent importants
dans l’industrie du jeu vidéo en libérant les graphistes de cette tâche.
C’est pourquoi des approches de génération automatique ont été développées. Malheureusement,
les méthodes existantes sont limitées à des scènes très particulières (scènes architecturales pures,
scènes tubulaires, scènes de villes, etc.) et ces méthodes ne peuvent être utilisées lorsque le modèle
sort du cadre pour lequel elles ont été mises au point. A notre connaissance, aucune d’entre elles n’est
capable de traiter tous les types de modèles de manière unifiée.
Dans ce chapitre, nous reformulons le problème de la génération automatique de graphe cellules-
portails en termes de segmentation d’images 3D 1 . L’image utilisée est une représentation volu-
mique intermédiaire de la scène (un champ de distances), les objets à séparer étant les cellules
et les séparateurs étant les portails. Cette formulation nous permet d’adapter un outil très puissant
de segmentation d’images, l’algorithme de lignes de partage des eaux (appelé <watershed> en an-
glais) [112]. Le résultat est un algorithme permettant de générer de manière automatique un graphe
cellules-portails. Contrairement aux approches précédentes, cet algorithme est indépendant de la
manière dont la scène est représentée (surfaces paramétriques, surfaces implicites, représentations vo-
lumiques, maillages polygonaux, etc.). De plus, nous montrons qu’il est capable de traiter de manière
unifiée une grande variété de scènes.
Remarque : Ces travaux ont fait l’objet d’une publication à la conférence <Eurographics> en 2003,
sous le tire <Volumetric Cell-and-Portal Generation>, récompensée par le prix <Best Student Pa-
per Award : Honourable Mention> [81]. Ils ont été réalisés en collaboration avec Olivier Debeir et
François Sillion.
1 En traitement d’images, la segmentation désigne le processus qui consiste à séparer les différents objets d’une image.
2 Etat de l’art 125
1.2 Contributions
Formulation du problème en termes d’analyse d’images Comme expliqué ci-dessus, notre prem-
ière contribution consiste à formuler le problème de génération automatique de graphes CPG en termes
d’analyse d’images, et à utiliser un algorithme de segmentation d’images pour générer le graphe
(section 3.1).
Encodage implicite des cellules Nous introduisons l’idée de stocker la forme géométrique des cel-
lules de manière implicite, en associant un simple identifiant à chaque objet de la scène (section4.4).
Réduction du bruit par voxelisation L’algorithme de <watershed> est très sensible au bruit présent
dans les images. Nous proposons l’utilisation d’une procédure de voxelisation robuste comme pré-
traitement automatique, afin de filtrer le bruit présent dans le champ de distances (section6.2).
2 Etat de l’art
2.1 Génération de graphes cellules-portails
Nous avons déjà présenté les algorithmes de génération automatique de graphes cellules-portails
dans le chapitre 3, page 61. La méthode que nous proposons étant basée sur un champ de distances à
la géométrie de la scène, notre travail peut être vu comme une extension de l’algorithme de Hong et
al. [85]. La différence est que notre technique a été imaginée pour des modèles arbitraires, à la place
de la géométrie très particulière du colon humain.
126 chapitre 6. Création volumique de graphes cellules-portails
2.2 <Watershed>
L’algorithme de <watershed> est un outil puissant d’analyse d’images, conçu initialement pour
la segmentation d’images en niveaux de gris [112]. Le lecteur trouvera une bonne introduction à cet
algorithme et à ces différentes implémentations dans [133].
Même si l’algorithme peut être étendu depuis la 2D vers la 3D, il est nécessaire en 3D de faire face
aux coûts importants de stockage et de calcul [148]. Une implémentation optimisée, minimisant l’uti-
lisation mémoire afin de traiter les grands volumes de données 3D du domaine médical a été proposée
par Felkel et al. [62]. Citons pour finir les travaux de Mangan et al. [109], qui utilisent une adaptation
de l’algorithme de <watershed> définie sur la surface d’un maillage 3D en vue de le segmenter.
Une approche naı̈ve évalue indépendamment la distance pour tous les points du champ de dis-
tances. Malheureusement, ce type de requête est très coûteux, du moins dans le cas des maillages po-
lygonaux, et ce, même si les polygones sont organisés spatialement à l’aide d’une structure de données
hiérarchique (telle qu’un <octree> 2 , un arbre <BSP> ou une hiérarchie de boı̂tes englobantes) et le
temps de calcul du champ de distances devient problématique. Des algorithmes plus sophistiqués uti-
lisent les propriétés particulières de la fonction de distances (continuité, croissance constante) pour
accélérer le temps de calcul. Plusieurs méthodes, telles que celles présentées dans [134], ont été pro-
posées pour résoudre le problème du temps de calcul important impliqué par le calcul du champ de
distances. Cet algorithme donne une approximation du champ de distances qui est très rapide à calcu-
ler mais relativement imprécise. L’algorithme parcourt l’ensemble des voxels du champ de distances
en deux passes successives. Chaque passe propage une distance locale, calculée en ajoutant aux va-
leurs de distances déjà calculées les valeurs stockées dans la matrice locale de distances. La première
passe <vers l’avant> calcule la distance depuis la surface dans une direction <top-down> arbitraire,
en partant du coin en haut à gauche de la grille et en se déplaçant vers le bas. La passe en arrière cal-
cule les distances manquantes, depuis le coin inférieur de la grille vers le début de celle-ci. La vitesse
2 Un <octree> est un arbre dont chaque nœud est une boı̂te alignée par rapport aux axes, chaque nœud étant subdivisé
en huit enfants égaux.
3 Génération automatique de graphes cellules-portails 127
de l’algorithme provient des calculs simples utilisés. Récemment, une technique de calcul rapide, ex-
ploitant le matériel graphique, a été proposée [150]. Nous renvoyons le lecteur à cet article et à la
thèse d’Olivier Cuisenaire [121] pour un état de l’art concernant les méthodes de calcul de champs de
distances.
F IG . 6.1: <Adaptively Sampled Distance Fields> en 2D (image tir ée de [64]). (a) Image binaire représentant
la lettre R. (b) Champ de distances correspondant. (c) Encodage du champ de distances à l’aide d’un <ADF>.
Un <ADF> est un <octree>, dont chaque nœud stocke huit distances, chacune correspondant à la
distance entre un des sommets du nœud et la primitive géométrique la plus proche 3 . La distance de
la primitive géométrique la plus proche peut être évaluée pour tout point à l’intérieur d’une cellule, à
partir d’une interpolation tri-linéaire des distances stockées pour les sommets.
La structure de données peut être construite par subdivisions successives des nœuds de l’<octree>, tant
qu’un critère de raffinement donné par un oracle n’est pas vérifié. L’oracle utilisé peut par exemple
comparer localement le champ de distances et son approximation linéaire encodée dans la cellule de
l’<ADF> : s’ils sont trop différents, la cellule est subdivisée. Un <ADF> peut également être obtenu
en partant d’un champ de distances à pleine résolution, et en fusionnant successivement les nœuds qui
possèdent un champ de distances homogène.
Comme nous le verrons dans la section 5, notre implémentation est basée sur cette structure de
données.
est plongée dans un lac avec une vitesse verticale constante. Au cours de ce processus, les vallées de
S sont inondées par l’eau entrant par les trous et créent les bassins versants Ri (Figure 6.2(a)). Au
fur et à mesure de la montée des eaux, les eaux issues de différents bassins risquent de se mélanger.
Pour éviter ces mélanges, un barrage est construit pour séparer les bassins sur le point de fusionner
(cf. Figure 6.2(b)). A la fin du processus, toute la surface est sous eau et seuls les barrages émergent ;
chaque bassin contient un et un seul minium local de f (cf. Figure6.2(c)).
Le <watershed> de f est défini comme étant l’ensemble des barrages séparant les bassins versants.
Cet algorithme est souvent utilisé en segmentation d’images, en appliquant l’algorithme au gra-
dient d’une image. En effet, soit I une image en niveaux de gris, et grad (I ) son image gradient
associée. Si on applique un algorithme de <watershed> à grad (I ), les lignes de partage des eaux
correspondent aux contours de l’image et les bassins versants aux objets présents dans l’image I.
Remarque : Supposons que deux bassins Ra et Rb soient sur le point de se mélanger et que le
contact soit situé sur un plateau de S. Un barrage doit être construit pour séparer Ra et Rb , mais tout
le plateau constitue une région valide pour la construction du barrage, et il est nécessaire de décider
où le barrage sera placé. Dans l’algorithme classique de <watershed>, le barrage est placé sur le
<Geodesic Skeleton Zones of Influence>, noté <SKIZ> a .
a Définition du <SKIZ> (adaptée de [14]) : Considérons un ensemble de régions Y incluses dans une région X. La zone
i
d’influence de Yi est l’ensemble de tous les points de X qui sont à une distance géodésique finie de Yi et qui sont plus
proches de Yi que de n’importe quel autre point de Yj (cf. Figure 6.3). Le <SKIZ> est constitué des frontières entre les
zones d’influence de Y dans X. Le <SKIZ> peut être calculé par des dilatations successives de Yi dans l’ensemble X.
Le <watershed> de f est donc situé sur le <SKIZ> de la fonction f .
blanc de b(x; y) le plus proche (cf. Figure 6.4). Dans cette section, nous montrons que l’algorithme
classique de <watershed> appliqué à d (x; y) permet de générer de manière automatique un graphe
<CPG>.
Remarque : Pour rester compatible avec l’analogie d’inondation présentée ci-dessus, le champ de
distances d est inversé (les distances reçoivent un signe négatif).
F IG . 6.4: Champ de distances représentant un modèle architectural (les distances les plus proches sont
représentées en blanc et les plus lointaines en noir).
La représentation du champ de distances d sous la forme d’un champ de hauteurs montre que
les selles de cheval de la surface correspondent aux ouvertures de la scène où nous souhaitons placer
les portails (cf. Figure 6.5). En 3D, ces emplacements correspondent aux pincements du champ de
distances.
F IG . 6.5: Le champ de distances d représenté comme un champ de hauteurs. Un point de selle, correspondant
à l’emplacement d’un portail, est mis en évidence.
F IG . 6.6: Différentes étapes de l’algorithme de <watershed>. Deux bassins versants entrant en contact lors
d’une itération révèlent la présence d’une ouverture : un portail est construit pour les s éparer.
ils correspondent aux zones dans lesquelles les segments libres maximaux (soit l’ensemble
des segments tracés entre les points mutuellement visibles de la scène) sont concentrés. Cela
signifie que les portails sont placés aux endroits supposés intéressants pour l’élimination des
objets cachés. De plus, dans les scènes architecturales, l’ensemble des pincements contient
effectivement l’ensemble des ouvertures (portes, fenêtres et corridors).
Notons qu’un portail est ajouté à chaque pincement et que chaque minimum local génère une
cellule. De ce fait, certains portails et certaines cellules peuvent être superflus. Ce problème est accru
lorsque la géométrie initiale est compliquée et crée un champ de distances très perturbé. Il s’agit
d’une illustration du problème classique de sur-segmentation qui survient lorsque l’on segmente une
image à l’aide d’un <watershed>. Dans le paragraphe 6, nous proposons pour ce problème différentes
solutions, adaptées à notre cas.
4 Implémentation
Nous proposons maintenant un algorithme de génération automatique de graphes cellules-portails
adapté de l’idée générale du <watershed>, et se déroulant en différentes étapes. Pour commencer, le
champ de distances est calculé et échantillonné dans une grille. Le champ de distances ainsi construit
est utilisé par le <watershed> pour trouver les points de contact entre bassins versants où les portails
sont placés sur base de la géométrie de la scène. Le graphe cellules-portails en lui-même est calculé
pendant le déroulement du <watershed>. A la fin de l’algorithme, la géométrie de la scène est associée
aux différentes cellules.
4 Implémentation 131
– li 6= lold : le voxel appartient déjà à une autre région (cf. Figure 6.7 (d)). Les deux régions Rold
et Ri sont en contacts. Elles sont restaurées dans la configuration géométrique qu’elles avaient
avant la dilatation, Ri (t 1) et Rold (t 1) et un portail (barrage) est construit pour les séparer
(cf. section 4.3). Le processus de dilatation recommence après l’ajout du barrage (cf. Figure6.7
(e) et (f)).
Itération t 1
Itération t
Itération t
(après la construction du barrage)
A la place, nous définissons un barrage comme étant un rectangle appartenant à un plan orienté,
situé sur le pincement du champ de distances et entourant les primitives géométriques ayant occa-
sionné le pincement. Dans le champ de distances, tous les voxels traversés par le portail sont marqués
comme faisant partie d’un barrage et constituent un obstacle : les algorithmes de propagation utilisés
dans l’étape 2 (c-à-d. les algorithmes d’étiquetage et de dilatation) ne peuvent les traverser. Cette
définition des barrages est la différence la plus importante entre notre algorithme et le <watershed>
4 Implémentation 133
classique.
Quand un point de contact a été découvert entre deux régions Ra and Rb , nous construisons un
portail pour les séparer. Nous utilisons pour ce faire successivement deux procédures, l’une étant
mieux adaptée aux portails <épais> et l’autre aux portails <minces> : le plus petit portail généré est
conservé. La première méthode de positionnement, présentée à la section 4.3.1, utilise uniquement
le champ de distances ; la seconde, présentée à la section 4.3.2, est basée sur un procédé d’analyse
d’images.
F IG . 6.8: (a) Utilisation de la distance g éodésique : le segment joignant les deux points les plus proches ne peut
pas traverser la géométrie. (b) Calcul de C1 et de C2 . Dans ce cas simple, B1 est égal à C2 . (c) Le positionnement
du portail à l’aide du champ de distances échoue quand le champ de distances est bruit é et que la géométrie
sur laquelle doit s’appuyer le portail est mince.
7 Dans ce chapitre, le squelette est utilisé au sens de l’analyse d’images. Le squelette d’un objet est défini comme étant
le lieu des centres de toutes les sphères de rayon maximum inscrites dans l’objet.
8 Soit X et Y deux points de l’ensemble X . La distance géodésique entre X et Y est la longueur du plus petit chemin
Cet algorithme de positionnement peut échouer si le portail est fin, car il n’y a pas de garantie
que le segment C1C2 donne une orientation correcte (cf. Figure 6.8(c)). C’est pourquoi nous avons
développé un second algorithme de positionnement dans le cas des portails fins, qui est présenté dans
la section suivante.
taille de la plus petite pièce que l’algorithme est capable de trouver : la résolution doit être choisie
suffisamment fine pour qu’il y ait au moins un voxel dans chacune des pièces.
La correspondance entre les primitives géométriques de la scène et les bassins versants issus du
<watershed> n’est pas immédiate : comme on peut le voir à la Figure6.9(a), la géométrie ne se situe
dans aucun bassin versant à la fin du <watershed>, puisque par définition, les primitives géométriques
séparent les bassins versants. Dans notre implémentation, chaque primitive géométrique est assignée
à son bassin versant le plus proche, dans la direction de sa normale. Pour le trouver, nous prenons
quelques points de manière aléatoire sur la surface de la primitive, et recherchons le bassin le plus
proche de chacun d’entre eux. Un vote majoritaire est ensuite effectué pour assigner la primitive à la
cellule la plus proche.
Remarque : Les primitives géométriques qui traversent plusieurs portails ne sont assignés qu’à une
et une seule cellule : cela n’est pas nécessaire de les assigner aux deux cellules connectées par le
portail, puisque ces primitives seront toujours considérées comme visibles au travers du portail et
toujours affichées.
(a) (b)
F IG . 6.9: (a) Création des cellules : les primitives géométriques constituant la scène sont associées à leur
bassin versant le plus proche. (b) Localisation de la cam éra : contrairement à la caméra 2, la caméra 1 est
correctement localisée car le rayon ne traverse pas de portails avant de toucher la g éométrie.
composent, organisée dans un arbre hiérarchique pour accélérer l’élimination des objets masqués au
cours de la navigation interactive 10 . Au début de la phase de visualisation, la caméra est localisée
en lançant un rayon depuis le point de vue à travers la scène (cf. Figure6.9(b)). Si un portail est tra-
versé avant qu’un objet ne soit rencontré par le rayon, d’autres rayons sont lancés dans des directions
aléatoires (cette situation peut être facilement évitée en utilisant des rayons verticaux, car une scène
typique ne contient pas beaucoup de portails horizontaux). Pendant le reste de la visualisation, les
changements de cellules sont simplement détectés lorsque la caméra traverse un portail durant son
déplacement.
5 Implémentation hiérarchique
Dans les scènes dont l’espace navigable est étendu, la mémoire nécessaire pour stocker le champ
de distances devient problématique et sa compression est nécessaire. En pratique, c’est pour cette
raison que nous n’avons pas implémenté l’algorithme décrit ci-dessus sur une grille régulière. A la
place, nous avons utilisé les <Adaptively Sampled Distance Fields> notés <ADF> [64]. Pour rappel,
un <ADF> est un <octree>, dont chaque nœud stocke la distance entre la géométrie et chacun de
ses 8 sommets. La distance à la géométrie d’un point situé à l’intérieur d’une cellule est calculée par
interpolation tri-linéaire des distances stockées pour les sommets.
<CPG> en lui-même est très similaire à la version basée sur la grille régulière. Seule l’étape de
découverte des portails est modifiée pour bénéficier de sa structure hiérarchique :
– les valeurs min(n) et max(n) stockées en chaque nœud n permettent d’accélérer les algorithmes,
en éliminant rapidement les portions de l’<octree> qui ne sont pas concernées par un traitement.
– au sein de l’<octree>, la navigation entre les nœuds voisins n’est pas aussi évidente que dans
le cas d’une grille régulière et des algorithmes permettant de se déplacer entre nœuds voisins
doivent être utilisés [78] [15] [64]. Notre implémentation utilise l’algorithme présenté par Par-
thajit Bhattacharya [15].
Remarque : Dans notre implémentation, les huit distances ne sont pas stockées, afin d’économiser
de la mémoire vive, et les calculs sont exclusivement basés sur min(n) et max(n). Lorsqu’une distance
précise est requise (par exemple pour le placement d’un portail), nous n’utilisons pas la distance
interpolée à partir de l’<ADF> mais nous la calculons à la demande, à partir de la géométrie initiale.
6 Sur-segmentation
En traitement d’images, la segmentation par <watershed> est connue pour être sensible au bruit :
ce dernier crée beaucoup de minima locaux et chacun d’entre eux devient un bassin versant durant le
déroulement de l’algorithme. Comme résultat, de nombreuses régions sont créées ; le phénomène est
connu sous le nom de sur-segmentation 11 .
Dans le cas de la génération de graphes cellules-portails, la sur-segmentation survient quand le
champ de distances présente beaucoup de minima locaux (typiquement dans le cas de pièces meublées,
de murs en zig-zag,...). Le modèle est alors découpé en un grand nombre de cellules séparées par des
portails redondants. Pour résoudre ce problème, deux approches sont possibles [112]. La première
consiste à prétraiter les données, afin de réduire le bruit et d’éliminer les minima locaux avant l’al-
gorithme de <watershed>. La seconde consiste à traiter les résultats a posteriori, en fusionnant les
régions sur-segmentées à l’aide d’une heuristique donnée.
Dans ce paragraphe, nous proposons deux prétraitements qui résolvent le problème de la sur-
segmentation dans la majorité des cas observés. Le premier consiste à éliminer les détails de la scène
(cf. section 6.1) et le second consiste à voxeliser la scène avant de calculer le champ de distances (cf.
section 6.2).
étape de voxelisation comme traitement complètement automatisé afin de réduire le bruit présent dans
le champ de distances.
7 Résultats
Nous avons implémenté l’algorithme hiérarchique de création de cellules-portails et l’avons testé
sur différents types de scènes pour démontrer sa généralité. Toutes les expériences on été réalisées sur
un ordinateur Pentium 3 cadencé à 800 Mhz, et équipé de 512 Mo de mémoire vive et d’une carte
graphique <GeForce 2 GTS>.
(a) (b)
F IG . 6.10: Scène (a) - Modèle architectural utilisé par <dPVS>. (a) Cellules créées par notre algorithme. (b)
Quelques-uns des portails créés par notre algorithme (scène traitée sans les meubles, qui ont été ajoutés aux
cellules à la fin du processus).
de base, qui sont répliqués avec des facteurs d’échelle et des paramètres de distortions pour créer de
la variété. Même si ce procédé de duplication est un moyen efficace pour réduire le coût mémoire, il
introduit des artéfacts : objets s’interpénétrant, des interstices et des trous. Si l’on ne tient pas compte
de ces dégénérescences, le champ de distances serait très bruité, et contiendrait de nombreux minima
locaux non intéressants. Pour cette raison, nous avons appliqué une étape de voxelisation, destinée à
filtrer les détails et les artéfacts avant de créer le <CPG>.
La scène (b) est une maison composée de 47k triangles. Pour ce modèle, notre algorithme trouve
correctement toutes les portes en forme d’arches et traite correctement le centre de la pièce faite de
piliers parallèles (cf. Figure 6.11).
(a) (b)
F IG . 6.11: Scène (b) - Maison, contenant de nombreuses d égénérescences. (a) Décomposition obtenue. (b) La
pièce centrale, faite de piliers successifs. Cette scène a été traitée après une étape de voxelisation.
La scène (c) est un paysage de pierre contenant des pièces souterraines (281k triangles), et représen-
te un mélange de scènes d’intérieur et d’extérieur en 3D. L’algorithme crée un graphe <CPG> pour
la partie intérieure (les pièces souterraines), et ne subdivise pas la partie extérieure qui n’est pas bien
adaptée pour un rendu par cellule-portail (cf. Figure 6.12). La raison est que le processus d’inonda-
140 chapitre 6. Création volumique de graphes cellules-portails
F IG . 6.12: Scène (c) - Modèle comportant une partie architecturale et une partie ext érieure, contenant de
nombreuses dégénérescences. L’algorithme crée un graphe <CPG> pour les pi èces souterraines, mais ne traite
pas le reste de la scène (cette scène a été traitée après une étape de voxelisation).
tion démarre aux endroits fermés, qui constituent des minima locaux. Quand aucun minimum de cette
sorte n’existe, une seule région est créée et aucun portail n’est ajouté. Dans le cas de la visualisation
de terrains et de villes 2D 12 , quelqu’un pourrait vouloir utiliser un graphe <CPG>, avec les portails
placés entre les différents bâtiments [101]. Pour étendre le processus de création de <CPG> à ce type
d’environnements, une solution simple consiste à calculer un <watershed> 2D sur le champ de hau-
teurs 2D, pour lequel les minima existent effectivement. Une autre solution pourrait consister à ajouter
manuellement, à l’aide d’un outil interactif, les minima locaux de manière artificielle dans le champ
de distances.
La scène (d) est le <Soda Hall> de Berkeley (sans les meubles), qui compte 18k triangles13 , et qui
a été traitée sans aucun prétraitement. L’algorithme trouve toutes les pièces, les portes et les fenêtres
du bâtiment (cf. Figure 6.13). Un problème non résolu est le traitement des lignes de selle de cheval
du champ de distances, qui traverse typiquement les corridors. Notre méthode place un seul portail
au milieu d’une telle ligne, mais un gain en élimination d’objets pourrait être obtenu en plaçant des
portails au début et à la fin de la ligne de selle (c-à-d le début et la fin du corridor).
13 http ://www.cs.berkeley.edu/ sequin/soda/soda.html
7 Résultats 141
F IG . 6.13: Scène (d) - Modèle architectural du <Soda Hall>. Dans un b âtiment, l’algorithme <trouve> toutes
les pièces, les portes et les fenêtres.
La dernière scène est un modèle médical utilisé en endoscopie pulmonaire virtuelle et représentant
un modèle de bronches humaines (49K triangles)14 . Les résultats montrent que l’algorithme est ca-
pable de générer des graphes <CPG> pour les environnements tubulaires (cf. Figure6.14).
F IG . 6.14: Scène (e)- Modèle de bronches humaines : d écomposition obtenue à l’aide de l’algorithme de
création automatique de graphes cellules-portails.
Mesurer la qualité des résultats est une tâche difficile car peu de points de comparaison existent :
la génération de graphe <CPG> est souvent effectuée à la main et à notre connaissance, aucune des
méthodes automatiques publiées précédemment ne peut traiter de scènes quelconques. Les résultats
pourraient être comparés avec ceux obtenus à l’aide d’une décomposition <BSP> pour le modèle le
plus simple (scène (d)). Malheureusement, ce type de décomposition n’est pas évident à créer pour
les autres scènes, contenant des dégénérescences et des centaines de milliers de triangles. De plus, il
n’est pas certain qu’une décomposition <BSP> soit capable de traiter des scènes tubulaires comme des
bronches humaines. Dans ce contexte, nous n’avons comparé nos résultats qu’à des décompositions
14 http ://www.cc.nih.gov/drd/endoscopy.htm
142 chapitre 6. Création volumique de graphes cellules-portails
créées à la main, même si elles ne sont pas optimales en termes de visibilité. Pour chacune de nos
scènes de test, cette comparaison montre que la méthode de décomposition automatique trouve tous les
portails <classiques>, mais ajoute également des portails redondants à cause de la sur-segmentation.
Comme travail futur, un post-traitement pourrait être implémenté pour les détecter et les supprimer.
Scène a b c d e
Nombre de portails 33 25 13 402 30
Nombre de cellules 31 18 22 511 49
Temps de voxelisation - 8 min. 45 min. - 30 s.
Calcul du champ de distances (sec.) 7 20 129 73 62
Création de l’<octree> (sec.) 14 21 82 140 35
Détection des portails (sec). 154 18.5 182 > 2 heures 80
Positionnement des portails (sec.) 27 27.5 45.4 > 2 heures 39.6
Création des cellules (sec.) 30 2.2 102 4 2
Profondeur de l’<octree> 8 8 10 9 9
Coût mémoire (Mo) 14 47 90 224 32
Taux de compression 6/1 6/1 21/1 5/1 30/1
TAB . 6.1: Statistiques de création des graphes <CPG> dans les diff érentes scènes.
l’extérieur de ce volume de vue. Les objets de chaque cellule étant regroupés hiérarchiquement avec
un arbre de boı̂tes alignées avec les axes, nous utilisons l’algorithme présenté par Assarsson et al. [9]
pour tester si une boı̂te alignée possède une intersection avec le volume de vue.
Remarque : Un nouveau cône de vue est construit pour chaque portail rencontré : notre
implémentation ne tient pas compte des rétrécissements successifs à travers une séquence de por-
tails et est donc conservative.
Nous avons enregistré des chemins représentatifs à travers les scènes et avons mesuré les temps
d’affichage pour chaque scène de test. Le tableau6.2 compare le nombre d’images par seconde obtenu
en affichant toute la scène (colonne <Naı̈f>), en ne considérant que les objets dans le champ de la
caméra (colonne <CC> pour <Champ Caméra>) et en utilisant l’algorithme d’affichage exploitant le
graphe cellules-portails généré (colonne <CPG>).
Images/sec.
Naı̈f CC CPG
Scène min. moy. max. min. moy. max. min. moy. max.
a 7.5 8 8.5 8.5 58.9 753 23.2 188.2 1816
b 24.4 33 40.2 48.2 211 757 155 718 1650
c 6.66 7.4 7.8 13 46.1 168 183 561 1672
d 31 52 61 67 774 1632 597 1610 3170
e 16 23 26 34 156 485 42 345 2193
TAB . 6.2: Nombre d’images par seconde dans les diff érentes scènes, en fonction du type d’affichage utilis é.
Les facteurs d’accélération observés entre la méthode <CC> et la méthode <CPG> sont de l’ordre
de 2 3 pour la majorité des scènes et vont jusqu’à un facteur 12 pour la scène (d). Même si
cela ne prouve pas que la décomposition obtenue est optimale, cela montre que cette méthode de
décomposition automatique peut être utilisée dans un scénario de visualisation interactive pour amé-
liorer le temps d’affichage.
8 Conclusions et perspectives
Dans ce chapitre, nous avons proposé d’adapter l’algorithme classique de <watershed> pour
générer des graphes cellules-portails de manière automatique. Les résultats obtenus montrent que cette
approche permet d’obtenir un graphe CPG proche de la décomposition classique, qui était souvent
générée à la main dans le passé faute d’algorithmes appropriés. Nous avons également montré qu’elle
permettait de traiter des scènes variées, sans imposer de contraintes particulières de modélisation.
La mise en place de cette approche a soulevé différents problèmes, auxquels nous avons apporté
une première réponse, mais ils mériteraient cependant de plus amples investigations.
Le premier d’entre eux est le placement précis des portails. Nous avons proposé deux solutions, l’une
basée sur le champ de distances et la seconde basée sur un algorithme d’analyse d’images, mais elles
pourraient certainement être améliorées et rendues plus robustes. Dans le même ordre d’idée, il se-
rait intéressant d’utiliser des portails plus complexes que des rectangles orientés afin d’approcher la
géométrie de la scène de manière plus fidèle et de diminuer la sur-conservativité.
144 chapitre 6. Création volumique de graphes cellules-portails
Les temps de calcul de l’algorithme de <watershed> hiérarchique utilisé pour générer le graphe
sont relativement réduits dans la majorité des scènes. Ils peuvent malgré tout devenir importants
lorsque la taille du champ de distances augmente (scène (d) par exemple). Un axe de recherche se-
rait de remplacer l’implémentation hiérarchique par une implémentation optimisée pour les grilles
régulières, telle que celle proposée par Felkel et al. [62]. Toutefois, en raison du coût mémoire impor-
tant que ce type d’approche impliquerait dans les scènes étendues, elle ne serait viable que si la scène
était subdivisée en différentes parties, qu’un graphe CPG était généré pour chacune d’entre elles et
que les résultats obtenus étaient combinés pour obtenir le graphe complet.
Finalement, il est difficile d’évaluer la qualité des résultats obtenus, car la définition d’un graphe
CPG optimum est encore une question ouverte [101]. Malgré tout, il serait intéressant d’estimer
l’efficacité des graphes que nous avons générés, à l’aide d’une technique similaire à celle proposée
récemment par Lerner et al. [101] 15 . De plus, cette évaluation permettrait de détecter les zones com-
portant trop de portails afin d’éliminer ceux qui sont superflus. Egalement dans l’optique d’optimiser
le nombre de portails, une méthode alternative consisterait à détecter les portails inutiles à l’aide
d’heuristiques semblables à celle proposée par Lefebvre et al. [99].
15 Lerner et al. évaluent le coût d’utilisation d’un graphe cellules-portails à l’aide d’un procédé d’échantillonnage : un
grand ensemble de points de vue est choisi de manière aléatoire dans chaque cellule, et le gain d’utilisation est évalué en
chacun de ces points.
Conclusions et perspectives
chapitre 7
Dans ce travail, nous avons étudié la problématique de l’élimination efficace des objets masqués,
en vue d’accélérer l’affichage de scènes complexes. Nous nous sommes plus particulièrement intéressé
aux méthodes de précalcul, qui effectuent les calculs coûteux de visibilité durant une phase de prétraite-
ment et les réutilisent lors de la phase de navigation interactive. Comme nous l’avons vu dans l’état
de l’art, les méthodes permettant un précalcul complet et exact sont encore hors de portée, c’est pour-
quoi des techniques approchées sont utilisées en pratique. Nous avons proposé dans ce document trois
méthodes originales de ce type. Nous résumons ici leurs principales caractéristiques et mettons en
évidence les perspectives d’application de chacune d’entre elles.
La première méthode, présentée dans le chapitre 3, est un algorithme exact de calcul de visibilité
depuis une région, permettant d’éliminer la sur-conservativité due à la méthode. Il se présente sous
la forme d’une requête de visibilité entre deux polygones. Nos contributions principales ont été de
simplifier cette requête, tant du point de vue théorique que du point de vue de l’implémentation, ainsi
que d’accélérer leur temps moyen d’exécution à l’aide d’un ensemble de techniques d’optimisation.
Il en résulte un algorithme plus simple à mettre en oeuvre et beaucoup plus rapide que les algorithmes
exacts publiés précédemment. Cette requête est une <brique> de base, qui peut être utilisée par n’im-
porte quel algorithme de précalcul de visibilité de plus <haut> niveau, tel qu’un algorithme de calcul
de PVS par exemple. Nous espérons que son développement aboutira à la mise au point de techniques
d’élimination des objets masqués dans les scènes complexes. Outre l’accélération de l’affichage, une
autre application majeure des algorithmes exacts consiste à les utiliser comme technique de référence
pour l’évaluation des algorithmes de visibilité conservatifs ou agressifs [120]. Ce travail a été effectué
récemment par Bittner et al. dans le cas particulier de la 2D12 [19]. Un travail futur très intéressant
consisterait de l’étendre au cas général 3D.
Les méthodes exactes de calcul de visibilité fournissent la liste de tous les objets visibles depuis
la cellule, sans tenir compte de leur <degré> de visibilité. Les objets qui ne sont que très peu visibles,
par exemple au travers d’une toute petite ouverture, seront affichés au même titre que les objets situés
à l’avant-plan, même s’ils ne contribuent presque pas aux images générées. Si l’on veut éviter l’affi-
chage de ces objets, qui ne couvrent qu’une surface négligeable, il est nécessaire d’éliminer tous les
défauts de modélisation (interstices à la jointure des maillages, etc.) avant le précalcul de visibilité.
Cette étape est très contraignante et n’est pas toujours réalisable. Une solution consisterait à évaluer
le degré de visibilité de chaque objet, et à rejeter les objets dont la visibilité est inférieure à un certain
seuil. Cette mesure pourrait être effectuée dans l’espace de Plücker : étant donné que chaque polytope
correspond à un ensemble de droites non bloquées, il faudrait mesurer la <taille> des ensembles de
droites représentés par chacun des polytopes afin d’éliminer ceux qui sont jugés négligeables. On ob-
tiendrait de la sorte un algorithme de visibilité agressif, mais dont l’erreur serait bornée, ce qui n’existe
146 chapitre 7. Conclusions et perspectives
pas encore à l’heure actuelle dans le domaine de l’<occlusion culling>. Notons cependant que des cal-
culs de visibilité avec une erreur bornée ont déjà été proposés dans le domaine du calcul d’éclairage
par Soler et al. [142,144,143]. Du point de vue du temps de calcul, les algorithmes exacts sont coûteux
car intrinsèquement complexes. Cependant, il n’est pas toujours nécessaire de les utiliser, et dans bien
des cas, des méthodes conservatives ou agressives permettent d’obtenir des résultats similaires en des
temps beaucoup plus réduits. Pour une meilleure efficacité, ces méthodes devraient être utilisées à la
place des algorithmes exacts, et l’on devrait réserver ces derniers aux cas difficiles [19]. Une piste de
recherche prometteuse serait donc de mettre au point un <framework> complet, tel que celui proposé
par Aila et al. pour l’<occlusion culling> en ligne [2], permettant de combiner différentes techniques
pour précalculer la visibilité dans les scènes complexes. Les méthodes conservatives seraient utilisées
en premier lieu, pour filtrer la base de données, et donner une première estimation de l’ensemble
des objets visibles. Un algorithme exact pourrait ensuite être utilisé pour éliminer complètement la
sur-conservativité due à la méthode. Finalement, une technique agressive avec contrôle de l’erreur
permettrait d’éliminer du PVS les objets très peu visibles. C’est seulement la combinaison de ces
différentes méthodes qui pourrait fournir un algorithme strictement <output sensitive>, c’est-à-dire
dont la complexité est proportionnelle au nombre d’objets visibles, et fournissant le PVS le plus per-
formant. Idéalement, un tel <framework> devrait également permettre de régler le compromis entre
qualité et temps de calcul, en proposant rapidement une solution grossière, puis en offrant la possibi-
lité d’améliorer cette solution en augmentant le temps de calcul.
Dans le chapitre 4, nous nous sommes intéressé au problème de la discrétisation de l’espace navi-
gable. Nous avons proposé d’abandonner l’idée de découper l’espace navigable en cellules et de calcu-
ler un PVS pour chacune d’entre elles. A la place, nous avons proposé de stocker l’ombre générée par
chacun des objets lorsqu’il est remplacé par une source lumineuse. Nous avons vu que l’amélioration
du temps d’affichage passait impérativement par la mise au point d’un algorithme <output sensitive>.
L’implémentation que nous avons proposée ne possède malheureusement pas cette caractéristique,
mais elle reste néanmoins intéressante, car elle permet d’encoder la visibilité de manière avantageuse
dans les grands espaces navigables. Si de meilleurs écrans virtuels étaient mis au point et utilisés,
elle pourrait même devenir une alternative compétitive par rapport au PVS, même dans le cas d’un
espace navigable réduit. Tout au long de notre travail, nous avons été confronté au paradoxe suivant :
les algorithmes de calcul de visibilité sont très dépendants des scènes, mais il n’existe pourtant pas
de scènes de référence (ni à fortiori de classification de ces scènes). De ce fait, les méthodes de visi-
bilité sont rarement évaluées de manière systématique, et il n’existe quasiment aucune comparaison
de leur efficacité respective. Le praticien n’a que peu de points de comparaison, et doit se fier à ses
seules intuition et expérience lorsqu’il choisit d’utiliser un algorithme plutôt qu’un autre. Nous avons
déjà mentionné l’utilisation des méthodes exactes de visibilité comme méthodes de référence pour
comparer les algorithmes entre eux. Mais une telle comparaison ne pourra être réalisée de manière
intéressante que si des scènes de référence voient le jour, et si l’on en connaı̂t les propriétés. Pour
étudier ces dernières, Feixas et al. ont proposé d’évaluer la complexité de la scène au sens de la théorie
de l’information [61]. Dans un but similaire, nous pensons que l’on pourrait se servir de l’encodage de
la visibilité par capsules comme descripteurs de visibilité, en étudiant la distribution de leurs secteurs
et de leurs distances frontières. Par exemple, des scènes denses auront des distances frontières petites
et similaires. Au contraire, des scènes <désordonnées> donneront beaucoup de petits secteurs avec
des discontinuités fortes entre les frontières. Ce genre de description de scènes semble plus naturel
que la description de la visibilité encodée sous forme de PVS, et pourrait être utilisée pour créer des
ensembles de tests, à l’instar de ceux existants dans d’autres domaines d’informatique appliquée.
147
Finalement, nous nous sommes intéressé dans le chapitre 6 au cas particulier des scènes d’intérieur,
et avons décrit un algorithme permettant de générer des graphes cellules-portails de manière auto-
matique. A nos yeux, notre principale contribution a été de montrer que ce problème pouvait être
formulé en termes de segmentation d’images. Nous avons également expliqué comment utiliser un
algorithme de <watershed> pour obtenir une décomposition proche de la décomposition <classique>,
traditionnellement créée à la main. Cette nouvelle formulation offre de nombreuses perspectives : uti-
lisation d’autres algorithmes de segmentation, utilisation de techniques plus avancées pour améliorer
les résultats du <watershed> et éliminer la sur-segmentation, etc.
Les possibilités d’utilisation de cette technique de génération automatique sont nombreuses car
les scènes d’intérieur sont très répandues et car les graphes cellules-portails sont utilisés de manière
quasiment universelle dans tous les <moteurs de rendu>, en raison de leur faible coût mémoire et
de leur grande efficacité. Lorsque la scène doit être modélisée, l’utilité d’une méthode de génération
automatique peut paraı̂tre discutable, car le temps nécessaire pour placer les cellules et les portails de
manière manuelle est faible comparativement au temps de modélisation. Cependant, une technique
automatique reste intéressante, ne fût-ce que pour donner une première information de positionne-
ment des portails. Dans de nombreuses autres situations, l’utilisation d’un algorithme de génération
entièrement automatique est obligatoire, chaque fois que les utilisateurs des logiciels de navigation
interactive, tels que les médecins ou les architectes, sont étrangers aux problématiques de l’affichage.
Il en est de même lorsque l’on souhaite visualiser des scènes déjà modélisées, à l’aide de logiciels de
CAD par exemple dans le domaine industriel, ou encore si l’on désire visualiser des scènes acquises
de manière automatique, à l’aide de scanners 3D.
Nous aimerions conclure ce document par les perspectives de modification incrémentale de l’in-
formation de visibilité. Dans le domaine de l’<occlusion culling>, l’ensemble des travaux consacrés
au précalcul supposent que la scène est complètement statique, et qu’aucune primitive ne peut être
déplacée durant la phase de visualisation. Lorsqu’un changement survient, l’ensemble de la solution
doit être recalculé à partir de zéro. Pourtant, seul un sous-ensemble de cette information a effective-
ment été modifié. Il serait donc intéressant de l’identifier et de l’isoler, pour limiter les calculs à ces
seuls changements. Ce type d’approche incrémentale a été utilisé avec succès dans certains domaines
de la synthèse d’images proches de la visibilité, tels que le calcul d’illumination globale à l’aide de
méthodes de radiosité [32, 51]. En étendant ces algorithmes à l’<occlusion culling>, on supprime-
rait la principale limitation des algorithmes de précalcul, en permettant à l’utilisateur de modifier la
géométrie de la scène pendant la navigation interactive.
Index
E I
echantillonnage, 53 imposteur, 11, 53
ecran interactif, 10
écran virtuel, 52 item buffer, 54, voir visibilité
érosion des écrans, 51
définition, 37 L
fusion des écrans, voir fusion des pénombres l’<Asp>, 41
réduction des écrans, 51 lancer de rayons, 26
elimination des surfaces cachées, voir hidden lignes de partage des eaux, 124
surface removal O
enveloppe convexe, voir polyèdre objet lisse, 38
espace occluder, voir écran
espace de Plücker, 30 opérateurs de projection étendus, 50
espace des droites, 54 output sensitive, 12
espace dual, 24 over-segmentation, voir sur-segmentation
espace navigable, 35
espace primal, 24 P
espace projectif, 27, 28 pénombre, 37
evénement de visibilité, 36 partition
extremal stabbing line, voir droite poignardante en cellules d’aspect constant, voir parti-
extrême tion VSP
en cellules de visibilité constante, 56
F partition VSP, voir View Space Partition
face d’un graphe, 23 Plücker
face d’un polyèdre, 21 coordonnées de Plücker, voir coordonnées
fusion des pénombres, 47 espace de Plücker, voir espace
quadrique de Plücker, voir quadrique de
G
Plücker
Geodesic Skeleton Zones of Influence, 128, 132
poignardant, voir droite
Global Occlusion Map, 52
polyèdre
GOM, voir Global Occlusion Map
1-squelette d’un polyèdre, voir squelette
graphe
algorithme d’énumération de sommets, 21
arc d’un graphe, 23
arête d’un polyèdre, 21
face d’un graphe, 23
facette d’un polyèdre, 21
graphe cellules-portails, voir Cell-and-Portal
H-Représentation, 21
Graph
k-squelette d’un polyèdre, voir squelette
graphe d’aspect, 35, 45, 56
polyèdre borné, voir polytope
graphe d’aspect lineaire, 58
polyèdre non convexe, 22
graphe d’incidence d’un polyèdre, 22
sommet d’un polyèdre, 21
graphe dual, 23
V-Représentation, 21
nœud d’un graphe, 23
polytope, 20
H portail, 60
hidden surface removal, 34 position générique, 39
hoops, 49, 52 Potentially Visible Set, voir PVS
HSR, voir hidden surface removal PVS
hypercube, 52 écrans virtuels, 58
agressif, 48
150 INDEX
approximatif, 48 sur-conservativité
calcul incrémental, 57 due à la méthode, 47
cellule d’un PVS, voir cellule due à la partition, 46
compression, 58, 99 sur-segmentation, 137
conservatif, 48, 51 surface critique, 36
dynamique, 58 surface réglée, 87
exact, 48, 66, 98
fusion des cellules, 57 T
partition, 56, 57 tampon de profondeur, voir z-buffer
pré-calcul, 98 triangulation de Delaunay, 23
principe, 12, 46, 65, 98
V
stockage, 58
View Space Partition, 35, 36, 41, 56
Q visibilité
quadrique de Plücker, 32 agressive, 48
quadrique réglée, 37 avec précalcul, 13
calcul approximatif, 48
R calcul conservatif, 48
radiosité, 43, 88, 147 depuis un point, 46, 47
ray tracing, voir lancer de rayons depuis une région, 46
requête d’occultation, 66, 70, 78, 82, 89, 94 en ligne, 13
exacte, 48
S
globale, 42
scène
item buffer, 105, 107, 109
2D 12 , 52, 54, 62, 63, 88, 95
robuste, 44
3D + ε, 54
z-buffer, 53, 54
architecturale, 58
visibility event, voir événement de visibilité
complexe, 10
voxel, 49
d’extérieur, 114
voxelisation, 49
d’intérieur, 114
VSP, voir View Space Partition
de ville, 58
vues qualitativement équivalentes, 35
mixte, 108
segment critique, 55 W
segment libre maximal, 43 watershed, voir lignes de partages des eaux
ShieldTester, 49
silhouette Z
silhouette étendue, 66, 78, 80 z-buffer, voir visibilité
silhouette ponctuelle, 79
SKIZ, voir Geodesic Skeleton Zones of Influence
sommet apparent, 36
squelette
1-squelette d’un polyèdre, 22
champ de distances, 62
k-squelette d’un polyèdre, 22
squelette de visibilité, 44
squelette de visibilité robuste, 44
structure combinatoire, 45
stabbing line, voir droite poignardante
Bibliographie
[1] S. Adrian, M. Hampton, S. Nirenstein, J. Gain, and E. Blake, “Accelerating ray shooting
through aggressive 5d visibility pre-processing,” in Proc. of Afrigraph, 2003, pp. 95–100. (cité
pages 52 et 53)
[2] T. Aila and V. Miettinen, “dpvs : An occlusion culling system for massive dynamic environ-
ments,” IEEE Computer Graphics & Applications, pp. 86–97, 2004. (cité pages 14, 91 et 146)
[3] J. M. Airey, J. H. Rohlf, and F. P. Brooks, Jr., “Towards image realism with interactive up-
date rates in complex virtual building environments,” in Proc. of the Symp. on Interactive 3D
graphics, March 1990, pp. 41–50. (cité pages 14, 53, 60, 61 et 62)
[4] D. Aliaga, J. Cohen, A. Wilson, E. Baker, H. Zhang, C. Erikson, K. Hoff, T. Hudson, W. Stuerz-
linger, R. Bastos, M. Whitton, F. Brooks, and D. Manocha, “Mmr : an interactive massive mo-
del rendering system using geometric and image-based acceleration,” in Proc. of the Symp. on
Interactive 3D graphics, 1999, pp. 199–206. (cité à la page 11)
[5] D. G. Aliaga and A. Lastra, “Automatic image placement to provide a guaranteed frame rate,”
in Proc. of the Symp. on Interactive 3D graphics, 1999, pp. 307–316. (cité à la page 11)
[6] C. Andújar, C. Saona-Vazquez, and I. Navazo, “Lod visibility culling and occluder synthesis,”
Computer Aided Design, vol. 32, no. 3, pp. 773–783, 2000. (cité pages 49, 50 et 52)
[7] C. Andújar, P. Vázquez, and M. Fairén, “Way-finder : Guided tours through complex walk-
through models,” Computer Graphics Forum, vol. 23, no. 3, pp. 499–508, 2004. (cité à la
page 126)
[8] J. Arvo and D. Kirk, “Fast ray tracing by ray classification,” in Proc. of the Symp. on Interactive
3D graphics, 1987, pp. 55–64. (cité pages 52 et 53)
[9] U. Assarsson and T. Möller, “Optimized view frustum culling algorithm for bounding boxes,”
Journal of Graphics Tools, vol. 5, no. 1, pp. 9–22, 2000. (cité à la page 143)
[10] D. Avis and K. Fukuda, “Reverse search for enumeration.” Discrete Applied Mathematics,
vol. 65, no. 1-3, pp. 21–46, 1996. (cité à la page 69)
[11] C. L. Bajaj and V. Pascucci, “Splitting a complex of convex polytopes in any dimension,” in
Proc. of SoCG, 1996, pp. 88–97. (cité pages 70 et 71)
[12] D. Bartz, M. Meissner, and T. Hüttner, “Opengl-assisted occlusion culling for large polygonal
models,” Computer & Graphics, vol. 23, pp. 667–679, 1997. (cité à la page 15)
[13] F. Bernardini and J. T. Klosowski, “Directional discretized occluders for accelerated occlusion
culling,” Computer Graphics Forum, 2000. (cité à la page 58)
[14] S. Beucher, “The watershed transformation applied to image segmentation,” in Conference on
Signal and Image Processing in Microscopy and Microanalysis, September 1991, pp. 299–314.
(cité à la page 128)
152 BIBLIOGRAPHIE
[15] P. Bhattacharya, “Efficient neighbor finding algorithms in quadtree and octree,” Master’s thesis,
Indian Institute of Technology, Kanpur, 2001. (cité à la page 137)
[16] L. Bishop, D. Eberly, T. Whitted, M. Finch, and M. Shantz, “Designing a pc game engine,”
IEEE Computer Graphics & Applications, pp. 46–53, 1998. (cité à la page 63)
[17] J. Bittner, M. W. H. Piringer, and W. Purgathofer, “Coherent hierarchical culling : Hardware oc-
clusion queries made useful,” in Proc. of Eurographics, vol. 13, no. 3, 2004. (cité à la page 14)
[18] J. Bittner and P. Wonka, “Visibility in computer graphics,” Environment and Planning B : Plan-
ning and Design, vol. 30, no. 5, pp. 729–756, sep 2003. (cité pages 11, 34 et 59)
[19] J. Bittner, P. Wonka, and M. Wimmer, “Fast exact from-region visibility in urban scenes,” in
Proc. of the Eurographics Symposium on Rendering, 2005, pp. 223–230. (cité pages 54, 63,
66, 68, 95, 145 et 146)
[20] J. Bittner, “Hierarchical techniques for visibility computations,” Ph.D. dissertation, Czech
Technical University in Prague, 2002. (cité pages 19, 27, 42, 43, 48, 54, 59, 66, 69, 70,
84, 90, 101 et 102)
[21] J. Bittner and V. Havran, “Exploiting temporal and spatial coherence in hierarchical visibility
algorithms,” in Proc. of SCCG, 2001. (cité pages 14 et 106)
[22] J. Bittner, V. Havran, and P. Slavik, “Hierarchical visibility culling with occlusion trees,” in
Proc. of Computer Graphics International, 1998. (cité à la page 70)
[23] J. Bittner and J. Přikryl, “Exact regional visibility using line space partitioning,” Institute of
Computer Graphics and Algorithms, Vienna University of Technology, Tech. Rep. TR-186-2-
01-06, march 2001. (cité pages 3, 25, 26 et 28)
[24] J. Bittner, P. Wonka, and M. Wimmer, “Visibility preprocessing for urban scenes using line
space subdivision,” in Proc. of Pacific Graphics, 2001. (cité pages 54, 66, 68 et 70)
[25] M. Blais and P. Poulin, “Sampling visibility in three-space,” in Proc.Western Computer Gra-
phics Symposium, April 1998. (cité à la page 53)
[26] P. Brunet, I. Navazo, C. Saona-Vázquez, and J. Rossignac, “Hoops : 3d curves as conservative
occluders for cell-visibility,” Computer Graphics Forum, 2001. (cité pages 49, 52, 58, 118
et 119)
[27] E. E. Catmull, “A subdivision algorithm for computer display of curved surfaces.” Ph.D. dis-
sertation, University of Utah, 1974. (cité à la page 11)
[28] B. Chen and M. X. Nguyen, “Pop : a hybrid point and polygon rendering system for large data,”
in Proc. of the conference on Visualization, 2001, pp. 45–52. (cité à la page 11)
[29] J. Chhugani, B. Purnomo, S. Krishnan, J. Cohen, S. Venkatasubramanian, and D. Johnson,
“vlod : High-fidelity walkthrough of large virtual environments,” IEEE Transactions on Visua-
lization & Computer Graphics, vol. 11, no. 1, pp. 35–47, 2005. (cité pages 11, 52 et 58)
[30] F. S. Cho and D. A. Forsyth, “Interactive ray tracing with the visibility complex.” Computer &
Graphics, vol. 23, no. 5, pp. 703–717, 1999. (cité à la page 43)
[31] Y. Chrysanthou, D. Cohen-Or, and D. Lischinski, “Fast approximate quantitative visibility for
complex scenes,” in Proc. of Computer Graphics International, 1998, p. 220. (cité à la page 44)
[32] Y. Chrysanthou and M. Slater, “Incremental updates to scenes illuminated by area light
sources,” in Proc. of Eurographics Rendering Workshop, 1997, pp. 103–114. (cité à la
page 147)
BIBLIOGRAPHIE 153
[33] J. H. Clark, “Hierarchical geometric models for visible surface algorithms,” Commun. ACM,
vol. 19, no. 10, pp. 547–554, 1976. (cité à la page 13)
[34] J. D. Cohen, D. G. Aliaga, and W. Zhang, “Hybrid simplification : combining multi-resolution
polygon and point rendering,” in Proc. of the conference on Visualization, 2001, pp. 37–44.
(cité à la page 11)
[35] D. Cohen-Or, Y. Chrysanthou, C. T. Silva, and F. Durand, “A survey of visibility for walk-
through applications,” IEEE Transactions on Visualization & Computer Graphics, 2002. (cité
pages 11, 13, 34 et 59)
[36] D. Cohen-Or, E. Sayer, A. Lerner, Y. Chrysanthou, and O. Deussen, “Aggressive visibility for
rendering extremely complex foliage scenes,” in Israel-Kora Conference on Geometric Mode-
ling and Computer Graphics, 2004. (cité à la page 53)
[37] D. Cohen-Or, A. Solomovic, and D. Levin, “Three-dimensional distance field metamorphosis,”
ACM Transactions on Graphics, vol. 17, no. 2, pp. 116–141, 1998. (cité à la page 126)
[38] D. Cohen-Or, C. Yorgios, C. Silva, and F. Durand, “A survey of visibility for walkthrough appli-
cations,” IEEE Transactions on Visualization & Computer Graphics, 2002. (cité à la page 59)
[39] D. Cohen-Or and E. Zadicario, “Visibility streaming for network-based walkthroughs,” in Proc.
of Graphics Interface, June 1998, pp. 1–7. (cité à la page 15)
[40] S. Coorg and S. Teller, “Temporally coherent conservative visibility,” in Proc. of SoCG, 1996.
(cité pages 41, 58 et 106)
[41] T. Cormen, C. Leiserson, and R. Rivest, Introduction à l’algorithmique. Dunod, 2002. (cité
pages 24, 60 et 95)
[42] W. T. Corrêa, J. T. Klosowski, and C. T. Silva, “Visibility-based prefetching for interactive out-
of-core rendering,” in Proc. IEEE Symposium on Parallel and Large-Data Visualization and
Graphics, 2003, pp. 1–8. (cité à la page 11)
[43] B. J. Daniel and Y. Mariette, Géométrie algorithmique. Ediscience International, 1995. (cité
pages 19 et 31)
[44] C.-O. Daniel, F. Gadi, H. Dan, and Z. Eyal, “Conservative visibility and strong occlusion for
viewspace partitioning of densely occluded scenes,” in Proc. of Eurographics, vol. 17, no. 3,
1998, pp. 244–254. (cité pages 48, 49 et 57)
[45] M. de Berg, M. van Kreveld, M. Overmars, and O. Schwartzkop, Computational Geometry :
Algorithms and Applications. Springer, 1999. (cité pages 23 et 24)
[46] P. Decaudin and F. Neyret, “Rendering forest scenes in real-time,” in Proc. of the Eurographics
Symposium on Rendering, june 2004, pp. 93–102. (cité à la page 11)
[47] X. Décoret, “Pré-traitement de grosses bases de données pour la visualisation interactive,”
Ph.D. dissertation, Université Joseph Fourrier, octobre 2002. (cité pages 37, 50, 51, 52, 59
et 60)
[48] X. Décoret, G. Debunne, and F. Sillion, “Erosion based visibility preprocessing,” in Proc. of
Eurographics Rendering Workshop, 2003. (cité à la page 51)
[49] O. Devillers, V. Dujmovic, H. Everett, X. Goaoc, S. Lazard, H.-S. Na, and S. Petitjean, “The
expected number of 3d visibility events is linear,” SIAM J. Comput., vol. 32, no. 6, pp. 1586–
1620, 2003. (cité à la page 41)
154 BIBLIOGRAPHIE
[50] L. Downs, T. Akenine-Möller, and C. Séquin, “Occlusion horizons for driving through urban
scenery,” in Proc. of the Symp. on Interactive 3D graphics, 2001, pp. 121–124. (cité pages 52
et 58)
[51] G. Drettakis and F. Sillion, “Interactive update of global illumination using a line-space hierar-
chy,” in Proc. of Siggraph, Aug 1997. (cité à la page 147)
[52] F. Duguet and G. Drettakis, “Robust epsilon visibility,” in Proc. of Siggraph, July 2002. (cité
pages 40, 44 et 45)
[53] F. Durand, G. Drettakis, and C. Puech, “The 3d visibility complex,” ACM Transactions on
Graphics, vol. 21, no. 2, April 2002. (cité à la page 43)
[54] F. Durand, “3d visibility : Analytical study and applications,” Ph.D. dissertation, Université
Joseph Fourier, Grenoble I, July 1999. (cité pages 11, 24, 33, 37, 38, 40, 42, 43, 44, 54, 60
et 84)
[55] F. Durand, G. Drettakis, and C. Puech, “The 3d visibility complex, a new approach to the
problems of accurate visibility,” in Proc. of Eurographics Rendering Workshop, Jun 1996, pp.
245–257. (cité pages 43, 45 et 94)
[56] F. Durand, G. Drettakis, and C. Puech, “The visibility skeleton : a powerful and efficient multi-
purpose global visibility tool,” in Proc. of Siggraph, 1997, pp. 89–100. (cité pages 44, 45
et 94)
[57] F. Durand, G. Drettakis, J. Thollot, and C. Puech, “Conservative visibility preprocessing using
extended projections,” in Proc. of Siggraph, 2000. (cité pages 50, 57 et 58)
[58] D. W. Eggert, K. W. Bowyer, C. R. Dyer, H. I. Christensen, and D. B. Goldgof, “The scale
space aspect graph,” IEEE Trans. Pattern Anal. Mach. Intell., vol. 15, no. 11, pp. 1114–1130,
1993. (cité à la page 35)
[59] M. Feixas, E. Acebo, P. Bekaert, and M. Sbert, “Information theory tools for scene discretiza-
tion,” in Proc. of Eurographics Rendering Workshop, 1999, pp. 103–114. (cité à la page 59)
[60] M. Feixas, E. Acebo, and M. Sbert, “Entropy of scene visibility,” in Proc. of WSCG, 1999, pp.
45–52. (cité à la page 59)
[61] M. Feixas, E. del Acebo, P. Bekaert, and M. Sber, “An information theory framework for the
analysis of scene complexity,” in Proc. of Eurographics, vol. 18(3), 1999, pp. 95–106. (cité
pages 59 et 146)
[62] P. Felkel, M. Bruckschwaiger, and R. Wegenkittl, “Implementation and complexity of the
watershed-from-markers algorithm computed as a minimal cost forest,” Computer Graphics
Forum, vol. 20, no. 3, 2001. (cité pages 126 et 144)
[63] J. D. Foley, A. van Dam, S. K. Feiner, and J. F. Hughes, Computer graphics : principles and
practice (2nd ed.). Addison-Wesley Longman Publishing Co., Inc., 1990. (cité pages 11
et 34)
[64] S. F. Frisken, R. N. Perry, A. P. Rockwood, and T. R. Jones, “Adaptively sampled distance
fields : A general representation of shape for computer graphics,” in Proc. of Siggraph, 2000,
pp. 249–254. (cité pages 126, 127, 136 et 137)
[65] K. Fukuda and V. Rosta, “Combinatorial face enumeration in convex polytopes.” Computatio-
nal Geometry, vol. 4, pp. 191–198, 1994. (cité à la page 70)
[66] K. Fukuda, “cdd package,”
http ://www.ifor.math.ethz.ch/˜fukuda/cdd home/cdd.html. (cité à la page 90)
BIBLIOGRAPHIE 155
[67] T. A. Funkhouser, “Ring : A client-server system for multi-user virtual environments,” in Proc.
of the Symp. on Interactive 3D graphics, 1995, pp. 85–92, 209. (cité à la page 11)
[68] T. A. Funkhouser, “Database management for interactive display of large architectural models,”
in Proc. of Graphics Interface, 1996, pp. 1–8. (cité à la page 11)
[69] Z. Gigus and J. Malik, “Computing the aspect graph for line drawings of polyhedral objects,”
IEEE Trans. Pattern Anal. Mach. Intell., vol. 12, no. 2, pp. 113–122, 1990. (cité pages 37
et 41)
[70] X. Goaoc, “Structures de visibilité globales : taille, calcul et dégénérescences,” Ph.D. disserta-
tion, Université Nancy 2, Mai 2004. (cité pages 19, 38, 40, 42, 43 et 45)
[71] E. Gobbetti and F. Marton, “Far Voxels – a multiresolution framework for interactive rende-
ring of huge complex 3d models on commodity graphics platforms,” ACM Transactions on
Graphics, vol. 24, no. 3, August 2005. (cité pages 10, 11 et 53)
[72] R. C. Gonzales and P. Wintz, Digital image processing (2nd ed.). Boston, MA, USA : Addison-
Wesley Longman Publishing Co., Inc., 1987. (cité pages 62 et 126)
[73] C. Gotsman, O. Sudarsky, and J. A. Fayman, “Optimized occlusion culling using five-
dimensional subdivision,” Computer & Graphics, vol. 23, no. 5, pp. 645–654, 1999. (cité
pages 52, 53 et 58)
[74] N. Greene, M. Kass, and G. Miller, “Hierarchical z-buffer visibility,” in Proc. of Siggraph,
1993. (cité à la page 14)
[75] E. F. Grove, T. M. Murali, and J. S. Vitter, “The object complexity model for hidden-surface
removal,” International Journal of Computational Geometry and Applications, vol. 9, no. 2,
pp. 207–217, 1999. (cité à la page 59)
[76] L. J. Guibas, R. Motwani, and P. Raghavan, “The robot localization problem,” SIAM J. Comput.,
vol. 26, no. 4, pp. 1120–1138, 1997. (cité à la page 55)
[77] E. Haines and J. R. Wallace, “Shaft culling for efficient ray-cast radiosity,” in Proc. of Euro-
graphics Rendering Workshop, 1991. (cité à la page 89)
[78] S. Hanan, Applications of Spatial Data Structures : Computer Graphics, Image Processing,
and GIS. Addison-Wesley, 1990. (cité à la page 137)
[79] P. Harry, “Conservative visibility preprocessing for efficient walkthrouh of 3d scenes,” in Proc.
of Graphics Interface, 1993, pp. 166–173. (cité à la page 41)
[80] D. Haumont, “Les imposteurs tridimensionnels,” Master’s thesis, Université Libre de Bruxelles,
2002. (cité à la page 11)
[81] D. Haumont, O. Debeir, and F. Sillion, “Volumetric cell-and-portal generation,” in Proc. of
Eurographics, vol. 22, no. 3, September 2003, pp. 303–312. (cité pages 124 et 138)
[82] D. Haumont, O. Mäkinen, and S. Nirenstein, “A low dimensional framework for exact polygon-
to-polygon occlusion queries,” in Proc. of the Eurographics Symposium on Rendering, 2005,
pp. 211–222. (cité à la page 67)
[83] W. P. Heinrich Hey, “Occlusion culling methods,” in Eurographics State of the Art Reports,
2001, pp. 21–42. (cité pages 11 et 34)
[84] E. Hidalgo and R. J. Hubbold, “Hybrid geometric - image based rendering.” Computer Gra-
phics Forum, vol. 21, no. 3, 2002. (cité à la page 11)
156 BIBLIOGRAPHIE
[85] L. Hong, S. Muraki, A. Kaufman, D. Bartz, and T. He, “Virtual voyage : Interactive navigation
in the human colon,” in Proc. of Siggraph, Augustus 1997, pp. 27–34. (cité pages 62, 125
et 133)
[86] W. Hua, H. Bao, Q. Peng, and A. R. Forrest, “The global occlusion map : a new occlusion
culling approach,” in Proc. of VRST, 2002, pp. 155–162. (cité pages 52, 58, 100, 102 et 118)
[87] W. F. H. Jiménez, C. Esperança, and A. A. F. Oliveira, “Efficient algorithm for computing
conservative portal visibility information,” in Proc. of Eurographics, vol. 19, no. 3, 2000. (cité
pages 60 et 63)
[88] C. B. Jones, “A new approach to the ‘hidden line’ problem,” Computer Journal, vol. 14, no. 3,
pp. 232–237, August 1971. (cité pages 13, 60, 61 et 62)
[89] D. Jung and K. Gupta, “Octree-based hierarchical distance maps for collision detection,”
in IEEE International Conference on Robotics and Automation, 1996, pp. 454–459. (cité
pages 126 et 127)
[90] J. Klein, J. Krokowski, M. Fischer, M. Wand, R. Wanka, and F. M. auf der Heide, “The ran-
domized sample tree : a data structure for interactive walkthroughs in externally stored virtual
environments,” in Proc. of VRST, 2002, pp. 137–146. (cité à la page 11)
[91] J. T. Klosowski and C. T. Silva, “The prioritized-layered projection algorithm for visible set
estimation,” IEEE Transactions on Visualization & Computer Graphics, vol. 6, no. 2, pp. 108–
123, /2000. (cité à la page 83)
[92] J. J. Koenderink and A. J. van Doorn, “The singularilarities of the visual mapping,” Biol. Cyber.,
vol. 24, pp. 51–59, 1976. (cité à la page 41)
[93] J. J. Koenderink and A. J. van Doorn, “The internal representation of solid shape with respect
to vision,” Biol. Cyber., vol. 32, pp. 211–216, 1979. (cité à la page 41)
[94] V. Koltun, Y. Chrysanthou, and D. Cohen-Or, “Virtual occluders : An efficient intermediate
PVS representation,” in Proc. of Eurographics Rendering Workshop, 2000. (cité pages 52, 58
et 102)
[95] V. Koltun, D. Cohen-or, and Y. Chrysanthou, “Hardware-accelerated from-region visibility
using a dual ray space,” in Proc. of Eurographics Rendering Workshop, 2001. (cité pages 54,
66, 68 et 70)
[96] S. Laine, “A general algorithm for output-sensitive visibility preprocessing,” in Proc. of the
Symp. on Interactive 3D graphics, 2005, pp. 31–39. (cité pages 57, 89, 95 et 119)
[97] S. Laine, T. Aila, U. Assarson, J. Lehtinen, and T. Akenine-Möller, “Soft shadow volumes for
ray tracing,” in Proc. of Siggraph, vol. 24, 2005. (cité à la page 81)
[98] L. Leblanc and P. Poulin, “Guaranteed occlusion and visibility in cluster hierarchical radiosity,”
in Proc. of Eurographics Rendering Workshop, June 2000, pp. 89–100. (cité à la page 49)
[99] S. Lefebvre and S. Hornus, “Automatic cell-and-portal decomposition,” INRIA, Tech. Rep.
4898, July 2003. (cité pages 61 et 144)
[100] Y.-W. Lei and M. Ouhyoung, “Carving : a novel method of visibility preprocessing for unres-
tricted three-dimensional environments.” The Visual Computer, vol. 13, no. 6, pp. 283–294,
1997. (cité pages 60 et 61)
[101] A. Lerner, Y. Chrysanthou, and D. Cohen-Or, “Breaking the walls : Scene partitioning and
portal creation,” in Proc. of Pacific Graphics, 2003. (cité pages 62, 140 et 144)
BIBLIOGRAPHIE 157
[102] T. Leyvand, O. Sorkine, and D. Cohen-Or, “Ray space factorization for from-region visibility,”
in Proc. of Siggraph, 2003. (cité pages 54 et 103)
[103] H. L. Lim, “Toward a fuzzy hidden surface algorithm,” in Proc. of Computer Graphics Inter-
national, 1992. (cité à la page 51)
[104] S. Lipschutz and M. Lipson, Algèbre linéaire. EdiScience (série Schaum), 2001. (cité à la
page 24)
[105] B. Lloyd and P. K. Egbert, “Horizon occlusion culling for real-time rendering of hierarchical
terrains.” in Proc. of the conference on Visualization, 2002. (cité pages 52 et 58)
[106] N. Low and A. Datta, “A new technique for rendering complex portals,” IEEE Transactions on
Visualization & Computer Graphics, vol. 11, no. 1, pp. 81–90, 2005. (cité pages 60, 62 et 63)
[107] D. Luebke and G. Chris, “Portals and mirrors : Simple, fast evaluation of potentially visible
sets,” in Proc. of the Symp. on Interactive 3D graphics, 1995. (cité pages 58, 60, 61, 62 et 63)
[108] P. W. C. Maciel and P. Shirley, “Visual navigation of large environments using textured clus-
ters,” in Proc. of the Symp. on Interactive 3D graphics, 1995, pp. 95–102, 211. (cité à la
page 11)
[109] A. P. Mangan and R. T. Whitaker, “Partitioning 3d surface meshes using watershed segmenta-
tion,” IEEE Transactions on Visualization & Computer Graphics, vol. 5, no. 4, pp. 308–321,
1999. (cité à la page 126)
[110] D. J. Meagher, “Efficient synthetic image generation of arbitrary 3-d objects,” in Proc. IEEE
Conf. on Pattern Recognition and Image Processing, 1982, pp. 473–478. (cité à la page 13)
[111] D. Meneveaux, E. Maisel, F. Coudret, and K. Bouatouch, “Structuration de scènes architectu-
rales complexes en vue de simulation d’éclairage,” IRISA, Tech. Rep. 1034, 1997. (cité à la
page 61)
[112] F. Meyer and S. Beucher, “Morphological segmentation,” Journal of Visual Communication on
Image Representation, vol. 1, no. 1, pp. 21–46, 1990. (cité pages 124, 126 et 137)
[113] F. Mora, L. Aveneau, and M. Mériaux, “Coherent and exact polygon-to-polygon visibility,” in
Proc. of WSCG, 2005. (cité pages 54, 66, 70, 71, 78 et 91)
[114] D. M. Mount and F.-T. Pu, “Binary space partitions in plücker space,” in International Work-
shop on Algorithm Engineering and Experimentation, 1999, pp. 94–113. (cité à la page 71)
[115] B. Nadler, G. Fibich, S. Lev-Yehudi, and D. Cohen-Or, “A qualitative and quantitative visibility
analysis in urban scenes,” Computer & Graphics, vol. 23, no. 5, pp. 655–666, 1999. (cité
pages 47, 49 et 58)
[116] I. Navazo, J. Rossignac, J. Jou, and R. Shariff, “Shieldtester : Cell-to-cell visibility test for
surface occluders,” Computer Graphics Forum, 2003. (cité pages 48, 49 et 83)
[117] L. Niepel, J. Martinka, A. Ferko, and P. Elias, “On scene complexity definition for rendering,”
in Proc. of WSCG, 1995, pp. 209–217. (cité à la page 59)
[118] S. Nirenstein, “Fast and accurate visibility preprocessing,” Ph.D. dissertation, University of
Cape Town, South Africa, 2003. (cité pages 19, 28, 42, 51, 68, 69, 70, 76, 77 et 87)
[119] S. Nirenstein and E. Blake, “Hardware accelerated aggressive visibility preprocessing using
adaptive sampling,” in Proc. of Eurographics Rendering Workshop, 2004. (cité pages 53, 57,
58 et 105)
158 BIBLIOGRAPHIE
[120] S. Nirenstein, E. Blake, and J. Gain, “Exact from-region visibility culling,” in Proc. of Euro-
graphics Rendering Workshop, 2002. (cité pages 27, 42, 43, 44, 48, 54, 59, 66, 69, 70, 71, 78,
79, 83, 89, 90, 91, 92, 93, 95 et 145)
[121] C. O, “Distance transformations : fast algorithms and applications to medical image proces-
sing,” Ph.D. dissertation, Université catholique de Louvain (UCL), Louvain-la-Neuve, Bel-
gium, October 1999. (cité à la page 127)
[122] R. Orti, F. Durand, S. Rivière, and C. Puech, “Using the visibility complex for radiosity com-
putation,” in Applied Computational Geometry, May 1996, pp. 177–190. (cité pages 43 et 45)
[123] R. Pajarola and J. Rossignac, “Compressed progressive meshes,” IEEE Transactions on Visua-
lization & Computer Graphics, vol. 6, no. 1, pp. 79–93, 2000. (cité à la page 11)
[124] I. Pantazopoulos and S. Tzafestas, “Occlusion culling algorithms : A comprehensive survey,”
Journal of Intelligent and Robotic Systems, 2002. (cité pages 11 et 34)
[125] M. Pellegrini, “Ray shooting on triangles in 3-space,” Algorithmica, vol. 9, no. 5, pp. 471–494,
1993. (cité pages 42 et 84)
[126] R. N. Perry and S. F. Frisken, “Kizamu : a system for sculpting digital characters,” in Proc. of
Siggraph, 2001, pp. 47–56. (cité à la page 126)
[127] H. Plantinga, “The asp : A continuous, viewer-centered object representation for computer
vision,” Ph.D. dissertation, University of Wisconsin, 1988. (cité à la page 41)
[128] H. Plantinga and C. R. Dyer, “Visibility, occlusion, and the aspect graph,” Journal of Computer
Vision, 1990. (cité pages 35, 41, 45, 55 et 98)
[129] D. Plemenos and M. S. and. M. Feixas, “On viewpoint complexity of 3d scenes,” in Proc.of
GraphiCon, 2004. (cité à la page 59)
[130] M. Pocchiola and G. Vegter, “The visibility complex,” in Proc. of SoCG, may 1993, pp. 328–
337. (cité à la page 43)
[131] F.-T. Pu, “Data structures for global illumination computation and visibility queries in 3-space,”
Ph.D. dissertation, University of Maryland, College Park, 1998. (cité pages 19, 66 et 71)
[132] S. Rivière, “Visibility computation in 2d polygonal environment,” Ph.D. dissertation, Université
Joseph Fourrier, 1997. (cité pages 40 et 43)
[133] J. Roerdink and A. Meijster, “The watershed transform : Definitions, algorithms and paral-
lelization strategies,” Fundamenta Informaticae, vol. 41, no. 1-2, pp. 187–228, 2000. (cité
pages 126 et 144)
[134] A. Rosenfeld and J. L. Pfaltz, “Sequential operations in digital picture processing,” Journal of
the ACM, vol. 13, no. 4, pp. 471–494, 1966. (cité pages 126, 131 et 136)
[135] S. Rusinkiewicz and M. Levoy, “QSplat : A multiresolution point rendering system for large
meshes,” in Proc. of Siggraph, 2000, pp. 343–352. (cité à la page 11)
[136] S. Rusinkiewicz and M. Levoy, “Streaming qsplat : a viewer for networked visualization of
large, dense models,” in Proc. of the Symp. on Interactive 3D graphics, 2001, pp. 63–68. (cité
à la page 11)
[137] P. V. Sander, X. Gu, S. J. Gortler, H. Hoppe, and J. Snyder, “Silhouette clipping,” in Proc. of
Siggraph, 2000, pp. 327–334. (cité pages 80 et 84)
[138] C. Saona-Vázquez, I. Navazo, and P. Brunet, “The visibility octree. a data structure for 3d
navigation,” Computer & Graphics, vol. 23, no. 5, pp. 635–643, 1999. (cité pages 48, 49 et 57)
BIBLIOGRAPHIE 159
[139] G. Schaufler, J. Dorsey, X. Décoret, and F. Sillion, “Conservative volumetric visibility with
occluder fusion,” in Proc. of Siggraph, 2000, pp. 229–238. (cité pages 49, 50, 52, 57 et 58)
[140] R. D. Schiffenbauer, “A survey of aspect graphs,” Polytechnic University, Brooklyn, Tech. Rep.
TR-CIS-2001-01, 2001. (cité à la page 41)
[141] J. Shade, D. Lischinski, D. H. Salesin, T. DeRose, and J. Snyder, “Hierarchical image caching
for accelerated walkthroughs of complex environments,” in Proc. of the Symp. on Interactive
3D graphics, 1996, pp. 75–82. (cité à la page 11)
[142] F. Sillion and G. Drettakis, “Feature-based control of visibility error : A multi-resolution clus-
tering algorithm for global illumination,” in Proc. of Siggraph, vol. 29, 1995, pp. 145–152. (cité
pages 54 et 146)
[143] C. Soler, “Représentations hiérarchiques de la visibilité pour le contrôle de l’erreur en simu-
lation de l’éclairage,” Ph.D. dissertation, Université Joseph Fourier (Grenoble), 1998. (cité
pages 54 et 146)
[144] C. Soler and F. Sillion, “Accurate error bounds for multi-resolution visibility,” in Proc. of Eu-
rographics Rendering Workshop, Jun 1996, pp. 133–143. (cité pages 54 et 146)
[145] A. J. Stewart, “Hierarchical visibility in terrains,” in Proc. of Eurographics Rendering Work-
shop, June 1997. (cité à la page 60)
[146] A. J. Stewart, “Fast horizon computation at all points of a terrain with visibility and shading
applications,” IEEE Transactions on Visualization & Computer Graphics, vol. 4, no. 1, pp.
82–93, March 1998. (cité pages 52 et 58)
[147] J. Stewart, “Hierarchical visibility in terrains,” Computer Graphics Forum, 1997. (cité pages 99
et 119)
[148] S. L. Stoev and W. Straßer, “Extracting regions of interest applying a local watershed transfor-
mation,” in Proc. of IEEE Visualization, 2000. (cité à la page 126)
[149] J. Stolfi, Oriented projective geometry. Academic Press Professional, Inc., 1991. (cité
pages 28 et 29)
[150] A. Sud, M. A. Otaduy, and D. Manocha, “Difi : Fast 3d distance field computation using gra-
phics hardware.” Computer Graphics Forum, vol. 23, no. 3, pp. 557–566, 2004. (cité pages 127
et 131)
[151] O. Sudarsky, “Dynamic scene occlusion culling,” Ph.D. dissertation, Technion Israel Institute
of Technology, 1998. (cité à la page 13)
[152] S. Teller and M. Hohmeyer, “Stabbing oriented convex polygons in randomized o(n2 ) time,”
Jerulsalem Combinatorics, vol. 178, pp. 311–318, 1993. (cité à la page 63)
[153] S. Teller, “Computing the antipenumbra of an area light source,” in Proc. of the Symp. on
Interactive 3D graphics, 1992. (cité pages 60, 63, 68 et 87)
[154] S. Teller, “Visibility computation in densely occluded polyhedral environments,” Ph.D. disser-
tation, UC Berkeley, CS department, 1992. (cité pages 19, 27, 37, 60, 61, 63, 84 et 137)
[155] S. Teller and P. Hanrahan, “Global visibility algorithms for illumination computations,” in Proc.
of Siggraph, vol. 27, July 1993, pp. 239–246. (cité pages 60 et 63)
[156] S. Teller and C. Séquin, “Visibility preprocessing for interactive walkthroughs,” in Proc. of
Siggraph, vol. 25, no. 4, July 1991, pp. 61–68. (cité pages 58, 60, 61 et 63)
160 BIBLIOGRAPHIE
[157] M. van de Panne and A. J. Stewart, “Effective compression techniques for precomputed visibi-
lity,” in Proc. of Eurographics Rendering Workshop, June 1999, pp. 305–316. (cité pages 14,
57, 58 et 117)
[158] G. Varadhan and D. Manocha, “Out-of-core rendering of massive geometric environments,” in
Proc. of the conference on Visualization, 2002, pp. 69–76. (cité à la page 11)
[159] I. Wald, “Realtime ray tracing and interactive global illumination,” Ph.D. dissertation, Compu-
ter Graphics Group, Saarland University, 2004. (cité à la page 91)
[160] I. Wald, A. Dietrich, and P. Slusallek, “An interactive out-of-core rendering framework for
visualizing massively complex models,” in Proc. of the Eurographics Symposium on Rendering,
2004, pp. 81–92. (cité à la page 11)
[161] Y. Wang, H. Bao, and Q. Peng, “Accelerated walkthroughs of virtual environments based on
visibility preprocessing and simplification.” Computer Graphics Forum, vol. 17, no. 3, pp. 187–
194, 1998. (cité pages 52 et 53)
[162] H. Weghorst, G. Hooper, and D. P. Greenberg, “Improved computational methods for ray tra-
cing,” ACM Transactions on Graphics, vol. 3, no. 1, pp. 52–69, 1984. (cité pages 53 et 105)
[163] I. William V. Baxter, A. Sud, N. K. Govindaraju, and D. Manocha, “Gigawalk : interactive
walkthrough of complex environments,” in Proc. of Eurographics Rendering Workshop, 2002,
pp. 203–214. (cité à la page 11)
[164] A. Wilson and D. Manocha, “Simplifying complex environments using incremental textured
depth meshes,” ACM Trans. Graph., vol. 22, no. 3, pp. 678–688, 2003. (cité à la page 11)
[165] P. Wonka, M. Wimmer, and D. Schmalstieg, “Visibility preprocessing with occluder fusion for
urban walkthroughs,” in Proc. of Eurographics Rendering Workshop, 2000, pp. 71–82. (cité
pages 51 et 60)
[166] P. Wonka, M. Wimmer, and F. Sillion, “Instant visibility,” in Proc. of Eurographics, vol. 20,
2001, pp. 411–421. (cité pages 51, 58 et 106)
[167] R. Yagel and W. Ray, “Visibility computation for efficient walkthrough of complex environ-
ments,” Presence, vol. 5, no. 1, pp. 45–60, 1996. (cité pages 49, 50 et 52)
[168] C. Yap and T. Dub’e, “The exact computation paradigm,” in Computing in Euclidian Geometry,
vol. 4, 1995, pp. 452–492. (cité à la page 95)
[169] S.-E. Yoon, B. Salomon, R. Gayle, and D. Manocha, “Quick-vdr : interactive view-dependent
rendering of massive models,” in Proc. of IEEE Visualization, 2004, pp. 131– 138. (cité à la
page 11)
[170] C. Zach and K. F. Karner, “Progressive compression of visibility data for view-dependent mul-
tiresolution meshes,” in Proc. of WSCG, 2003. (cité pages 58, 99 et 117)
[171] W. Zheng, H. Sun, H. Bao, and Q. Peng, “Rendering of virtual environments based on polygo-
nal & point-based models,” in Proc. of VRST, 2002, pp. 25–32. (cité à la page 11)