|
|||||||||||||||||||||||||||||||||||||||||||
|
Chers lecteurs et lectrices, je vous souhaite le bonjour. Dans ce troisième volet des aventures au coeur même de la troisième dimension, nous allons étudier les différents moyens permettant de transformer un objet tridimensionnel en une image bidimensionnelle pour l'affichage. Ce passage de l'espace au plan s'effectue à l'aide d'une transformation appelée "projection". Le mois dernier, je vous ai proposé un petit programme contenant une fonction transforme() contenant des équations de projection. Cette projection, comme bien d'autres, vous sera expliquée en détail dans cet article. Principe La projection consiste donc à simuler, en deux dimensions, des objets en trois dimensions tels qu'on les perçoit avec nos yeux. Toute projection de l'espace sur le plan peut être représentée par une matrice homogène 4x4 (ne vous affolez pas, je vous explique tout de suite). Un point P (3D) est projeté en un point P' (2D) en multipliant ses coordonnées homogènes [X,Y,Z,W] par la matrice de projection Mp. Classification des projections Une projection est définie par une surface de projection et un centre de projection. La surface de projection est généralement choisie plane (ce n'est nullement une obligation et certains domaines techniques nécessitent l'utilisation de projections non planes). Chaque point de l'objet étant projeté suivant des rayons rectilignes issus d'un centre de projection, on appelle ce type de projection "projection géométrique plane". Elle représente l'avantage qu'un segment de droite se transforme en un segment de droite, ce qui ne nécessite donc que le calcul des projections de ses extrémités. On peut décomposer les projections géométriques planes en deux catégories.
Les projections parallèles 1. Projections axonométriques Les projections axonométriques représentent le premier sous-groupe des projections parallèles. On définit un plan quelconque de l'espace comme plan de projection et on projette chaque point sur ce plan suivant la normale au plan (Fig III). 2. Les projections orthographiques Les projections orthographiques représentent les projections axonométriques les plus simples. Il s'agit simplement de supprimer une des coordonnées pour permettre le passage de la 3D à la 2D. On obtient respectivement les vues de face (suppression de X) de côté (suppression de Y) et de dessus (suppression de Z). Sous forme matricielle, on représente : La vue de face par une matrice : Les projections axonométriques générales permettent de choisir librement l'angle d'observation d'une scène en définissant une direction de projection quelconque. Cette projection consiste à exprimer les coordonnées des objets de la scène dans un repère associé au plan de projection et ensuite à effectuer une projection orthographique en vue de face pour éliminer la coordonnée X et obtenir ainsi une image 2D. La direction de vision est donnée par deux points :
Soit après un calcul long et fastidieux, Maxo vaut :
X' = A.X + B.Y + C.Z -Ty.W Y' = D.X + E.Y + F.Z -Tz.W W' = W Et bien sûr on a Z' = 0 ce qui est tout à fait normal car on élimine une dimension. 4. Les projections dimétriques Les projections dimétriques sont caractérisées par le fait que deux des trois vecteurs unités du repère 3D seront de même longueur après projection. Il s'agit d'un cas particulier de la projection axonométrique générale. La matrice de projection dimétrique Mdim est la même que la matrice de projection axonométrique générale, mais il existe une contrainte sur les angles teta et phi. En effet, pour que deux des trois vecteurs unités soient de même longueur après projection, il faut introduire une contrainte sur phi, une fois que l'on connaît teta. La contrainte est la suivante : soit A = SQR((sin^2(teta))/(1-sin^2(teta))). On a phi = ARCSIN(A), où ARCSIN() est la fonction inverse de sinus (elle doit se trouver dans toute bonne bibliothèque de fonctions qui se respecte). NDLR : mathrans.library dans le répertoire "libs" d'une disquette Workbench. 5. La projection isométrique Autre cas particulier de projection axonométrique, la projection isométrique. La projection isométrique est telle que la longueur des trois vecteurs unitaires est conservée par le passage 3D en 2D. La matrice de projection isométrique Miso est égale à la multiplication de la matrice de projection orthographique en vue de face (Mf) et de trois rotations particulières R(x,0) angle = 0 degré, R(y,35.624) angle 35.624 degrés et R(z,45) angle = 45 degrés. Miso = Mf.R(x,0).R(y,35.624).R(z,45) D'où Miso vaut après calcul : 6. Les projections obliques Dans une projection oblique, les plans parallèles au plan de projection X=0 sont projetés en vraie grandeur (Fig IV). Les paramètres sont un angle alpha représentatif de la projection du troisième axe et un facteur de réduction pour cet axe.
On discute, on discute et avec tout cela, il ne reste plus de place pour ce mois. Donc il vous faudra attendre le mois prochain pour voir apparaître les projections perspectives. Et nous terminerons en apothéose cette étude des projections par la caméra virtuelle qui vous permettra de représenter à peu près tous les effets du 3D.
|