• Aucun résultat trouvé

Description d’un problème de placement de caméra

objet X representé via sa sphère englobante

4.4 Exploitation des volumes sémantiques

4.5.2 Description d’un problème de placement de caméra

L’ensemble des propriétés décrites dans la section 4.2 est proposé aux utilisateurs via un langage de script défini comme une extension du langage Tcl/Tk [www2 ]. Cette solution est à la fois facile à appréhen- der pour l’utilisateur et peut être mise en œuvre de manière simple et rapide. Les propriétés sont simples à définir et le langage de script convient particulièrement bien aux tâches de tests de l’application ainsi qu’à l’évaluation des solutions fournies aux utilisateurs. Enfin, l’utilisation d’un tel type de langage per- met une insertion aisée de notre approche dans les modeleurs 3D existants en assurant le développement

136 CHAPITRE 4 — Les volumes sémantiques

Figure 4.20 – Principe de l’algorithme du Marching Cubes. Le maillage est calculé en fonction des positions d’un cube unitaire par rapport à la surface que l’on souhaite reconstruire.

Propriété Script

Cadrage Frame Obj xmin xmax ymin ymax

Orientation Orientation Obj viewing_angle

Projection Projection Obj proj_distance

Occlusion Occlusion Occder Occded type

Absence d’occlusion NoOcclusion Obj

Apparaître à l’écran SurEcran Obj

Être à gauche de EstAGaucheDe Obj1 Obj2

Être à droite de EstADroiteDe Obj1 Obj2

Table 4.1 – Langage de script associé aux différentes propriétés cinématographiques.

de greffons spécialisés et en facilitant l’intégration à des interfaces utilisateur.

La table 4.1 met en correspondance les propriétés et les commandes du langage de script. Comme nous l’avons signalé en section 4.2.5, la propriété de cadrage prend en paramètres les coordonnées des coins bas gauche et haut droit de la frame contenant l’objet fourni en second paramètre. Les coordonnées sont exprimées en espace écran et, de ce fait, des valeurs inférieures à −1 ou supérieures à 1 permettent de spécifier des cadres d’objets respectivement partiellement ou totalement hors-champ.

La propriété d’orientation nécessite la spécification d’un objet et d’un angle de vue parmi ceux pré- sentés dans la sous-section 4.2.2. Afin de définir un plan de vue attaché à un objet, l’utilisateur doit caractériser la propriété de projection par un objet d’intérêt associé à un type de plan de vue (cf. sous- section 4.2.1).

Les propriétés d’occlusion associent, quant à elles, des objets occultants (Occder) à des objets occultés (Occded), ainsi que le type d’occlusion souhaité (totale, partielle ou absence d’occlusion). Enfin, les contraintes de positionnement relatifs à l’écran sont définies entre deux objets.

CHAPITRE 4 — Les volumes sémantiques 137

4.5.3 Des propriétés aux volumes sémantiques

Cette sous-section est consacrée à l’expression des propriétés cinématographiques en volumes sé- mantiques et à leur implémentation grâce à la bibliothèque VTK. Rappelons que les fonctions de coût correspondantes à chaque propriété et nécessaires lors du processus de détermination du meilleur repré- sentant ont été définies dans le chapitre 3.

4.5.3.1 Propriété de projection

Pour mettre en œuvre cette propriété, il nous faut définir des coefficients multiplicateurs à appliquer à chacun des différents plans de vue (très gros plan, gros plan, etc.) en fonction de la taille de l’englobant de l’objet.

Ensuite, nous devons nous assurer que la taille de l’objet à l’écran soit au minimum celle calculée en fonction de la taille de son englobant et du facteur multiplicatif correspondant au plan de vue choisi par l’utilisateur. Cela revient à assurer que la projection d’un carré de coté au égal à la taille minimale sur une des dimensions de l’englobant de l’objet soit cohérente avec le type de projection désiré.

Nous devons calculer les matrices de projection nécessaires pour limiter les positions possibles de la caméra. Nous présentons les matrices Ry et Rz de rotation d’angles θ et φ autour des axes OY et OZ, ainsi que la matrice T de translation nécessaires au calcul du projeté d’un point 3D P (X, Y, Z) sur l’écran. T =     1 0 0 (X− XC) 0 1 0 (Y − YC) 0 0 1 (Z− ZC) 0 0 0 1     Ry =     cos θ 0 − sin θ 0 0 1 0 0 sin θ 0 cos θ 1 0 0 0 1     Rz=     cos φ sin φ 0 0 − sin φ cos φ 0 0 0 0 1 0 0 0 0 1     Le point P′(t)   X′ Y′ Z′ 

transformé de P dans le repère de la caméra est alors défini par :   X′ Y′ Z′  =  

(X− XC) cos θ cos φ− (Y − YC) cos θ sin φ + (Z− Z) sin θ (X− XC) sin φ + (Y − YC) cos φ

−(X − XC) sin θ cos φ + (Y − YC) sin θ cos φ + (Z− ZC) cos θ 

Puis P′′la projection de Psur l’écran :

P′′  X′′ Y′′  = X′ Z′ Y′ Z′ !

138 CHAPITRE 4 — Les volumes sémantiques

En pratique nous remplaçons les coordonnées du point P (X, Y, Z) par un intervalle de valeurs. Pour ce faire, nous multiplions la valeur du rayon de la sphère englobante de l’objet par le coefficient corres- pondant au type de plan de vue spécifié pour la propriété. Cet intervalle nous assure que la projection de l’objet est contenue entièrement dans le cadre et évite ainsi un respect partiel des propriétés de framing.

Nous ajoutons à la valeur obtenue, qui correspond à la position idéale de caméra, un epsilon autorisant une variation autour de celle-ci, afin de pouvoir définir deux valeurs : Rmin et Rmaxqui sont les rayons intérieurs et extérieurs de la sphère creuse représentant la région des positions cohérentes de caméra par rapport à la propriété spécifiée. Nous obtenons ainsi des volumes similaires à ceux présentés en figure 4.6 page 118.

Il est important de noter que les valeurs de distance focale obtenues à l’issue du processus de réso- lution vont avoir un impact très important sur l’aspect visuel de l’image résultat. Il est donc primordial de choisir avec précaution le domaine des valeurs associées à la variable modélisant la distance focale γ, sous peine d’obtenir des images fortement distordues.

4.5.3.2 Propriété d’orientation

La propriété d’orientation est définie par un vecteur orienté en fonction de l’orientation intrinsèque des objet de la scène. Chaque orientation proposée pour cette propriété (profil droit, vue de face, etc.) permet d’établir un angle de vue idéal entre la caméra et l’objet. Ici encore, ce résultat exact est modulé pour ajouter de la flexibilité au système, comme illustré en figure 4.21.

Face Dos TroisQuartDroitFace TroisQuartDroitDos ProfilDroit TroisQuartGaucheDos ProfilGauche TroisQuartGaucheFace

Figure 4.21 – Variations acceptées par rapport au vecteur d’orientation intrinsèque d’un objet.

Le calcul de l’orientation idéale en fonction du vecteur d’orientation intrinsèque d’un objet (−−→Vobj) est basé sur la création d’une base orthonormée à partir de ce vecteur. Nous devons déterminer deux vecteurs orthogonaux à −−→Vobj. Pour ce faire, nous appliquons la méthode suivante :

Soit un vecteur −→V (vX, vY, vZ), le vecteur −→V⊥ orthogonal à −→V est obtenu directement à partir des coordonnées de ce dernier :

−→

CHAPITRE 4 — Les volumes sémantiques 139

Un cas particulier reste toutefois à prendre en compte, c.-à-d. lorsque vY = vX = 0 (dans ce cas−→V⊥est instancié au vecteur nul). La solution consiste à tester si vY = 0 et à le remplacer par 1 si tel est le cas. Le vecteur Vdevient alors :

−→

V= (−1, 0, 0)

Soit ⊥ l’opérateur calculant le vecteur−→Ven fonction d’un vecteur −→V de l’espace tridimensionnel. Le dernier vecteur de la base orthonormée s’obtient naturellement en réalisant le produit vectoriel de −→V par−→V, c.-à-d. −−→V⊥⊥ =−→V ∧−→V(où ∧ représente l’opérateur de produit vectoriel). En simplifiant l’écriture, le système de coordonnées sera défini par :

Bobj =h−−→VXobj, −−→ VYobj, −−→ VZobji avec −−→ VXobj = −−→ Vobj −−→ VYobj = ⊥ ( −−→ VXobj) −−→ VZobj = −−→ VXobj∧ −−→ VYobj

L’angle de vue souhaité par l’utilisateur ainsi que le vecteur d’orientation intrinsèque de l’objet per- met de définir un angle α correspondant à une rotation des vecteurs −−→VXobj et −−→VZobj de la base orthonormée

Bobjcalculée précédemment. Le vecteur orientation depuis lequel la caméra doit filmer l’objet est calculé comme suit :

−−→

Icam =−(−−→VXobj∗ cos(α) +

−−→

VZobj∗ sin(α))

Afin d’éliminer les positions de caméra non cohérentes, il faut minimiser la différence entre −−→Icamet −−→

Vobj. Pour ce faire, nous devons transformer les angles d’Euler de la caméra (c.-à-d. φ, θ, ψ exprimés en radians) en leurs équivalents vectoriels, c’est-à-dire transformer une orientation angulaire en orien- tation vectorielle. Cette transformation est donnée par la relation suivante entre (θC, φC, ψC) et leurs équivalents (VXC, VYC, VZC) : VXC = cos(φC)∗ cos(θC+ π 2) VYC = sin(φC) VZC = cos(φC)∗ sin(θC+ π 2) 4.5.3.3 Propriété d’occlusion

La propriété d’occlusion est basée sur la création des cônes d’occlusion partielle et totale (cf. sous- section 4.2.3). Leur modélisation est possible grâce à (ou à cause de) la représentation des objets que nous avons adopté, c’est-à-dire une modélisation par sphères englobantes, cf. annexe A.2. Nous devons être capable de modéliser à la fois une occlusion partielle, une occlusion totale et une absence d’occlusion entre deux objets. Ces différentes classes d’occlusion donnent lieu à la génération de trois types de cônes différents, dont la construction sera traitée dans les paragraphes suivants.

Cônes d’occlusion partielle La figure 4.22 illustre les concepts sous-jacents à la conception de ces cônes, à partir des sphères englobantes de deux objets A et B d’une scène 3D.

L’idée première est de définir les plans tangents aux deux sphères englobantes SAet SB, de centre A et B représentant respectivement les objets A et B, de telle manière que ces plans se croisent et se coupent en une droite I. Le point d’intersection Inter de la figure 4.22 est ensuite obtenu comme étant

140 CHAPITRE 4 — Les volumes sémantiques

Inter

d

A_Inter

d

AB

R

A

R

B

d

T A_Inter

S

A

−→

V

obj

S

B

T

A

T

B

α

A

α

B

Figure 4.22 – Cônes d’occlusion partielle : les zones mises en évidence correspondent aux régions d’oc- clusion partielle d’un objet par un autre.

l’intersection entre de la droite I et du vecteur reliant les centres des deux objets (−−→Vobj). La position de ce point est calculée en fonction des rayons (RAet RB) des sphères englobantes SAet SB, du vecteur normé reliant les centres des deux objets (−−→Vobj), ainsi que des distances indiquées sur la figure. Nous devons tout d’abord calculer la distance entre le point d’intersection et l’objet A, ceci s’effectue en appliquant des notions trigonométriques de base :

dA_Inter= dAB− ( dAB RA

RB + 1

)

Grâce à cette distance, nous déterminons les coordonnées du point Inter (aligné avec A et B, il se trouve donc le long du vecteur −−→Vobj) :

Inter = A + −−→Vobj∗ dA_Inter

Nous possédons ainsi toutes les informations nécessaires pour calculer les valeurs manquantes pour la construction des cônes d’occlusion partielle:

dT angentA_Inter =

q

dA_Inter2− RA2 αA = arccos(dT angent_InterdA_Inter ) dB_Inter = dAB− dA_Inter dT angentB_Inter = q dB_Inter2− RB2 αB = arccos dT angentB _Inter dB_Inter

Nous avons calculé tous les paramètres nécessaires à la construction des deux cônes d’occlusion partielle en tant que surfaces implicites dans VTK. En effet, il suffit de spécifier un angle de rotation (en degrés) pour créer un cône, ensuite nous devons calculer les transformations nécessaires à son bon positionnement (centré sur les objets et orienté correctement). Ces transformations sont calculées à partir du vecteur −−→Vobj, de son opposé −−−→Vobjopp(= −−−→Vobj) et des coordonnées du point d’intersection Inter.

CHAPITRE 4 — Les volumes sémantiques 141

La construction des cônes d’occlusion partielle par le biais de la librairie VTK requiert des orienta- tions spécifiées en coordonnées sphériques, c.-à-d. trois coordonnées r, θ, φ. Ainsi nous devons transfor- mer les composantes des vecteurs −−→Vobjet −−−→Vobjoppen coordonnées sphériques. Ceci s’effectue par l’applica- tion des relations trigonométriques suivantes, dans lesquelles VX, VY et VZ représentent respectivement les composantes X, Y et Z du vecteur d’intérêt :

r = pVX2+ VY2+ VZ2 φ = arcsin(VZ

r ) θ = arctan(VY, VX)

Nous obtenons les valeurs (robj, φobj, θobj) d’un côté et (robjopp, φobjopp, θobjopp) d’autre part, en appli- quant ces relations à −−→Vobjet −−−→Vobjopp. Les coordonnées sphériques nous fournissent les angles nécessaires aux rotations et à la translation des cônes CA et CB. La dernière étape de la construction des cônes consiste en la définition d’une matrice de transformation dans VTK et en son application aux deux cônes formés à partir des angles αAet αB. Enfin, pour créer les surfaces implicites finales à partir de ces deux cônes, nous en réalisons l’union Booléenne, comme présenté en figure 4.10.

Cônes d’occlusion totale Concernant les cônes d’occlusion totale, une approche similaire est adoptée. Les plans que nous cherchons à construire sont ceux identifiés sur la figure 4.23. Grâce à ce schéma, nous identifions clairement deux cas de figure liés à la construction de ces cônes :

• les deux sphères ont un rayon identique : dans ce cas nous ne parlons pas de cônes puisque les plans illustrés sur la figure 4.23 ne se coupent pas, mais d’un cylindre d’occlusion.

• les sphères sont de rayons différents : le point d’intersection Inter n’est plus situé entre les deux objets A et B mais derrière l’un d’eux (celui dont la sphère sera la plus petite). Cependant, la méthode de construction reste identique à celle des cônes d’occlusion partielle.

R

A

R

B

S

A

S

B

T

A

T

B

Inter

−→

V

obj

d

AB

Figure 4.23 – Cônes d’occlusion totale.

Absence d’occlusion Modéliser une absence d’occlusion s’avère très facile par notre méthode. En effet, il suffit de construire un englobant général de la scène 3D, puis de construire les cônes d’occlusion partielle des deux objets impliqués dans la propriété d’absence d’occlusion. Enfin, nous appliquons une opération de différence Booléenne entre la surface implicite modélisant l’englobant de la scène et les cônes d’occlusion partielle.

142 CHAPITRE 4 — Les volumes sémantiques

Le volume résultant de cette différence représente les zones de l’espace de recherche pour lesquelles les objets impliqués dans la propriété ne s’occultent pas l’un l’autre. Nous pouvons donc représenter l’absence d’occlusion entre deux objets comme étant la négation de la propriété d’occlusion partielle calculée sur ces mêmes objets.

4.5.3.4 Propriété de cadrage

L’implémentation de la propriété de cadrage consiste en la donnée de deux fonctions objectif qui expriment (i) la projection de l’objet d’intérêt au milieu du cadre défini par l’utilisateur et (ii) la maximi- sation de la taille de projection de l’objet à l’intérieur de ce cadre (c.-à-d. maximiser la taille du projeté de l’objet par rapport au plus petit côté du cadre spécifié).

La première partie de la contrainte s’apparente donc à une contrainte de projection simple, alors que la deuxième partie est en partie dérivée de la contrainte de projection.

4.5.3.5 Propriété de positionnement relatif

Cette propriété a pour but de placer à l’écran deux objets l’un par rapport à l’autre et est basée sur la découpe de l’espace en fonction de plans de coupe. Toutefois, comme nous travaillons en 3D, ceux-ci doivent être définis par rapport à un vecteur normal.

O2 O1 X Y − →N − →D P

(a) Plan de découpe en vue de dessus.

X Z Y O1 −→O2 D − → N P

(b) Vue de côté du plan de découpe

Figure 4.24 – Plan de découpe lié à la propriété de positionnement relatif gauche/droite à l’écran.

Exemple 4.11 (Positionnement relatif « Gauche/Droite » à l’écran). Pour une propriété de position- nement relatif « Gauche/Droite » à l’écran entre deux objets A et B, nous définissons le plan de coupe (cf. figure 4.24) en utilisant le vecteur propre de l’objet A comme vecteur normal de ce plan. Si nous

CHAPITRE 4 — Les volumes sémantiques 143

utilisons une représentation paramétrique d’un plan :

(P ) : ax + by + cz + d = 0

Les coefficients a, b et c sont remplacés par les composantes du vecteur propre VA(VX, VY, VZ), nous avons donc la définition suivante du plan P :

(P ) : VXx + VYy + VZz + d = 0 (4.4)

La valeur d est quant à elle calculée en résolvant l’équation 4.4 avec pour valeurs (x, y, z) les coordon- nées du centre de l’objet A qui appartient au plan P .