Conversion vers les Surfels avec le lancé de rayons


Cahier des charges

Carine NGUYEN - Bruno FISCHEL - Vincent THOREL - Pierre-Jean TURPEAU - Frédéric VIDIL

13 avril 2001


Table des matières


Liste des figures

  1. Exemple de convertion
  2. Diagramme de flots

Plan de développement

Description générale du projet

La représentation des objets 3D par maillage polygonal a ses limites. Avec les modèles actuels on arrive à des milliers de polygones, il en résulte une consommation inutile des ressources processeur dès que la taille des polygones est inférieure à un pixel. Il éxiste des travaux récents proposant d'utiliser les points au lieu des polygones pour développer une représentation des objets en 3D adaptée à un rendu efficace. Ces points, appelés surfels (surface element - section 2.6) correspondent à l'échantillonage de surface avec un taux donné. Un surfel est donc un triplet (position, orientation, couleur), et un objet est un ensemble de surfels.


L'objectif de ce projet est de réaliser un logiciel permettant de convertir une représentation géométrique d'un objet 3D en une représentation utilisant les surfels selon un taux d'échantillonnage donné. Nous avions deux axes de travail possibles pour parvenir à ce résultat. D'une part nous pouvons échantilloner les objets selon la méthode du lancé de rayon, les objets sont alors représentés sous formes de constructions géométriques (CSG). D'autre part nous pouvons échantilloner des objets représentés par un assemblage de polygones, il faut alors traiter les polygones un à un.


Nous avons choisi de nous concentrer sur la méthode du lancé de rayon, bénéficiant ainsi d'outils et de technique déjà bien maîtrisés. Ensuite, nous pourrons éventuellement nous pencher sur le problème des polygones et l'optimisation de la convertion.

Figure 1: Exemple de convertion
\includegraphics[width=1\linewidth,angle=0]{sample.eps}

Documentations et Références

Pour nous familiariser avec les concepts nous avons tout d'abord lu la présentation de notre client [7], puis nous avons glané quelques documentations sur le réseau [6], [3], [1], [2]. Enfin, pour tout ce qui concerne l'implémentation, nous utiliserons les sources d'un ray-tracer bien connu : PovRay [4].

Bibliographie

1
The 9th Eurographics Workshop on Rendering.
Point sample rendering, 1998.
ftp://cva.stanford.edu/pub/publications/psr.ps.

2
Graphicon.
Rendering by surfels, August 2000.

http://www.lifl.fr/~grisoni/graphicon2000.ps.gz.

3
M. Levoy and T. Whitted.
The use of points as a display primitive - tech. report 85-022.
Technical report, Siggraph, 2000.
http://www.merl.com/people/pfister/pubs/sig2000.pdf.

4
Persistence of Vision Team.
http://www.povray.org.

5
Siggraph.
QSplat: A Multiresolution Point Rendering System for Large Meshes, 2000.
http://www.cs.uct.ac.za/Research/CVC/Reading/qsplat_paper.pdf.

6
Siggraph.
Surfels: Surface Elements as Rendering Primitives, 2000.
http://www.merl.com/projects/surfels/.

7
Ireneusz Tobor.
Visualisation par surfels.
LaBRI, Novembre 2000.
http://dept-info.labri.u-bordeaux.fr/~tobor/these/these.pl?intro.

Ressources

La réalisation de ce projet nécessite les materiels et logiciels suivant:


Les personnes susceptibles d'intervenir en cours de réalisation du projet sont:

Planning

Les phases de l'étude préalable sont les suivantes:

Certaines phases du projet peuvent se réaliser de manière concurrente. Notamment la documentation du projet se réalise tout au long des phases de conception et de réalisation. De plus, chaque semaine est organisée une réunion sur l'avancement du projet regroupant l'équipe projet et le client.

Délivrables

Délivrables papier :


Délivrables logiciels :

Définition des besoins

L'objectif est de convertir des objets géométriques en objets composés de surfels. L'intérêt du stockage des objets au format surfels est le gain mémoire pour les objets complexes ne comportant pas de surfaces planes.

Prototype papier

Modèle des données

Le diagramme de flots (figure 2) met en évidence les différents modules et étapes nécessaires à la réalisation du convertisseur.


L'architecture générale du convertisseur sera principalement basée sur les fonctionnalités de PovRay. On tentera ainsi de réaliser une bibliothèque regroupant les services nécessaires à la convertion. La réutilisation du code de PovRay permet un gain de temps indéniable car on dispose d'un modèle déjà existant pour la représentation des objets et d'outils pour effectuer tous les calculs dont nous pourrons avoir besoin.


Notre modèle des données se rapproche donc de celui de PovRay en ce qui concerne l'architecture interne (gestion des objets en mémoire, etc...). Notre programme se contentera d'appeler les fonctions de calcul de PovRay afin d'effectuer la convertion de l'objet en surfels.

Figure 2: Diagramme de flots
\includegraphics[width=.60\linewidth,angle=0]{flow.eps}


Besoins fonctionnels

La première contrainte de conception est l'utilisation presque obligatoire des sources du logiciel PovRay. En effet, la plupart des fonctions nécessaire à notre convertisseur ont précédemment été implémentés dans ce logiciel. De plus, une implémentation personnel ne serait pas codable dans les temps impartis pour cette étude.


Le choix d'utiliser PovRay implique que les objets 3D doivent être décrit à partir de primitives géométriques au format ``.pov''. C'est une contrainte forte dans la mesure ou la plupart des objets sont définis dans bien d'autres formats tels que .dfx .3ds .obj.


Le logiciel devra pouvoir s'utiliser soit seul (en mode ligne de commande avec des options diverses) soit en tant que bibliothèque inclus dans un autre logicielle. Une interface permettra donc d'effectuer des appels aux fonctionnalités diverses du programme.


En ce qui concerne la structure du fichier, le client nous a proposé un modèle simple qu'il utilise avec ses propres visualisateurs. Le fichier de sortie sera au format texte, et trois lignes seront nécessaires pour décrire chaque surfel de l'objet. La première ligne contiendra les coordonnées 3D du surfel, la seconde ligne contiendra les coordonnées 3D de la normale et enfin la troisième ligne contiendra les couleurs RVB du surfel. Nous n'utiliserons que des réels.

Besoins non fonctionnels

Dans cette sections nous aborderons 3 type des besoins non fonctionnelles:

La première contrainte non fonctionnel serait l'étude du logiciel PovRay - ses fonctions n'étant absolument pas documentés - le risque est d'utiliser une fonction dont le calcul résultant n'est pas toujours ce à quoi nous nous attendons. Ce besoin est non fonctionnel dans la mesure ou on ne pourra garantir le bon fonctionnement du logiciel de conversion que si les fonctions utilisé font ce que nous pensons qu'elles font (oui, c'est compliqué).


La seconde contrainte non fonctionnel concerne l'algorithme employé pour la génération d'objets en surfels: on part de l'objet en 3D géométrique, puis on échantionne sur chaque axe X, Y et Z selon un pas, si un rayon rencontre une surface d'une objet, on créer alors un surfel. Le problème concerne la répartition des surfels, ils ne sont pas uniformément répartis quel que soit l'objet. Il serait intéressant de trouver un algorithme qui soit capable d'éliminer certain surfels (voir d'en ajouter) afin d'obtenir une répartition des surfels plus harmonieuse.


La dernière contrainte sera l'utilisation du projet dans d'autre produits qui voudront mettre en place une conversion en temps réel d'objet de polygone $\rightarrow$ Surfels avec des contraintes de vitesse. Ici nous somme tributaire de l'utilisation du code source de PovRay - ce qui limitera de toute manière notre vitesse de conversion. De plus l'utilisation des surfels n'est intéressante que si la conversion offre un gain d'espace mémoire intéressant, ce qui n'est pas toujours le cas. Donc il faudra mettre en oeuvre des méthodes d'analyse qui permettent de simplifier les objets en surfels pour que leurs utilisations mémoires soient intéressantes.

Plate-forme cible et de développement

Le développement du logiciel est basé sur l'API de PovRay et se fera intégralement en langage C le plus ANSI possible. De ce fait, il ne devrait pas y avoir de plateforme cible type et ainsi toute architecture supportée par PovRay devrait être supportée par notre convertisseur. Le code sera principalement écrit et testé sur des terminaux X sous SunOS et sur des PC sous Linux.

Analyse des risques

Concernant la compréhension du domaine, il n'a pas de connaissance suffisante concernant la théorie sur la 3D et la représentation des objets en 3D notamment sur le calcul des intersections entre une droite et un CSG (Constructive Solid Geometry) parmit les membre du groupe pour dévelloper des algorithmes fiable dans les temps impartis - donc les connaissance nécessaire à ce projet seront axés sur les points suivants: bonne connaissance du vocabulaire 3D, capacité à analyser le code C de PovRay, bonne organisation du travail (travailler avec les sources du projets et les sources de PovRay de façon claire et réutilisable est difficile).


La longueur de ce projet sera modulé en grande partie par le temps que prendra l'analyse des fonctionnalités de PovRay. Le risque le plus important de ce projet est la réutilisation du code source de PovRay. En effet, en l'absence de documentation sur son organisation, beaucoup trop de temps peut être consacré à l'analyse et à la compréhension du fonctionnement des méthodes de PovRay. Et il semble qu'il n'y ai pas de parade possible compte tenue du temps dont nous disposons.

Les priorités de ce projet sont les suivantes:

  1. Analyse des fonctions de PovRay en vue de leurs réutilisations.

  2. Réalisation d'une conversion simple des objets géométriques polygones vers des surfels.

  3. Réalisation d'une conversion simple de polygones vers des surfels.

  4. Validation du programme sur divers objets complexes.

  5. Rédaction d'un premier rapport concernant l'état d'avancement du projet.

  6. Réalisation des besoins non fonctionnels.

  7. Validation des nouvelles fonctionnalités ajouté au convertisseur.

  8. Rédaction des rapports définitifs sur la réalisation et l'utilisation du produit finit

Lexique

Les termes techniques suivant sont récurrents au projet:

Surfels

Un surfel (contraction de "surface element") est un point de l'espace produit par l'échantillonnage d'une surface.

Il possède les attributs suivants:

CSG

La CSG (Constructive Solid Geometry) est une méthode de construction d'objets 3D par assemblage. Les 3 opérateurs de base de la CSG sont l'union, l'intersection et la différence. Chaque opérateur agit sur deux objets et produit un nouvel objet objet. En combinant les niveaux multiples des opérateurs de CSG, des objets complexes peuvent être produits à partir des objets primitifs simples (sphère, cube, cylindre).

Lancer de rayons

Le lancer de rayon est une méthode qui permet de synthétiser des images réalistes sur un ordinateur. Les algorithmes basés sur la technique du lancer de rayons partent de la description mathématique d'une scène (cette description pouvant être faite en utilisant la CSG par exemple). Le logiciel simule mathématiquement la trajectoire prise par les rayons lumineux en tenant compte des phénomènes de réflection, de réfraction, etc...

Boîte englobante
(Bounding Box) Utilisé pour optimiser les calculs d'intersection entre les rayons et les objets. Pour un objet donné, c'est le plus petit parallélépipède rectangle qui contient entièrement l'objet.



Pierre-Jean 2002-04-01