Notions de programmation
en 3 dimensions

Dimitri Robert

Analogie avec le cinéma

Est-ce de l'art ?

Même si l'approche et les compétences requises sont très différentes, la 3D est un art.

Les 3 indispensables

Quelle représentation ?

Deux approches pour afficher des mondes en 3D

Voxel

La représentation retenue

Enveloppe

Forme de base

Le quad n'est pas vraiment une forme de base puisque composé de deux triangles. Mais il est plus facile à manipuler notamment pour les surfaces tels que les sols (raisonnement en cases à 4 côtés). OpenGL propose de les gérer directement comme une forme de base, au même titre que le triangle.

Texture

Les sprites sont aussi utilisés pour texturer des rectangles : arbres une face (toujours orientée vers la caméra) ou deux faces croisées par exemple.

Appliquer une texture

À chaque vertex une coordonnée de texture
On pratique un découpage de la texture pour l'appliquer sur le triangle ou le quad. La texture peut être étirée, réduite.
Correspondance entre un point de la face et un point de l'image

Coloration de face

Éclairage

Dans la vraie vie
→ La lumière engendre les couleurs

Dans un monde de pixels
→ Les couleurs représentent la lumière

La lumière peut ainsi être teintée : pour un objet éclairé par le soleil couchant on appliquera des dégradés orangés.

Éclairage « flat »

Faire un dessin au tableau pour expliquer le calcul de la norme (produit vectoriel entre deux vecteurs de la face).

Éclairage « Gouraud »

Faire un dessin au tableau pour expliquer le calcul de la norme (produit vectoriel entre deux vecteurs de la face). Normalle à un point : abérration mathématique, mais réalité informatique.

Éclairage « Phong »

Exemples

Une boule éclairée

Une montagne

Capture de Ski Park Manager, jeu développé par Lankhor, sorti en 2002. Distinguer montagne en 3D et arbres/bâtiments, simples faces en 2D.

Caméra

  • 1 point, 1 direction
  • 2 points (source, destination)

Z-buffer

  • Afficher du plus loin au plus proche
  • Algorithme du peintre
Le peintre commence à peindre le fond, puis les éléments des divers plans jusqu'au premier.

Niveau de détail

  • LOD : level of details
  • Réduire nombre de face/qualité de texture
  • En fonction de
    • l'éloignement
    • la vitesse de l'objet
    • la puissance de la machine

Liens et ressources

  • Wikipédia : http://fr.wikipedia.org/wiki/Synthèse_d'image
  • Biographie Henri Gouraud : http://www.univ-reims.fr/Labos/LERI/Afig99/biographie.html
  • Programmation 3D : http://tfpsly.planet-d.net/francais/3d/docs.html
  • Nehe Tutorials : http://nehe.gamedev.net/

Liens et ressources

  • Section 3D de LinuxGraphic : http://www.linuxgraphic.org/section3d/
  • Xavier Michelon, didacticiels OpenGL : http://www.linuxgraphic.org/section3d/openGL/didact.html
  • Blog de divide : http://www.nofrag.com/~divide/

Crédits

E-mail : d POINT robert AT point-libre.org

Blog : http://www.point-libre.org/~dimitri/blog/

Illustration de Mathieu Leyssenne : http://www.aniii.com

Présentation réalisée avec S5: A Simple Standards-Based Slide Show System : http://www.meyerweb.com/eric/tools/s5/

Flat Gouraud Phong