• Aucun résultat trouvé

Cône de vision et faces cachées

Dans le document The DART-Europe E-theses Portal (Page 112-115)

La visualisation 3D amène toujours la problématique de ce qui est visible ou invisible. En effet, des parties sont cachées dans la scène 3D telles que les façades à l’arrière des maisons.

Afin d’alléger la mémoire de la carte graphique, il serait bien de ne pas afficher ces parties. De plus les parties non présentes dans la fenêtre de visualisation n’ont pas besoin d’être chargées.

13.2.1 Cône de vision

Pour bien comprendre l’affichage 3D, il faut garder en tête que la scène vue à l’écran par l’utilisateur provient d’une caméra virtuelle que ce dernier peut bouger comme il le souhaite.

Une caméra, comme celle illustrée dans la figure 75, possède plusieurs caractéristiques dont :

— La profondeur de champ p : elle correspond à la profondeur maximum du champ de vision. Les éléments présents au delà de cette limite ne sont plus affichés

— la focale f : elle correspond à la distance entre l’objectif et l’obturateur de la caméra.

Elle a une incidence directe sur l’angle de champ de vision. Plus la focale est petite, plus l’angle du champ de vision est grand, et plus elle est grande, plus l’angle du champ est petit. Bien sûr, elle dépend de la surface de l’objectif, qui dans le cas de notre caméra virtuelle, peut être aussi modifiée.

— l’angle de la caméra : il est lié à la direction et au sens du vecteur définissant la caméra.

Figure 75 – Représentation du champ de vision de la caméra

Ces éléments permettent de définir un cône de vision. Nous calculons pour chaque élément affichable les centres et pour chacun nous calculons l’appartenance au cône de vision. Pour simplifier les calculs, considérons le cône de vision comme un triangle 2D avec une vue du dessus (voir figure 76), en effet, le cône de vision sera dans la plupart des cas orienté sur la ville et non dans le ciel, donc nous n’avons pas besoin de la 3D du champ de vision pour le calcul d’appartenance des éléments affichables.

Figure 76 – Le cône de vision correspond au champ de vision et la caméra et les triangles sous-jacents aux triangles constituant la cartographie

Nous ne prenons donc en compte que la profondeur et la focale pour obtenir les coordonnées des sommets du triangle. Pour illustrer cette appartenance au champ de vision, considérons le triangle ABC comme champ de vision et le point P, le point de test (voir figure 77).

Figure 77 – Détermination de l’appartenance d’un point P au champ de vision

Nous appliquons ensuite un principe de l’algèbre linéaire, les coordonnées barycentriques.

Une des règles utiles de ces coordonnées est la suivante : en calculant l’aire de chacun des triangles ABC,PBC,APC et ABP et en appliquant ces calculs :

α=aire(P, B, C)/aire(A, B, C) β =aire(A, P, C)/aire(A, B, C) γ =aire(A, B, P)/aire(A, B, C)

Cela est valable si et seulement si la somme des coordonnées α, β,γ est égale à 1, le point est dans le triangle ABC (voir algorithme en annexe G). Afin de ne pas avoir des zones non chargées sur le bord de l’écran vu que nous ne prenons que les centres des éléments, nous avons volontairement élargi le champ de vision pour avoir une zone tampon. Cette zone permet aussi de limiter les zones non chargées lors de mouvements de la caméra. Le résultat des triangles pris en compte est dessiné dans la figure 78.

13.2.2 Cas des faces cachées

Afin de ne pas charger en mémoire ces faces cachées un principe mathématique simple est mis en place. En effet, la caméra utilisée pour visualiser la scène 3D se sert d’un vecteur correspondant à la direction de la vue, en d’autres termes, le point de fuite. Ce vecteur a une direction, un sens et une longueur. La direction et le sens sont utiles au déplacement mais

Figure 78 – Une fois les calculs des coordonnées barycentriques faits, l’appartenance des triangles de topographie est trouvée. Les zones en rouge correspondent à l’élargissement volontaire de la zone d’affichage

également pour savoir si les faces doivent être affichées. Sachant que chaque face comprend une normale pour la gestion de la lumière (voir partie 10.3.3) en calculant le produit scalaire entre ces deux vecteurs, deux cas sont possibles :

— En premier, le résultat est positif, cela veut dire que les deux vecteurs ont des directions et sens similaires donc que la face a la même orientation que le vecteur de vision de la caméra.

— Dans le deuxième cas, le produit scalaire est négatif, ce qui se traduit par un sens opposé, alors le plan fait face à la caméra, celui-ci est alors visible.

Pour illustrer ce comportement prenons comme exemple une maison à quatre murs avec, pour chacun, une norme calculée. Lorsque que la norme a un sens opposé à celui du vecteur de vision, les façades sont visibles, les autres sont cachées. Ce test est fait pour chaque mouvement de caméra pour recalculer les produits vectoriels entre chacune des façades. Dans le cas de notre exemple, sans prendre en compte le cas des toits, seulement deux murs sont gérés par la carte graphique (voir figure 79). Sachant que la plus grande donnée visualisée est constituée de bâtiments, nous pouvons approximer que nous diminuons de moitié le nombre de triangles à afficher.

Figure 79 – Exemples de gestion de faces cachées grâce aux normales : les flèches rouges correspondent aux normales et la noire au point de vue de la caméra. A gauche la maison est dessinée avec ses 4 murs, une fois la prise en compte des normales, seulement 2 façades sont prises en compte pour l’affichage

Dans le document The DART-Europe E-theses Portal (Page 112-115)