Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu] Transparence "uniforme" pour deux images transparentes  (Lu 2827 fois)

0 Membres et 1 Invité sur ce sujet

Nikogram

  • Newbie
  • *
  • Messages: 39
    • Voir le profil
    • E-mail
Bonjour à tous.

Je me trouve face à un petit problème.
Je développe actuellement un jeu en 2D isométrique où le terrain est composé de cubes. Un personnage peut se déplacer sur ce terrain, mais se retrouve parfois caché par certains cubes.

La chose que je voudrais donc mettre en place, c'est d'afficher les cubes devant le personnage avec une certaine transparence. Utilisant les VertexArray, je n'ai qu'à faire :
vertex.color = sf::Color(255, 255, 255 , 100);
Ca fonctionne bien, les cubes sont bien transparents, mais voilà ce que j'ai :
http://img15.hostingpics.net/pics/870103Capture.png

Bien que ce rendu ne m'étonne pas, j'aimerais avoir une transparence générale plus "uniforme", que la superposition d'images ne "détériore" pas le niveau de transparence (car sur l'image il n'y a qu'une épaisseur de cubes, mais parfois il y en a tellement que le rendu n'est pas très propre à mon gout).

Ma question est donc de savoir si c'est possible, sachant que j'affiche le terrain cube par cube. Autrement quels astuces me donneriez vous pour ce type de problème (personnage caché par des éléments du décor) ?
Merci d'avance.
« Modifié: Janvier 17, 2014, 07:43:58 am par Nikogram »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Transparence "uniforme" pour deux images transparentes
« Réponse #1 le: Janvier 16, 2014, 10:36:12 pm »
Tu peux dessiner tes objets (ceux que tu veux transparents) normalement sur une même RenderTexture, pis tu dessines ta RenderTexture avec de la transparence.
A voir si ça colle avec ton jeu.
« Modifié: Janvier 16, 2014, 10:37:47 pm par G. »

kimci86

  • Full Member
  • ***
  • Messages: 128
    • Voir le profil
Re : Transparence "uniforme" pour deux images transparentes
« Réponse #2 le: Janvier 16, 2014, 10:41:28 pm »
Bonsoir
Tu pourrais dessiner seulement les faces des cubes si elles sont directement visibles.
Tu pourrais aussi dessiner ton personnage en transparence par dessus le mur mais on ne verrait pas autour du personnage.

Nikogram

  • Newbie
  • *
  • Messages: 39
    • Voir le profil
    • E-mail
Re : Transparence "uniforme" pour deux images transparentes
« Réponse #3 le: Janvier 16, 2014, 11:01:46 pm »
Merci pour vos réponses ;)

G. : le problème c'est que je dois afficher les cubes dans un ordre précis, sinon il risque d'y avoir des problèmes d'affichage.

kimci86 : je pensais en cubes, et pas en face. Effectivement afficher par face rendra la transparence plus jolie normalement. Et je n'ai qu'à modifier une petite portion de code avec cette méthode en plus ^^

Raitosan

  • Full Member
  • ***
  • Messages: 221
    • Voir le profil
    • E-mail
Re : [Résolu] Transparence "uniforme" pour deux images transparentes
« Réponse #4 le: Février 08, 2014, 01:20:27 pm »
Il faudrait procéder à l'envers en fait. Le dernier cube afficher devra masquer la partie sur laquelle il passe par dessus, du cube d'en dessous. En gros, s'il y a collision entre le cube du dessus et du dessous, tu dois mettre les pixels en question avec une transparence maximal pour les cachés, et le reste du sprite, à la transparence souhaitée.
Mais ce que je te conseille, c'est de séparer tes objets en différents sprites, et lorsque ton personnage passe derrière ton mur(par exemple), simplement modifier la transparence de celui-ci. ça sera nettement plus rapide, et avec ce système, tu n'aura qu'un seul sprite pour ton mur, ce qui évitera de le générer X fois.

Nikogram

  • Newbie
  • *
  • Messages: 39
    • Voir le profil
    • E-mail
Re : [Résolu] Transparence "uniforme" pour deux images transparentes
« Réponse #5 le: Février 18, 2014, 11:35:12 pm »
Désolé pour le retard, j'étais plus trop sur mon projet ces derniers temps.

Je suis désolé mais j'ai un peu de mal à comprendre ta méthode.
Et à un moment tu parles de modifier la transparence sur une partie du sprite seulement. Le problème c'est que modifier la transparence d'un sprite entier est possible, mais pas un groupe précis de pixel sur ce sprite.