for Painting and Rendering Textures on Unparameterized Models Octree Textures for Painting and Rendering Textures on Unparameterized Models Stéphanie Recco Xavier Larrodé Master MM U.Bordeaux 1
Rappel : Principales étapes du « texture mapping » Obtenir la couleur de l ’image sauvegarder tableau : (reconstruire une image continue) lisser l ’image (éviter les distorsions ex:perspective) filtrer l ’image (enlever les H.fréquences ex: aliasing) reéchantillonage Plaquage appliquer l ’image sur la surface de l ’objet (coordonnées textures sur les vertices de l ’objet) interpolation des coordonnées pour obtenir sur chaque pixels du polygone une couleur précise Implémenté en Hardware . Inconvenients paramétrer à la « main » stocker plusieurs textures 2D problèmes de LOD , discontinuité … manque de cohérence entre les faces difficile sur les surfaces complexes Texture : a un point est associé une couleur
Exemples: 1976 80’s 1985 à la main en projetant Paramétrisation par l ’artiste Paramétrisation automatique Texture Volumique … Blinn et Newell Ma et Lin Peachey, Perlin Catmull Maillot Sloan Hunter Debry, Benson
Optimisations réalisées: Taille de la texture (Hunter et Cohen ) [1] suppression fréquences locales utilisation de quadtree (voir rappel apres) Optimiser les coordonnées de textures (J.Sloan, D.M.Weinstein,J.D.Brederson ) [3]
Exemples: Sans optimisation Avec optimisation
Génération automatique des surfaces UV: [4] Levy 2002 Coordonnées Textures (s,t) Coordonnées Objet (u,v)
Volumetric textures: Avantage Nécessite trop d ’espace mémoire... [6] (K. Perlin et D. Peachy 85) fonction à 3 paramètres tableau à 3 dimensions sculpture Avantage cohérence des faces pas de discontinuité marche bien sur les objets complexes pas « aliasing » Nécessite trop d ’espace mémoire... (sauf dans le cas de la fonction…)
Paramétrisation automatique avec modèle 3D : (B.Levy) [2] correspond à un morphing 3D toujours des problèmes de distorsion : beaucoup de temps problèmes de maillage?
Rappel : Quadtree Structure de donnée : encode une image 2D en plaçant des sous partie de l ’image dans un arbre. chaque nœud de l ’arbre dispose d ’au plus 4 fils. généralement on partitionne l ’image en 4 quadrants ayant chacun un nœud . et donc représentant 1/4 de l ’image et ainsi de suite pour ses fils… on continue jusqu ’à avoir une région suffisamment simple : taille d ’un pixel couleur résolution souhaité (certaine hauteur dans l ’arbre)
Rappel : Octree Structure de donnée : [7] Samat 1990 Structure de donnée : Un octree est un quadtree mais avec 8 fils au lieu de 4. Ce qui en fait un bon outils pour décomposer une scène en 3D On décompose l ’octree de la même façon que le quadtree jusqu ’à obtenir une partition désirée. Propriétés : compression de donnée gestion de la profondeur de l ’arbre : LOD la résolution peut varier le long de la texture générer facilement les coordonnées de Texture 3D-> plus de problème de discontinuité -> de distorsion
Motivations: pallier aux limites de la paramétrisation : fastifieux difficile (surfaces implicites, subdivision, maillages détaillés) un model doit pouvoir etre “peint” plus de discontinuitées,coller à la topologie plusieurs niveau de détails mémoire utilisé comparable à texture 2D
L’octree comme texture Correspondance entre les coordonnées du modèle de texture et celle du modèle géométrique Donc pas de discontinuité, la texture est aussi lisse et continue que le modèle lui-même (caractéristique du volumétrique) La couleur est stockées dans les feuilles de l’octree. (si nécessaire) D’autres données peuvent être stockées (normales…), donc cette nouvelle structure sera appelée octexture (octex)
Le détail dans l’arbre est donnée par le détail dans la texture Chaque nœud contient une couleur. Le nœud père a une couleur seulement si certain fils n’ont pas été crées (moyenne de tous ces fils). Enfant potentiel crée par géométrie : création des fils rouges . ( rouge couleur de leur père dans l’octree) Enfant crée par la texture : création de fils pour s’approcher de la taille du point rouge.
Peindre la texture La création de la texture ne peut se faire que par « peinture ». Les détails de la texture peuvent être ajoutés au fur et à mesure comme en peinture. (niveau de détail) On affiche seulement les parties visibles (grace au Z-buffer et au clipping) Puis on fait correspondre les coordonnées de la texture à celle de l’objet (en étant le plus « fin » possible). Seulement les cellules (octree) qui intersectent la surface de l ’objet sont mémorisés
Simplifications Suppression des feuilles qui ont la même couleur que leur père (à près) Donc l’octex peut diminuer en profondeur en fonction du niveau de détail demandé (fixer un ). Attention il faut limiter la taille de l’octex en mémoire, pour cela il faut limiter les détails donc limiter les possibilités du créateur de la texture.
Utilisations des normales Problème causés par les objets fins Pour éviter cela on stocke la normale de la surface et sa couleur correspondante(8 bits) dans [A] et 6 « flags » dans [B]
Mémoire La place en mémoire varie selon plusieurs critères : Le nombre d’informations stockées seuls les 8 pointeurs fils stockés (4 bits chacun) la normale de la surface(8 bits) la couleur (nombre de bit dépend de la représentation utilisée) Amélioration possible avec l’utilisation d’un octree sans pointeur :« pointerless » [7] (Samat 1991) Le niveau de détail demandé : plus on dessinera de détail, plus l’octex sera lourd
Inconvénients Avantages L’octex peut prendre beaucoup de place en mémoire. On est obligé de peindre sa texture ( en utilisant un logiciel spécifique) On ne résout pas le problème de paramétrisation Avantages N’importe quel modèles, pouvant être rendu, peut être texturé. Différents niveaux de détails adjacents ne donne pas de discontinuité (interpolation) Le niveaux de détail n’est pas limité (sauf par la mémoire), on a le control total sur la texture.
Comparaison avec les textures 2D Selon [B] l ’octree fera la même taille qu ’une texture 2D voir inférieur Selon [A] on aurait un surplus de taille de 33% :ou cas exceptionnel ex: une texture avec 2 couleurs : Texture 2D 3Mo Octree 50 bytes mais non révélateur...
Visualisation: Pas encore de Support Hardware pour Octree : logiciel de rendu Mais aussi de « 3D Paint » [A] Debry &... en GPL ! : thrownclear.com
Résultats:
Biblio : 2 articles : [A] Debry,Gibbs, Petty,Robins ; Painting and Rendering Textures on Uparameterized proceedings of SIGGRAPH 2002 [B] D.Benson & J.Davis : Octree Textures 2002 [1] Hunter et Cohen 2000 : Uniform frequency images [2] B.Levy 2001 :Constrained texture mapping for polgonal meshes [3] J.Sloan, D.M.Weinstein,J.D.Brederson : Importance driven texture coordiante optimization [4] Levy 2002 [6] (K. Perlin et D. Peachy 85) [7] Samat 1991 Pour plus d ’infos sur les articles consultez la bib complète des deux premiers articles...