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 :

[c#][direct3D] effet de transparence


Sujet :

DirectX

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut [c#][direct3D] effet de transparence
    je travaille actuellement sur un editeur d'animation de personnage, et je souhaite faire un effet de transparence sur mes phases d'animations :
    la phase d'animation que j'edite serais afficher normalement( totalement opaque ) et les autres serais afficher de plus en plus transparentes a mesures que je l'eloigne de la phase en cour

    merci d'avance

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as pas mal d'options pour ça.

    Par exemple tu peux donner une couleur aux sommets de tes sprites, et utiliser l'alpha-blending avec les flags adéquats.

    Tu peux aussi affecter un facteur alpha constant, et paramètrer les unités de textures comme il faut.

    Tu as déjà fait quelques recherches ? Essayé des trucs ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut
    j'ai essayé plusieurs trucs:

    -device.RenderState.AlphaBlendOperation= BlendOperation.Max;
    le resultat correspond a peu pres a ce que je recherche, mais je n'arrive pas a modifier la valeur d'alpha utiliée -> toutes mes phases utilisent le meme alpha

    - device.RenderState.BlendFactor=Color.FromArgb(opasity,opasity,opasity,opasity);
    // device.RenderState.BlendFactor=Color.FromArgb(opasity,255,255,255);
    device.RenderState.DestinationBlend = Blend.BlendFactor;
    j'arrive bien a varier l'alpha, mais les textures virent au blanc

    j'ai fait plein d'essays, mais ces 2 las qui sont le plus proche de ce que je veux

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Et avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    device.RenderState.BlendFactor = Color.FromArgb(opasity,opasity,opasity,opasity);
    device.RenderState.SourceBlend = Blend.BlendFactor;
    ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut
    je l'avais deja essayé

    mes frames sont affichées de plus en plus sombres, mais pas de plus en plus transparentes

  6. #6
    Membre Expert

    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
    Par défaut
    Faut les deux ! source et dest :

    sourceblendfactor = Blend.Blendfactor;
    destinationBlendFactor = Blend.InvBlendFactor;

    ça correspond à l'opération suivante :

    Final = BlendFactor * source + (1 - BlendFactor) * dest.

    (désolé pour le C# approximatif, ce n'est pas ma langue maternelle)

    BlendFactor à 255 pour être totalement opaque et à 0 pour être totalement invisible.

    ATTENTION ! Si tu traces deux objets transparents l'un par dessus l'autre il vont mutuellement s'occluder, donc si tu veux éviter les artefacts il faudra peut-etre passer par une texture intermédiaire..

    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

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut
    j'ai essayé
    cela modifie toutes les composantes des couleus de mes textures, sauf l'alpha

    je comprend pas

Discussions similaires

  1. effet de transparence
    Par pas30 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/12/2008, 19h05
  2. Effet de transparence DirectX 9
    Par angesofts dans le forum DirectX
    Réponses: 2
    Dernier message: 17/01/2008, 18h06
  3. petit effet de transparence avec gimp
    Par Maxence45 dans le forum Imagerie
    Réponses: 4
    Dernier message: 08/06/2007, 08h06
  4. Effet de Transparence
    Par DestinyWar45 dans le forum OpenGL
    Réponses: 7
    Dernier message: 19/10/2006, 22h46
  5. faire un effet de transparence sur un bloc div ?
    Par piff62 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/03/2005, 00h04

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