Infographie 3D - Projet

mar. 13 décembre 2011

Projet 2D/3D - Architecture

Objectifs

Ce projet permet de mettre en application la plupart des notions vu durant l'enseignement de synthèse d'images. Le but est de produire une petite application qui va lire un fichier ASCII décrivant un plan de maison romaine et d'afficher ce plan aussi bien en 2D qu'en 3D. La grammaire décrivant une maison romaine est laissée à l'appréciation de chacun (mais des indications sur l'architecture de l'époque sont données par la suite). La production d'un plan en 2D doit s'appuyer exclusivement sur les algorithmes et leur implantation vu dans le module (projection plan euclidien / espace discret, tracés, etc.) en utilisant la bibliothèque CNG. L'affichage de la vue 3D doit utiliser la bibliothèque OpenGL (Mesa).


Documentation

Ce sont les Etrusques qui ont appris aux romains à construire de véritables habitations, de plan rectangulaire. Ce type de maison se nomme domus. Elle ne s'ouvre pas sur l'extérieur, comme la nôtre, mais sur l'intérieur. Une porte, fermée de deux battants, conduit par un vestibule jusqu'à l'atrium. L'atrium est la partie essentielle de la domus, c'est une cour carrée avec en son centre l'impluvium, un bassin servant à recueillir l'eau de pluie. Cette pièce est couverte d'un toit à pente intérieure avec une ouverture de même surface que l'impluvium, nommé le compluvium. La pluie tombant par cette ouverture est recueillie dans le bassin pour les besoins en eau de la maison. L'atrium est la principale source d'air et de lumière, car les maisons ont très peu de fenêtres. Derrière la maison, on cultive un jardin potager (hortus). A partir du deuxième siècle av. J.-C., les riches adoptent la maison à péristyle, tout en conservant la maison à atrium, qui forme la première partie de leur domus. Elle reste surtout utilisée pour les fonctions officielles du maître de maison.

exemple
  • Tablinum (vestibule) : le vestibule est la pièce d'entrée de la maison. On y accueille le visiteur par un message de bienvenue ou par une mise en garde sévère contre les intrusions extérieures ("Cave Canem"). Un chien en mosaïque garde symboliquement l'entrée. Il faut aussi tout de suite attirer la chance sur la maison par une fresque qui protège la maison contre le mauvais Å?il et assure la prospérité.
  • Triclinium (salle à manger) : à l'origine, les maisons n'ont pas toujours de salle à manger. On se restaure dans le tablinum ou l'atrium assis sur des fauteuils ou des tabourets. Puis les riches Romains adoptent l'usage du triclinium, où l'on s'allonge sur des banquettes. La pièce généralement petite en contient trois, disposées en U. Trois personnes peuvent s'installer sur une banquette.
  • Culina (cuisine): dans les premiers temps, les Romains n'ont pas de pièce spécialisée pour la cuisine : on installe un brasero là où l'on trouve un petit espace libre. Ensuite apparaît la culina, pièce équipée d'un four en brique et d'un évier.
  • Cubiculum (chambre) : les chambres (cubiculum) sont souvent décorées de riches peintures et le sol est orné de mosaïques. Dans ces pièces qui sont très petites, les Romains s'allongent sur des lits (cubile) pour dormir et non pas pour manger comme dans le triclinium.
  • Ala (ailes) : de chaque côté de l'atrium, se trouvent deux salles, les ailes, ouvertes directement sur celui-ci. A l'origine, elles renferment des images des ancêtres. Plus tard, elles ont des utilisations plus diverses, elles servent souvent à fournir de la lumière grâce aux fenêtres donnant sur l'extérieur.
  • Atrium : c'est la pièce centrale de la maison romaine. Son toit ouvert permet de recueillir l'eau de pluie. L'atrium est orné de bustes représentant le propriétaire et abrite le coffre aux trésors.
  • Impluvium : c'est un bassin aménagé situé au centre de l'atrium. Il permet de recevoir l'eau de pluie. Il est souvent relié à un réservoir situé en-dessous.
  • Hortus : à l'arrière de la maison, à l'origine, on cultive un petit jardin potager. Par la suite, ce jardin devient décoratif. Souvent, pour donner l'illusion d'un espace plus grand, on peint sur le mur du fond une scène horticole.

A partir du deuxième siècle av. J.-C., dans les régions en contact avec le monde grec comme la Campanie, puis dans l'ensemble de l'Italie, on adopte l'usage dela maison à péristyle : la maison italique traditionnelle est prolongée d'une deuxième partie organisée autour du péristyle, jardin entouré d'une colonnade. Denouvelles pièces apparaissent, notamment des pièces spécialement conçues pour l'été. Derrière, on aménage parfois un grand jardin d'agrément, où l'on goûte les charmes de la nature et de l'eau.

  • Péristyle : c'est la pièce principale de la seconde partie de la maison. Il s'agit d'un jardin entouré d'une colonnade. En grec le mot "stylos" signifie "colonne" et "péri" signifie "autour".
  • Viridarium : il occupe le centre du péristyle. C'est une sorte de "jardin à la française", planté d'arbustes, de fleurs, de plantes médicinales. Il est orné de statuettes, de tables en marbre, de fontaines.
  • Oecus est une salle d'apparat ou un salon dont les décorations sont luxueuses.

Partie 2D

Chaque plan de maison est défini en coordonnées réelles. Le fichier le décrivant débute par les dimensions du domaine de définition puis décrit chaque pièce en spécifiant : les coordonnées des sommets constituant son contour, les coordonnées des ouvertures dans les murs (distinguer porte de fenêtre), la légende associée à la pièce (a priori son nom) ainsi que ses coordonnées, éventuellement l'emplacement des colonnes, enfin le nom et l'emplacement des fichiers images associés au sol et au(x) mur(s) (ces derniers ne seront utilisés que pour la partie 3D).Remarque : penser aux fonctions C fscanf() et sscanf().

La visualisation du plan en 2D devra être sans déformation et comporter une marge afin d'assurer la meilleure lisibilité possible (par l'entremise d'une viewport non visible par exemple).


Partie 3D

La visualisation du plan en 3D doit comporter les sols et les murs de chaque pièce, décorés des mosaïques ou des fresques qui leur sont associées s'il y a lieu, d'une couleur par défaut sinon. Une caméra virtuelle, dirigée par la souris, doit permettre de tourner autour du bâtiment (une implantation de "trackball" basée sur l'utilisation des quaternions est proposée >`ici <http://nguyen.univ-tln.fr/share/OpenGL/trackball.tar>`_<), de s'en approcher et de reculer. Il est vivement conseillé de s'appuyer sur le matériel fourni pour le premier TP d'OpenGL. L'aspect doit se rapprocher le plus possible de l'image ci-dessous.

visualisation

Remarques :

  • une modélisation simple et rigoureuse est conseillée afin de placer les murs et les planchers automatiquement (en particulier, une dilatation peut avoir pour conséquence un déplacement non désiré),
  • la modélisation d'un impluvium impose la surélévation du plancher (et le maintien des murs au niveau du sol, afin qu'ils "plongent" dans le plancher),
  • afin de n'appliquer les fresques que d'un côté du mur (ou du plancher), il est conseillé soit de définir votre propre fonction de modélisation d'un parallélépipède de type "mur décoré" soit d'utiliser un parallélogramme et de placer celui-ci très près (mais non confondu) du côté du mur concerné,
  • l*'hortus* ou le péristyle peuvent être décorés par l'application d'une texture de sol et/ou la modélisation simplifiée d'arbustes et d'arbres (vous trouverez un exemple >`ici <{filename}/share/OpenGL/fire.c>`_< qui fournit une fonction drawtree()).

IHM

Une interface graphique minimale doit permettre : le choix du fichier d'architecture, la visualisation 2D et la visualisation 3D. Celle-ci peut avantageusement être développée en TclTk.