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

OpenGL Discussion :

Rayon d'action d'une lumière OpenGL


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut Rayon d'action d'une lumière OpenGL
    Bonjour,

    J'aimerais calculer le rayon d'action d'une lumière OpenGL omni-directionnelle.
    Je me suis donc dit que j'allais utiliser cette formule que l'on trouve partout pour calculer mon rayon d'action:

    att = 1.0 / (Kc + Kl*d + Kq*d²)

    Si j'estime que quand l'atténuation vaut 0.001, on ne voit plus la lumière à l'oeil nu, la formule devient :
    0.001 = 1.0 / (Kc + Kl*d + Kq*d²)

    Ensuite il suffit de calculer "d" pour obtenir le rayon d'action, non ? Le problème c'est que je me retrouve avec une équation du second degrée et qui dit équation du second dit :
    - Soit j'aurais 0 réponse (delta < 0)
    - Soit j'aurais 1 réponse (delta = 0)
    - Soit j'aurais 2 réponses (delta > 0)

    Bref, je vois mal une lumière avec 0 rayon d'actions et encore moins une lumière avec 2 rayons d'actions....où est le problème dans mon raisonnement ?

    Merci d'avance...

  2. #2
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Je ne vois pas particulièrement de problème de raisonnement, au contraire...

    MAis il faut simplement agir "en pratique" en fonction des cas particulier ...

    Par exemple :
    - pas de rayon => forcer le rayon à 0
    - un rayon => pas de soucis
    - deux rayon => prendre le plus grand rayon ( positif ) ... si négatif, clamper à zero ...

    Le math s'est bien ... mais il faut souvent trouver des compromis physique

  3. #3
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Citation Envoyé par zenux Voir le message
    où est le problème dans mon raisonnement ?
    Je dirais que c'est d'avoir arrêté de réfléchir trop tôt
    On a bien une théorie pour résoudre "Kc + Kl*d + Kq*d² = 1000", mais il n'est pas dit que tous les cas qu'elle couvre vont toujours se présenter.

    d est une distance, donc positive, ce qui écarte certaines possibilités. Je ne suis pas spécialiste du domaine, mais dans ce contexte je vois les coefficients plutôt positifs (généralement on perd en luminosité quand on s'éloigne... non ?). Le problème serait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Kc + Kl*d + Kq*d² = 1000
    d >= 0
    Kc >= 0
    Kl >= 0
    Kd >= 0
    Et là :
    • une solution, tout va bien
    • pas de solution donc soit la lumière est trop faible pour éclairer quoi que ce soit (Kc tellement grand qu'elle ne porte pas), soit il n'y a pas d'atténuation (Kl=Kd=0) et elle porte à l'infini


    Et là si je me suis planté, avec ma remarque d'ouverture je vais avoir l'air fin

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Merci pour vos réponses.

    Je viens de programmer ce morceaux de code et en effet après avoir bien réfléchi, je peux toujours m'arranger pour n'obtenir qu'une seule réponse ou zéro si il n'y a pas d'atténuation.

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

Discussions similaires

  1. OpenGL Lier une lumière à un objet
    Par Pims_Jay01 dans le forum OpenGL
    Réponses: 7
    Dernier message: 19/11/2010, 18h03
  2. Réponses: 4
    Dernier message: 03/05/2005, 09h03
  3. Créer une vidéo d'une scène OpenGL
    Par tit_henry dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/04/2005, 11h39
  4. Capture vidéo d'une application OPENGL
    Par Mathieu.J dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 10/06/2004, 21h29
  5. [débutant]Faire appel à une action d'une ActionList
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/03/2004, 22h53

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