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

Moteurs 3D Discussion :

Raytracing et bump mapping


Sujet :

Moteurs 3D

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Raytracing et bump mapping
    Bonjour,

    Ca fait une journée que je cherche sur le net comment utiliser une texture de bump-mapping.
    Je connais la théorie de cette technique, mais pas la pratique: j'ai un point à la surface d'une sphère, et son intensité calculée avec l'algorithme de Phong. Ensuite, je lis la valeur de bump qui lui est associée, et qu'est-ce que j'en fait?
    Comment je modifie l'intensité? (Mon but étant de comprendre comment marche un moteur de raytracing, j'aimerais ne pas faire appel à une libraire)...

    Merci d'avance pour vos questions.

  2. #2
    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
    Tout dépend quel genre de bump mapping tu veux faire.

    le bumpmapping le plus simple va affecter les normales pour simuler une géométrie plus riche que ce qui existe (normal mapping). Quand tu fais ton calcul d'éclairage (phong) tu as besoin du vecteur normal à la surface. Et bien tu imagines que ta normale est perturbée avec la valeur que tu as lu dans ta texture de normales. Si tu n'as pas de carte de normales mais une carte d'élévations à la place c'est un peu plus compliqué, parce qu'il faut lire le gradient de l'élévation dans plusieurs directions afin d'en déduire la normale.

    J'avais décrit un exemple de bumpmapping à partir d'une texture procédurale de bruit dans mon tutorial de raytracer :
    Raytracer en C++, bump mapping

    Bien évidemment ce type de bump mapping ne crée pas de détails géométrique supplémentaire et s'il simule l'éclairage de creux et de bosses, il n'y a pas d'occlusion correcte ni de parallaxe liés à une surface non plate (et la silhouette n'est pas modifiée non plus).

    Pour faire mieux, il faut donc faire du displacement mapping. Virtuel ou géométrique, dans le cadre du raytracing c'est parfois du pareil au même. Le calcul d'intersection devient un peu plus compliqué puisqu'il faut faire un parcours sur la texture pour trouver le vrai point d'intersection et avoir une vraie occlusion (certains utilisent des pas fixes, ou des structures d'accélérations.. sans rentrer dans le détail). Une autre approche consiste à générer des polygones/primitives intermédiaires et faire les calculs d'intersection sur ces polygones après leur déplacement (ce qui peut paraitre un peu plus lourd mais parfois peut-etre acceléré plus facilement, cf l'algorithme de rendu REYES utilisé par Pixar/Renderman).

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Points : 440
    Points
    440
    Par défaut
    En parlant de parallax mapping, je crois qu on complique un peu le sujet d origine. Par ailleurs effectivement, le parallax mapping peut etre visuellement saisissant, mais pour le cas d une surface faiblement perturbee, la difference avec du bump-mapping normal n est pas aussi evidente que ca.

    Un bon endroit, pour commencer des recherches est, si tu es sous windows les SDK de ATI ou NVIDIA.

    Personnellement je te conseille fortement de voir cote RenderMonkey (ATI) qui permet de coder tres simplement des shaders sans te soucier du code C derriere (note quand tu aurs besoin des tangeant et binormale a la surface, il faut faire une petite recherche sur le net, car il s agit d attributs un peu a part ...)

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci pour vos réponses!!

    Mais n'ayant pas de textures de normal mapping sous la main pour ce que je veux (la Terre), je ne peux pas vraiment appliquer le normal mapping...

    Je ne vois pas comment je peux utiliser la texture de bump mapping, et dans le tutoriel de LeGreg, il n'est décrit que l'utilisation de normal mapping (technique dont je me servirai dès que je le pourrai, à Google de jouer )

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il ya des utilitaires pour générer une normal map à partir d'une height map. Par exemple un plugin nVidia pour Photoshop, si mes souvenirs sont bons.

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Voila le plugin de conversion heigth map -> normal map pour The Gimp: http://nifelheim.dyndns.org/~cocidius/normalmap/
    Et pour ceux qui sont sous Ubuntu: http://forum.ubuntu-fr.org/viewtopic.php?id=93303

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

Discussions similaires

  1. Explication bump mapping
    Par damienlann dans le forum OpenGL
    Réponses: 41
    Dernier message: 06/06/2006, 16h14
  2. Réponses: 4
    Dernier message: 02/03/2006, 20h40
  3. Réponses: 22
    Dernier message: 28/07/2005, 21h37
  4. Comment faire du bump mapping
    Par CladStrife dans le forum DirectX
    Réponses: 7
    Dernier message: 01/01/2004, 05h07
  5. Bump mapping
    Par Francky033 dans le forum DirectX
    Réponses: 7
    Dernier message: 22/11/2003, 18h35

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