IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

Texture mapping et raytracer


Sujet :

Projets

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Texture mapping et raytracer
    Bonjour,
    Je développe actuellement un raytracer en C++ et je voudrais avoir des renseignements sur l'application de textures sur des objets.

    Quelles sont les différentes méthodes existantes ?
    Existe-t-il des sites les expliquants ?
    Existe-t-il des methodes génériques ?

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par pouletchu Voir le message
    Bonjour,
    Je développe actuellement un raytracer en C++ et je voudrais avoir des renseignements sur l'application de textures sur des objets.

    Quelles sont les différentes méthodes existantes ?
    Existe-t-il des sites les expliquants ?
    Existe-t-il des methodes génériques ?

    Merci
    Salut pouletchu,

    regarde ici, ça devrait t'intéresser.

    http://www.massal.net/article/raytrace/page3.html

    tu as deux ou trois méthodes, mais ça reste pour des formes "simples".

    Courage en tout cas!!!

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    J'ai déja regardé ce site.
    J'ai déja impléménté les textures de perlin qui me donnent de bonnes images. Mais j'aimerais bien me mettre a l'application de texture externe (fichier ppm,bmp).

    Ce qui m'interresse ce sont des explications sur les différentes techniques de texture mapping. Principe de l'uv texturing, comment calculer les coordonnees uv d'un objet (Plan,sphere, cube)? existe t'il d'autres techniques ?


    Merci de ta réponse

  4. #4
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    En réalité pour les UV maps, le secret c'est qu'il n'y a pas de secret. Les UV maps ont été pendant longtemps générées à la main par des artistes (et le sont toujours ?). Et ça se fait dans les outils de modelage 3D comme Maya, 3dsmax, blender, etc. Générer à la main ça veut dire, placer une coordonnée UV sur un vertex (ou déplacer un vertex sur une texture pour le mapping inverse).

    Il doit y avoir quelques outils qui génèrent des UV maps automatiquement comme ZBrush et autres (Maya aussi le fait je crois, je ne suis pas spécialistes des packages 3D), mais j'ai souvent entendu dire que le résultat des générations automatiques souffraient plus ou moins de problèmes de qualité ou d'optimisation.

    Après c'est vrai que pour mapper des objets simples comme la sphère, il y a des méthodes "automatiques", la plus facile à mettre en oeuvre sans gros artefacts c'est le cubic mapping que j'ai décrit dans l'article. Il y a d'autres solutions comme le mapping paraboloide, le mapping sphérique, mapping cylindrique. Le problème des deux derniers c'est la déformation qu'ils causent aux pôles. Le problème du mapping paraboloide est la plus grande complexité des maths qui génèrent la projection sur la texture par rapport au cubic mapping (même s'il est utilisé dans les jeux vidéos comme GTA IV pour limiter le nombre de passes à rendre pour les réflexions, mais c'est un autre sujet).

    Dans tous les cas, la relation entre la texture que tu vas "peindre" et sa forme sur l'objet n'est pas simple, c'est là que des outils comme ZBrush ou équivalents sont utiles. En réalité la première source de textures est Photoshop (ou gimp), parce que tu peux tout de même superposer le UV mapping inverse sur la texture et voir la relation entre ce que tu peins et sa position sur l'objet (et corriger par itération). Mais pour les objets et meshes hyper détaillés qui demandent une grande précision et souvent des détails géométriques additionnels (normal, displacement map) ZBrush est devenu une des normes de l'industrie (du jeu vidéo notamment).

    Bref vaste sujet.

    Mais bon le truc à retenir c'est :
    ne te focalise pas sur la génération automatique sauf peut-être sur les objets super simples comme sphère, cubes etc. Et pour les objets plus complexes, crée un format de fichier qui te permet d'associer un jeu de coordonnées (s,t,r,q, etc..) à un sommet. Ensuite une fois que tu as cette association (soit que tu entres manuellement, soit que tu crées dans un outil externe), tu fais l'intersection de ton rayon avec ton polygone (le plus facilement avec un triangle..) et tu fais l'interpolation linéaire sur ton triangle (ou plus complexe si tu as d'autres formes d'interpolation dans ton outil de génération.. ce qui est généralement assez rare sauf pour les cas de texture projective ou autres formes générées, comme le mapping cubique, cylindrique, sphérique etc.) pour retrouver le jeu de coordonnées du point courant.

    Après il y aura des complications pour le filtrage (mip mapping, anisotropic filtering). Les cartes 3D par exemple traitent tous leurs pixels comme une grappe de pixels (appelés QUAD) pour générer des dérivés de coordonnées de texture, qui leur permettent d'approcher l'empreinte du pixel sur la texture.. Certains raytracer envoient des faisceaux (beams) plutot que des simples rayons mais peuvent aussi utiliser la méthode des quads (jusqu'à la première divergence).

    Vaste sujet également qu'on ne va pas traiter dans un post de forum..

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    Merci de ta réponse qui est complète mais j'ai un peu de mal a saisir l'association des coordonnées a un sommet du triangle ainsi que le role de l'interpolation linéaire sur le triangle peux tu m'en dire plus et me donner un exemple ? Connais tu de bon site qui détailles les méthodes que tu as décrites précédemment ? (Le but n'est pas forcément de les implémenter mais d'élargir mes connaissances).

    Pour l'instant je compte me limiter a des objets simples( sphere, plan, cube) quelle méthode me conseilles tu ? Le mapping que tu as décrit dans ton site peut servir pour un cube, une sphère mais pour un plan ?

    Merci

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 61
    Points
    61
    Par défaut
    Je ne sais pas si tu as déjà regardé, mais je et conseil de jeter un coup d'œil à Openrt. J'ai télécharger l'api et le sdk est assez bien fait. Et justement, ils y expliquent l'application de texture à partir de format bmp.

    openrt.de

  7. #7
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Citation Envoyé par pouletchu Voir le message
    Merci de ta réponse qui est complète mais j'ai un peu de mal a saisir l'association des coordonnées a un sommet du triangle ainsi que le role de l'interpolation linéaire sur le triangle peux tu m'en dire plus et me donner un exemple ?
    Chaque sommet de ton triangle (en 3D) va être associé à un point sur la texture (en 2D), ce qui va permettre de faire le lien entre les coordonnées 3D de ton modèle volumique (ou au moins spatial) et les coordonnées 2D de la texture à appliquer dessus. En gros, ton triangle dans l'espace va être transformé et plaqué sur ton image de la texture (il y a donc une transformation à définir pour passer de l'un à l'autre, pour les sommets, mais également pour tous les points à l'intérieur du triangle)

    Quelques petites images pour illustrer (sortie de Blender). Sur l'image suivante, tu as le modèle en 3D à gauche, et à droite la projection des éléments (des quads ici) sur la future image de texture. Cette projection sert uniquement de repère pour faire de la peinture au bon endroit ensuite sous Gimp (ou similaire).

    Nom : screen_depliage.jpg
Affichages : 1003
Taille : 70,4 Ko

    Ensuite, on peint l'image de la texture pour lui donner les vraies couleurs à appliquer au modèle, en mettant la bonne couleur sur le bon quad. Ce qui donne un truc comme ça:

    Nom : texture_baleine.jpg
Affichages : 939
Taille : 66,6 Ko

    Ca ressemble à rien, vu comme ça, mais le prog sait (ou doit savoir) faire l'association de coordonnées entre les deux espaces (le 3D et le 2D).


    Citation Envoyé par pouletchu Voir le message
    Pour l'instant je compte me limiter a des objets simples( sphere, plan, cube) quelle méthode me conseilles tu ? Le mapping que tu as décrit dans ton site peut servir pour un cube, une sphère mais pour un plan ?
    Pareil.
    Tu mappes les quatre coins de ton plan avec les quatre coins de la texture. Par exemple.

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    Bonjour,
    Je pense que je vais pour commencer utiliser le mapping sphérique. Si je ne me trompe le principe est d'avoir une sphére englobante de l'objet à mapper. Mais comment determine t'on la correspondance entre le point d'intersection de l'objet et le point de la sphere englobante ?

    Connaissez vous un site expliquant cette technique ?

    Merci

  9. #9
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Mais comment determine t'on la correspondance entre le point d'intersection de l'objet et le point de la sphere englobante ?
    Une technique est de projeter les sommets sur la sphère et ainsi récupérer les bonnes coordonnées.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pb texture mapping 2D
    Par supersouf dans le forum OpenGL
    Réponses: 27
    Dernier message: 02/03/2011, 09h07
  2. texture mapping sur un trapeze
    Par lilin dans le forum DirectX
    Réponses: 12
    Dernier message: 22/12/2009, 15h47
  3. problème de texture mapped font - tuto Nehe
    Par clairouch dans le forum OpenGL
    Réponses: 1
    Dernier message: 28/06/2006, 12h02
  4. Texture mapping multiple
    Par kikoland dans le forum OpenGL
    Réponses: 2
    Dernier message: 11/04/2006, 11h50
  5. Texture Mapping
    Par EsKa68 dans le forum OpenGL
    Réponses: 1
    Dernier message: 06/04/2005, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo