#1 

28-08-2009 17:25:11

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.140.53
Courriel

Bonjours,

Je cherche a rendre transparent (invisible) une certaine couleur d'une image ( scene::IBillboardSceneNode) qui se nomme viseur. Le problème c'est que je ne trouve pas de fonction qui sert a la rendre transparent (en tout cas aucune pour une image de type scene::IBillboardSceneNode). En existe-t-il une?


Hors ligne


#2 

28-08-2009 18:06:32

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 188.93.45.30
Courriel  Site web

si mais souvenir sont bon c'est :

Code c++ :


ITexture *tmp = driver->getTexture("plop.bidul");
driver->makeColorKeyTexture(tmp,SColor(255,255,255,255));// et tu change 255,255,255,255 par la couleur que tu veut rendre invisible
// et tu ajoute ton billboard avec cette texture

Hors ligne


#3 

29-08-2009 15:37:55

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.140.53
Courriel

Si je met ceci:


video::ITexture *tmp = driver->getTexture("viseur.bmp");
driver->makeColorKeyTexture(tmp,video::SColor(0,255,255,255));// et tu change 255,255,255,255 par la couleur que tu veut rendre invisible
scene::IBillboardSceneNode* viseur = 0;
viseur = smgr->addBillboardSceneNode(0, core::dimension2d<f32>(10,10));
viseur->setMaterialFlag(video::EMF_LIGHTING, false);
viseur->setMaterialFlag(video::EMF_ZBUFFER, false);
viseur->setMaterialTexture(0, tmp);


Le blanc de l'image n'est pas transparent. :'(


Hors ligne


#4 

30-08-2009 09:08:12

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.29.59
Courriel

As-tu regardé l'exemple du package '06.2DGraphics', qui utilise ce genre de technique, la couleur de fond est rose, et sert de masque.


Force et sagesse...

Hors ligne


#5 

30-08-2009 10:36:40

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.140.53
Courriel

Même avec la méthode du package '06.2DGraphics' le blanc de mon image n'est pas transparent. Cela vien peut être du fête que j'utilise l'image dans de la 3D, non? Car l'image (dont je veux rendre une de ses couleurs transparent) est un viseur, on peut donc le déplacer dans la 3D.


Hors ligne


#6 

30-08-2009 10:53:20

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.29.59
Courriel

étrange, 2D ou 3D le principe reste le même, donc je ne pense pas que cela vienne de la.


Force et sagesse...

Hors ligne


#7 

30-08-2009 12:00:54

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 188.93.45.30
Courriel  Site web

regarde cela déjà -> video::SColor(0,255,255,255) en gros tu veut suprimmer la couleur blanche avec l'apha a 100% donc du transparent !
essaye déjà avec 255,255,255,255, après il se peut que se ne soient pas cette fonction, je ne l'ai jamais tester wink

edit : oui la couleur violet/rose est souvent utiliser pour la transparence car très rare sur les photos/vidéos/ou autre média :} (0,255,0,255)

Hors ligne


#8 

30-08-2009 14:21:18

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.140.53
Courriel

J'ai essayer avec n'importe plusieurs alpha et ça ne change rien. Voici tout ce qui concerne cette image dans mon code :

video::ITexture *tmp = driver->getTexture("viseur.bmp");
driver->makeColorKeyTexture(tmp, video::SColor(0,255,0,255));
scene::IBillboardSceneNode* viseur = 0;
viseur = smgr->addBillboardSceneNode(0, core::dimension2d<f32>(10,10));
viseur->setMaterialFlag(video::EMF_LIGHTING, false);
viseur->setMaterialFlag(video::EMF_ZBUFFER, false);
viseur->setMaterialTexture(0, tmp);
camera->addChild(viseur);




Il y a peut être quelque chose qui empêche la transparence là-dedans.


Hors ligne


#9 

30-08-2009 14:33:02

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.29.59
Courriel

Vite fait comme cela, je viens de percuter, il ne manque pas un truc dans le genre setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF) dans ton code ?


Force et sagesse...

Hors ligne


#10 

30-08-2009 15:40:55

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.140.53
Courriel

Je l'ai rajouter mais ça n'a rien changé.


Hors ligne


#11 

11-09-2009 13:36:35

TUpac
Membres
Avatar de TUpac
Date d'inscription:
Messages: 387
IP: 80.13.52.19
Courriel

un truc tout bête, mais ça vaut le coup de demander : ton blanc est-il vraiement blanc ? t'a vérifié avec ton logiciel d'image favoris ? (gimp :p)
toutes les valeurs RGB doivent être à 255 ...


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#12 

12-09-2009 16:13:53

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 86.207.127.189
Courriel

sinon c'est peut etre ça : setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR) en tout cas c'est ce qui est utilisé pour les billboards.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#13 

16-09-2009 13:38:47

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.1.169
Courriel

J'ai trouvé comment faire depuis pas mal de temps mais j'ai eu des problèmes de connexion, je n'ai donc pas pu vous prévenir. Il fallait mettre viseur->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL); et mettre de la transparence directement sur l'image avec un logiciel de dessin.


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
572 invités en ligne
membre en ligne: -
RSS Feed