Obligement - L'Amiga au maximum

Jeudi 25 avril 2024 - 11:33  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


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 OO'[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]