Latest article: Exporter des données depuis Excel

Les bases de la 3D, partie 1

Cet article est le premier d’une petite série traitant des bases de la 3D.

Je vais couvrir les principaux concepts utilisés en 3D de façon à les introduire. Je ne vais pas les expliquer en détail, ces articles sont juste une première étape pour vous permettre d’approfondir vos recherches plus tard.

Ils sont destinés à n’importe qui ayant déjà vu la 3D à l’œuvre (à travers un jeu vidéo ou un film d’animation par exemple) et qui se souvient de ses cours de géométrie du collège.

Ce premier article parlera du monde en trois dimensions et de la façon dont il est affiché sur un écran en deux dimensions.

Un monde en 3D, un écran en 2D

Pour le moment, les écrans (moniteurs comme téléviseurs) sont limités à la 2D. C’est à dire qu’ils ne peuvent afficher que des images planes sur leur surface. Cela viendra surement à changer dans un futur plus ou moins proche, mais pour le moment il faut s’en accommoder. Même la fausse 3D vendue par certains cinémas ces derniers temps n’est qu’une image 2D traitée par des lunettes pour donner un semblant de 3D.

L’enjeu est donc de projeter une scène en 3D sur une image 2D.

Projection d'une scène 3D sur un écran 2D

Cela se fait au moyen d’une caméra : tout comme un cinéaste utilise une caméra pour capturer “le monde réel” en une séquence d’image, nous utiliserons une caméra pour capturer notre scène en trois dimensions.

Les repères

Vous vous souvenez surement de vos cours de géométrie et des repères orthonormés directs, avec les abscisses et ordonnées.

En informatique, les conventions sont légèrement différentes : on considère que le coin haut-gauche de votre écran (ou d’une image) est l’origine. L’axe X est alors l’axe des abscisses (horizontal) et l’axe Y celui des ordonnées (vertical).

Quand on donne des coordonnées (en maths comme en informatique) en commence toujours par l’abscisse (X) puis par l’ordonnée (Y). Le point (10,5) est alors a pour abscisse 10 et 5 pour ordonnée.

La 3D ajoute une nouvelle dimension, la profondeur, que l’on note Z.

Les différents repères

Cependant la façon de représenter les repères en 3D n’est pas normalisée.

Il existe deux tendances principales : main droite (right-handed) et main gauche (left-handed).

Concrètement ce qui change est l’orientation de l’axe Z.

Pour donner un exemple : OpenGL et XNA sont “right-handed” alors que DirectX est “left-handed”.

Certains intervertissent les axes Y et Z (par exemple l’Unreal Engine utilise Y pour la profondeur et Z pour la hauteur), ce n’est qu’une différence de convention, les concepts derrière sont les même.

La caméra

La caméra est définie par plusieurs paramètres :

  • Sa position dans l’espace 3D
  • La position de sa cible (l’objet qu’elle filme en quelque sorte)
  • Son champs de vision (field of view)
  • La distance minimale qui définit le “near plane
  • La distance maximale qui définit le “far plane

Ces informations permettent de définir une pyramide tronquée (un tronc, frustum en anglais) :

Le "View Frustum" défini par la caméra

Le champs de vision (abrégé FOV) est un angle qui définit ce que pourra voir le joueur. Le FOV est également utile pour réaliser un effet de zoom.

Le View Frustum permet d’utiliser une technique nommée Frustum Culling qui consiste à n’afficher que ce qui se trouve entre le “near plane” et le “far plane” :

Frustum Culling, tout ce qui est dans la zone verte est affiché, le reste non

C’est cet effet que vous voyez à l’œuvre quand, dans un jeu vidéo, vous voyez un objet apparaitre soudainement au loin. En réalité l’objet qui se trouvait au delà du “far plane” se trouve désormais dans le view frustum et est affiché. On utilise généralement du brouillard (fog) au loin pour adoucir cet effet indésirable.

Prochainement

Dans le prochain article j’expliquerai comment sont décrites les formes en trois dimensions, pour que vous sachiez comment se décompose le personnage que vous voyez à l’écran.

On parlera de vertices et de triangles, de textures et de normales, etc.

En attendant, si vous avez des remarques, des questions ou des suggestions concernant cet article, les commentaires sont à votre disposition.

Le deuxième article est en ligne !

Discussion

Reply