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

DirectX Discussion :

Question théorique sur les normales


Sujet :

DirectX

  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut Question théorique sur les normales
    Salut à tous
    Je développe une appli en directX sous Delphi à l'aide des composants Asphyre (je les recommande d'ailleurs )
    Mais un problème se pose...
    Voila, je voudrais créer un cube de 100 de coté ayant pour centre (0,0,0)...
    Je commence donc par définir tous mes 8 points... Et mes 12 faces... Si je mets FindNormals, il me fait n'importe quoi... Je décide donc de faire les normales à la main... J'applique donc une normale à chaque face et là, ça plante...(suspense ) Je recherche un peu et là je m'aperçois qu'il faut autant de normales que de points Et là, je suis largué... Quel rapport entre un point et une normale? Que sont ces normales en vérité? Bref, si quelqu'un pouvait m'expliquer ou bien carrémént me donner le code pour créer un cube (même en C++ c'est pas grave), ça serait sympa
    Merci d'avance
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Bon ben c'est bon... C'était bêtement l'odre de spécification des points pour chaque face... Comme dans 3DS Max
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    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
    voilà une question pour la FAQ :

    Une normale ou un vecteur normal est le vecteur qui est orthogonal à une surface. Donc ton cube n'a pas six ou huit normales, mais il en a une infinité qui couvre toute la surface extérieure de ton cube.
    Ceci dit comme les surfaces sont presques planes, il est inutile de spécifier une infinité de normales. On ne spécifie que celles qui sont situés sur les sommets de tes polygones. Ceci dit c'est un raccourci et dans certains cas c'est problèmatique.

    A quoi sert ce vecteur ? On s'en sert principalement pour calculer l'éclairage d'une face. Par exemple l'éclairage de Lambert est un éclairage dont la valeur ne dépend que de l'orientation de ta face par rapport à la lumière. La valeur de l'éclairement de Lambert ou éclairage diffus est égal en un point de ton cube à la normale en produit scalaire avec le vecteur incident de la lumière multiplié par l'intensité lumineuse en ce point.
    Pour faire des économies de calcul, les cartes 3D ne font le calcul de l'éclairage qu'aux coins des triangles, et interpolent le résultat sur la surface restante. Bien entendu c'est parfois loin de la solution théorique et pour éviter les artefacts il faut parfois multiplier les points de calculs, donc soit en subdivisant les faces de ton cube pour avoir plusieurs sommets sur la surface de ton cube (avec une normale par sommet), ou mieux en faisant le calcul de l'éclairage par pixel et en interpolant les normales des points du triangle sur sa surface.

    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

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Ok merci pour ces explications
    Mais un problème se pose: dans la plupart des cas, un sommet est utilisé par plusieurs faces...
    Lorsque je crée mon cube, je définis mes 8 points puis les faces avec les points que j'ai créé... Dans ces cas-là, il y a , pour chaque sommet, une normale pour chaque face qui l'utilise... Or, dans les sources de mes composants, il est bien écrit que le nombre de normales doit être égal au nombre de sommet...
    Comment expliquer ça?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    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
    Citation Envoyé par Pedro204
    Dans ces cas-là, il y a , pour chaque sommet, une normale pour chaque face qui l'utilise... Or, dans les sources de mes composants, il est bien écrit que le nombre de normales doit être égal au nombre de sommet...
    Comment expliquer ça?
    il faut considerer que chaque sommet est en fait constitué de trois sommets (ou plus) pour chaque face du cube qu'il touche.

    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

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    OK merci
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

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

Discussions similaires

  1. [2008] Question théorique sur les LDF
    Par Avatar69 dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 26/09/2014, 11h22
  2. Petite question théorique sur les déclarations
    Par NeuroTransMetteur dans le forum Général VBA
    Réponses: 3
    Dernier message: 15/03/2012, 08h04
  3. Question théorique sur les éditeur WYSIWYG
    Par CactO_o's dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 07/02/2010, 19h32
  4. [PHP 5.0] question théorique sur les méthodes
    Par mariek dans le forum Langage
    Réponses: 6
    Dernier message: 20/02/2009, 08h41
  5. Réponses: 3
    Dernier message: 04/04/2008, 18h02

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