Obligement - L'Amiga au maximum

Samedi 18 août 2018 - 22:05  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : C - Graphismes 3D en C (projection, partie 1)
(Article écrit par Pascal Amiable et extrait d'Amiga News Tech - juin 1990)


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.

C

Cette matrice de projection est un outil permettant de transformer un vecteur en un autre. Cette représentation simple équivaut au système développé ci-dessous.

C

C'est déjà plus simple comme cela, non ? Vous aurez sans doute remarqué que le vecteur résultant de la multiplication est un vecteur 3D alors qu'une projection est une transformation 3D->2D. C'est certes vrai, mais la matrice de projection est telle que le terme Z' vaut zéro à la fin du calcul, ce qui signifie que le point résultant P' est ramené dans un plan homogène avec pour coordonnées (X' Y' W'), Z' valant zéro.

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.
  • Les projections perspectives.
Les projections parallèles (Fig I.a) sont caractérisées par un centre de projection ramené à l'infini. Ce qui signifie que les rayons de projections sont parallèles à une direction de projection. De cette propriété découle une conservation de certaines distances (ces projections sont souvent utilisées dans le dessin technique pour cette raison).

C

Pour les projections perspectives (Fig I.b), le centre de projection est placé à une distance finie du plan de projection. Il s'agit de la position de l'oeil de l'observateur. Cette projection restitue un effet de profondeur, augmentant l'effet de réalisme. On utilise souvent la perspective dans la création d'images réalistes.

C

La figure ci-après (Fig II) représente la classification des projections planes que nous allons étudier. Comme vous pouvez le remarquer, il en existe un certain nombre.

C

Bien, maintenant que nous avons bien regarder ce schéma, nous allons étudier chaque projection en détail.

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).

C

Il existe trois types de projections axonométriques particulières, les projections orthographiques, les projections dimétriques et la projection isométrique. Nous allons commencer par étudier les projections orthographiques qui vont nous servir à décrire à la fois la projection axonométrique générale et les deux autres types particuliers.

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 :

C

La vue de côté par une matrice :

C

La vue de dessus par une matrice :

C

Les projections axonométriques générales

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 :
  • Le point O' représentant la position de l'observateur.
  • Un point P quelconque visé par l'observateur et appartenant au plan de projection.
La matrice de représentation de l'axonométrie générale est le produit de cinq matrices :
  • Une translation T de vecteur [-Tx,-Ty,-Tz,1] dont les composantes en [X,Y,Z,W] représentent le vecteur 00'[Tx,Ty,Tz,1] entre l'origine de la scène et la position de l'observateur.
  • Une rotation d'axe vertical Z : Rz(-phi).
  • Une rotation d'axe Y : Ry(-teta).
  • Une rotation d'axe X : Rx(-alpha).
  • Une projection orthographique selon X : Mf.
Maxo = Mf.Rx.Ry.Rz.T

Soit après un calcul long et fastidieux, Maxo vaut :

C

Avec :
  • A = -cos(alpha).sin(phi)+ sin(alpha).sin(teta).cos(phi)
  • B = cos(alpha).cos(phi)+sin(alpha).sin(teta).sin(phi)
  • C = sin(alpha).cos(teta)
  • D = sin(alpha).sin(phi)+cos(alpha).sin(teta).cos(phi)
  • E = -sin(alpha).cos(phi)+cos(alpha).sin(teta).sin(phi)
  • F = cos(alpha).cos(teta)
Soit en développé :

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 :

C

Où la fonction SQR(x) signifie racine carrée de x.

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.

C

La matrice de cette projection vaut alors :

C

On notera deux projections obliques particulières :
  • La projection cavalière : alpha = 45 degrés, I = SQR(2)
  • La projection cabinet : alpha = 45 degrés, I - SQR(2)/2
La projection cavalière reporte en vraie grandeur les segments parallèles à X alors que la projection cabinet les reporte en demi-longueur. Bien, nous avons maintenant fait le tour des projections parallèles.

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.


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]