Le processus |
|||||||||||||||||||||||||||||||||||
INTRODUCTION
PROJECTIONS
OPÉRATIONS
IMPLANTATION
|
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 (repère de modélisation).
On passe ainsi dans un premier temps de coordonnées globales de modélisation dans R3 à des coordonnées
"observateur" dans R3 (repère lié à la caméra de visualisation). 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). Différents types de projections:
Hypothèses préliminaires Le plan xz du repère global est le plan de l’horizontale (x vers la droite, z vers l'arriè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 exemple défini par la position et l'orientation de l'observateur. Deux changements de repère successifs:
Types de projections planaires L'écran de projection est plan. On utilise généralement un des deux modes de projection:
Les projections parallèles sont caractérisées par un centre de projection (position virtuelle de l'observateur) situé à l'infini. Ceci a pour conséquence:
La projection parallèle la plus classique est la projection parallèle orthographique où l'axe de projection est orthogonal au plan de projection.
Dans le cas des projections en perspective le centre de projection (la position de l'observateur) n'est pas situé à l'infini. On n'a donc pas d'axe de projection unique.
Propriétés particulières des projections Non exhaustivement:
Opérations à réaliser pour une visualisation Les opérations à mettre en œuvre pour visualiser un objet sont:
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 = de l'observateur dans le repère global. Les informations permettant de calculer l'orientation de l'observateur peuvent être de différents ordres:
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).
Une première matrice de transformation On connaît Po et trois rotations d'angle qy autour de Oy, qx autour de Ox, qz autour de Oz 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 déplaçant Po en l'origine. M = Rz.Rx.Ry.T = Une deuxième matrice de transformation On connaît Po, Pv et on désire conserver verticales les verticales (axes orientés en y dans le repère global). Po est ramené à l'origine par une translation T = . Problème: Trouver les rotations qu'il faut effectuer pour amener le point Pv sur le demi axe -Oz tout en conservant "vertical" tout vecteur "vertical". On effectue tout d'abord une rotation Ry d'angle qy par rapport à l'axe Oy, puis ensuite une rotation Rx d'angle qx par rapport à Ox.
Verticalités?
Le vecteur
est obtenu par produit du vecteur
(x=z=0 -> vecteur vertical) par la matrice Rx.Ry. La coordonnée x est égale à 0 quels que soient y,
qx et qy On a donc M = Rx.Ry.T =
Problème: Déterminer les valeurs de cos(qy), sin(qy), cos(qx) et sin(qx) pour connaître parfaitement M. = vecteur normé dirigé de Po vers Pv. On établit = -> M = avec a = = 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 "regard". Représentation en projection parallèle orthographique Les coordonnées projetées d'un sommet du repère global sont trouvées en le multipliant par la matrice précédente. Pour réaliser l'affichage, on utilise directement les coordonnées xpar et ypar obtenues après mise à l'échelle. zpar fournit la profondeur écran si elle est nécessaire. 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.
Vue selon l'axe des y
Vue selon un point de vue arbitraire
Soit d la position en z du plan de projection (d < 0.0, -d = distance en z entre O et Pproj),
On considère w = , w est calculé avec la matrice Mper = qui appliquée à P = permet de trouver . Pour connaître la position de projection en perspective d'un point P = du repère global, on le multipliera par la matrice produit de M par Mper:
pour obtenir le point de coordonnées . On divisera ensuite x' par w, y' par w et on utilisera 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:
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. |