Le processus
de visualisation

INTRODUCTION

PROJECTIONS PLANAIRES
Définition
Propriétés

OPÉRATIONS POUR UNE VISUALISATION
Repère global -> repère observateur
Projection parallèle
Projection en perspective

IMPLANTATION DANS LES LIBRAIRES GRAPHIQUES

 

WB01624_.gif (281 octets) RETOUR

Introduction

Pour afficher un objet sur un écran graphique, on effectue un changement de repère de manière à transformer en "coordonnées écran" les coordonnées de l’objet connues dans le repère global.

On passe ainsi de coordonnées dans R3 à des coordonnées dans R3 qui seront utilisées en tant que telles si l'élimination des parties cachées est employée ou transformées en coordonnées dans R2 sinon.

On effectue une "projection" car on réalise une transformation ayant pour but de projeter la silhouette d'un objet sur un écran virtuel placé entre l'objet et l'observateur (appelé aussi centre de projection).

Image001.gif (3632 octets)

Différents types de projections:

  • les projections planaires (écran de projection plan),

  • les projections non planaires (écran de projection non plan).

Types de projections

Hypothèses préliminaires

Le plan xz du repère global est le plan de l’horizontale (x à droite, z derrière).

L’axe y est la verticale (orientée vers le haut).

Problème: visualiser une scène selon un point de vue particulier tel que par exmple défini par la position et l'orientation de l'observateur.

Deux changements de repère successifs:

  • Un premier pour obtenir le point de vue souhaité dans un repère intermédiaire: le repère de l'observateur (il en est l'origine, l'axe -Oz est son axe de vision). Le repère intermédiaire reste orthonormé.

  • Un second pour permettre la réalisation de la projection d'affichage. Le repère peut alors ne plus être orthonormé.

Image007.gif (1492 octets)

Projections planaires

Définition

L'écran de projection est plan. On définit deux modes de projection:

  • les représentations en projection parallèle,

  • les représentations en projection en perspective.

Les projections parallèles sont caractérisées par un centre de projection situé à l'infini ce qui a pour conséquence:

  • l’existence d'un axe unique de projection et donc le parallélisme de tous les vecteurs décrivant les projections,

  • l'indépendance entre la taille d'un objet une fois projeté et sa distance à l'observateur.

Image003.gif (4424 octets)

Projection parallèle orthographique
(axe de projection orthogonal au plan de projection)

Dans le cas des projections en perspective le centre de projection n'est pas situé à l'infini. On n'a donc pas d'axe de projection unique.

Image001.gif (3632 octets)

Projection en perspective

Propriétés particulières

Non exhaustivement:

  • Les projections parallèles conservent les parallélismes! Le dessin en perspective ne conserve pas systématiquement les parallélismes.

  • Les représentations en perspective nous assurent qu’un objet deux fois plus loin qu’un autre apparaîtra deux fois plus petit à l'écran. Les projections parallèles nous assurent d'un objet conservera la même taille à l'écran quelle que soit sa position dans la scène.

  • Les représentations en perspective ne conservent pas systématiquement la rectitude des lignes droites.

  • Aucun de ces modes ne conserve les angles.

  • Une représentation en perspective sera beaucoup plus proche de la réalité perçue par l’œil qu’une représentation en projection parallèle (surtout pour les objets proches de l’observateur où les déformations sont très importantes).

 

Squelette d’un cube vu de face et de très près
(en projection parallèle à gauche,
en perspective à droite).

Image005.gif (18394 octets)

Image006.gif (20007 octets)

Projection orthographique en haut, projection en perspective sur les trois autres images avec rapprochement de l'observateur

Opérations à réaliser pour une visualisation

Les opérations à mettre en œuvre pour visualiser un objet sont:

  • Obtention d'une représentation de cet objet dans le repère global.

  • Définition de la transformation géométrique permettant de transformer les coordonnées de l'objet du repère global vers le repère intermédiaire (repère de l'observateur).

  • Application de la transformation géométrique transformant les coordonnées de l'objet depuis le repère de l'observateur vers les coordonnées écran (R3).

  • Affichage par suppression d'une des coordonnées 3D (projection).

Changement du repère global vers le repère de l'observateur

Une matrice de transformation en coordonnées homogènes nous permet de transformer des coordonnées globales en coordonnées dans le repère de l'observateur.

Les informations connues sur l'observateur (localisation et orientation) nous permettent de calculer cette matrice.

Soit la position Po = Image061.gif (1279 octets) de l'observateur dans le repère global.

Les informations permettant de calculer l'orientation de l'observateur peuvent être de différents ordres:

  • la position Pv = Image062.gif (1222 octets) d'un point directement observé (la position d'un point qui devra se trouver sur l'axe z après le changement de repère) et un angle de rotation q autour de l'axe (Po,Pv) (considéré par rapport à une position de référence, la verticale par exemple),

Image063.gif (3736 octets)

  • 3 angles de rotation q1, q2 et q3 ne portant pas sur le même axe (permettant donc de définir toute orientation dans l'espace),

  • d'autres informations.

Pour une visualisation proche de celle réalisée par la posture humaine, on adopte fréquemment une transformation telle que les verticales soient conservées.

Un vecteur initialement vertical (x = 0, z = 0) sera vertical après transformation et projection sur l'écran (x = 0).

Image064.gif (3177 octets)

Une première matrice de transformation

On connaît Po et trois rotations qy, qx, qz intervenant dans cet ordre dans le repère global pour fixer l'orientation de l'observateur.

Le calcul de la matrice de transformation est trivial, il s'agit du produit matriciel des 4 matrices T, Ry, Rx et Rz.

T est la translation de Image065.gif (1318 octets) déplaçant Po en l'origine.

M = Rz.Rx.Ry.T

=Image066.gif (3084 octets)

Une deuxième matrice de transformation

On connaît Po, Pv et on désire conserver les verticales. Po est ramené à l'origine par une translation T = Image067.gif (1556 octets).

Problème: trouver les rotations qu'il faut effectuer pour amener le point Pv sur le demi axe z négatif tout en conservant "vertical" tout vecteur vertical.

On effectue tout d'abord une rotation Ry par rapport à l'axe Oy, puis ensuite une rotation Rx par rapport à Ox.

Image068.gif (3725 octets)

Rx .Ry =Image069.gif (2828 octets)

         = Image070.gif (2279 octets)

Verticalités?

Appliquée au vecteur Image071.gif (1353 octets), le vecteur Image072.gif (1520 octets)est obtenu. Sa coordonnée x est égale à 0 quels que soient y et qx.

On a donc M = Rx.Ry.T =

Image073.gif (2706 octets)

Image074.gif (2868 octets)

Problème: déterminer les valeurs de cos(qy), sin(qy), cos(qx) et sin(qx) pour connaître parfaitement M.

Image5.gif (903 octets)= Image076.gif (1282 octets) vecteur normé dirigé de Po vers Pv.

On établit Image5.gif (903 octets) = Image075.gif (1353 octets)->

M =Image079.gif (3224 octets)

avec a = Image077.gif (919 octets) = Image078.gif (1066 octets)

Il est à noter qu'au moyen de cette formulation, on définit la position de l'observateur et sa direction de visée par son vecteur.

Représentation en projection parallèle

On trouve les coordonnées d'un sommet Image080.gif (1197 octets) du repère global en lui appliquant la matrice précédente.

Pour réaliser l'affichage on utilise les coordonnées x et y obtenues après mise à l'échelle (z fournit la profondeur écran si elle est nécessaire).

Représentation en perspective

Soit un plan de projection Pproj orthogonal à l'axe de visé Oz.

Chaque point Pp = (xp,yp) projection d'un sommet P sur Pproj sera l'intersection entre (P,O) et le plan Pproj.

Image089.gif (1085 octets)

Vue selon l'axe des y

Image090.gif (2884 octets)

Vue selon un point de vue aléatoire

Soit d la distance entre O et Pproj, -> xp = Image083.gif (931 octets) et yp = Image084.gif (940 octets).

On considère w = Image085.gif (900 octets), -> xp = Image086.gif (917 octets) et yp = Image087.gif (924 octets).

w est calculé avec la matrice Mper = Image082.gif (1678 octets) qui appliquée à P = Image080.gif (1197 octets) permet de trouver Image081.gif (1234 octets).

Si on désire connaître la position de projection en perspective d'un point P = Image080.gif (1197 octets), il suffit de lui appliquer la matrice produit de M par Mper:

Image091.gif (3806 octets)

pour obtenir le point de coordonnées Image092.gif (1245 octets).

On divise x' par w, y' par w et on utilise ces valeurs comme x et y à l'écran (z' fournit directement la profondeur écran).

Implantation généralement constatée au sein des librairies graphiques 3D

Deux niveaux de modélisation pour la construction d'une visualisation:

  • la modélisation de la scène,

  • la modélisation de la "caméra" qui va visualiser la scène.

Utilisation explicite ou implicite de matrices de transformation pour chacune de ces phases.

Possibilité de changer chacune de ces phases indépendamment de l'autre.