• Aucun résultat trouvé

4 Balayage sensible `a la taille du r ´esultat

Nous pr´esentons maintenant un algorithme de construction du complexe de visibilit´e statique dont la com-plexit´e d´epend de la taille du r´esultat (c’est-`a-dire du complexe). Notre algorithme est un double balayage avec une ´etape de pr´ecalcul. Tout d’abord, la sc`ene est balay´ee par des plans horizontaux tandis qu’un complexe de visibilit´e 2D [PV96b] de laϕv-tranche est mis `a jour (figure 2.16(b)). Nous balayons ensuite selonϕ(figure 2.16(c)) mais certaines 0-faces ne peuvent ˆetre d´etect´ees durant ce balayage et doivent ˆetre pr´ecalcul´ees.

A

FIG. 2.15:Ev´enement de visibilit´e temporel et complexe de visibilit´e temporel. (a) Situation dans l’espace 3D.´ Tandis que A se d´eplace vers le haut, il devient visible depuis C au temps t2o `u un segment (A++B++C) se trouve dans un plan tangent aux trois sph`eres. L’enveloppe de B++C est repr´esent´ee comme un cˆone tronqu´e.

Seulement deux 0-faces T++T+T sont repr´esent´ees, bien qu’il y en ait en fait 6. (b) Faces de dimension 0 et 1 du complexe de visibilit´e pour chaque pas de temps (il s’agit d’une projection et non pas d’une tranche : les ensembles 1D sont repr´esent´es comme des courbes). Au temps t3nous n’avons pas mis d’´etiquette pour toutes les 1-faces. Remarquons que le graphe des 1-faces n’est pas planaire, pour le repr´esenter nous ne pouvons

´eviter les croisements de A++C. (c) Structure d’une partie du complexe de visibilit´e temporel dans l’espace des segments temporels. Seules les faces de dimension 0, 1 et 2 sont repr´esent´ees. Les faces du complexe de visibilit´e statique repr´esent´ees en (b) sont des tranches du complexe de visibilit´e temporel. Les 1-faces du complexe temporel sont repr´esent´ees comme de fins cylindres. Elles correspondent aux sommets du complexe statique et n’apparaissent qu’en t2. Remarquons qu’`a cause de la non-planarit´e des tranches, nous ne pouvons repr´esenter les 2-faces du complexe temporel sans des intersections au milieu.

4.1 Balayage de la tranche initiale

Pour construire laϕ-tranche initiale, nous commenc¸ons par maintenir uneϕv-tranche du complexe de visi-bilit´e, qui correspond au complexe de visibilit´e 2D [PV96b] du plan de balayage. Commenc¸ons par rapidement rappeler quelques points au sujet du complexe de visibilit´e 2D (voir aussi [PV96b, PV96a, Riv97a, DP95b]).

Il s’agit de la partition des segments libres maximaux du plan en fonction des objets qu’ils touchent. Ses faces 2D sont des composantes connexes de segments qui touchent les mˆemes objets `a leurs extr´emit´es (ce sont des ϕv-tranches des 4-faces du complexe de visibilit´e 3D). Elles ont pour fronti`eres dans l’espace dual des arˆetes qui correspondent `a des segments tangents aux objets (ϕv-tranches des 3-faces T ) et des sommets qui correspondent `a des bitangentes (ϕv-tranches des 2-faces T+T ). Puisqu’une vue correspond aux extr´emit´es

Type Configuration

T+T+T+T+T

T++T+T+T

T++T++T

T+T+T+V

T++T+V

T+V+V

TAB. 2.3: Sommets du complexe de visibilit´e temporel. Ces configurations peuvent survenir `a cause du mou-vement de n’importe lequel des objets, ou bien de tous.

ϕ

θ

u

v

θ ϕ

(a) (b (c)

FIG. 2.16: (a) Param´etrisation des directions. (b) Balayage initial selon v. (c) Balayage selonϕ.

des segments qui passent par le point de vue, cela revient `a traverser le complexe de visibilit´e 2D le long du chemin 1D qui correspond `a ces segments. L’objet vu change lorsque le chemin traverse une arˆete du complexe de visibilit´e 2D. Pour les sc`enes polygonales, la chaˆıne d’arˆetes du complexe de visibilit´e 2D qui correspond `a un sommet de la sc`ene est la vue autour de ce sommet.

Lors de notre balayage, le complexe de visibilit´e 2D doit ˆetre mis `a jour quand le plan de balayage est tangent `a un objet, ou lorsqu’il contient un sommet de poly`edre, ou encore quand trois tranches d’objets ont une tangente commune en 2D.

Lorsque le plan de balayage commence `a couper un objet, nous devons l’ins´erer dans le complexe 2D. Pour cela nous calculons la vue 2D autour du point de tangence ou autour du sommet en utilisant le complexe 2D courant. Cela peut ˆetre fait en temps O(v log n), o `u v est la taille de la vue, en utilisant les techniques d´ecrites par Rivi`ere [Riv97b]. Quand le chemin qui correspond `a cette vue traverse une arˆete du complexe 2D, cela correspond `a une nouvelle face T+T ou T+V du complexe de visibilit´e 3D. Dans le cas du premier sommet d’un poly`edre, la vue doit ensuite ˆetre restreinte pour chaque arˆete 3D du poly`edre, ce qui correspond en 2D aux vues depuis les sommets du polygone 2D qui est la tranche du poly`edre (figure 2.17).

De mani`ere sym´etrique, lorsqu’un objet arrˆete de couper le plan de balayage, les faces correspondantes du complexe 2D doivent ˆetre supprim´ees. Ces faces sont celles situ´ees le long de la chaˆıne d’arˆetes de l’espace dual qui correspond aux segments tangents `a cet objet. Leur suppression peut ˆetre effectu´ee en temps O(v)o `u v est la taille de la vue 2D depuis le dernier sommet du poly`edre ou depuis le point de tangence.

Lorsqu’un sommet interm´ediaire d’un poly`edre est balay´e, les vues 2D autour des sommets 2D

correspon-FIG. 2.17:Lorsque le premier sommet d’un poly`edre est balay´e, la vue 2D correspondante est calcul´ee dans le plan de balayage et est restreinte pour chacune des arˆetes adjacentes au sommet balay´e, en consid´erant l’angle form´e par les deux polygones adjacents.

1 2 3

1

2 3

FIG. 2.18: Fusion-restriction d’une vue autour d’une arˆete lorsqu’un sommet est balay´e

dant aux arˆetes 3D en dessous du sommet sont fusionn´ees, et la vue autour du sommet doit ˆetre restreinte pour chaque arˆete 3D au dessus, de la mˆeme mani`ere que pour les premiers sommets (figure 2.18). Chaque op´eration prend un temps lin´eaire en fonction de la taille de la vue autour du sommet (et du nombre d’arˆetes adjacentes bien sˆur).

Tandis que le plan se d´eplace, trois tranches d’objets peuvent avoir une tangente commune en 2D, ce qui correspond `a une 1-face T+T+T du complexe 3D. Dans ce cas, le complexe 2D est mis `a jour en utilisant une m´ethode due `a Rivi`ere [Riv97b]. En r´esum´e, pour chaque bitangente active on calcule la valeur de v pour laquelle un troisi`eme objet deviendra tangent, et on stocke ces ´ev´enements de balayage dans une queue de priorit´e, ce qui n´ecessite un temps O(log n)pour chaque nouvelle bitangente.

Pour finir, une bitangente 2D peut correspondre `a un plan de tangence commun. Pour chaque bitangente, nous calculons donc la valeur de v pour laquelle elle correspond `a un plan de tangence commun, et nous ins´erons cette valeur dans la queue d’´ev´enements de balayage. Bien entendu, cet ´ev´enement doit ˆetre supprim´e si la bitangente est supprim´ee `a cause d’un ´ev´enement T+T+T .

4.2 Principe du balayage en ϕ

Nous avons maintenant obtenu la ϕ-tranche initiale du complexe de visibilit´e 3D. Elle correspond `a la partition des segments contenus dans des plans horizontaux. Dans cetteϕ-tranche, les 1-faces du complexe ont dimension 0, etc.

Au cours du balayag enϕ, (figure 2.21(c)) nous maintenons cetteϕ-tranche ainsi qu’une queue de priorit´e d’´ev´enements de balayages. Dans ce qui suit, nous ne d´ecrivons que la mise `a jour des 1-faces du complexe de visibilit´e 3D. La mise `a jour des faces de plus grande dimension est effectu´ee grˆace au catalogue d’adjacences

O1

qui, pour des raisons de place, est renvoy´e en annexe A. Comme nous l’avons d´ej`a signal´e, le nombre de faces de dimension sup´erieure adjacentes `a une face donn´ee est born´e. Leur mise `a jour ne modifie donc pas la complexit´e de l’algorithme.

Ce balayage selonϕpeut ´egalement ˆetre appr´ehend´e en projetant les 1-faces et les sommets du complexe 3D sur la sph`ere des directionsS2repr´esent´ee figure 2.16. Le balayage y correspond `a la rotation d’un grand cercle. Cependant, certaines intersections de 1-faces surS2ne correspondent `a aucun sommet du complexe (la mˆeme diff´erence existe entre un sommet-t (t-vertex) dans une vue et un v´eritable sommet de la sc`ene). Cette repr´esentation peut ˆetre utile pour se repr´esenter le balayage car elle permet le parall`ele avec la rotation d’une vue orthographique.

Nous prouvons tout d’abord que certains ´ev´enements de balayage sont r´eguliers : une composante 1D de la ϕ-tranche disparaˆıt quand ses deux extr´emit´es fusionnent. Ces ´ev´enements peuvent ˆetre facilement d´etect´es en calculant pour chaque composante 1D de laϕ-tranche, la valeur deϕpour laquelle ils disparaissent. Nous nous int´eresserons ensuite au cas des ´ev´enements irr´eguliers.