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 :

Fondu de scene


Sujet :

DirectX

  1. #1
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Points : 725
    Points
    725
    Par défaut Fondu de scene
    Bonjour

    J'aimerai faire un effet de fondu donc rendre progressivement des objets transparent.
    J'avais pensé a manipuler
    dx.device->SetRenderState(D3DRS_AMBIENT,...);
    mais ça ne fait que "noircir" le modèle et ne joue pas sur la transparence.
    Connaitriez-vous la façon de faire ce que je demande ?

    Merci de m'aider

    raphchar
    [FONT=Consolas][FONT=Consolas][/FONT][/FONT]
    Raphchar.

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Il faut tout d'abord activer le blending au niveau du device (je pense que c'est un renderstate mais je ne sais plus lequel).
    Ensuite tu dois modifier l'alpha de tes matériaux (dans ton D3DMATERIAL9 ou directement dans les attributs de tes shaders si tu ne passes pas par D3DMATERIAL9).

    Et là tu t'apercevras certainement que ça semble moche, dû au fait que tes objets et tes faces ne sont pas triées du plus loin au plus proche...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Points : 725
    Points
    725
    Par défaut
    J'ai déjà quelques renderState pour l'alpha (car j'ai des textures avec de la transparence) dont

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dx.device->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
    dx.device->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
    dx.device->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
    dx.device->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
    Je ne pense pas que la solution se trouve de ce coté
    Raphchar.

  4. #4
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Si tu cherches bien à "faire un effet de fondu donc rendre progressivement des objets transparent", il faut diminuer l'alpha de tes objets progressivement jsuqu'à zéro.
    En activant l'alpha blending pour tous tes objets tu arriveras au résultat que tu décris.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Points : 725
    Points
    725
    Par défaut
    Oui, c'est cela, mais comment faire? J'ai cherché de exemples sans succès. Comment diminuer le paramètres alpha des objets ?

    A moins qu'il faille rajouter un paramètre couleur dans le format FVF (que je n'ai pas car pour les textures il n'y en a pas besoin) et y régler le taux alpha !?!
    Raphchar.

  6. #6
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Si tu gères bien les matériaux de tes objets avec de D3D9MATERIAL, tu modifies la composante alpha des couleurs à celle souhaitée.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  7. #7
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Points : 725
    Points
    725
    Par défaut
    OK j'ai trouvé comment mettre du transparent via un matérial

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dx.device->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_DIFFUSE);
    le seul hic c'est que ca ne s'agence pas avec le aplha des textures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dx.device->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE);
    n'a pas d'effet et je dois absolument garder la combinaison des deux
    Raphchar.

  8. #8
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Une méthode serait d'utiliser un shader. Que ton objet ne contienne que des textures, que des couleurs, ou les deux en même temps, dans le shader c'est toi qui gère.

    Tu positionnes un float Alpha dans le shader. Tu pourras modifier depuis ton code la valeur, selon le niveau d'alpha souhaité. Et ceci à chaque boucle de rendu.

    Cela n'empêche pas d'avoir les Renderstates corrects (ceux déjà cités). Ils sont aussi positionnables directement dans le shader.

    Dans le pixel shader tu auras un truc de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    // la valeur modifiable depuis le programme (entre 0.0f et 1.0f)
    float fAlpha = 1.0f;
     
    float4 ps_main(float2 texCoord : TEXCOORD0) : COLOR0
    {
      float4 cOut;
     
      cOut = tex2D(tSource, texCoord);
     
      // L'objet sera plus ou moins transparent suivant fAlpha
      return float4(cOut.rgb, fAlpha);
    }

  9. #9
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Points : 725
    Points
    725
    Par défaut
    Merci de ta réponse moldavi. Pour l'instant je ne connais pas les shaders, il faudra que je m'y mette.
    Raphchar.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/01/2008, 00h36
  2. basculer d'une scene a l'autre
    Par singe dans le forum OpenGL
    Réponses: 4
    Dernier message: 10/12/2003, 19h00
  3. generer une image bitmap a partir d'une scene OGL
    Par FreshLog dans le forum OpenGL
    Réponses: 4
    Dernier message: 01/07/2003, 12h29
  4. ouverture d'une form en fondu transparent
    Par nicholz dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/01/2003, 12h06
  5. Plusieurs scenes
    Par logramme dans le forum DirectX
    Réponses: 2
    Dernier message: 11/08/2002, 15h02

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