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 :

[Débutant] Question sur les lumières


Sujet :

DirectX

  1. #1
    Membre habitué Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Points : 128
    Points
    128
    Par défaut [Débutant] Question sur les lumières
    Bonjour.
    Apres avoir lu et relu quelques tutoriels, tenté de comprendre des choses sur le fonctionnement des effets de lumière, il y a encore beaucoup de choses qui m'échappent :
    Avec le tutoriel "material and lights" du sdk, il y a une lumière "directionnelle" mais son fonctionnement méchappe: on définit une direction (qui semble correspondre au point vers lequel "pointe" la lumière). Cette lumière directionnelle devrait donc avoir une origine mais changer sa propriété "position" ne change rien.
    Ma question est donc:
    A quoi correspond le triplet "direction" ? et plus générallement, qu'est-ce qu'une lumière "directionnelle" ?

  2. #2
    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
    Une lumière directionnelle n'a pas de position, seulement une orientation. Donc tout point de la scène recevra le même vecteur lumière, quelque soit sa position. Tu peux comparer ça à une source ponctuelle placée à une distance pseudo-infinie, comme par exemple le soleil.

  3. #3
    Membre habitué Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Points : 128
    Points
    128
    Par défaut
    Est-ce que ca veut dire que si (par exemple) ma lumière a pour direction (1, -2, 5), chaque 'point' M(x, y, z) réagira comme si une lumière placée en (x + 1, y - 2, z + 5) l'éclairait ?

    Tu peux comparer ça à une source ponctuelle placée à une distance pseudo-infinie, comme par exemple le soleil.
    J'ai lu ca dans l'aide également mais je n'arrive pas a obtenir ce résultat : quelles propriété de la lumière je dois définir pour que ma lumiere a source ponctuelle soit comme la lumière directionnelle ?

  4. #4
    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
    Est-ce que ca veut dire que si (par exemple) ma lumière a pour direction (1, -2, 5), chaque 'point' M(x, y, z) réagira comme si une lumière placée en (x + 1, y - 2, z + 5) l'éclairait ?
    Modulo une inversion des coordonnées, oui on peut dire ça.

    J'ai lu ca dans l'aide également mais je n'arrive pas a obtenir ce résultat : quelles propriété de la lumière je dois définir pour que ma lumiere a source ponctuelle soit comme la lumière directionnelle ?
    Comprends pas ce que tu veux dire là.

  5. #5
    Membre habitué Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Points : 128
    Points
    128
    Par défaut
    Eh bien dans mon application, j'ai une lumière directionnelle définie par sa direction : le triplet (1, 2, 0), ainsi que d'autres propriétés qui sont inhérentes au fait que c'est une lumière (la couleur par exemple).

    Comment définir une lumière de type ponctuel pour que le résultat visuel soit le même ?

  6. #6
    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
    Quel serait l'intérêt ?

  7. #7
    Membre habitué Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Points : 128
    Points
    128
    Par défaut
    Comprendre comment fonctionnent les lumières ponctuelles!
    Pour l'instant je bloque sur l'utilisation des propriétés d'atténuation (0, 1 et 2) : a quoi correspondent ces grandeurs ?
    Sinon j'ai une autre question plus générale, est-ce que avec ces lumières, directx se contente d'illumiener tous les points a peu pres uniformément, où y a-t-il une gestion des ombres (meme simplifiée) ?

  8. #8
    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
    Comprendre comment fonctionnent les lumières ponctuelles!
    Je ne pense pas qu'en utilisant les lumières à contre-emploi tu apprennes beaucoup de chose. Si tu veux un effet directionnel alors utilise une lumière directionnelle.

    Pour l'instant je bloque sur l'utilisation des propriétés d'atténuation (0, 1 et 2) : a quoi correspondent ces grandeurs ?
    Honêtement je n'utilise pas souvent ça, mais j'imagine que c'est détaillé dans la doc du SDK non ?

    Sinon j'ai une autre question plus générale, est-ce que avec ces lumières, directx se contente d'illumiener tous les points a peu pres uniformément, où y a-t-il une gestion des ombres (meme simplifiée) ?
    Non, DirectX utilise un modèle d'éclairage assez simple (Gouraud ou Phong), qui n'est basé que sur les propriétés des vertices et n'inclue donc aucune gestion d'ombre (pour laquelle il faut considérer la scène en entier, mais ça c'est un autre sujet). La formule d'éclairage est donnée dans la doc.

  9. #9
    Membre habitué Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Points : 128
    Points
    128
    Par défaut
    mais j'imagine que c'est détaillé dans la doc du SDK non ?
    Je m'y attendais aussi mais en fait je n'ai rien trouvé de tres convaincant

    Cela dit, tu as déja répondu à la majorité de mes questions sur les lumières, merci donc et je me lancerai sur les lumières ponctuelles un peu plus tard sans doute .

  10. #10
    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
    La définition des lumières dans Dx9 est encore un peu batarde, on hésite entre un modèle un peu moderne et abstrait et les dénominations type scene graph qu'on avait dans OpenGL et les APIs plus anciennes (Direct3D retained mode), notamment avec les lumières et autres beginscene/endscene. Ça va disparaitre définitivement avec Direct3D 10 qui se débarrasse de la notion que certaines données ont plus un sens que d'autres.

    Ce qu'il faut retenir c'est que Direct3D travaille uniquement de manière locale, seul importe l'état courant et le runtime n'a aucune notion de la "scène" dans sa globalité. Les ombres portées sont un problème global : c'est à dire qu'il faut avoir une connaissance de la totalité de la scène pour les porter correctement, donc on ne peut pas faire directement des calculs d'ombres dans Direct3D, il faut passer par des algorithmes multipasses type stencil shadow volumes et shadowmaps qui ramènent le problème à un problème local (lire une texture c'est un problème local).

    Pour ce qui est de ton autre problème de compréhension des lumières ponctuelles/directionnelles, cette distinction effectivement n'a que peu d'importance au niveau du point éclairé mais détermine pour un objet "étendu" comment sera évalué la distance/position relative à chaque nouveau point éclairé.
    Pour une source directionnelle, la position relative sera constante ce qui permet d'économiser bien des calculs au niveau de l'objet (passer d'un point éclairé à un autre se fera sans nouveaux calculs), la source ponctuelle par contre à une position relative variable, meme si le calcul de cette position relative se fait par une simple soustraction, cela nécessite de faire une opération supplémentaire (pour calculer le rayon incident ce qui importe le plus souvent).

    La source directionnelle peut-être vue comme un cas limite de la source ponctuelle lorsque la source est à l'infini (ou très loin ce qui donne des résultats équivalents).

    Il y a une complication pour les sources ponctuelles c'est qu'on peut spécifier des facteurs d'atténuation, qui simulent simplement la diminution de l'intensité de la lumière lorsqu'on s'éloigne de la source lumineuse.
    Rien de bien compliqué, la formule d'attenuation suit la loi
    Atten = 1/( att0i + att1i * d + att2i * d2)
    avec les paramètres att0, att1 et att2 fournis par l'utilisateur
    et les facteurs d et d*d calculés à la volée pour chaque point éclairé.

    Pourquoi cette loi ? c'est arbitraire mais ça permet de représenter des fonctions qui décroissent en 1/d2 ce qui approche assez bien la réalité physique (densité de photons avec un taux d'emission constant indépendant de la direction) tout en ayant deux termes supplémentaires qui permettent de jouer sur les petites distances pour éviter le phénomène des intensités infiniment grandes autour de d = 0.

    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

  11. #11
    Membre habitué Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Points : 128
    Points
    128
    Par défaut
    Ok!
    Merci pour ces éclaircissements, la formule de l'atténuation risque de m'être utile .

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

Discussions similaires

  1. Question sur les lumières.
    Par pan99 dans le forum 3D
    Réponses: 2
    Dernier message: 13/06/2007, 17h50
  2. Réponses: 5
    Dernier message: 15/05/2007, 14h53
  3. [Débutant] question sur les formulaires
    Par IDE dans le forum Access
    Réponses: 8
    Dernier message: 15/07/2006, 16h37
  4. [parseur] [Débutant] Question sur les parseurs
    Par steph-n dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 02/05/2005, 19h17
  5. [débutant] question sur les #
    Par Ultros dans le forum C
    Réponses: 3
    Dernier message: 29/04/2004, 12h30

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