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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

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